QuickBooks Online and Zuora integration
QuickBooks Online runs accounting for small-to-mid-market businesses. Zuora runs subscription billing. Connecting them keeps your accounts receivable reconciled: new invoices in QuickBooks flow to Zuora, payments from Zuora post back against the matching QuickBooks invoice, and subscription metrics remain aligned with your general ledger. ml-connector handles the different OAuth flows on each side and moves the records on both push and pull schedules.
What moves between them
Invoices and payments flow bidirectionally. QuickBooks invoices and payments pull or push into Zuora for billing reconciliation and revenue tracking, synced on both webhook push and polling intervals. Zuora payment-processed and subscription-amended events post back to QuickBooks to reconcile received payments and subscription updates against the accounts receivable ledger. Customer and account records align in both directions so invoices land on valid Zuora accounts.
How ml-connector handles it
ml-connector stores both OAuth 2.0 credential sets encrypted and refreshes access tokens (QuickBooks every 55 minutes, Zuora every 55 minutes) before expiry. On the QuickBooks side it uses the realm_id per customer and supports both webhook delivery and CDC polling for reliability. On the Zuora side it reads the multi-region base URL per customer tenant and receives HMAC-SHA256-signed webhook notifications. Invoice and payment records are mapped so Zuora customer IDs match QuickBooks customers, and payment postings reference the correct invoice. Zuora rate limits are 50,000 RPM for production, so ml-connector throttles batch reads and retries with exponential backoff. Both systems require the full object representation on updates, so ml-connector fetches current state before patching. Webhook payloads are minimal on both sides, triggering a full-record fetch to populate the flow.
A real-world example
A mid-market SaaS business runs QuickBooks Online for general ledger and accounts receivable and Zuora for subscription billing and revenue recognition. Before the integration, invoices issued in QuickBooks had to be manually entered into Zuora, and Zuora payments had to be manually matched and recorded back in QuickBooks, creating a two-day reconciliation backlog each week. With QuickBooks Online and Zuora connected, invoices sync automatically into Zuora, payments post back to QuickBooks instantly on receipt, and subscription amendments in Zuora flow back to update accounts receivable. Reconciliation becomes a verification step rather than manual data entry.
What you can do
- Sync invoices from QuickBooks Online into Zuora accounts for billing reconciliation and revenue recognition.
- Post Zuora payment-processed and payment-declined events back to QuickBooks to reconcile cash received.
- Keep customer accounts aligned between QuickBooks Online and Zuora so invoices and payments land on valid records.
- Authenticate QuickBooks Online with OAuth 2.0 Authorization Code flow and Zuora with OAuth 2.0 Client Credentials, refreshing tokens automatically before expiry.
- Support both webhook push and polling pull on the QuickBooks side, with webhook Callout Notifications and multi-region base URL handling on the Zuora side.
Questions
- Which direction do invoices and payments move between QuickBooks Online and Zuora?
- Invoices and payments flow bidirectionally. Invoices and new payments move from QuickBooks Online into Zuora for billing reconciliation and revenue tracking. Payment-processed events and subscription amendments from Zuora post back to QuickBooks to reconcile cash received and subscription updates. Customer accounts are kept aligned in both directions.
- How does ml-connector handle OAuth 2.0 token refresh on each side?
- QuickBooks Online uses Authorization Code flow with 1-hour access tokens and rotating 24-26 hour refresh tokens; ml-connector refreshes every 55 minutes before expiry. Zuora uses Client Credentials grant with 1-hour tokens and no rotation; ml-connector also refreshes every 55 minutes. Both systems cache tokens in encrypted storage and refresh on 401 response as a safety valve.
- What if QuickBooks Online and Zuora are in different regions or use different base URLs?
- QuickBooks Online uses a region-agnostic base URL parameterized by realm_id per customer. Zuora requires the multi-region base URL per tenant (rest.zuora.com, rest.eu.zuora.com, etc.) captured at setup. ml-connector stores and uses the correct URL for each customer.
Related integrations
More QuickBooks Online integrations
Other systems that connect to Zuora
Connect QuickBooks Online and Zuora
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started