Accounting Integrations
Two-way QuickBooks Online sync for invoices, payments, credit notes, customers, items, vendors, bills and purchase orders — with sales tax and currency carried across.
How Solidlio helps
Solidlio connects to QuickBooks Online over OAuth and pushes each document as it happens — invoice, payment, credit note, bill, purchase order — carrying the line amounts you actually stored, the transaction currency, and an explicit sales tax block with a per-line tax code. Every record is linked by a stored mapping between its Solidlio id and its QuickBooks id, so a re-sync updates rather than duplicates, and an invoice that already exists in QuickBooks is refused rather than posted twice. Work runs on a background queue with retries; a configuration problem stops the job immediately with a message naming what to fix, instead of failing quietly five times.
Capabilities
| Capability | What it does |
|---|---|
| Invoice sync | Pushes invoices with line items, refusing a second push of an already-synced invoice |
| Sales tax | Sends an explicit tax block with a per-line tax code, mapped to your QuickBooks tax code |
| Multi-currency | Stamps the transaction currency on invoices, credit memos, payments, bills and purchase orders |
| Payment sync | Posts payments net of refunds; a refund after the push restates the receipt, a full refund voids it |
| Credit applications | Mirrors a credit note applied to an invoice as the $0 linking payment; a reversal voids it |
| Credit notes | Syncs credit memos in both directions |
| Chart-of-accounts mapping | Maps income, COGS and per-expense-category slots to your QuickBooks accounts |
| Entity mapping | Links customers, items and vendors, with name-matched suggestions and one-click confirmation |
| Client provisioning | Imports a QuickBooks customer as a managed-client tenant, claiming the id so retries can’t duplicate |
| Background queue | Deduplicates per entity and direction, retries transient failures, discards terminal ones |
| Connection health | Surfaces a “reconnect required” state instead of reporting Connected while every sync fails |
How it works
- Connect — complete Intuit’s OAuth consent. Tokens are encrypted at rest, refreshed automatically, and refreshed under a lock so concurrent jobs cannot invalidate each other’s refresh token.
- Map your accounts — income, COGS, expense categories, and the sales tax code Solidlio should charge against.
- Link existing records — match customers, items and vendors by name from the suggestions list; rename or unlink any mapping later.
- Push — invoices, payments (including card payments through Stripe), credit notes, approved bills and purchase orders queue as they happen; a 4-hourly job catches anything the event path missed; or push a specific invoice on demand.
- Watch — sync logs record every run with counts and status; the queue view shows what is pending, and failures name what to fix.
Scope and honest limits
| Object | To QuickBooks | From QuickBooks |
|---|---|---|
| Customer | ● | ● updates the linked record |
| Invoice + lines | ● | ● updates the linked record |
| Payment | ● | ● updates, or creates against a linked invoice |
| Credit note | ● | ● updates or creates |
| Product / item | ● | ● |
| Vendor | ● | ● updates the linked record |
| Vendor bill | ● | ● refreshes a link; bulk import creates |
| Purchase order | ● | ● refreshes a link; bulk import creates |
| Invoice void | ● | a QuickBooks delete/void unlinks the record |
| Payment refund | ● | receipt restated to the net amount |
| Credit applied | ● | $0 payment links memo and invoice; reversible |
- QuickBooks Online is the only accounting system that ships. Xero is on the roadmap and cannot be connected. Sage is not implemented.
- Inbound bills and purchase orders refresh existing links from a webhook; the bulk importers create new records.
- Refunds restate the QuickBooks receipt to the net cash retained (no separate refund receipt); a fully refunded payment is voided.
- A taxed invoice requires a mapped sales tax code and fails with a clear message without one.
- Accounting is an MSP-portal feature. There is no organization or customer portal surface.
Compliance and audit
- OAuth tokens are encrypted at rest and never displayed again.
- Connect, disconnect, sync, mapping and account-mapping changes are written to the audit trail through a redacting writer.
- Every sync run is recorded with entity, direction, counts and status.
- Every route requires organization administrator or above; the webhook is authenticated by signature rather than by role.
Plans and access
Availability depends on your plan, role and account permissions. Capacity limits and service terms apply. Compare current plans and integration requirements, or ask us about your setup.