SAP Business One and SAP Ariba integration
SAP Business One runs financials, purchasing, and inventory for the business. SAP Ariba runs sourcing, procurement, and supplier management in the cloud. Connecting the two means the purchase orders, supplier invoices, and supplier records that originate in Ariba flow into Business One without re-keying, so accounts payable works from the same data procurement approved. ml-connector handles the very different APIs on each side and moves the records on a schedule you control. Because Ariba exposes no general ledger resource, the chart of accounts stays in SAP Business One where it belongs.
What moves between them
The main flow runs from SAP Ariba into SAP Business One. ml-connector reads approved purchase orders, supplier invoice headers, and supplier records from Ariba and creates them in Business One as PurchaseOrders, A/P PurchaseInvoices, and supplier BusinessPartners, mapped to the matching item codes, GL accounts, and profit centers. Supplier master data flows the same direction so the Business One vendor list reflects suppliers qualified in Ariba. Where it adds value, supplier registration or qualification status and invoice approval decisions can flow back to Ariba through the Supplier Data and Document Approval APIs. Journal entries and the chart of accounts stay in Business One, since Ariba has no GL resource, so ml-connector never writes ledger entries to Ariba.
How ml-connector handles it
ml-connector stores both credential sets encrypted. On the Ariba side it requests and refreshes an OAuth2 bearer token before its one-hour expiry, sends the static apiKey header on every call, and appends the realm query parameter, since missing any one of those returns 401. On the Business One side it accepts the full Service Layer base URL per customer, logs in to get the B1SESSION cookie, reuses that cookie across requests rather than re-authenticating, and on error code -5002 it logs in again and replays the failed call. Because Ariba bulk data comes from async reporting jobs, ml-connector submits a job filtered by an updated-date window of at most one year, polls until it completes, then pages the results with the pageToken cursor; for an initial backfill it splits multi-year history into annual jobs. Suppliers and accounting dimensions are mapped first, so every purchase order and invoice line references a vendor, GL account, and profit center that already exists in Business One. Neither system issues idempotency keys, so ml-connector dedupes on the Business One DocNum and a BullMQ jobId before it posts, which prevents double-booking a re-read invoice. It also watches Ariba's per-minute rate-limit header and backs off before a 429, and respects the analytical reporting job cap of one submission per second. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized contract manufacturer with about 300 employees runs SAP Business One for finance, purchasing, and inventory, and uses SAP Ariba for sourcing and supplier qualification across a few hundred approved vendors. Before the integration, a buyer re-keyed every approved Ariba purchase order into Business One, and an AP clerk typed each supplier invoice header from Ariba into the A/P module by hand, which left orders sitting for a day and produced occasional vendor and amount typos that surfaced only at month-end. With SAP Business One and SAP Ariba connected, each approved purchase order and supplier invoice flows into Business One within the polling window, allocated to the right vendor and profit center, and qualified suppliers appear as business partners automatically. Procurement and finance work from the same numbers, and the manual re-keying step is gone.
What you can do
- Post approved SAP Ariba purchase orders and supplier invoices into SAP Business One as purchase orders and A/P invoices.
- Create and update Business One supplier business partners from suppliers qualified in SAP Ariba.
- Map Ariba item, GL, and cost center references to Business One item codes and profit centers so every line posts to a valid account.
- Bridge Ariba's OAuth2 plus apiKey and realm to the Business One session cookie on the customer's own Service Layer URL.
- Run Ariba async reporting jobs on a schedule with DocNum and jobId dedup, rate-limit backoff, and a full audit trail on every record.
Questions
- Which direction does data move between SAP Business One and SAP Ariba?
- The main flow is SAP Ariba into SAP Business One. Approved purchase orders, supplier invoice headers, and supplier records move from Ariba into Business One as purchase orders, A/P invoices, and business partners. Where the Ariba APIs allow it, supplier qualification status and invoice approval decisions can flow back, but journal entries and the chart of accounts stay in Business One because Ariba has no general ledger resource.
- Does SAP Ariba push records, or does ml-connector poll for them?
- ml-connector polls. SAP Ariba has no general outbound webhook for procurement data, so bulk purchase orders and invoices come from the Operational Reporting API as async jobs. ml-connector submits a job filtered by an updated-date window, polls until it finishes, then pages the results, and stores a high-water mark so the next run only pulls what changed.
- How does the integration handle SAP Business One's session cookie and on-premise URL?
- ml-connector accepts the full Service Layer base URL per customer, since Business One has no shared hostname, and logs in once to obtain the B1SESSION cookie. It reuses that cookie across requests rather than re-authenticating, and when a call returns error code -5002 from a 30-minute timeout it logs in again and replays the request. For on-premise instances the customer must expose the Service Layer port to the connector.
Related integrations
More SAP Business One integrations
Other systems that connect to SAP Ariba
Connect SAP Business One and SAP Ariba
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started