Odoo and SAP Ariba integration
Odoo runs your accounting, purchasing, and inventory. SAP Ariba runs your procurement and supplier management. Connecting the two keeps your purchase records and supplier data aligned. Purchase orders created in SAP Ariba flow into Odoo as verified PO records, invoices from suppliers in SAP Ariba post into Odoo's general ledger, and supplier lists stay in sync across both platforms. ml-connector handles the distinct authentication, polling, and record mapping on each side.
What moves between them
The main flow is SAP Ariba into Odoo. Purchase orders and line items from SAP Ariba map to Odoo purchase.order records with matching vendor references and account allocations. Invoices from SAP Ariba suppliers map to Odoo account.move records in the Accounts Payable module. Supplier records flow in both directions so Odoo vendor lists stay current. Polling runs on a schedule tied to your procurement cycle, checking for new and updated POs and invoices since the last run via the updatedDateFrom/updatedDateTo window in SAP Ariba reporting jobs.
How ml-connector handles it
ml-connector stores the Odoo API key and SAP Ariba OAuth credentials encrypted. On each cycle, it submits an async reporting job to SAP Ariba filtered by the prior run's timestamp, polls by jobId until completion, and downloads paginated results in 50,000-record batches. SAP Ariba OAuth tokens expire in one hour, so ml-connector caches and refreshes tokens before expiry. Every SAP Ariba request includes the realm query parameter and both the Bearer token and API key header. On the Odoo side, ml-connector uses the customer's API key in the Authorization header, creates or updates purchase.order records with Odoo purchase order lines, and posts account.move records with AP line allocations. Supplier names and codes are matched between systems so PO and invoice lines reference valid Odoo vendors. If a SAP Ariba job exceeds the max one-year date window, ml-connector splits the request into annual chunks. Retries with exponential backoff handle transient failures and rate-limit responses.
A real-world example
A mid-sized distribution company uses Odoo for accounting and purchase management and SAP Ariba as its procurement platform and strategic supplier hub. Before the integration, procurement teams created purchase orders in SAP Ariba, then emailed PO summaries to accounting, who manually keyed the orders into Odoo's PO module and reconciled vendor data by hand. Invoice receipt in SAP Ariba triggered a second manual step: exporting the invoice, matching it to the PO in Odoo, and coding the AP entry to the correct GL account. With Odoo and SAP Ariba connected, each new PO in SAP Ariba appears in Odoo within minutes, supplier invoices post directly as AP entries, and the GL postings are automatically coded to the purchase department's cost centers. Month-end invoice reconciliation is now accurate by design rather than by manual cross-check.
What you can do
- Stream purchase orders and line items from SAP Ariba into Odoo purchase.order records with vendor matching and GL account allocation.
- Post supplier invoices from SAP Ariba into Odoo as account.move records in the AP module, coded to the correct cost centers.
- Keep supplier and vendor lists synchronized across Odoo and SAP Ariba so PO and invoice lines reference valid vendors in both systems.
- Authenticate Odoo with API key login and SAP Ariba with OAuth2 plus API key, handling token refresh and credential rotation.
- Poll SAP Ariba reporting jobs on a schedule tied to your procurement cycle, handling date-window splitting and paginated result downloads.
Questions
- Which direction does data move between Odoo and SAP Ariba?
- The main flow is SAP Ariba into Odoo. Purchase orders, invoices, and supplier records from SAP Ariba map into Odoo purchase orders, AP invoices, and vendor lists. Supplier data can flow both directions so vendor names and codes stay aligned. Most write operations in SAP Ariba use SOAP/cXML, not REST, so the REST Open APIs are primarily read-oriented.
- How does ml-connector handle SAP Ariba's OAuth token expiry and API key requirement?
- ml-connector caches OAuth tokens and refreshes them before the one-hour expiry window. Every SAP Ariba API call includes both the Bearer token in the Authorization header and the static API key header, plus the realm as a query parameter. Missing either credential returns a 401, so ml-connector validates both before submitting requests.
- What happens if a date range in SAP Ariba reporting exceeds the maximum one-year window?
- SAP Ariba reporting jobs enforce a maximum one-year window between updatedDateFrom and updatedDateTo. If a backfill or recovery spans multiple years, ml-connector automatically splits the request into annual chunks, submits each job, and stitches the paginated results together.
Related integrations
More Odoo integrations
Other systems that connect to SAP Ariba
Connect Odoo and SAP Ariba
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started