ml-connector
QuickBooks OnlineAvidXchange

QuickBooks Online and AvidXchange integration

QuickBooks Online is where your invoices and bills live. AvidXchange automates the approval workflow and payment execution. Connecting them keeps your AP operations in sync without manual re-entry. New vendors and purchase orders added in QuickBooks flow into AvidXchange's workflow, where approvers route and authorize payments. Once AvidXchange executes a payment, the status returns to QuickBooks so your cash position stays accurate. ml-connector bridges the very different authentication models on each side and moves records on a schedule that fits your AP cycle.

How QuickBooks Online works

QuickBooks Online exposes vendors, purchase orders, invoices, bills, bill payments, journal entries, accounts, departments, and classes through the QuickBooks Online Accounting API (v3) over REST. All requests hit a company-specific realm URL and require OAuth 2.0 authorization with a 1-hour access token; refresh tokens rotate every 24-26 hours. QuickBooks supports both webhooks for real-time notifications and a CDC (Change Data Capture) endpoint for 30-day polling history. Webhook payloads carry only entity ID and operation type, requiring a full GET fetch to retrieve complete record details. Entities like vendors and customers cannot be hard-deleted, only marked inactive.

How AvidXchange works

AvidXchange is a proprietary REST API accessible via the WSO2 API Manager gateway at apistore.avidxchange.net. Authentication uses either customer tokens (Company Token and User Token generated in AvidSuite) or OAuth 2.0 client credentials for partner integrations. The full API endpoint documentation is gated behind the AvidXchange Partner Portal and requires a formal partner relationship. AvidXchange supports scheduled pull-and-batch sync for vendors, invoices, GL accounts, and payment data; no webhook or push-notification capability is documented. Production and sandbox base URLs are disclosed after onboarding.

What moves between them

The flow is primarily QuickBooks to AvidXchange. Vendors, purchase orders, and invoices are read from QuickBooks on a schedule aligned with your AP processing cycle and pushed into AvidXchange for approval workflow and coding. Payment execution data flows from AvidXchange back to QuickBooks so bill payment status and reconciliation details return to the source system. Payments initiated in AvidXchange are marked as pending in QuickBooks until AvidXchange confirms execution; accounts payable balance is then reconciled in QuickBooks based on the AvidXchange payment history.

How ml-connector handles it

ml-connector stores QuickBooks OAuth credentials (client ID, client secret, and realm ID from the authorization callback) encrypted, and refreshes the access token on every 1-hour expiry. It uses the QuickBooks REST API with minorversion=75 to fetch vendors, purchase orders, and open invoices on a configurable schedule. For AvidXchange, ml-connector authenticates as a partner using OAuth 2.0 client credentials and batches records into AvidXchange's vendor master, PO, and invoice inboxes. Since QuickBooks webhook payloads are best-effort and may arrive duplicated or out-of-order, ml-connector also polls the CDC endpoint to catch any missed changes and ensures each record carries a SyncToken for concurrency control on updates. Payment status is pulled from AvidXchange on a separate cycle and updates QuickBooks bill payment records with execution date, check number, and GL account postings. The integration tracks the expiry of QuickBooks refresh tokens (every 24-26 hours) and alerts if re-authentication is needed before the 5-year token lifetime expires.

A real-world example

A mid-sized wholesale distributor uses QuickBooks Online for invoicing and accounts payable but processes 200-300 vendor invoices per month with complex approval routing across regional managers and the CFO. Before the integration, AP staff exported invoice lists from QuickBooks, manually re-entered them into AvidXchange for workflow routing, approved payments back in AvidXchange, then hand-updated QuickBooks with payment dates and check numbers. With QuickBooks Online and AvidXchange connected, each incoming invoice automatically flows into AvidXchange for approval, and once authorized for payment, the payment status returns to QuickBooks with the execution details. The two systems stay in sync throughout the month, and month-end close reconciliation starts with AP data already aligned.

What you can do

  • Sync vendors, purchase orders, and invoices from QuickBooks Online into AvidXchange for approval workflow and payment automation.
  • Return payment status and execution details from AvidXchange back to QuickBooks bill payment records after payments execute.
  • Authenticate QuickBooks OAuth 2.0 access tokens (1-hour expiry) and AvidXchange partner credentials, refreshing both on schedule.
  • Poll QuickBooks CDC endpoint to catch missed webhook deliveries and validate all records carry SyncToken for safe updates.
  • Run syncs on a schedule that fits your AP cycle, with full audit trail and error replay on failed records.

Questions

Which direction does data flow between QuickBooks Online and AvidXchange?
The main flow is QuickBooks to AvidXchange. Vendors, purchase orders, and invoices are pushed into AvidXchange for approval and coding. Payment execution status and details are pulled from AvidXchange and returned to QuickBooks bill payment records so both systems reflect the same cash outflows and reconciliation state.
How does the integration handle QuickBooks webhook limitations and best-effort delivery?
QuickBooks webhook payloads contain only entity ID and operation type, so ml-connector fetches the full record via GET. Since webhooks may arrive duplicated or out-of-order, ml-connector also polls the CDC endpoint for 30-day history to catch any missed changes. Each record is updated with its SyncToken for safe concurrency control.
What happens when QuickBooks OAuth tokens expire or refresh tokens rotate?
QuickBooks access tokens expire every 1 hour and ml-connector refreshes them automatically. Refresh tokens rotate every 24-26 hours with a 5-year max lifetime; ml-connector tracks expiry and alerts before re-authentication is required to prevent outages.

Related integrations

Connect QuickBooks Online and AvidXchange

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

Get started