Acumatica and Adobe Commerce integration
Acumatica runs your finance, inventory, and distribution. Adobe Commerce runs your online storefront. Connecting the two keeps the catalog you sell from in step with the items and prices in your ERP, and brings every web order and captured payment back into Acumatica without re-keying. Stock items and price changes flow from Acumatica into the Adobe Commerce product catalog, and placed orders return as Acumatica sales orders and AR invoices against the right customer. ml-connector handles the very different auth on each side and moves records on a schedule you control.
What moves between them
Two flows run in opposite directions. Master and catalog data moves from Acumatica into Adobe Commerce: stock items, descriptions, prices, and on-hand quantity update the matching products in the Commerce catalog on a polling schedule. Transactions move from Adobe Commerce into Acumatica: placed orders become Acumatica sales orders and captured Commerce invoices become AR sales invoices, both posted against the customer record, and credit memos can flow back as AR credit memos. Acumatica stays the system of record for inventory and finance, so ml-connector writes financial documents only into Acumatica and never invents GL accounts in Commerce, which has no GL resource.
How ml-connector handles it
ml-connector stores both credential sets encrypted and pins the Acumatica endpoint version per customer, since the version in the URL must match the ERP release exactly or every call returns 404, and it wraps all Acumatica field values in value objects. On the Adobe Commerce side it signs each PaaS request with OAuth 1.0a using HMAC SHA256, or refreshes the IMS bearer token before its roughly 24-hour expiry on the Cloud Service, and it sends the store view code in the path. Because Acumatica cloud has no guaranteed push, the connector polls items and orders on LastModifiedDateTime with $top and $skip paging and a stored high-water mark, while consuming Adobe Commerce order and invoice webhooks where they are enabled and verifying the x-adobe-commerce-webhook-signature before acting. Customers and SKUs are mapped first so each web order posts to an existing Acumatica customer and item. Acumatica returns HTTP 429 under license-tier limits, so ml-connector backs off and retries, and it uses increment_id and natural keys to dedupe so a retried webhook never posts a sales order twice.
A real-world example
A mid-sized industrial parts distributor runs Acumatica for inventory, purchasing, and accounting, and sells to trade customers through an Adobe Commerce storefront. Before the integration, staff exported new SKUs and price lists from Acumatica and loaded them into Commerce by hand, and each morning they re-keyed the prior day's web orders into Acumatica as sales orders, which left the catalog stale and delayed shipping. With Acumatica and Adobe Commerce connected, item and price changes publish to the storefront automatically and every order and captured invoice posts back into Acumatica against the right customer. The catalog reflects current stock, orders reach the warehouse the same day, and month-end revenue ties out without manual entry.
What you can do
- Publish Acumatica stock items, descriptions, prices, and on-hand quantity into the Adobe Commerce product catalog.
- Post Adobe Commerce orders into Acumatica as sales orders against the matching customer record.
- Bring captured Commerce invoices and credit memos into Acumatica as AR sales invoices and credit memos.
- Bridge Acumatica OAuth and version-locked endpoints with Adobe Commerce OAuth 1.0a signing or IMS tokens.
- Poll Acumatica on LastModifiedDateTime and verify Adobe Commerce webhook signatures, with retries and a full audit trail.
Questions
- Which direction does data move between Acumatica and Adobe Commerce?
- Both directions, by record type. Items, prices, and inventory move from Acumatica into the Adobe Commerce catalog, while orders, invoices, and refunds move from Adobe Commerce into Acumatica as sales orders, AR invoices, and credit memos. Acumatica stays the system of record for finance, so ml-connector writes accounting documents only into Acumatica.
- How does ml-connector handle Acumatica's version-locked endpoints and Adobe Commerce's two auth models?
- It pins the Acumatica endpoint version per customer because a mismatched version in the URL returns 404, and it wraps every Acumatica field value in the required value object. For Adobe Commerce it signs PaaS calls with OAuth 1.0a using HMAC SHA256, or refreshes the IMS OAuth 2.0 token before its roughly 24-hour expiry on the Cloud Service, and includes the store view code in the path.
- Does the integration use webhooks or polling?
- It uses both, matched to each system. ml-connector polls Acumatica on LastModifiedDateTime with $top and $skip paging since Acumatica cloud push is not guaranteed, and it consumes Adobe Commerce order and invoice webhooks where enabled, verifying the x-adobe-commerce-webhook-signature HMAC. Records are deduped by increment_id and natural keys so a retried delivery never posts a duplicate sales order.
Related integrations
More Acumatica integrations
Other systems that connect to Adobe Commerce
Connect Acumatica and Adobe Commerce
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started