ml-connector
QuickBooks OnlineServiceNow

QuickBooks Online and ServiceNow integration

QuickBooks Online is where small and mid-market businesses record their invoices and expenses. ServiceNow's Accounts Payable module is where the finance and procurement teams manage bills and payments across the enterprise. Keeping the two systems synchronized means bills flow from QuickBooks to ServiceNow without manual data entry, payment records stay aligned across both systems, and your audit trail is complete. ml-connector moves the records automatically on a schedule you set.

How QuickBooks Online works

QuickBooks Online exposes vendors, bills, payments, accounts, departments, classes, items, and general journal entries through the QuickBooks Online Accounting API v3. The cloud product authenticates with OAuth 2.0 Authorization Code flow, with access tokens that expire in 1 hour and refresh tokens that rotate every 24-26 hours. QuickBooks publishes webhooks for account, bill, payment, and journal entry changes across your entire accounting ledger, though webhook payloads contain only the entity ID and operation type - the full record must be fetched separately. A CDC endpoint is also available for polling with 30-day history. Every create and update requires the current SyncToken for concurrency control.

How ServiceNow works

ServiceNow is a cloud platform deployed at a customer-supplied instance URL (e.g., https://{instance}.service-now.com) with a REST API for ITSM, procurement, and Source-to-Pay operations. It supports OAuth 2.0 Client Credentials (recommended for integrations), Authorization Code flow, or Basic Auth, with tokens defaulting to 30-minute lifespans. The Source-to-Pay staging tables for accounts payable sit in module-licensed add-ons that must be explicitly enabled. Outbound webhooks require manual Business Rule configuration; polling is the standard pattern using the sysparm_query parameter to fetch recent updates. Every table operation requires an authenticated service account with appropriate module roles.

What moves between them

Bills, payments, and GL entries flow from QuickBooks Online into ServiceNow's Accounts Payable module on a schedule you control. ml-connector polls QuickBooks for new bills and payments created since the last sync, maps each QuickBooks vendor to a ServiceNow supplier record, writes bill header and line items to the APO (Accounts Payable Operations) staging tables, and records payment details as they occur. GL entries that impact accounts payable accounts are also synced so the general ledger side is visible in ServiceNow. The flow is unidirectional - QuickBooks is the source of truth for bills and payments, and ServiceNow enriches procurement and approval workflows on top.

How ml-connector handles it

ml-connector stores both credential sets encrypted. For QuickBooks Online it manages the OAuth token rotation (1-hour expiry, 24-26 hour refresh cycle) and the realm_id (company identifier) from your QuickBooks account. For ServiceNow it accepts the instance URL subdomain and authenticates with OAuth 2.0 Client Credentials, passing the module scope (sn_apay for Accounts Payable) in the request. On each poll cycle, ml-connector queries QuickBooks using the CDC endpoint or webhook payload to find new bills since the last check, transforms each bill's vendor reference into a ServiceNow supplier lookup, and stages the bill header with line items into the sn_apo_invoice table. Payment records are written to payment staging and linked to the original bill. SyncToken values from QuickBooks are preserved for concurrency safety. Because both systems have different token rotation and rate-limiting behavior, ml-connector handles 401 Unauthorized from either side by refreshing the token and retrying. QuickBooks webhook payloads can arrive out-of-order or duplicate, so ml-connector deduplicates based on entity ID and operation timestamp. ServiceNow's Accounts Payable module must be licensed and the service account must hold the sn_apay.apo_user role.

A real-world example

A growing bookkeeping and tax firm uses QuickBooks Online to track their clients' invoices and expenses as part of their advisory services. Finance staff enter bills in QuickBooks as they arrive, but they also maintain supplier master data and approval workflows in ServiceNow's Procurement module. Before the integration, each new bill had to be manually re-entered in ServiceNow or uploaded via CSV, and payment records in QuickBooks never updated in ServiceNow's payment ledger. With QuickBooks Online and ServiceNow connected, bills flow automatically as they are recorded, ServiceNow enriches each one with approval workflows and supplier compliance flags, and the firm can track payment status in both systems in real time.

What you can do

  • Poll QuickBooks Online for new bills, payments, and GL entries on a schedule tied to your accounting calendar.
  • Map QuickBooks vendors to ServiceNow suppliers and stage bills in ServiceNow's Accounts Payable module with line items.
  • Sync QuickBooks payment records into ServiceNow payment tables and link them to the original bill.
  • Handle OAuth token rotation on both sides and retry with exponential backoff when rate limits are hit.
  • Preserve audit history and allow replay of any bill or payment transaction if downstream processing fails.

Questions

Which direction does data move between QuickBooks Online and ServiceNow?
Bills, payments, and GL entries flow from QuickBooks Online into ServiceNow's Accounts Payable module. The integration is read-only on the QuickBooks side - ml-connector does not write bills or payments back into QuickBooks. ServiceNow serves as the enrichment layer where bills undergo approval, matching, and three-way reconciliation.
How does ml-connector handle QuickBooks' token rotation and webhook payload limitations?
QuickBooks access tokens expire in 1 hour and refresh tokens rotate every 24-26 hours. ml-connector automatically refreshes both before expiry and re-authenticates if a request returns 401. Webhook payloads contain only the entity ID and operation type, so ml-connector fetches the full bill, payment, or GL entry record via GET. If payloads arrive out-of-order or duplicate, deduplication by entity ID and timestamp prevents double-entry.
What is required to set up the ServiceNow side?
ServiceNow's Source-to-Pay Accounts Payable module must be licensed in your instance. The service account used by ml-connector must hold the sn_apay.apo_user role at minimum. Confirm the exact instance URL subdomain and the names of the APO staging tables (sn_apo_invoice, payment staging) in your ServiceNow version before connecting, as table names can vary slightly across releases.

Related integrations

Connect QuickBooks Online and ServiceNow

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

Get started