ml-connector
Oracle NetSuiteSAP Ariba

Oracle NetSuite and SAP Ariba integration

Oracle NetSuite runs finance and procurement for thousands of mid-market and large enterprises. SAP Ariba runs the sourcing, procurement, and supplier management workflow. Connecting the two keeps your vendor master aligned and surfaces procurement events from SAP Ariba into Oracle NetSuite's GL and vendor records without manual re-entry. Invoices and POs approved in SAP Ariba post into NetSuite on a schedule you control, and the two systems stay synchronized across invoice status, vendor data, and accounting dimensions.

How Oracle NetSuite works

Oracle NetSuite exposes vendors, vendor bills, purchase orders, invoices, customers, inventory items, and accounts through SuiteTalk REST Web Services, with a separate OAuth 2.0 endpoint and SuiteQL for SQL-style queries. Authentication uses OAuth 2.0 Client Credentials with a certificate (recommended) or Token-Based Authentication with four static tokens (legacy, deprecated 2026.1). NetSuite Event Subscriptions push webhooks for Sales Orders, Invoices, Customers, Inventory Items, and Vendor Bills, but there is no HMAC signature; instead use IP allowlist or shared secret. OAuth tokens expire in 60 minutes with no refresh token in M2M flow, and scopes are governed by the integration role, not named OAuth scopes. Alternatively, polling via SuiteQL retrieves bulk and historical records.

How SAP Ariba works

SAP Ariba exposes purchase orders, invoices, suppliers, requisitions, contracts, and sourcing events through REST Open APIs and async reporting jobs. Authentication requires OAuth 2.0 client credentials PLUS a static API key header on every request; missing either returns 401. Tokens expire in 3,600 seconds. Ariba's primary pattern is async: submit a reporting job filtered by date range, poll for completion via jobId, and download paginated results (max 50,000 records per call, max 2,000,000 per day). View templates must exist in the Ariba UI before reporting calls return data. Most write operations use SOAP/cXML, not REST; the REST Open APIs are primarily read-oriented. Rate limits vary per API product and cannot be increased. There is no outbound webhook system from Ariba Open APIs.

What moves between them

The main flow runs from SAP Ariba into Oracle NetSuite. Invoices and purchase orders are read from Ariba via async reporting jobs on a cadence tied to your procurement calendar, mapped to NetSuite vendor bills and POs, and posted into NetSuite's GL accounts by department and cost center. Vendor master data is synchronized in both directions so procurement documents reference valid NetSuite vendors. GL postings in Ariba are read-only, so ml-connector reads approved invoices but does not write financial entries back into SAP Ariba.

How ml-connector handles it

ml-connector stores both OAuth credential sets encrypted and implements token refresh for each system independently: NetSuite tokens expire in 60 minutes and have no refresh token, so the client credentials are presented again on expiry; Ariba tokens expire in 3,600 seconds and are cached with refresh-before-expiry. For Ariba, ml-connector submits async reporting jobs filtered by date range, polls the jobId for completion, and retrieves paginated results respecting the max 50,000-record-per-call limit. For NetSuite, it queries via SuiteQL or consumes Event Subscriptions if webhooks are enabled (with IP allowlist or shared secret as the signature method, since NetSuite webhooks do not use HMAC). Both APIs are rate-limited; ml-connector backs off and retries on 429 responses. Vendor mapping is synchronized first so every invoice line in NetSuite references a valid vendor. The integration tracks which date ranges and jobIds have been processed to avoid duplicate reads, and every record carries a full audit trail for replay.

A real-world example

A mid-sized industrial manufacturer uses SAP Ariba for strategic sourcing and contract management and Oracle NetSuite for finance and accounting. Before the integration, the procurement team approved purchase orders and invoices in Ariba, then the finance team manually checked Ariba for new invoices, downloaded them, and re-entered them into NetSuite by hand, creating delays and errors. With SAP Ariba and Oracle NetSuite connected, each approved invoice flows from Ariba into NetSuite automatically, allocated to the correct department and GL account, and vendor changes in Ariba update the NetSuite vendor master. Finance closes the month with invoices already in the ledger and no re-keying step.

What you can do

  • Sync invoices, purchase orders, and requisitions from SAP Ariba into Oracle NetSuite vendor bills, POs, and GL accounts on a schedule you control.
  • Authenticate SAP Ariba with OAuth 2.0 plus static API key, and Oracle NetSuite with OAuth 2.0 certificate, managing token expiry and refresh independently.
  • Poll SAP Ariba async reporting jobs respecting the max 50,000-record-per-call limit, with intelligent date-range windowing and jobId deduplication.
  • Map vendor master data in both directions so procurement documents reference valid NetSuite vendors and Ariba suppliers stay aligned.
  • Retry rate-limited calls, track processed records with full audit trails, and replay failed records without duplicates.

Questions

Which direction does data move between SAP Ariba and Oracle NetSuite?
The main flow is SAP Ariba into Oracle NetSuite. Invoices, purchase orders, and requisitions move from Ariba into NetSuite's vendor bills and GL accounts, while vendor master data is synchronized in both directions. GL postings in Ariba are read-only, so ml-connector does not write financial entries back into SAP Ariba.
How does ml-connector handle SAP Ariba's async reporting pattern and Oracle NetSuite's two different authentication methods?
ml-connector submits async reporting jobs to Ariba filtered by date range, polls the jobId for completion, and retrieves paginated results. For Ariba, it caches OAuth tokens with refresh-before-expiry (3,600-second expiry); for NetSuite, it re-presents credentials on token expiry since there is no refresh token in M2M flow. Each system is authenticated independently with its own credential set.
What happens if an invoice is re-approved in SAP Ariba or NetSuite vendor data changes?
ml-connector tracks which Ariba async jobs and date ranges have been processed to avoid duplicate reads. Vendor master data is kept in sync in both directions, so changes in either system are visible to the integration on the next poll. Every record carries a jobId or audit trail so it can be replayed if a downstream GL posting fails.

Related integrations

Connect Oracle NetSuite and SAP Ariba

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

Get started