User guide

Accounting Integrations

Looking for what it does rather than how to use it? Read the Accounting Integrations overview .

Audience: MSP administrators who keep the books in QuickBooks Online. Scope: the QuickBooks Online integration — connection, mapping, sync and troubleshooting.


What it is

Solidlio connects to QuickBooks Online over OAuth 2.0 and keeps invoices, payments, credit notes, customers, items, vendors, bills and purchase orders in step with your books. Sync is queued and retried in the background, and every run is recorded.

QuickBooks Online is the only accounting system that ships. Xero appears in the catalogue as Coming Soon and cannot be connected. Sage is not implemented.


Concepts

ConceptWhat it is
RealmYour QuickBooks company. One connection per organization.
QuickBooksEntityMappingOne row per linked record, pairing a Solidlio id with a QuickBooks id, scoped to your tenant.
Account mappingA Solidlio accounting slot (income, COGS, sales tax) → a QuickBooks chart-of-accounts entry.
Tax code mappingThe TAX_CODE_SALES slot → a QuickBooks tax code. Required before any taxed invoice syncs.
Sync queueBackground jobs, deduplicated per entity and direction, with retries and a terminal-failure path.
Sync logOne row per run: entity, direction, counts, status.

Direction of travel

ObjectSolidlio → QuickBooksQuickBooks → Solidlio
Customer● update mapped record
Invoice● update mapped record
Invoice line
Payment● update, or create when linked to a mapped invoice
Credit note● update or create
Product / item
Vendor● update mapped record
Vendor billrefresh a mapped record only — never creates
Purchase orderrefresh a mapped record only — never creates

Bills and purchase orders arriving from a QuickBooks webhook that Solidlio has never seen are rejected with a clear message pointing at the bulk importer. Creating them from a single id would require vendor matching and expense categorisation that one id cannot supply.


Roles and permissions

Every QuickBooks route requires organization administrator or above. The webhook receiver is the one exception — it is public and authenticated by signature instead.

RoleQuickBooks admin
platform administrator
MSP administrator
MSP technician
organization administrator
power user
CUSTOMER

In practice this is an MSP-portal feature: the screens live at /msp/accounting/quickbooks. There is no org-portal or customer-portal accounting surface.


Walkthrough — connecting and first sync

  1. ConnectAccounting → QuickBooks. Choose Connect and complete Intuit’s OAuth consent. Tokens are encrypted at rest and refreshed automatically.
  2. Map your chart of accounts — open the Accounts tab and map each slot (income, COGS, expense categories) to a QuickBooks account.
  3. Map a sales tax code — in the same tab, map TAX_CODE_SALES to the QuickBooks tax code you charge on sales. Do this before syncing any taxed invoice — see the warning below.
  4. Link existing records — the Mappings tab pairs Solidlio customers, items and vendors with their QuickBooks counterparts. Use the suggestions list to match by name, then confirm. Mappings can be renamed or unlinked.
  5. Push an invoice — the Invoice Sync tab lists invoices and pushes a selected one to QuickBooks on demand.
  6. Let it run — invoice, payment and credit-note events queue automatically thereafter. Watch progress in Sync Logs.

⚠️ Tax mapping is required

If an invoice carries tax and no TAX_CODE_SALES mapping exists, the sync fails with an actionable error rather than pushing an untaxed invoice. This is deliberate: previously tax was never sent at all, so a $100 + $13 HST invoice arrived in QuickBooks as $100 and accounts receivable could not reconcile.

If you are upgrading an existing installation, map a tax code before your next taxed sync.


Configuration reference

SettingWhat it doesIf unset
OAuth connectionLinks one QuickBooks companyNothing syncs
TAX_CODE_SALES mappingThe QuickBooks tax code used on salesTaxed invoices and credit memos fail to sync
Income / COGS slotsDefault accounts for invoice and bill linesBill lines fail with an actionable error
Expense category mappingsPer-category QuickBooks account for vendor billsFalls back to the COGS slot, then errors
Entity mappingsLinks Solidlio records to QuickBooks recordsThe first sync creates the QuickBooks record

Troubleshooting

What you seeCause
Sync fails naming a missing tax codeNo TAX_CODE_SALES mapping. Map one in the Accounts tab.
Sync fails naming a missing accountA vendor bill line has no expense-category or COGS mapping.
Status shows “reconnect required”The refresh token expired or was revoked at Intuit. Reconnect. Previously this showed “Connected” forever while every sync failed.
Invoice refuses to push a second timeExpected. An invoice already carrying a QuickBooks id will not be pushed again — that would duplicate it in your books.
Purchase order push fails naming a lineA line has no resolvable QuickBooks item. Map the product first.
A queued job reports success but nothing changedCheck Sync Logs — a terminal configuration error is discarded rather than retried, and is recorded there.
Bill or PO from a QuickBooks webhook is rejectedExpected. Inbound bills and POs refresh existing links only; use the bulk importer to create.
A 404 when queueing an entityThe entity does not belong to your organization.

Limits and known behaviour

  • QuickBooks Online only. Xero and Sage are not implemented and cannot be connected.
  • Inbound bills and purchase orders refresh mapped records only; they never create.
  • Taxed invoices require a tax-code mapping and fail loudly without one.
  • Client provisioning from a QuickBooks customer claims the QuickBooks id before provisioning, so a retry cannot create a duplicate tenant — but the operation is not transactional, so a failure mid-provision can leave a tenant to clean up manually.
  • Accounting is an MSP-portal feature; there is no org or customer surface.
  • Payments push net of refunds. A fully refunded payment is refused rather than posted as zero.

Questions this guide did not answer?

Ask us. You will get a reply from someone who uses the product every day.

Book a demo Contact us

A 30-minute walkthrough against your own workflow. No slides.