ml-connector
Exact OnlineServiceNow

Exact Online and ServiceNow integration

Exact Online runs accounting and purchasing for SMEs. ServiceNow runs IT Service Management and finance operations for enterprises. Connecting the two lets finance and procurement teams pull supplier, purchase order, and invoice data from Exact Online into ServiceNow's Source-to-Pay operations without manual re-entry. Purchase order lines land on the correct GL accounts and cost centers, and invoice reconciliation starts with accurate baseline data from the source.

How Exact Online works

Exact Online exposes accounts, purchase orders, purchase invoice lines, GL accounts, cost centers, items, and bank entries through a REST API with OData v3 query syntax. Authentication uses OAuth 2.0 Authorization Code Grant with a 10-minute access token and 30-day rotating refresh token, requiring app registration in the Exact Online App Center. The platform is region-specific with division-based URLs, so tenant identification requires both region and division ID. Exact Online supports webhooks for push notifications on create, update, and delete events across accounts, purchase orders, invoices, GL accounts, and other entities, with payload validation via HMAC-SHA256. Webhook payloads contain only entity keys and actions, so full entity data must be fetched separately via the REST API.

How ServiceNow works

ServiceNow runs on isolated customer instances accessed via REST at unique subdomains and authenticated with OAuth 2.0 Client Credentials, OAuth 2.0 Authorization Code, or Basic Auth, with 30-minute default token lifespan. Source-to-Pay operations including Accounts Payable and Procurement are module-licensed add-ons requiring specific user roles. ServiceNow has no native webhook registration system, so real-time push requires custom Business Rules and Outbound REST Messages configured by the customer, and the default pattern is polling with updated-on timestamps. All Table API operations require appropriate module roles, and staging table names vary by customer instance and version.

What moves between them

The main flow runs from Exact Online into ServiceNow. Accounts (suppliers and customers) are pulled from Exact Online and staged into ServiceNow's supplier and accounts tables, mapped by supplier ID or name. Purchase orders and purchase invoice lines are polled from Exact Online and staged into ServiceNow's procurement and accounts payable tables, with GL account and cost center mapping applied per division. GL account and cost center reference data are synchronized in both directions to ensure payables and expenses land on valid accounts. Invoices are read from Exact Online, validated against staged purchase orders and supplier data, and queued for matching and posting in ServiceNow.

How ml-connector handles it

ml-connector stores both credential sets encrypted: the Exact Online OAuth tokens (access and rotating refresh) are managed per division with 10-minute refresh logic built in, and the ServiceNow OAuth Client Credentials or Basic Auth are cached for the lifetime of the token. Because Exact Online requires division ID as part of every API path and query, ml-connector fetches the division from the customer's current user profile at setup and validates all subsequent API calls against that division. On the ServiceNow side, ml-connector connects to the customer's unique instance URL and authenticates as a service account with Source-to-Pay module roles. Exact Online webhooks are subscribed once per entity per division, but because webhook payloads contain only entity keys and action types, ml-connector fetches the full entity data via REST queries immediately after webhook receipt. For connectors without webhook setup, ml-connector falls back to polling Exact Online on a configurable schedule, using OData filters and skip/top parameters for incremental updates. ServiceNow offers no outbound webhook, so ml-connector polls the staging tables on the same schedule to detect downstream changes. GL accounts and cost centers are fetched from both systems, then mapped and deduplicated before each purchase order line is staged, so every PO references a cost center that exists in the customer's ServiceNow instance. Exact Online rate limits HTTP requests per division, so ml-connector tracks 429 responses and backs off with exponential jitter. Every staged record carries the source entity ID, timestamp, and user context for full auditability.

A real-world example

A mid-sized logistics and distribution company runs Exact Online for accounting and order management across three regions and uses ServiceNow Source-to-Pay for centralized procure-to-pay operations. Before the integration, the procurement team imported supplier lists and purchase order data from Exact Online into Excel each week, validated them against ServiceNow's supplier master and chart of accounts by hand, and re-entered the GL codes and cost center IDs manually before matching invoices. With Exact Online and ServiceNow connected, suppliers and purchase orders are pulled automatically from Exact Online, mapped to the correct GL accounts and cost centers per region, and staged in ServiceNow ready for invoice receipt and three-way matching. Month-end close starts with accurate PO and GL data pre-populated, and the procurement team spends less time on data entry and more time on exception handling.

What you can do

  • Pull supplier accounts from Exact Online and stage them into ServiceNow's supplier tables, keyed by supplier ID and validated against the division.
  • Sync purchase orders and purchase invoice lines from Exact Online to ServiceNow Procurement and Accounts Payable with GL account and cost center mapping.
  • Manage Exact Online OAuth tokens with automatic refresh on the 10-minute cycle, and authenticate to each ServiceNow instance with its own OAuth Client Credentials.
  • Map GL accounts and cost centers from both systems before staging PO lines, so every payable references a valid account in ServiceNow.
  • Poll Exact Online and ServiceNow on a configurable schedule, with exponential backoff on rate limits and a full audit trail on every record.

Questions

Does ml-connector use Exact Online webhooks or polling?
ml-connector subscribes to Exact Online webhooks for real-time push on accounts, purchase orders, and invoices. However, Exact Online webhooks contain only entity keys and action types, so ml-connector immediately fetches the full entity data via REST. If webhooks are not enabled, ml-connector falls back to polling on a schedule you set.
How does ml-connector handle the division requirement in Exact Online and unique instances in ServiceNow?
ml-connector fetches the division ID from Exact Online's current user profile at setup and uses it in every subsequent API call to the region-specific base URL. For ServiceNow, ml-connector connects to the customer's unique instance URL and authenticates as a service account with the required Source-to-Pay module roles.
What happens if GL accounts or cost centers don't match between the systems?
ml-connector fetches GL accounts and cost centers from both systems at sync start, maps and deduplicates them by name and ID, and validates every purchase order line against the result. If a line references a cost center or GL account that doesn't exist in ServiceNow, ml-connector flags the record, holds it in staging, and surfaces the validation error in the audit log.

Related integrations

Connect Exact Online and ServiceNow

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

Get started