Exact Online and Cleo integration
Exact Online manages the accounting and supply chain records for a business. Cleo handles the EDI and API-based communication with suppliers and trading partners. Connecting the two keeps your procurement data flowing without manual re-entry. Purchase orders created in Exact move to suppliers through Cleo's EDI channels, supplier invoices received through Cleo are matched and posted into Exact's AP ledger, and shipment confirmations flow back into Exact to update goods receipts and inventory. ml-connector handles the OAuth token lifecycle on the Exact side, parses webhook notifications for immediate sync, and translates Cleo EDI transactions into Exact GL and cost center dimensions.
What moves between them
The main flow runs from Exact Online into Cleo and back. When a purchase order is created in Exact, ml-connector reads it via REST or webhook notification, transforms it into an EDI 850, and sends it to Cleo for delivery to the supplier. When the supplier responds with an EDI 810 invoice through Cleo, ml-connector fetches it from Cleo, maps line items to the matching PO and GL accounts in Exact, and posts a purchase invoice. Shipment confirmations (EDI 856) flow from Cleo into Exact as goods receipt records. All transactions are tied to the Exact cost center for each supplier relationship.
How ml-connector handles it
ml-connector stores the Exact OAuth credentials and maintains the 10-minute access token refresh cycle automatically, re-authorizing before each API call if needed. It subscribes to Exact webhooks for purchase order and invoice changes, validates each webhook payload with the registered HMAC secret, and immediately queries Exact's REST API for the full entity to avoid stale data. On the Cleo side, ml-connector polls folders for incoming EDI transactions at a configured interval (e.g., every 5 minutes), parses EDI 850/810/856 payloads, and maps supplier identifiers and line-item costs to matching GL accounts and cost centers in Exact. Because Exact's expand operator is not supported, related data (like the GL account for a cost center) is fetched in separate REST calls and cached for the duration of the transaction. Rate limiting on both sides is handled with exponential backoff and jitter. The 30-day refresh token rotation is tracked so a renewal can be done before expiry forces a re-authorization prompt.
A real-world example
A mid-sized distributor uses Exact Online for accounting and inventory, and relies on Cleo to manage EDI communication with a supplier base that includes large manufacturers and third-party logistics providers. Before the integration, the purchasing team created POs in Exact, manually exported them, translated them into EDI 850 format outside the system, and sent them through Cleo. Supplier invoices arrived via EDI 810 and were manually keyed into Exact AP, often with line-item mismatches because the cost data was re-typed. Shipments (856) were printed and reconciled by hand against Exact goods receipts. With Exact Online and Cleo connected, PO creation in Exact automatically feeds the EDI pipeline; supplier invoices are fetched from Cleo and posted into Exact AP with GL coding already assigned; and shipment confirmations update Exact's goods receipt records in real-time. The AP matching process is now automated, and invoicing disputes are rare because the PO and invoice line items stay synchronized.
What you can do
- Transform purchase orders created in Exact into EDI 850 transactions and route them through Cleo to suppliers.
- Fetch supplier invoices (EDI 810) from Cleo, map line items to Exact purchase orders, and post them into Exact AP.
- Sync shipment confirmations (EDI 856) from Cleo into Exact as goods receipt records tied to purchase orders.
- Manage Exact's OAuth token lifecycle, parsing webhooks to trigger real-time syncs without polling delays.
- Map supplier identifiers and cost allocations to Exact GL accounts and cost centers across all transaction types.
Questions
- How does ml-connector handle the different transport models between Exact and Cleo?
- Exact Online uses webhooks to push change notifications; ml-connector subscribes and validates each webhook signature, then queries the full entity via REST to avoid stale data. Cleo is pull-based, so ml-connector polls designated folders on a schedule to fetch incoming EDI transactions. Both approaches are coordinated so that the same transaction flows through the right system at the right time without duplication.
- What happens when an EDI 810 invoice arrives from a supplier through Cleo?
- ml-connector fetches the EDI 810 from Cleo, parses the supplier identifier and line items, matches each line to the corresponding purchase order in Exact, assigns GL accounts and cost centers, and posts a purchase invoice into Exact AP. If the supplier is not yet registered in Exact, the transaction is held in a quarantine queue with an alert so the buyer can add the account and replay the invoice.
- Does ml-connector handle the Exact OAuth token refresh automatically?
- Yes. ml-connector maintains the Exact access token refresh cycle (10-minute lifetime) and automatically re-authorizes before each API call. The 30-day rotating refresh token is tracked, and if renewal is needed, it is done proactively so token expiry does not interrupt a running sync job.
Related integrations
More Exact Online integrations
Other systems that connect to Cleo
Connect Exact Online and Cleo
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started