ml-connector
QuickBooks OnlineZendesk

QuickBooks Online and Zendesk integration

QuickBooks Online holds your financial data: customers, vendors, invoices, and account status. Zendesk manages customer support tickets and communications. Connecting them keeps your support team aware of customer billing status, invoice history, and vendor relationships without switching systems. When a customer record changes in QuickBooks Online, Zendesk reflects it immediately so support agents can see payment status, outstanding invoices, and billing contacts without a separate lookup. Vendor records can also sync so internal teams track vendor relationships alongside vendor-reported issues.

How QuickBooks Online works

QuickBooks Online exposes customers, vendors, employees, items, accounts, invoices, bills, purchase orders, and journal entries through the QuickBooks Online Accounting API v3, authenticated with OAuth 2.0. Access tokens expire in 1 hour and refresh tokens rotate every 24 to 26 hours. The API supports both webhooks and polling; webhooks fire on customer, vendor, and invoice changes but only send the entity ID, so ml-connector must fetch the full record. A CDC endpoint offers 30-day polling history. All updates require a SyncToken for concurrency control, and vendors and customers cannot be hard-deleted, only marked inactive.

How Zendesk works

Zendesk exposes support tickets, users (agents and customers), and organizations (companies) through the Support API, authenticated with OAuth 2.0 or API token authentication. OAuth tokens do not expire unless revoked. Zendesk webhooks fire on ticket and user events with HMAC-SHA256 signature verification. Zendesk has no native finance entities like invoices or GL accounts, so customer and vendor records from QuickBooks Online must map to organizations and users. API token limits are 256 per account, and rate limits apply per the Zendesk documentation.

What moves between them

Customer and vendor records flow from QuickBooks Online to Zendesk. When a customer is created or updated in QuickBooks Online, ml-connector reads the full record (ID, name, email, billing address, payment status) and creates or updates a Zendesk organization with that data. Vendor records similarly populate organizations in Zendesk for internal reference. Invoice and bill relationships can be recorded as organization notes or custom fields. Reference data such as item names and account categories can also sync to support the broader context. Changes are triggered by QuickBooks Online webhooks where available and supplemented by polling on a cadence you control.

How ml-connector handles it

ml-connector stores both OAuth credential sets encrypted and refreshes access tokens before they expire on both sides, catching the one-hour QuickBooks Online token window and the rotation of refresh tokens every 24 to 26 hours. On webhook receipt from QuickBooks Online, it fetches the full customer or vendor record using the entity ID in the webhook payload, then upserts the matching Zendesk organization. For polling, it uses the QuickBooks Online CDC endpoint to detect changes over the last 30 days. Customer records are mapped to Zendesk organizations using email as the primary lookup key, with fallback to company name where email is absent. Zendesk's lack of finance fields means invoice totals and payment status are stored in organization notes or custom fields as the mapping design allows. Both sides track record state changes in an audit log so if a downstream call fails, the record can be replayed. Rate limits from either system trigger exponential backoff and retry logic.

A real-world example

A professional services firm uses QuickBooks Online to invoice clients and track vendor relationships with their suppliers. The firm's Zendesk support team handles client requests, feature questions, and technical issues. Before the integration, support agents had to ask clients for invoice numbers or payment status over email, slowing down issue resolution. With QuickBooks Online and Zendesk connected, each client automatically appears as a Zendesk organization with current billing contact, outstanding invoice count, and payment status visible in the support ticket sidebar. When a support agent opens a ticket, they see at a glance whether the client has overdue invoices, which vendor the issue relates to, and who the billing contact is, reducing email back-and-forth and speeding up ticket assignment.

What you can do

  • Sync customers and vendors from QuickBooks Online to Zendesk organizations, keeping support teams aware of billing and vendor status.
  • Authenticate QuickBooks Online with OAuth 2.0 access tokens that rotate hourly and refresh tokens that cycle every 24 to 26 hours, with automatic re-auth on token expiry.
  • Listen for customer and vendor changes via QuickBooks Online webhooks and fetch full record details on receipt, since webhook payloads contain only the entity ID.
  • Map customer email, billing address, and invoice status to Zendesk organization records and notes, with fallback lookup by company name where email is absent.
  • Retain full audit trails of all customer and vendor record syncs, with error replay capability if downstream Zendesk API calls fail.

Questions

Why does ml-connector fetch the full record after receiving a QuickBooks Online webhook?
QuickBooks Online webhook payloads contain only the customer or vendor ID and operation type, not the full record details. ml-connector must call the QuickBooks Online API to retrieve the complete data (name, email, billing address, payment status, and more) before it can populate the Zendesk organization. This fetch happens immediately after webhook receipt so the Zendesk record stays in sync.
How does ml-connector handle QuickBooks Online token expiration given the one-hour access token lifetime?
ml-connector refreshes QuickBooks Online access tokens proactively before they expire, catching the one-hour window. Refresh tokens themselves rotate every 24 to 26 hours and are stored encrypted. If a refresh fails, the integration surface an alert so the credential can be re-authorized before the next sync cycle.
What happens when a customer does not have an email address in QuickBooks Online?
ml-connector uses email as the primary lookup key to match QuickBooks Online customers to Zendesk organizations, but falls back to company name where email is absent. This allows customer records without email to still sync, though name-based matching is less precise and may require manual review if multiple customers share the same company name.

Related integrations

Connect QuickBooks Online and Zendesk

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started