Exact Online and Slack integration
Exact Online stores your accounting and ERP data. Slack connects your team. When you link them, financial events surface immediately in Slack channels without manual data entry or waiting for a daily email report. New invoices, payments, purchase orders, and GL journal entries flow from Exact Online into the channels where your operations team works. ml-connector bridges the very different OAuth implementations and webhook models each system uses, so your team stays in the loop.
What moves between them
The main flow runs from Exact Online into Slack. Sales invoices, purchase invoices, purchase orders, and GL journal entries created or modified in Exact Online flow into designated Slack channels as formatted notifications. Payment records and cost transactions are posted as channel updates so your team sees cash flow and cost allocation changes in real time. The sync runs on a schedule you define, typically triggered by Exact Online webhooks when financial records change, and can fall back to polling if webhooks are unavailable. Messages flow one direction only, from Exact Online to Slack.
How ml-connector handles it
ml-connector stores the Exact Online OAuth credentials and the region-specific base URL per division, refreshing the access token before it expires at the 10-minute mark. For Slack, it stores the non-expiring bot token securely and verifies all incoming webhook events using constant-time HMAC-SHA256 comparison against the X-Slack-Signature header. When Exact Online sends a webhook notification, ml-connector fetches the full entity data via the REST API, since Exact Online webhook payloads contain only the key and action type. The connector maps Exact Online financial records to Slack message templates, formatting invoices, orders, and GL transactions with line-item details and cost center references. It respects Slack's 1-per-second rate limit on chat.postMessage per channel and batches or throttles posts to avoid 429 responses. Every record is logged with its source ID, timestamp, and status, so failed postings can be retried without duplication.
A real-world example
A mid-sized wholesale distributor uses Exact Online for order-to-cash and procurement across three distribution centers. Before the integration, the AP team reviewed purchase invoices in Exact Online once a day and manually notified the accounting team in Slack of high-value or exception invoices. With Exact Online and Slack connected, every purchase invoice above a threshold posts automatically to a dedicated Slack channel with line-item details and cost center allocation, and the AP team triages exceptions in real time. Payment confirmations post to the same channel, so cash flow is visible as it happens. Month-end close accelerates because the accounting team already has the invoice journal in Slack with attachments and cost-center breakdown.
What you can do
- Post sales and purchase invoices from Exact Online to Slack channels with line-item detail and cost center allocation.
- Notify teams of purchase orders, GL journal entries, and payment records as they are created or modified.
- Handle Exact Online's region-specific base URLs and OAuth token refresh on the 10-minute cycle.
- Verify Slack webhook signatures using constant-time HMAC-SHA256 comparison to prevent spoofing.
- Throttle posts to respect Slack's 1-per-second rate limit and log every record for error replay.
Questions
- Which direction does data move between Exact Online and Slack?
- Data flows from Exact Online to Slack only. Invoices, orders, GL entries, payments, and cost transactions created or updated in Exact Online post as formatted messages to Slack channels. Slack messages do not flow back to Exact Online, so Slack is a notification and visibility layer, not a data entry point.
- How does the integration handle Exact Online's region-specific URLs and division IDs?
- ml-connector stores the region-specific base URL and division ID per customer and includes the division ID in every Exact Online API request. When a customer changes regions or divisions, the connector routes requests to the correct URL and validates the division ID before fetching data.
- What happens when Exact Online webhooks are unavailable or delayed?
- ml-connector falls back to polling on a schedule you define if webhooks are not available. When a webhook arrives late or is missed, the next poll cycle catches the change. Slack webhook signature verification is mandatory on every request, so spoofed events are rejected at the signature check.
Related integrations
More Exact Online integrations
Other systems that connect to Slack
Connect Exact Online and Slack
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started