ml-connector
Exact OnlineAdobe Commerce

Exact Online and Adobe Commerce integration

Exact Online runs accounting and ERP for SMEs. Adobe Commerce runs the e-commerce storefront and order management. Connecting the two keeps your revenue records in sync without manual re-entry. Sales orders and invoices from Adobe Commerce flow into Exact Online as sales documents, and the revenue journals that Exact Online generates post to the correct GL accounts and cost centers. ml-connector handles the different credential models on each side and moves the data on a schedule you control.

How Exact Online works

Exact Online exposes sales orders, sales invoices, GL accounts, cost centers, journal entries, and transaction lines through a REST API with OData v3 query syntax (filter, select, orderby, top, skip), with region-specific base URLs depending on the customer's geography (Netherlands, Belgium, UK, Germany, France, Spain, or USA). Authentication uses OAuth 2.0 Authorization Code Grant with access tokens that expire every 10 minutes and refresh tokens that rotate every 30 days. Exact Online publishes webhooks for a broad set of resources including SalesOrders, SalesInvoices, and GLAccounts, with HMAC-SHA256 signature verification, but the webhook payload contains only the entity key and action; full entity data must be fetched via the REST API.

How Adobe Commerce works

Adobe Commerce exposes orders, invoices, customers, and products through REST and GraphQL APIs, with platform-specific base URLs. PaaS deployments authenticate with OAuth 1.0a integration credentials, while SaaS deployments use IMS OAuth 2.0 client credentials with 24-hour token expiry. Webhooks are available on Adobe Commerce 2.4.4 and later, using HMAC SHA256 signature verification, but they are synchronous so the platform waits for a response before continuing. GL accounts are not exposed as an API resource, so the ERP must apply its own GL mapping rules.

What moves between them

Sales orders and invoices flow from Adobe Commerce into Exact Online. When a new order is placed in Adobe Commerce, ml-connector reads the order, creates a corresponding sales order in Exact Online, and maps the order lines to the correct GL accounts and cost centers based on product mappings you define. When an invoice is created in Adobe Commerce, ml-connector creates the corresponding sales invoice in Exact Online and posts the revenue journal with the GL mapping applied. The sync runs on a schedule you choose, typically daily or weekly depending on your order volume. Adobe Commerce invoices are read-only within the e-commerce platform, so ml-connector never writes invoice data back to Adobe Commerce.

How ml-connector handles it

ml-connector stores both OAuth credential sets encrypted and refreshes them on schedule before they expire. For Exact Online, it refreshes the bearer token every 9 minutes (before the 10-minute expiry) and checks the refresh token every 25 days to trigger a re-authorization if needed. For Adobe Commerce, it refreshes the token according to the platform model: every 23 hours for SaaS IMS OAuth 2.0, or by refreshing the session for PaaS OAuth 1.0a. On the Exact Online side, it polls for new orders and invoices on a schedule tied to your checkout cadence. It first syncs the GL account and cost center master data so every order line maps to a valid Exact Online GL account and cost center. Because Exact Online does not expose GL rules through the API, ml-connector applies a configurable mapping layer that you control. Orders that fail during sync are retried with exponential backoff, and every record carries a full audit trail so you can replay any failed order without re-processing the whole batch.

A real-world example

A mid-market B2C retailer runs Adobe Commerce for their online storefront and Exact Online for their accounting and order fulfillment. Before the integration, their order management team exported sales data from Adobe Commerce at the end of each business day and manually created sales invoices in Exact Online, mapping each order to the correct revenue GL account and cost center. Month-end close required the accountant to reconcile Adobe Commerce orders against Exact Online sales invoices and chase discrepancies between the two systems. With Adobe Commerce and Exact Online connected, each order automatically creates a sales order in Exact Online, each invoice automatically posts the revenue journal to the correct GL account, and month-end close starts with the sales and revenue accounts already reconciled. The manual re-entry step is eliminated, and the order pipeline is auditable end-to-end.

What you can do

  • Sync sales orders from Adobe Commerce into Exact Online as sales documents, mapped to the correct GL accounts and cost centers.
  • Sync invoices from Adobe Commerce and post the revenue journals into Exact Online's general ledger on the mapped GL accounts.
  • Refresh OAuth 2.0 tokens on both platforms before expiry to prevent authentication outages.
  • Poll Adobe Commerce on a schedule tied to your order cadence, with automatic retries and full audit trail on every record.
  • Map Adobe Commerce products to Exact Online GL accounts and cost centers via a configurable mapping layer.

Questions

Which direction does data move between Adobe Commerce and Exact Online?
The main flow is Adobe Commerce into Exact Online. Sales orders and invoices move from Adobe Commerce into Exact Online as sales documents and GL journals, mapped to the correct GL accounts and cost centers. Exact Online data such as customer and GL account master data can flow back to Adobe Commerce to keep the storefront data consistent. Adobe Commerce invoices are read-only within the e-commerce platform, so ml-connector never writes invoice data back to Adobe Commerce.
How does ml-connector handle the different OAuth models between Exact Online and Adobe Commerce?
Exact Online uses OAuth 2.0 Authorization Code Grant with a short access token lifetime (10 minutes) and rotating refresh tokens (30-day lifetime). Adobe Commerce uses either OAuth 1.0a (PaaS) or IMS OAuth 2.0 (SaaS) with different token lifetimes. ml-connector stores both credential sets encrypted and refreshes each on its own schedule before expiry, so the integration continues without interruption even if one platform's token expires.
How are GL accounts and cost centers mapped when Adobe Commerce invoices post into Exact Online?
Adobe Commerce does not expose GL accounts through its API, so ml-connector uses a configurable mapping layer that you define. When an invoice is created in Adobe Commerce, ml-connector reads the order lines, looks up the GL account and cost center mapping for each product, and posts the revenue journal with those GL codes into Exact Online. The mapping is stored encrypted and can be updated anytime without redeploying the integration.

Related integrations

Connect Exact Online and Adobe Commerce

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

Get started