A Filament panel plugin to connect a Filament app with QuickBooks Online and work with invoices, payments, credit notes and customers through a simple facade.
bocapro/quickbooks-connector is a Laravel package for a filament panel plugin to connect a filament app with quickbooks online and work with invoices, payments, credit notes and customers through a simple facade..
It currently has 4 GitHub stars and 5 downloads on Packagist (latest version v1.1.0).
Install it with composer require bocapro/quickbooks-connector.
Discover more Laravel packages by bocapro
or browse all Laravel packages to compare alternatives.
Last updated
A Filament panel plugin that connects your app to QuickBooks Online. It ships a settings page to configure and OAuth-connect a company, and a Qbo facade to work with invoices, payments, credit notes and customers.
composer require bocapro/quickbooks-connector
Publish and run the migration:
php artisan vendor:publish --tag="quickbooks-connector-migrations"
php artisan migrate
Optionally publish the config:
php artisan vendor:publish --tag="quickbooks-connector-config"
Register the plugin on your panel:
use Bocapro\QuickbooksConnector\QuickbooksConnectorPlugin;
$panel->plugin(QuickbooksConnectorPlugin::make());
There is nothing to put in .env. Everything is managed from the plugin's settings page in your panel:
use Bocapro\QuickbooksConnector\Facades\Qbo;
// Read
$invoice = Qbo::invoices()->find(130);
$open = Qbo::invoices()->query("WHERE Balance > '0'");
$customers = Qbo::customers()->all();
// Create
$invoice = Qbo::invoices()->create([
'Line' => [/* ... */],
'CustomerRef' => ['value' => '1'],
]);
// Update
$invoice = Qbo::invoices()->find(130);
Qbo::invoices()->update($invoice, ['PrivateNote' => 'Paid in full']);
// Same API for payments and credit notes
Qbo::payments()->all();
Qbo::creditNotes()->find(5);
if (Qbo::isConnected()) {
// ...
}
Each of invoices, payments, creditNotes, customers exposes find(), query(), all(), create(), update() and delete().
Once a company is connected, the settings page shows a Default mappings section. Pick a default item (used on invoice / credit-note lines), a default income account, and a default deposit-to account (used when recording payments). These are pulled live from the connected company's Chart of Accounts and Items.
When a default is set, it is applied automatically to any create() payload that omits the corresponding reference:
// No ItemRef on the line — the default item is filled in for you.
Qbo::invoices()->create([
'CustomerRef' => ['value' => '1'],
'Line' => [[
'Amount' => 100.00,
'DetailType' => 'SalesItemLineDetail',
'SalesItemLineDetail' => ['Qty' => 1, 'UnitPrice' => 100.00],
]],
]);
// No DepositToAccountRef — the default deposit account is filled in.
Qbo::payments()->create([
'CustomerRef' => ['value' => '1'],
'TotalAmt' => 100.00,
]);
You can also read the reference data yourself for building your own selects:
Qbo::items()->options(); // ['3' => 'Concrete', ...]
Qbo::accounts()->options('Income'); // income accounts only
Qbo::accounts()->options('Bank'); // bank accounts only
Anything you pass explicitly always wins over the configured default.
composer test
The MIT License (MIT). Please see the License File for more information.