Sage Intacct and Adobe Commerce integration
Sage Intacct runs accounting and finance. Adobe Commerce runs e-commerce and B2B order management. Connecting the two keeps your vendor master and payables aligned with what your commerce platform records. Orders placed in Adobe Commerce flow into Sage Intacct as AP bills attached to the correct vendor, and B2B purchase orders sync vendor reference data back into Commerce. ml-connector handles the XML gateway on the Intacct side and OAuth on the Commerce side, moves data on a schedule you control, and maintains a complete audit trail.
What moves between them
The main flow moves from Adobe Commerce into Sage Intacct. Orders and invoices created in Adobe Commerce are read by ml-connector and posted into Intacct as AP bills, mapped to vendors that are either looked up from the Commerce customer record or created new. B2B purchase order headers and line items flow from Commerce into Intacct as open PO records. Vendor master data syncs in both directions, so Commerce B2B customers stay current with Intacct vendors. The schedule is configurable; you can poll Commerce on every order, on a daily batch cadence, or both.
How ml-connector handles it
ml-connector stores both credential sets encrypted: the Intacct session credentials, which expire after 50 minutes and are automatically refreshed, and the Adobe Commerce OAuth credentials, which are refreshed on demand if a call returns a 401. On the Intacct side, ml-connector sends all XML requests to the single gateway endpoint and parses response bodies for both HTTP-level errors and application-level errormessage tags; forbidden XML control characters are stripped before entity encoding. On the Commerce side, it validates webhook signatures using the HMAC SHA256 secret and dispatches based on event type. AP bills posted from Commerce orders are matched to existing Intacct vendors by Commerce customer email or ID; if no match exists, a new vendor is created. Commerce credit memos become AP credit memos in Intacct, and purchase order headers and lines map to Intacct PO records. All records carry a full audit trail and can be replayed if an Intacct session expires or a webhook verification fails.
A real-world example
A mid-sized B2B distributor runs Sage Intacct for accounting and uses Adobe Commerce for B2B ordering across multiple customer segments. Before the integration, the order-entry team exported orders from Adobe Commerce each day and re-entered them into Intacct as AP bills by hand, and discrepancies between the two systems caused month-end reconciliation delays. Vendor master data was maintained separately in each system. With Adobe Commerce and Sage Intacct connected, each order flows into Intacct automatically as an AP bill under the correct vendor, the vendor list stays synchronized, and the finance team's month-end close starts with payables already aligned to orders. Manual re-keying is gone.
What you can do
- Post orders and invoices from Adobe Commerce into Sage Intacct as AP bills, attached to the correct vendor.
- Sync B2B purchase orders and line items from Adobe Commerce into Intacct as open PO records.
- Map Adobe Commerce customers to Sage Intacct vendors, creating new vendors if needed.
- Authenticate Intacct via XML gateway session credentials with automatic 50-minute refresh, and Adobe Commerce via OAuth 1.0a or 2.0 depending on deployment model.
- Poll on a configurable schedule or receive real-time updates via Adobe Commerce webhooks, with retries and a full audit trail on every record.
Questions
- Which direction does data move between Sage Intacct and Adobe Commerce?
- The main flow is Adobe Commerce into Sage Intacct. Orders, invoices, and B2B purchase orders move from Commerce into Intacct as AP bills and POs, while vendor master data syncs in both directions. Intacct GL accounts are read-only in this integration, so ml-connector does not write accounting entries back to Commerce.
- How does the integration handle Intacct's XML gateway and 50-minute session expiry?
- ml-connector sends all requests to the single XML gateway endpoint at https://api.intacct.com/ia/xml/xmlgw.phtml and parses both HTTP responses and application-level errors inside the XML body. Sessions expire after 50 minutes and are automatically refreshed on the next API call. Forbidden XML control characters are stripped before escaping, and retried operations use the uniqueid flag for server-side deduplication.
- Does Adobe Commerce's OAuth work the same way for PaaS and SaaS deployments?
- No. PaaS deployments authenticate with OAuth 1.0a integration credentials, while SaaS uses OAuth 2.0 client credentials with a 24-hour token expiry. ml-connector detects the deployment model from your instance URL and applies the correct auth flow. Tokens are cached and refreshed on demand when a 401 response is received.
Related integrations
More Sage Intacct integrations
Other systems that connect to Adobe Commerce
Connect Sage Intacct and Adobe Commerce
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started