ml-connector
Sage IntacctSAP Ariba

Sage Intacct and SAP Ariba integration

Sage Intacct runs your general ledger and accounts payable. SAP Ariba manages procurement, purchase orders, and supplier invoicing. Connecting the two keeps your vendor records aligned and moves Ariba invoices and purchase orders into Intacct for payment processing without manual re-entry. ml-connector bridges the very different APIs on each side and syncs the data on a schedule you control.

How Sage Intacct works

Sage Intacct exposes vendors, AP invoices, payments, GL accounts, and dimensions through a single XML gateway endpoint at https://api.intacct.com/ia/xml/xmlgw.phtml. Authentication uses session-based credentials: a senderId, senderPassword, companyId, userId, and userPassword are exchanged for a sessionid via an initial getAPISession call, cached for 50 minutes and automatically refreshed on the next call. HTTP 200 responses may contain application-level errors inside the XML body, so error checking must parse for errormessage tags. Intacct does not push webhooks; all data flows are polling-driven.

How SAP Ariba works

SAP Ariba exposes purchase orders, invoices, suppliers, requisitions, and contracts via REST Open APIs at https://openapi.ariba.com and https://api.ariba.com. Every request requires two credentials: an OAuth 2.0 bearer token (obtained with client credentials grant and cached for 1 hour) and a static API key header. Async reporting jobs are the standard pattern for bulk data retrieval, filtered by updatedDateFrom and updatedDateTo with a maximum one-year window, returning paginated results up to 50,000 records per call. Write operations use SOAP/cXML rather than REST. Ariba has no outbound webhooks, so polling is the only integration pattern.

What moves between them

The main flow is SAP Ariba to Sage Intacct. Ariba purchase orders, invoices, and supplier records are polled on a schedule you define, mapped to Intacct vendors, GL accounts, and dimensions, and upserted into Intacct's accounts payable and general ledger. Requisitions from Ariba flow into Intacct as purchase order records. Reference data such as vendors, GL accounts, and cost dimensions are maintained in both directions so Ariba procurement data lands on valid Intacct accounts. AP invoices created in Ariba are read and synced; payment instruction flows remain in Intacct.

How ml-connector handles it

ml-connector stores the XML gateway credentials for Sage Intacct encrypted and automatically manages the 50-minute session lifecycle, refreshing on the next API call after expiry. For SAP Ariba, it caches the OAuth bearer token, refreshing before the 1-hour expiry, and presents the static API key on every request. Because both systems are poll-only, ml-connector submits async reporting jobs to Ariba filtered by updatedDateFrom and updatedDateTo, polls for job completion by jobId, and downloads paginated results. Ariba enforces a one-year maximum window for async jobs, so multi-year backfills are submitted as sequential annual chunks. Vendors in Ariba are mapped to Sage Intacct VENDOR records by external reference, and Ariba GL dimension fields are mapped to Intacct DIMENSION records. Invalid XML control characters in vendor names and notes are stripped before transmission to Intacct. API rate limits on Ariba vary by endpoint; ml-connector backs off and retries on 429 responses.

A real-world example

A mid-sized manufacturing and distribution company runs Sage Intacct for accounting and accounts payable, and uses SAP Ariba for procurement across multiple plants. Before the integration, the procurement team exported approved purchase orders and received invoices from Ariba, then re-entered them into Intacct for AP processing and GL posting, manually matching vendor records and GL codes. Data entry errors and mismatched vendors created reconciliation work at month-end close. With Sage Intacct and SAP Ariba connected, each approved purchase order and received invoice flows automatically into Intacct, vendors are aligned by external reference, GL accounts are validated before posting, and the procurement-to-AP cycle is complete without re-keying.

What you can do

  • Sync Ariba purchase orders and invoices into Sage Intacct vendors, GL accounts, and accounts payable records on a schedule you define.
  • Map Ariba supplier and requisition data to Intacct vendor and dimension records, validating GL accounts before posting.
  • Manage Sage Intacct's 50-minute session authentication automatically, caching and refreshing without manual intervention.
  • Handle SAP Ariba's OAuth bearer token refresh, static API key presentation, and async job polling with automatic annual chunking for multi-year backfills.
  • Strip invalid XML control characters and retry on rate limits, with a full audit trail on every record synced.

Questions

Which direction does data move between Sage Intacct and SAP Ariba?
The main flow is SAP Ariba into Sage Intacct. Purchase orders, invoices, suppliers, and requisitions move from Ariba into Intacct's vendors, GL accounts, and accounts payable. Reference data such as GL accounts and cost dimensions are aligned in both directions so procurement data lands on valid Intacct accounts.
How does ml-connector handle Sage Intacct's session authentication and Ariba's OAuth plus API key requirement?
ml-connector automatically manages Intacct's 50-minute session lifecycle, caching the sessionid and refreshing on the next call after expiry. For Ariba, it caches the OAuth bearer token and refreshes before the 1-hour expiry, presenting both the token and static API key on every request.
What happens when SAP Ariba enforces its one-year window limit on async reporting jobs?
ml-connector automatically submits multi-year backfills as sequential annual chunks, each filtered by updatedDateFrom and updatedDateTo within the one-year maximum. Results are paginated up to 50,000 records per call and merged into Intacct in order.

Related integrations

Connect Sage Intacct and SAP Ariba

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

Get started