ml-connector
Exact OnlineTipalti

Exact Online and Tipalti integration

Exact Online runs your accounting and purchasing. Tipalti automates your accounts payable and payments. Connecting them ensures that every purchase order and vendor invoice your accounting team records in Exact Online flows into Tipalti for approval and payment, without manual data entry or vendor rekeying. ml-connector handles the different authentication schemes and keeps your vendor master aligned across both platforms.

How Exact Online works

Exact Online is a cloud accounting and ERP platform serving SMEs across Europe and the USA. It exposes suppliers as Accounts entities, purchase orders, purchase invoice lines, GL accounts, cost centers, and payments through REST APIs with OData v3 query syntax. Exact Online authenticates with OAuth 2.0 Authorization Code Grant, but access tokens expire after 10 minutes and refresh tokens rotate on each refresh with a 30-day lifetime. Exact Online supports webhooks for purchase order and invoice events, but webhook payloads contain only the entity key and action; full data must be fetched separately via REST. Refresh tokens must be used at least once every 30 days or the user must re-authorize.

How Tipalti works

Tipalti is an accounts payable automation platform with global supplier onboarding, invoice and PO management, payment processing, and tax compliance. It exposes payees, invoices, purchase orders, GL accounts, and payments through both SOAP/XML and REST/JSON APIs. Tipalti authenticates via HMAC-SHA256 signature (payer name plus API key) for SOAP calls or OAuth 2.0 client credentials for REST. Tipalti supports IPN webhooks with a single account-wide endpoint that delivers all event types, verified via HMAC-SHA256. Invoice and PO operations are available through both SOAP and REST but with different function signatures.

What moves between them

The main flow is from Exact Online into Tipalti. After purchase orders are approved and invoices are received in Exact Online, ml-connector reads the vendor records, POs, and invoice lines and creates corresponding payees and invoices in Tipalti, mapped to matching GL accounts and cost centers. Vendor master data is synced bidirectionally so payee changes in Tipalti can flow back to Exact Online if needed. Because Exact Online is webhook-enabled, ml-connector listens for PO and invoice events and fetches the full record immediately; for vendors, it polls the Accounts endpoint on a daily schedule or on demand when a new supplier is added.

How ml-connector handles it

ml-connector stores Exact Online OAuth credentials and Tipalti API keys encrypted, refreshing the Exact Online token every 9 minutes to stay ahead of the 10-minute expiry and tracking the refresh token's 30-day window to alert when re-authorization is needed. When Exact Online sends a webhook for a new purchase order or invoice, ml-connector fetches the full record and the vendor details from Exact Online's Accounts endpoint, maps the vendor to a Tipalti payee by name or custom field, and creates or updates the invoice in Tipalti using HMAC signing on the SOAP call. Cost centers and GL accounts are mapped first so every invoice line lands on a valid account. If an invoice is rejected in Tipalti, ml-connector captures the rejection and can replay the invoice once the block is cleared. The integration tracks both the Exact Online division ID (required for all REST calls) and Tipalti's single IPN endpoint to route all event notifications correctly.

A real-world example

A mid-market distributor runs Exact Online for accounting, procurement, and GL across multiple divisions in Germany and the Netherlands. They receive hundreds of invoices monthly from suppliers across Europe, and before the integration, the AP team manually entered each invoice into Tipalti for payment processing, re-typing vendor names, PO numbers, and line amounts from Exact Online. Mistakes were common, reconciliation was painful, and the 30-day refresh token expiry meant periodic re-authorization headaches. With Exact Online and Tipalti connected, every approved PO and received invoice flows from Exact Online directly into Tipalti for approval and payment. Vendor records stay in sync across both systems, the AP team works only in Tipalti, and invoices are matched to their original POs automatically.

What you can do

  • Sync vendors from Exact Online Accounts (suppliers) into Tipalti payees, mapped by name and custom fields.
  • Pull approved purchase orders and received invoices from Exact Online into Tipalti for payment processing.
  • Map Exact Online cost centers and GL accounts to Tipalti GL codes so invoices land on the correct accounts.
  • Handle Exact Online's 10-minute token expiry and 30-day refresh token rotation with automatic refresh and re-authorization alerts.
  • Listen for Exact Online webhook events on purchase orders and invoices and fetch full records on demand, with replay support if Tipalti rejects an invoice.

Questions

Which direction does data move between Exact Online and Tipalti?
The main flow is from Exact Online into Tipalti. Purchase orders, invoices, and vendor records move from Exact Online into Tipalti for approval and payment. Vendor master data can sync bidirectionally if Tipalti updates are needed back in Exact Online.
How does the integration handle Exact Online's short-lived OAuth tokens and 30-day refresh token rotation?
ml-connector refreshes the access token every 9 minutes to stay ahead of the 10-minute expiry and tracks the refresh token's 30-day expiry window to alert you before re-authorization is required. Tokens are stored encrypted and decrypted on each API call.
What happens if Tipalti rejects an invoice that was pulled from Exact Online?
ml-connector captures the rejection reason and stores the record in the audit log. The invoice can be replayed once the issue is resolved (e.g., payee compliance cleared, PO match corrected), without re-fetching from Exact Online.

Related integrations

Connect Exact Online and Tipalti

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

Get started