ml-connector
Zoho BooksSAP Ariba

Zoho Books and SAP Ariba integration

Zoho Books manages accounting and multi-currency invoicing while SAP Ariba manages procurement and supplier sourcing. Connecting them keeps your accounting records and procurement data in sync. Purchase orders recorded in Zoho Books flow into SAP Ariba's procurement workflow for supplier and contract management, and invoices from Zoho Books reconcile against Ariba POs to prevent overpayment and duplicate entries. ml-connector bridges the two systems' different authentication schemes and data structures so procurement finance stays consistent.

How Zoho Books works

Zoho Books exposes invoices, bills, purchase orders, vendor payments, customer payments, contacts, items, chart of accounts, journals, and expenses through a regional REST API at domain-specific endpoints. Authentication uses OAuth2 Authorization Code flow with a user-delegated refresh token; access tokens expire after 1 hour and are passed as Authorization headers. Every call requires an organization_id query parameter to specify the account. Webhooks are configured via the Settings API and push events for invoices, bills, purchase orders, and payments; webhook payloads include an HMAC signature for validation. Webhook history is available with date filtering. Polling is available via offset-based pagination with page and per_page parameters.

How SAP Ariba works

SAP Ariba exposes purchase orders, invoices, suppliers, requisitions, contracts, and sourcing events through REST Open APIs at https://openapi.ariba.com. Every request requires OAuth2 client credentials (Bearer token) plus a static API key header, both mandatory. Tokens expire after 1 hour. Ariba offers two sync patterns: async reporting jobs submit a query filtered by updatedDateFrom and updatedDateTo, poll for job completion by jobId, and download results paginated at max 50,000 records per call; synchronous endpoints are available for suppliers and approvals. Reporting jobs enforce a max one-year window per submission. SAP Event Mesh is available for event subscriptions but requires separate BTP setup.

What moves between them

Purchase orders and invoices flow primarily from Zoho Books into SAP Ariba. Zoho Books invoices and purchase orders are captured either via webhooks (immediate push) or polling (batch retrieval), normalized to Ariba procurement schema, and written into Ariba's procurement data model. Supplier data and accounts are enriched from both systems to ensure PO lines reference valid Ariba vendors. The reverse flow reads Ariba purchase order reporting data to validate Zoho Books invoice-to-PO matching and flag misalignments for manual review. Each flow runs on a configurable schedule, with invoices typically synced daily and POs within hours of creation.

How ml-connector handles it

ml-connector stores both credential sets encrypted. For Zoho Books it caches the OAuth2 token and refreshes it before expiry (at 55 minutes); it detects the customer's region from the token response and routes all subsequent calls to the correct regional base URL, since Zoho Books publishes region-specific endpoints and requires organization_id on every call. For SAP Ariba, ml-connector includes both the OAuth2 Bearer token and the static API key on every request, and appends the realm as a query parameter as Ariba requires. Webhook signatures from Zoho Books are verified with HMAC before processing. Ariba reporting jobs are submitted with one-year time windows; for multi-year backfills, ml-connector splits the request into annual chunks, polls for job completion, and handles paginated results up to the 50,000-record page limit. Every procurement document carries its Zoho source ID and Ariba target ID for audit and replay on failure. Rate limits on both sides are tracked and retries are backed off exponentially.

A real-world example

A mid-sized B2B distributor uses Zoho Books to manage accounts payable and multi-currency invoicing from suppliers across four regions, and SAP Ariba to manage procurement, vendor contracts, and sourcing. Before the integration, procurement team members created purchase orders in Ariba, the accounting team re-entered them into Zoho Books manually for invoicing, and month-end reconciliation required a painful cross-system comparison to catch missing or duplicate invoice-to-PO matches. With Zoho Books and SAP Ariba connected, new purchase orders from Zoho Books populate Ariba's procurement pipeline automatically, and invoices are matched against Ariba POs in real time. The accounting team no longer re-keys procurement data, and the procurement team sees the full invoice-to-payment lifecycle.

What you can do

  • Move purchase orders from Zoho Books into SAP Ariba's procurement workflow, including line items, quantities, and supplier references.
  • Sync invoices from Zoho Books and match them against Ariba purchase orders to flag overages and prevent duplicate payments.
  • Bridge Zoho Books OAuth2 tokens and regional base URLs with SAP Ariba's dual OAuth2 and API key authentication on every request.
  • Handle Ariba's async reporting job submission, one-year time-window constraint, and max 50,000-record pagination for backfills and ongoing syncs.
  • Capture Zoho Books invoices and purchase orders via incoming webhooks for real-time sync, with fallback to polling for historical backfill.

Questions

How does ml-connector handle Zoho Books' multi-region base URLs?
ml-connector reads the region (US, EU, India, Australia, Japan, Canada, China, Saudi Arabia) from the OAuth2 token response and dynamically routes all subsequent API calls to the correct regional base URL. Organization_id is automatically resolved via GET /organizations after authentication. If the customer moves regions, ml-connector detects the change on the next token refresh and re-routes without manual intervention.
Why does SAP Ariba require both OAuth2 and a static API key?
Ariba uses OAuth2 tokens for access control and the static API key to identify the application calling the API. Both are mandatory on every request; missing either returns 401. ml-connector stores the API key encrypted alongside the OAuth2 credentials and includes both on every call. The realm must also be appended as a query parameter, not as a header.
What happens when syncing more than one year of historical invoices from Ariba?
Ariba reporting jobs enforce a max one-year window between updatedDateFrom and updatedDateTo. For multi-year backfills, ml-connector splits the request into annual chunks, submits each as a separate job, polls for completion, and reassembles the paginated results. Single-year ongoing syncs are handled in one job per batch.

Related integrations

Connect Zoho Books and SAP Ariba

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

Get started