ml-connector
QuickBooks OnlineSAP Ariba

QuickBooks Online and SAP Ariba integration

QuickBooks Online is your accounting hub for bills, invoices, and vendor relationships. SAP Ariba is your procurement engine for sourcing, purchase orders, and supplier contracts. Connecting them keeps your procurement records in QuickBooks Online aligned with Ariba's purchase orders and invoices, and moves vendor master data between the two systems so a new supplier registered in Ariba syncs to a new vendor in QuickBooks Online. The integration eliminates manual record re-entry and makes your accounting records a live reflection of what your procurement team committed to and received.

How QuickBooks Online works

QuickBooks Online exposes vendors, customers, items, accounts, bills, invoices, purchase orders, and journal entries through the QuickBooks Online Accounting API (v3). Every request uses OAuth 2.0 authorization code flow with an access token that expires in one hour. QuickBooks Online fires webhooks on create, update, delete, and void events for bills, invoices, purchase orders, vendors, and accounts. Webhook payloads contain only the entity ID and operation type, so the full record must be fetched via a follow-up GET request. QuickBooks Online also exposes a CDC endpoint for polling with up to 30 days of change history.

How SAP Ariba works

SAP Ariba exposes purchase orders, invoices, suppliers, requisitions, and contracts through the REST Open APIs. Every request requires OAuth 2.0 client credentials plus a static API key header; both must be present or the call returns 401. Access tokens expire in one hour. Ariba does not push webhooks from its REST APIs. Instead, it requires polling via async reporting jobs that are submitted with a date range, executed asynchronously, and polled for completion by job ID. Each async job returns up to 50,000 records per call, with a hard limit of 2 million records per day across all calls. Write operations such as invoice creation and PO write-back use SOAP and cXML, not REST; the REST APIs are primarily read-only for procurement documents.

What moves between them

Purchase orders and invoices flow from SAP Ariba into QuickBooks Online. ml-connector polls Ariba's async reporting APIs for PurchaseOrders, Invoices, and Suppliers, maps the data to QuickBooks Online's Bill, Invoice, and Vendor entities, and syncs them on a schedule you define. Supplier master data flows both directions: new suppliers in Ariba sync to new vendors in QuickBooks Online, and vendor changes in QuickBooks Online can be read back. GL posting happens only in QuickBooks Online. Ariba's REST APIs do not accept write-back of invoices or purchase orders, so QuickBooks Online is the single source of truth for accounting postings.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the QuickBooks Online side it holds the OAuth access and refresh tokens from the authorization code flow, and tracks token expiry to refresh before calls fail. On the Ariba side it holds the client ID, client secret, and API key, exchanges credentials for a one-hour bearer token before each request window, and caches the token so it is not re-requested on every call. Because Ariba's REST APIs are pull-only and do not support webhooks, ml-connector polls Ariba's async reporting endpoints at intervals you define. Each async job is submitted with an updated-date window, polled until completion by job ID, and the results are paginated at 50,000 records per call. Pagination uses cursor-based tokens; an absent pageToken indicates the last page. Purchase orders and invoices are mapped to QuickBooks Online's Bill and Invoice entities by their Ariba ID, and supplier syncs map to Vendor records by name-based lookup or external ID. Because Ariba's view templates must exist before reporting calls return data, ml-connector validates that templates are present before submitting jobs. Rate limits on Ariba vary per endpoint; ml-connector backs off and retries on 429 responses.

A real-world example

A mid-sized industrial distributor runs QuickBooks Online for accounting and AP and SAP Ariba for procurement and supplier management. Before the integration, the procurement team submitted purchase orders in Ariba while the accounting team manually keyed PO summaries and vendor invoices into QuickBooks Online based on email notifications and Ariba reports. Invoices were often entered late or with mismatched amounts, and when a supplier updated their name in Ariba, the AP team would not find the matching vendor in QuickBooks Online and create a duplicate. With the integration, POs flow from Ariba into QuickBooks Online as bills, invoices sync automatically, and supplier changes keep the vendor master clean. The accounting team's month-end close starts with invoices already matched to purchase orders, and duplicate vendor records no longer occur.

What you can do

  • Poll SAP Ariba for purchase orders, invoices, and supplier changes on a schedule you define, and sync them into QuickBooks Online.
  • Map Ariba purchase orders to QuickBooks Online bills and Ariba invoices to QuickBooks Online invoices, with link tracking for audit and replay.
  • Sync supplier master data from Ariba to QuickBooks Online vendors, creating new vendor records and updating existing ones.
  • Bridge OAuth 2.0 authorization code flow on the QuickBooks Online side with OAuth client credentials plus API key on the Ariba side.
  • Submit and poll Ariba async reporting jobs with automatic retry and cursor-based pagination to fetch up to 2 million records per day.

Questions

Which direction does data move between QuickBooks Online and SAP Ariba?
The primary flow is from SAP Ariba into QuickBooks Online. Purchase orders and invoices flow as bills and invoices into QuickBooks Online's accounting records, and supplier master data syncs to vendors. QuickBooks Online is the single source of truth for GL posting; Ariba's REST APIs do not accept write-back of invoices or purchase orders.
How does ml-connector handle Ariba's async reporting jobs?
ml-connector submits async reporting jobs with a date range, polls for job completion by job ID, and downloads the results in pages of up to 50,000 records. Pagination uses cursor-based tokens; when no pageToken is in the response, the last page has been reached. The async job pattern is naturally idempotent, so retries do not cause duplicate data.
What happens if a QuickBooks Online refresh token expires or Ariba's token can no longer be refreshed?
QuickBooks Online refresh tokens rotate every 24 to 26 hours and have a maximum lifetime of 5 years; if a refresh token is revoked, re-authorization through the OAuth consent screen is required. Ariba access tokens expire in one hour; ml-connector requests a fresh token before the expiry time, so token refresh happens inside every polling window. Both systems require credential update in ml-connector if they become invalid.

Related integrations

Connect QuickBooks Online and SAP Ariba

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

Get started