QuickBooks Online and Plaid integration
QuickBooks Online manages your invoices, bills, and general ledger. Plaid connects to your bank accounts and surfaces transactions and balances in real time. Connecting the two keeps your accounting system in sync with actual cash movement without manual bank rec work. New transactions from Plaid match automatically to open bills in QuickBooks Online, and payment details flow through without re-entry.
What moves between them
Bank transactions flow from Plaid into QuickBooks Online on a daily or configurable schedule. As Plaid delivers transaction data via webhooks or polling, ml-connector matches transactions to open bills and vendor payments in QuickBooks Online by amount, date, and payee. Matched transactions update the payment record in QuickBooks Online with bank reference data, completing the reconciliation. QuickBooks Online serves as the source of truth for bills and vendors; Plaid is read-only on the transactions side. Unmatched transactions are flagged in audit logs for manual review.
How ml-connector handles it
ml-connector stores QuickBooks realm ID and Plaid access tokens encrypted, refreshes QuickBooks access tokens one hour before expiry, and exchanges Plaid public tokens for item-scoped access tokens via the Plaid Link flow. It polls Plaid's transactions/sync endpoint with cursor tracking to avoid re-processing, matching incoming transactions to QuickBooks bills by comparing amounts, payment dates, and vendor names. For each matched transaction, ml-connector retrieves the full bill record, increments its SyncToken, and POSTs the updated BillPayment with bank reference data back to QuickBooks Online. Plaid webhooks are signature-verified using JWT ES256 validation with JWK public key lookup, rejecting any claim older than 5 minutes or signed with an unexpected algorithm. If a match fails or a QuickBooks update returns 400 (invalid SyncToken or stale object), the transaction is marked for manual review and logged in the audit trail. ml-connector respects Plaid's 24-month transaction history window and handles pagination via cursor for large account histories.
A real-world example
A small-to-mid-market business uses QuickBooks Online for accounting and has business bank accounts connected through Plaid. Before the integration, the accounting team spent 2-3 hours per week downloading transactions from the bank portal, matching them manually to bills in QuickBooks, and recording payments. Many bills went unpaid in QuickBooks for days after the check cleared because the match was manual and often missed. With QuickBooks and Plaid connected, incoming transactions automatically match to open bills, the payment record updates with bank reference data, and the accounting team sees immediate visibility into cleared payments. Month-end bank reconciliation now takes minutes instead of hours.
What you can do
- Sync bank transactions from Plaid into QuickBooks Online on a daily or event-driven schedule.
- Automatically match transactions to open bills and vendor payments by amount and date.
- Update QuickBooks bill payment records with bank transaction reference data for complete audit trails.
- Verify Plaid webhook signatures using JWT ES256 with JWK public key validation.
- Handle OAuth 2.0 token refresh for both systems and maintain encrypted credential storage.
Questions
- Does data flow both ways between QuickBooks Online and Plaid?
- No. Plaid transactions flow into QuickBooks Online where they match open bills and update payment records. QuickBooks Online bills and vendors are read-only in Plaid, since Plaid does not expose accounting entities. This is a one-way read relationship.
- How does ml-connector match Plaid transactions to QuickBooks bills?
- ml-connector compares transaction amount, payment date, and vendor/payee name against open bills in QuickBooks Online. Matches update the corresponding BillPayment record with bank reference data. Unmatched transactions are logged for manual review and do not create new records.
- What happens if a bill's SyncToken is stale when ml-connector tries to update it?
- QuickBooks returns 400 on stale SyncToken, indicating the bill was modified outside the integration. ml-connector catches this error, logs the conflict in the audit trail, and flags the transaction for manual review rather than overwriting concurrent changes.
Related integrations
More QuickBooks Online integrations
Other systems that connect to Plaid
Connect QuickBooks Online and Plaid
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started