Exact Online and Looker integration
Exact Online holds your financial transactions, customer orders, and supplier invoices. Looker analyzes data. Connecting the two lets your team query and visualize Exact Online's ERP data in Looker without manual extraction. Invoice trends, customer order patterns, cost center spending, and GL balances become live in your analytics dashboard. ml-connector handles the OAuth dance, regional URL routing, and keeps your Looker models in sync with Exact Online transactions.
What moves between them
Sales orders, sales invoices with line detail, purchase orders, purchase invoices, GL accounts, and cost centers flow from Exact Online into Looker on a schedule tied to your reporting cycle (daily, weekly, or on-demand). Exact Online serves as the source of truth for all financial and operational data. ml-connector polls Exact Online via the OAuth-secured REST API and transforms the OData responses into structured models in Looker, which are then queryable through looks, dashboards, and the REST API. Webhook subscriptions for major entity changes allow near-real-time notification of new transactions, but the full record detail is still fetched via REST to ensure completeness. The refresh cadence is configurable and typically aligns with daily or weekly reporting needs.
How ml-connector handles it
ml-connector stores both Exact Online OAuth credentials and Looker API credentials encrypted and manages token lifecycle on both sides. For Exact Online, it resolves the region-specific base URL per customer (Netherlands, Belgium, UK, Germany, France, Spain, or USA) and passes the division ID with every API call. When a webhook fires (e.g., a sales invoice is created), ml-connector notes the event but fetches the complete invoice and line-item detail from the Exact Online REST API to avoid incomplete records. For Looker, ml-connector exchanges client credentials for a short-lived token, makes the data-model query, and discards the token after each request rather than holding it. If a Looker token expires during a query, ml-connector refreshes and retries. Exact Online's 30-day refresh token rotation is tracked so re-authorization is triggered before expiry. GL account and cost center hierarchies are flattened and loaded first so later invoice line allocations reference valid dimensions. OData filter syntax (filter=...) is used to paginate large datasets and reduce payload size. Every extracted record carries source identifiers and audit timestamps, enabling reconciliation if a query fails.
A real-world example
A mid-sized European B2B distributor uses Exact Online for purchasing, sales, and accounting across three regional divisions (Netherlands, Belgium, Germany). The finance team needs to answer questions like monthly invoice revenue by customer segment, cost center spending trends, and supplier payment aging. Before the integration, they exported GL reports from Exact Online each month and manually built dashboards in a spreadsheet, losing visibility between reporting cycles. With Exact Online and Looker connected, sales invoice line detail, purchase invoice detail, GL balances, and cost center allocation sync daily into Looker. The finance team now has live dashboards showing invoice trends by customer, cost center spending by region, and aging analysis by supplier, all queried directly from Exact Online data without re-keying.
What you can do
- Extract sales invoices, line items, and revenue by customer from Exact Online and query them live in Looker.
- Sync GL accounts, cost centers, and cost units from Exact Online to model financial dimensions in Looker.
- Track purchase invoices and supplier spending via Looker dashboards updated on your schedule.
- Handle Exact Online's regional URL routing, OAuth token lifecycle, and 30-day rotating refresh tokens automatically.
- Receive webhook notifications when invoices or orders are created in Exact Online and fetch the complete record detail via REST for accurate analytics models.
Questions
- Does the integration handle Exact Online's regional URLs and division requirements?
- Yes. ml-connector accepts the region (Netherlands, Belgium, UK, Germany, France, Spain, or USA) and division ID per customer and routes all API calls to the correct regional base URL. The division ID is passed with every REST call as required by Exact Online. If your business spans multiple divisions, each is treated as a separate configuration so Looker models can segregate data by division.
- How does ml-connector handle Exact Online's webhook limitation where only the entity key is sent, not the full record?
- ml-connector subscribes to Exact Online webhooks to detect when invoices, orders, and GL transactions are created or updated. When a webhook fires, ml-connector immediately fetches the complete record (including all line items and related detail) from the Exact Online REST API. This ensures Looker always receives complete, queryable records rather than just entity keys.
- What happens when Exact Online's OAuth refresh token is about to expire?
- Exact Online refresh tokens rotate every 30 days and must be refreshed at least once per month or the user must re-authorize. ml-connector tracks token age and proactively refreshes before the 30-day expiry window closes, so your integration stays live without manual re-authorization. If a refresh fails, the connector alerts and stops pulling data until credentials are renewed.
Related integrations
More Exact Online integrations
Other systems that connect to Looker
Connect Exact Online and Looker
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started