ml-connector
QuickBooks DesktopAirbase

QuickBooks Desktop and Airbase integration

QuickBooks Desktop is the accounting system of record. Airbase, now Paylocity Finance, runs accounts payable, corporate cards, and expense reimbursements. Connecting the two keeps spend captured in Airbase in agreement with the general ledger in QuickBooks. Approved bills, reimbursements, and card transactions flow into QuickBooks as bills and journal entries without re-keying, the vendor master stays aligned, and the QuickBooks chart of accounts feeds the GL coding inside Airbase. ml-connector handles the very different transports on each side and moves the data on a schedule you control.

How QuickBooks Desktop works

QuickBooks Desktop has no cloud endpoint. It exposes vendors, bills, bill payments, purchase orders, accounts, items, and journal entries through the QBXML SDK, which is XML over SOAP. The QuickBooks Web Connector runs on the same Windows machine as QuickBooks, polls a hosted SOAP service on a set interval, and relays QBXML requests and responses while QuickBooks is open. Authentication is a session-ticket handshake inside SOAP, with no OAuth or API key. There is no webhook capability, so changes are found by polling queries filtered on a modified-date range.

How Airbase works

Airbase exposes bills, vendors, payments, expense reimbursements, corporate card transactions, purchase orders, and GL accounts through a REST API that returns JSON over HTTPS. Access uses a long-lived Bearer token generated in the Airbase portal, passed in the Authorization header, against a tenant-specific base URL. GL accounts are read-only on the Airbase side because the connected accounting system is the source of truth. Airbase supports outbound webhooks for events such as purchase request approval, and its expense data can be both pushed and pulled.

What moves between them

The main flow runs from Airbase into QuickBooks Desktop. ml-connector reads approved bills, expense reimbursements, and corporate card transactions from Airbase and posts them into QuickBooks Desktop as bills and journal entries, mapped to the matching QuickBooks accounts. The vendor master moves the same direction so payees in QuickBooks match the vendors in Airbase. In the other direction, the QuickBooks chart of accounts is read and supplied to Airbase so spend is coded to valid general ledger accounts before it is posted. Cadence follows the Web Connector polling interval, typically every five to fifteen minutes while QuickBooks is open.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Airbase side it sends the Bearer token against the tenant base URL and reads spend through the REST endpoints. On the QuickBooks side it runs as the hosted SOAP service the Web Connector calls, answering the authenticate handshake with a session ticket and returning QBXML request blobs for the agent to relay. Airbase bills map to QuickBooks bills against the matching vendor and accounts payable account, while card transactions and reimbursements map to journal entries or bills coded to the right expense accounts. Vendors are matched by name first so a new Airbase vendor becomes a QuickBooks vendor record rather than a duplicate. Because neither side pushes finance events, sync is poll-based on the Web Connector schedule, even though Airbase can emit approval webhooks. Two real gotchas are handled directly. QuickBooks updates require the current EditSequence, so ml-connector re-queries a record before any modify and never posts a stale version. QuickBooks has no idempotency key, so each Airbase record is checked for an existing match by reference before it is added, which prevents duplicate bills if a sync cycle repeats. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A growing software company of about two hundred employees keeps its books in QuickBooks Desktop Enterprise and runs all of its spend through Airbase, now Paylocity Finance, for corporate cards, vendor bills, and employee reimbursements. Before the integration, an accountant exported Airbase activity each week and hand-entered bills and journal entries into QuickBooks, then spent the start of every month-end close chasing card charges and reimbursements that had not been coded to the right accounts. With QuickBooks Desktop and Airbase connected, approved bills, card transactions, and reimbursements post into QuickBooks automatically against the correct accounts, the vendor list stays in step, and the chart of accounts drives the GL coding in Airbase. Month-end close starts with spend already recorded and coded, and the manual re-keying step is gone.

What you can do

  • Post approved Airbase bills into QuickBooks Desktop as bills against the matching vendor and accounts payable account.
  • Record Airbase corporate card transactions and expense reimbursements in QuickBooks as journal entries or bills coded to the right expense accounts.
  • Keep the vendor master aligned so payees match across Airbase and QuickBooks Desktop without duplicates.
  • Feed the QuickBooks Desktop chart of accounts into Airbase so spend is coded to valid general ledger accounts.
  • Sync on the Web Connector polling schedule, with duplicate checks, retries, and a full audit trail on every record.

Questions

Which direction does data move between QuickBooks Desktop and Airbase?
The main flow is Airbase into QuickBooks Desktop. Approved bills, expense reimbursements, and card transactions move from Airbase into QuickBooks as bills and journal entries, and the vendor master moves the same way. In the other direction, the QuickBooks chart of accounts is read and supplied to Airbase so spend is coded to valid general ledger accounts. GL accounts are read-only on the Airbase side, so the accounting records always originate in QuickBooks.
How does ml-connector reach QuickBooks Desktop if it has no cloud API?
QuickBooks Desktop has no hosted endpoint, so integration runs through the QuickBooks Web Connector installed on the same Windows machine. ml-connector runs the SOAP service the Web Connector polls, answers the session-ticket handshake, and exchanges QBXML messages while QuickBooks is open. Airbase is reached directly over its REST API using a Bearer token, and ml-connector bridges the two so the customer manages one connection.
How are duplicate bills and stale updates prevented?
QuickBooks Desktop has no idempotency key, so ml-connector checks each Airbase record against an existing QuickBooks match by reference before adding it, which stops duplicate bills if a polling cycle repeats. For updates, QuickBooks requires the current EditSequence on every modify, so ml-connector re-queries the record first and never posts a stale version. Both behaviors run automatically as part of each sync.

Related integrations

Connect QuickBooks Desktop and Airbase

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

Get started