Exact Online and Shopify integration
Shopify runs your online store. Exact Online manages your accounting and inventory. Connecting the two keeps your sales ledger and customer master data synchronized without manual re-entry. New orders from Shopify flow into Exact Online as sales invoices on a schedule or via webhook push, mapped to the correct GL accounts and revenue categories. Customer records from Shopify stay in sync with Exact Online's account ledger so invoicing always matches your current customer roster.
What moves between them
Shopify order and customer data flows into Exact Online. When a customer places an order in Shopify, ml-connector receives a webhook notification, fetches the full order and customer details from Shopify, and creates a corresponding sales order or sales invoice in Exact Online. Customer master records from Shopify sync to Exact Online's accounts ledger, with customer name, contact, and billing address mapped to Exact Online fields. The flow is unidirectional into accounting; ml-connector does not write back to Shopify. Sync occurs via webhook push when available or on a configurable polling schedule.
How ml-connector handles it
ml-connector stores Shopify's long-lived OAuth token (shpat_ prefixed) without refresh overhead and validates each webhook using the X-Shopify-Webhook-Id deduplication header. For Exact Online, it manages the OAuth token lifecycle with short 10-minute access tokens and rotating 30-day refresh tokens, and stores the customer's division ID and region-specific base URL so API calls reach the correct Exact Online instance. When a Shopify order webhook arrives, ml-connector validates the signature, fetches the full order record via Shopify GraphQL, maps Shopify's customer and line items to Exact Online's sales order schema, and creates the record under the mapped cost center and GL account. Because Exact Online's webhook payload contains only the entity key and action, ml-connector also polls the accounts or invoices endpoint when an update notification arrives to fetch the new or changed fields. Retries apply exponential backoff to both platforms' rate limits, and every record carries a full audit trail for replay if a downstream write fails.
A real-world example
A mid-sized e-commerce business sells home and garden products through Shopify and uses Exact Online for EU accounting and inventory management across multiple regional divisions. Previously, each order in Shopify was manually entered into Exact Online as a sales invoice by the finance team, a time-consuming process that introduced re-keying errors and created reconciliation headaches at month-end close. Customer information was duplicated and often fell out of sync. With Exact Online and Shopify connected, each order flows automatically into the sales ledger mapped to the correct division, region, and product category, and customer master data stays aligned across both systems. Month-end close now begins with orders already recorded and customer accounts reconciled.
What you can do
- Create sales invoices in Exact Online from Shopify orders, mapped to the correct GL accounts and cost centers.
- Sync Shopify customer records to Exact Online's accounts ledger with billing address and contact details.
- Handle Exact Online's region-specific division URLs and OAuth token lifecycle with short 10-minute access tokens.
- Validate Shopify webhook signatures with X-Shopify-Webhook-Id deduplication and refetch full records since webhook payloads contain only entity IDs.
- Poll or subscribe to changes with automatic retries, deduplication, and a full audit trail on every record.
Questions
- How does ml-connector handle Exact Online's region-specific base URLs and division IDs?
- Exact Online requires a division ID and region-specific base URL (Netherlands, Belgium, UK, Germany, France, Spain, or USA). ml-connector stores the customer's division ID and determined region per instance and routes all API calls to the correct base URL. The division ID is fetched from the /api/v1/current/Me endpoint during setup and validated on each sync cycle.
- Why does ml-connector refetch full records from Shopify when a webhook arrives?
- Shopify's webhook payload contains only the order or customer ID and the event type, not the complete record data. ml-connector validates the webhook signature via X-Shopify-Webhook-Id, then fetches the full order details from Shopify's GraphQL API to ensure all line items, customer metadata, and transaction information are available before creating the invoice in Exact Online.
- What happens if Exact Online's OAuth token expires or the refresh token rolls?
- Exact Online's access tokens expire after 10 minutes and refresh tokens rotate every 30 days. ml-connector automatically refreshes the access token on each API call if it is stale and stores the new refresh token. If a refresh token is not used within 30 days, the customer must re-authorize via the OAuth flow in the configurator.
Related integrations
More Exact Online integrations
Other systems that connect to Shopify
Connect Exact Online and Shopify
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started