ml-connector
Exact OnlineStripe

Exact Online and Stripe integration

Exact Online runs your accounting and orders. Stripe handles payments and billing. Connecting the two keeps your customers and invoices synchronized, so every sales invoice created in Exact Online appears in Stripe ready for payment collection. No more exporting invoices to email or re-entering customer data. ml-connector reads from Exact Online on a schedule you control and writes what Stripe needs to process payments on time.

How Exact Online works

Exact Online is a cloud ERP covering accounting, purchasing, sales, inventory, and project management for small and midsize businesses. It exposes accounts, invoices, orders, GL accounts, cost centers, items, and employees through a REST API using OData v3 query syntax. Authentication is OAuth 2.0 Authorization Code Grant with a 10-minute access token and 30-day rotating refresh tokens. The API is region-specific with base URLs for the Netherlands, Belgium, UK, Germany, France, Spain, and USA, and requires a division ID for all calls. Exact Online supports webhooks on a wide set of topics including sales invoices, purchase invoices, and accounts, delivered via HTTPS POST with HMAC-SHA256 signatures, so ml-connector can react in near real-time to significant changes.

How Stripe works

Stripe is a cloud payments platform accepting online payments, managing subscriptions, issuing invoices, and running financial operations via a REST API. It exposes customers, invoices, charges, payment intents, subscriptions, products, and payouts. Stripe uses API key authentication sent via HTTP Basic Auth or Bearer token, with separate keys for production and sandbox. Stripe has no native concept of vendors, purchase orders, or GL accounts; it is downstream of AR workflows and focused on customer payment collection. Stripe supports webhooks for payment, invoice, and customer events with HMAC-SHA256 signatures, at-least-once delivery, and a 5-minute replay window.

What moves between them

The main flow runs from Exact Online into Stripe. Sales invoices and their line items created in Exact Online are synced to Stripe as invoice records, along with the customer account data. Each Stripe invoice references the customer fetched or created from the Exact Online account record. The sync runs on a schedule you set, typically daily or weekly depending on invoice velocity. Stripe can then trigger payment collection workflows, send invoice reminders to customers, and record payments. Reference data such as customer names, email addresses, and GL account codes flow as metadata so Stripe invoices remain connected to the source transaction in Exact Online.

How ml-connector handles it

ml-connector stores both API credentials encrypted and manages Exact Online's OAuth 2.0 refresh cycle, refreshing the access token before the 10-minute window expires. It polls Exact Online on your defined schedule for new or updated sales invoices and their associated customers. For each invoice, it translates Exact Online's OData format into Stripe's invoice object format, creates or retrieves the Stripe customer by matching on email or external ID, then creates a Stripe invoice with line items priced from the Exact Online invoice lines. GL account codes from Exact Online are passed as metadata so reconciliation later maps Stripe payments back to the correct ledger accounts. Stripe API calls are idempotent via Idempotency-Key headers, and ml-connector deduplicates on external ID so a retry does not create duplicate invoices. The full audit trail tracks every record fetched, every API call made, and every Stripe object created, with the ability to replay individual transactions if a downstream failure occurs.

A real-world example

A mid-market SaaS company built on Exact Online for accounting and order management runs B2B software subscriptions billed through Stripe. Before the integration, the billing team exported invoices from Exact Online every month and manually uploaded them to Stripe, then spent hours chasing discrepancies between what Exact said was due and what Stripe showed as billed. With Exact Online and Stripe connected, each monthly invoice automatically syncs to Stripe with the customer and line item details, Stripe sends the customer a payment request, and the payment posting back to Exact Online is ready for reconciliation. Month-end AR close now starts with invoices and payments already synchronized, eliminating manual invoice entry and reducing AR days outstanding by two weeks.

What you can do

  • Sync sales invoices and line items from Exact Online to Stripe as billable invoice records on a schedule you control.
  • Create or update Stripe customers from Exact Online account data, mapping email addresses and customer names so invoices reach the right person.
  • Translate Exact Online GL account codes and cost center data into Stripe invoice metadata for downstream reconciliation and reporting.
  • Handle Exact Online's OAuth 2.0 authentication with automatic token refresh and region-specific API endpoints.
  • Maintain a full audit trail of every record fetched and every Stripe object created, with replay capability for failed transactions.

Questions

Which direction does data move between Exact Online and Stripe?
The main flow is from Exact Online into Stripe. Sales invoices and customer accounts sync from Exact Online to Stripe so customers can receive payment requests and make payments. Stripe does not write back to Exact Online; payment postings are tracked in ml-connector's audit log and can be exported to Exact Online via a separate reconciliation feed.
How does the integration handle Exact Online's OAuth 2.0 refresh tokens and region-specific APIs?
ml-connector manages the OAuth 2.0 refresh cycle automatically, storing credentials encrypted and refreshing the access token every 8 minutes (before the 10-minute expiry). It accepts the region (Netherlands, Belgium, UK, Germany, France, Spain, USA) per customer instance and routes API calls to the correct base URL so each division's data stays isolated.
What happens if an Exact Online invoice fails to sync to Stripe?
ml-connector logs the failure with full context, including the Exact Online invoice ID and the Stripe error. The transaction can be replayed on demand so the invoice is eventually synced without creating duplicates. If a customer does not exist in Stripe yet, ml-connector creates the customer record first before attempting the invoice.

Related integrations

Connect Exact Online and Stripe

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

Get started