Exact Online and ShipStation integration
Exact Online tracks your sales orders, inventory, and GL accounts. ShipStation handles shipments, carrier selection, and tracking. Connecting the two ensures that every shipment and its cost route back into Exact Online's accounting ledger. Sales orders from Exact Online flow into ShipStation for fulfillment, and shipped items with costs and tracking data post back into Exact Online so your ledger reflects the full order-to-cash cycle without manual re-entry. ml-connector bridges the two APIs and keeps both systems in sync on your schedule.
What moves between them
The main flow runs from Exact Online into ShipStation. Sales orders from Exact Online push into ShipStation as orders to be picked and shipped. Shipments and tracking data from ShipStation are polled at your sync interval and posted back into Exact Online as transaction lines and GL postings, mapped to the matching GL accounts and cost centers. Shipping costs are allocated to the sales order line items in Exact Online so the cost of goods sold reflects the full end-to-end order-to-cash cycle.
How ml-connector handles it
ml-connector refreshes the Exact Online OAuth access token on a 5-minute cycle before expiry, and rotates the refresh token as required by the 30-day rotation policy. It parses the API key or base64-encoded credentials for ShipStation depending on which API version is in use, and handles the 40 to 200 requests/min rate limit with exponential backoff and jitter on HTTP 429 responses. ShipStation webhooks deliver only pointers, so ml-connector polls both ShipStation /orders with the modifyDate filter to detect changes and ShipStation /shipments to track fulfilled items. Sales orders from Exact Online are cross-referenced by order key before posting shipping costs back as transaction lines, with cost center allocation based on the order's project assignment in Exact Online. Because ShipStation returns timestamps in PST/PDT, ml-connector converts them to UTC before storing in Exact Online. Every shipment record carries a full audit trail and can be replayed if a subsequent GL posting fails.
A real-world example
A mid-sized e-commerce merchant uses Exact Online for accounting and inventory management across multiple warehouses, and ShipStation to manage fulfillment from a third-party logistics provider. Before the integration, the finance team exported shipment manifests from ShipStation each day and manually entered shipping costs and tracking data into Exact Online, a task that delayed month-end close and created frequent reconciliation gaps between the two systems. With Exact Online and ShipStation connected, each shipment flows automatically into the accounting ledger with the correct cost center allocation, and the shipment tracking reference appears on the sales invoice without re-keying. Month-end close no longer requires a manual reconciliation step between the two systems.
What you can do
- Push sales orders from Exact Online into ShipStation with item quantities and customer details.
- Poll ShipStation for shipment completion and carrier tracking, and post shipping costs back into Exact Online as GL transaction lines.
- Authenticate Exact Online with OAuth 2.0 with automatic token refresh and rotation, and ShipStation with API key or basic auth depending on API version.
- Map ShipStation shipping cost centers and GL accounts to Exact Online dimensions so shipments post to the correct profit centers.
- Run on a schedule you control with full audit trail and replay capability if a GL posting fails.
Questions
- Which direction does data move between Exact Online and ShipStation?
- Sales orders move from Exact Online into ShipStation for fulfillment. Shipments, tracking data, and shipping costs move from ShipStation back into Exact Online as GL transaction lines and invoice adjustments. Both systems remain the system of record for their respective data: Exact Online owns accounting records, and ShipStation owns shipment logistics.
- How does ml-connector handle ShipStation webhooks that deliver only pointers, not full data?
- ShipStation webhooks notify ml-connector that an order or shipment changed, but the payload contains only a resource URL. ml-connector follows up with an authenticated GET request to fetch the full shipment record, then enriches it with cost and carrier data before posting into Exact Online. ml-connector also polls ShipStation /orders with the modifyDate filter on your sync interval to catch any order edits that did not trigger a webhook.
- What happens if Exact Online's OAuth token expires or the refresh token rotates?
- ml-connector tracks the 10-minute access token lifetime and refreshes proactively on a 5-minute cycle before expiry. The refresh token must be used at least once every 30 days and rotates on each refresh; ml-connector stores the new token after every refresh so the rotation does not cause a reconnect failure.
Related integrations
More Exact Online integrations
Other systems that connect to ShipStation
Connect Exact Online and ShipStation
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started