Exact Online and Salesforce integration
Exact Online runs your accounting and ERP; Salesforce runs your sales pipeline and customer relationships. Connecting the two keeps your sales organization working from the same customer master as your finance team. New customers and suppliers created in Exact Online appear in Salesforce automatically, contact updates sync both directions, and your sales team always has the current billing and supplier data without manual re-keying. ml-connector bridges the different OAuth models and API shapes on each side and moves the data on a schedule and event-driven cadence you control.
What moves between them
Accounts and contacts flow primarily from Exact Online into Salesforce. Customer accounts flagged as IsCustomer=true in Exact Online map to Salesforce Account records, and suppliers flagged as IsSupplier=true map to Salesforce Account records with a supplier classification. Exact Online contacts associated with those accounts sync to Salesforce Contact records linked to their parent accounts. Contact updates in Salesforce can flow back to Exact Online where permitted by role permissions. The sync runs on a schedule that polls Exact Online for new and changed accounts and contacts, and listens to Salesforce Pub/Sub events for deletion and update notifications from the CRM side.
How ml-connector handles it
ml-connector manages two distinct OAuth flows: Exact Online's Authorization Code Grant with its 10-minute token lifetime and 30-day refresh token rotation, and Salesforce's Client Credentials Flow with configurable session timeout. On the Exact Online side, it fetches the division ID from the /current/Me endpoint per customer instance, applies OData filters to retrieve accounts by customer and supplier flags, and maps those accounts plus their associated contacts into Salesforce format. On the Salesforce side, it registers a Pub/Sub subscription for Account and Contact changes and consumes events to detect updates and deletions in real time. When Salesforce Pub/Sub detects a contact deletion, ml-connector marks the record as inactive in Exact Online rather than attempting a hard delete. Exact Online webhook payloads contain only the entity key, so ml-connector fetches full record details via the REST API after receiving a webhook notification. Because Exact Online supports no expand operation, related contact records are fetched in separate requests and deduplicated. Every record carries full audit trail information, including the original source timestamp and transformation steps.
A real-world example
A mid-market B2B services firm uses Exact Online for accounting and supplier management across multiple divisions in Europe and North America, and Salesforce for sales pipeline and customer engagement. Before the integration, the sales team manually imported customer lists from Exact Online into Salesforce every week and spent time chasing discrepancies when contacts were added or removed. When a new supplier was registered in Exact Online for a procurement project, the operations team had to notify sales so they could create a corresponding account in Salesforce for vendor management. With Exact Online and Salesforce connected, every new customer in Exact Online appears in Salesforce within minutes, contact additions and changes sync automatically, and the sales organization has a single source of truth for customer data that already reflects the accounting records.
What you can do
- Sync customer and supplier accounts from Exact Online into Salesforce using OAuth 2.0 and the OData v3 REST API.
- Keep Salesforce contacts aligned with Exact Online contact records using webhook push notifications and scheduled polling.
- Map Exact Online customer and supplier flags to Salesforce account record types and classifications without manual re-keying.
- Handle Exact Online division routing, 10-minute token refresh cycles, and 30-day refresh token rotation automatically.
- Capture Salesforce Pub/Sub events in real time to detect contact deletions and updates, and sync them back to Exact Online where permissions allow.
Questions
- How does ml-connector handle Exact Online's short access token lifetime and rotating refresh tokens?
- Exact Online access tokens expire after 10 minutes, so ml-connector refreshes the token before each API call or batch operation to avoid mid-stream auth failures. Refresh tokens rotate every 30 days, so ml-connector logs the new refresh token each time a refresh call completes and stores it encrypted for the next access cycle. If a refresh token is not used within 30 days, the user must re-authorize through the OAuth flow.
- Can ml-connector sync contact changes from Salesforce back into Exact Online?
- Yes. ml-connector listens to Salesforce Pub/Sub for contact updates and creations, then applies those changes to Exact Online contacts where role permissions allow. When a contact is deleted in Salesforce, ml-connector marks the corresponding Exact Online contact as inactive rather than removing it, preserving the audit trail and historical data.
- Why does ml-connector fetch full record details after receiving an Exact Online webhook?
- Exact Online webhook payloads contain only the entity key and action (create, update, delete), not the full record data. ml-connector must fetch the complete account or contact record via a separate REST API call using the key provided by the webhook, then transform and load it into Salesforce.
Related integrations
More Exact Online integrations
Other systems that connect to Salesforce
Connect Exact Online and Salesforce
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started