Exact Online and JAGGAER integration
Exact Online runs accounting and inventory for SMEs across Europe and North America. JAGGAER runs Source-to-Pay across sourcing, purchasing, invoicing, and supplier management. Connecting the two keeps your purchase orders and supplier invoices in sync across systems. Purchase orders created in Exact Online flow to JAGGAER, and invoices posted in JAGGAER are posted into Exact Online's purchase ledger without re-keying. ml-connector handles both OAuth 2.0 authentication flows and vendor mapping, and every record carries an audit trail for compliance and dispute resolution.
What moves between them
Exact Online purchase orders flow into JAGGAER as PO records and trigger vendor record creation if the supplier does not already exist. JAGGAER invoices are polled daily and posted into Exact Online's purchase ledger as purchase invoice lines mapped to the matching GL accounts and cost centers. Supplier accounts are mapped bidirectionally so JAGGAER vendor records align with Exact Online supplier accounts. GL mapping is one-directional: invoices from JAGGAER post into pre-configured Exact Online GL accounts by invoice type. Purchase orders are the primary trigger; invoices follow a daily cadence so finance can reconcile on a predictable schedule.
How ml-connector handles it
ml-connector stores both OAuth credential sets encrypted and refreshes the Exact Online access token every 9 minutes (before the 10-minute expiry) using the rotating refresh token. For JAGGAER, it maintains a separate OAuth 2.0 client credentials token with its own refresh cycle. On every sync, ml-connector queries Exact Online for new purchase orders using OData filter syntax to fetch only records since the last sync, then translates each PO into a JAGGAER POST payload with supplier and GL mappings. For invoices, the daily poll fetches JAGGAER invoices using the J1P API date filters and maps JAGGAER vendor IDs back to Exact Online supplier accounts before posting as journal entries. Because Exact Online requires the division ID on every call, ml-connector caches it after the initial current/Me fetch to reduce roundtrips. JAGGAER vendor endpoints are customer-instance-specific, so ml-connector stores the JAGGAER base URL per customer to handle multi-tenant deployments. Both systems return 429 (rate limit) errors, so ml-connector implements exponential backoff with jitter on retries. Every record is logged with a timestamp, the source record ID, the target record ID, and the HTTP status of the sync attempt, enabling audit and replay if a downstream mapping fails.
A real-world example
A mid-sized manufacturing company in the UK runs Exact Online for accounting and inventory management across two divisions, and uses JAGGAER for procurement and invoice processing with 50+ preferred vendors. Before the integration, the procurement team created purchase orders in JAGGAER after the finance team had already entered them in Exact Online, creating duplicate POs and constant reconciliation headaches. Invoices from vendors arrived in JAGGAER and had to be manually rekeyed into Exact Online's accounts payable module, delaying invoice approval and cost allocation. With Exact Online and JAGGAER connected, purchase orders created in Exact Online automatically push to JAGGAER with correct vendor mappings, and incoming supplier invoices in JAGGAER flow directly into Exact Online's ledger, cutting invoice processing time from days to hours and eliminating manual rekeying.
What you can do
- Push Exact Online purchase orders to JAGGAER with automatic vendor mapping and GL account allocation.
- Poll JAGGAER invoices daily and post them into Exact Online's purchase ledger with cost center and account number mapping.
- Refresh OAuth 2.0 tokens automatically for both systems and handle token rotation on Exact Online refresh tokens.
- Map JAGGAER vendor IDs to Exact Online supplier accounts using configurable key fields and store mappings encrypted.
- Track every purchase order and invoice sync with a full audit trail including timestamps, record IDs, and HTTP response codes for compliance and troubleshooting.
Questions
- How does ml-connector handle the different OAuth flows used by Exact Online and JAGGAER?
- Exact Online uses OAuth 2.0 Authorization Code Grant with short-lived access tokens and rotating refresh tokens, while JAGGAER uses OAuth 2.0 Client Credentials with longer-lived credentials. ml-connector stores both credential types encrypted, refreshes the Exact Online token every 9 minutes (before its 10-minute expiry), and maintains its own refresh schedule for JAGGAER client credentials. If either token call fails, ml-connector raises an alert and halts the sync to avoid posting invoices to incorrect GL accounts.
- Why does ml-connector poll JAGGAER invoices daily instead of using real-time webhooks?
- JAGGAER supports event-driven push notifications only through professional services configuration, not as a self-serve setup. ml-connector uses the daily polling pattern to avoid the setup cost and complexity while keeping invoices synchronized within a predictable window that aligns with most finance close cycles. If real-time push is required, JAGGAER can be configured during onboarding to deliver webhook callbacks, and ml-connector can be updated to handle them.
- What happens when a JAGGAER vendor ID does not match any Exact Online supplier account?
- ml-connector halts the invoice posting and logs a mapping error with the vendor name and ID, then raises an alert to the admin. The invoice is retried on the next daily sync cycle after the mapping is corrected in the configuration. For new vendors, ml-connector can optionally create a new supplier account in Exact Online using the JAGGAER vendor details, or it can skip the invoice until manual account setup is complete, depending on the customer's risk posture.
Related integrations
More Exact Online integrations
Other systems that connect to JAGGAER
Connect Exact Online and JAGGAER
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started