Exact Online and Plaid integration
Exact Online runs your accounting and general ledger. Plaid connects your bank accounts and investment accounts so you can see balances and transaction history. When you connect the two, bank transactions flow from Plaid into Exact Online's bank entries without re-keying, and account balances reconcile automatically against your GL bank accounts. ml-connector manages the token lifecycle on both sides, maps Plaid accounts to Exact Online bank accounts, and keeps the reconciliation audit trail complete.
What moves between them
The flow runs from Plaid into Exact Online. ml-connector polls Plaid for new and updated transactions from connected bank accounts on a daily or weekly schedule tied to your bank reconciliation cycle, then upserts them as bank entries in Exact Online. Account balances from Plaid are written to Exact Online's bank accounts so your GL reconciles to live bank data. Plaid accounts are mapped to Exact Online bank accounts and cost centers, so transaction lines land on the correct GL account and cost dimension. Plaid provides 24 months of transaction history; ml-connector respects that window and deduplicates on the Plaid transaction ID to avoid double-posting.
How ml-connector handles it
ml-connector stores both credential sets encrypted and manages the OAuth 2.0 token lifecycle on both sides, refreshing Exact Online access tokens (10-minute expiry) and Plaid access tokens (obtained via the Link flow and rotated per user) before each call. On the Exact Online side, it accepts the region-specific base URL and division ID per customer and uses OData filter and orderby syntax to query bank entries and transaction lines efficiently, working around the lack of $expand by fetching related GL accounts and cost centers in batched parallel requests. On the Plaid side, it uses the transactions/sync endpoint with cursor-based pagination to capture all transactions since the last sync window, then maps each transaction to the matching Exact Online bank account by account number or IBAN. Transaction description and amount are posted as bank entry lines with the cost center from the account mapping. Plaid webhooks notify ml-connector of new transactions and account changes, but polling remains the default cadence since webhook delivery on the Exact Online side is limited to certain entity types. ml-connector tracks the Plaid 30-day refresh token expiry per user and alerts before re-authorization is needed, retries failed Exact Online posts with exponential backoff, and maintains a full audit trail of every transaction mapped and posted so month-end bank reconciliation includes the source transaction ID from Plaid.
A real-world example
A mid-market professional services firm runs Exact Online for accounting and project billing across three offices in different countries. They use bank accounts from multiple institutions (commercial, payroll, international). Before the integration, the finance team exported transaction reports from each bank weekly and manually coded them into Exact Online's bank entries by hand, a process that took 3 to 4 hours per week and frequently introduced posting errors on the GL. With Exact Online and Plaid connected, transaction history flows automatically from all bank accounts into Exact Online each morning, coded to the correct bank account and cost center per office. Month-end bank reconciliation is automated, and the manual coding step is gone.
What you can do
- Pull bank transactions from Plaid and post them as bank entries in Exact Online's general ledger, mapped to the correct bank account and cost center.
- Keep Exact Online bank account balances synchronized with live balances from Plaid so your GL reconciles to your actual bank positions.
- Map Plaid accounts to Exact Online bank accounts and cost centers so transaction lines land on the correct GL account and cost dimension.
- Manage OAuth 2.0 token lifecycle for both Exact Online (10-minute tokens with 30-day refresh) and Plaid (user tokens via Link flow), refreshing before expiry on each request.
- Sync on a schedule you control, with deduplication by Plaid transaction ID, retries on failed posts, and a full audit trail of every transaction mapped and posted.
Questions
- Which direction does data move between Exact Online and Plaid?
- The main flow is Plaid into Exact Online. Bank transactions and account balances flow from Plaid into Exact Online's bank entries and GL accounts. Exact Online GL accounts, bank accounts, and cost centers are queried to match Plaid transactions and determine where to post each entry, but no data is written back into Plaid.
- How does the integration handle Plaid's per-user access token provisioning?
- Plaid requires a separate user-facing token for each bank account via the Plaid Link flow. ml-connector stores each user's Plaid access token encrypted, provisioning it once and then rotating it as needed according to Plaid's token lifetime policy. Exact Online OAuth 2.0 tokens (10-minute lifetime) are also refreshed automatically before each call.
- What happens when Plaid's $expand operator is not supported or Exact Online's division ID changes?
- Exact Online does not support the $expand operator, so ml-connector fetches related GL accounts and cost centers in parallel requests, then joins them in memory to determine posting dimensions. Division IDs are accepted per customer; if a division ID changes, the configuration update ensures all subsequent API calls target the new division. Plaid transactions are matched to Exact Online bank accounts by account number or IBAN.
Related integrations
More Exact Online integrations
Other systems that connect to Plaid
Connect Exact Online and Plaid
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started