ml-connector
Exact OnlineSquare

Exact Online and Square integration

Exact Online manages your GL, customers, and purchase orders. Square processes payments and tracks sales. Connecting the two keeps your revenue records and GL in agreement. Customer payments captured in Square flow into Exact Online's AR records without re-keying, invoice status stays aligned across both systems, and your GL shows the revenue and cash accounts correctly posted. ml-connector handles the regional differences in Exact's API endpoints and the OAuth token refresh for both platforms.

How Exact Online works

Exact Online exposes accounts, invoices, purchase orders, GL accounts, cost centers, items, and payment records through a region-specific REST API with OData v3 query syntax. Customer and supplier records are stored in the Accounts entity, differentiated by IsCustomer and IsSupplier flags. The platform authenticates with OAuth 2.0 Authorization Code Grant, with 10-minute access tokens and 30-day refresh tokens that rotate on each refresh. Webhooks are supported for significant resources including sales invoices and GL accounts, delivering only the entity key and action type; full entity data must be fetched via REST API. Exact requires a division ID for all API calls, which must be retrieved from the current user endpoint first.

How Square works

Square exposes payments, invoices, orders, customers, catalog, and inventory through a versioned REST API at https://connect.squareup.com/v2. The platform authenticates with OAuth 2.0 Authorization Code flow or Personal Access Token, using Bearer tokens with 30-day expiry and non-expiring refresh tokens. Webhooks are supported for payments, invoices, orders, and customers, with HMAC-SHA256 signature verification. Square's API is commerce-focused; it has no GL accounts, chart of accounts, or purchase orders. Vendors are available via a beta API and require mapping to Exact supplier accounts. Square inventory is read-only except for adjustments.

What moves between them

The main flow is from Square into Exact Online. When a customer makes a payment in Square, ml-connector reads the payment record and the corresponding invoice, maps the Square customer to an Exact account, and creates or updates the corresponding AR entry in Exact Online. Sales order totals from Square Orders can also be synced to Exact Quotations or Sales Orders for revenue recognition. Customer master data is synchronized in both directions so changes to contact info, tax IDs, and payment terms stay aligned. Payment data flows one direction only since Exact Online is the system of record for GL posting; Square payments are read-only to ml-connector.

How ml-connector handles it

ml-connector stores OAuth credentials for both platforms encrypted and refreshes tokens automatically before expiry. Exact Online's regional base URL is per-customer configuration, and ml-connector fetches the division ID on first connect and caches it. Square customer IDs are mapped to Exact account IDs in a persistent mapping table, so repeated syncs match the same customer across platforms. When Square reports a payment, ml-connector fetches the full payment details and the associated invoice, maps the customer, and writes an Exact payment record to AR tracking. Invoice status changes in Square trigger updates to corresponding Exact invoice records when present. Because both platforms use OAuth 2.0, ml-connector monitors token expiry and refreshes each platform's token independently on a per-customer schedule. Error handling includes retries with exponential backoff for transient failures, and every record is logged with full audit trail for replay if a write to Exact fails partway through.

A real-world example

A small e-commerce business sells products through their Square point-of-sale and online store, and uses Exact Online for accounting and invoicing in their EU market. Before integration, the finance team manually exported payment reports from Square each week, matched them to customer invoices, and entered them into Exact Online by hand. Bank reconciliation took hours because cash receipts had to be matched with invoice numbers typed by hand. With Exact Online and Square connected, every payment and its matching invoice flow into Exact automatically, customer AR is updated in real time, and month-end close starts with AR already reconciled and revenue already posted to the GL. Manual matching is gone, and the owner can see cash flow and customer status across both systems instantly.

What you can do

  • Sync Square customer payments into Exact Online AR records, mapped to the correct customer account and GL posting.
  • Keep Exact Online customer master data aligned with Square customer updates across email, phone, and tax ID.
  • Map Square sales order totals to Exact quotations and sales orders for revenue recognition and inventory planning.
  • Authenticate both platforms' OAuth 2.0 tokens and refresh them automatically before expiry.
  • Track all payment, invoice, and customer records with full audit trail and support replay if a downstream write fails.

Questions

Which direction does data move between Exact Online and Square?
The main flow is Square into Exact Online. Customer payments and invoice status move from Square into Exact for AR and GL posting. Customer master data such as contact info and tax ID is synchronized in both directions so changes stay aligned. GL account creation and supplier data remain in Exact Online only.
How does the integration handle Exact Online's regional endpoints and division ID requirement?
ml-connector accepts the Exact Online region-specific base URL per customer (Netherlands, Belgium, UK, Germany, France, Spain, or USA) and retrieves the division ID on first connection by calling the /api/v1/current/Me endpoint. The division ID is then cached and used in all subsequent API calls. If a customer's division ID changes, ml-connector detects it on the next token refresh and updates the cache.
What happens if payment or customer data fails to write to Exact Online?
ml-connector logs every record with full context and can replay the write if it fails. If Square records a payment but the write to Exact AR fails partway through, the payment is queued for retry with exponential backoff. The audit trail shows exactly which steps succeeded so you can diagnose the issue and correct it without losing data or creating duplicate entries.

Related integrations

Connect Exact Online and Square

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

Get started