Short answer
Acumatica offers a native Shopify connector for orders, products, inventory, and POS, so evaluate it before building anything. Custom integrations use Acumatica's contract-based REST API (PUT creates or updates a record), authenticate through OAuth 2.0 connected applications or API sign-in, and get change events through push notifications. Plan around license-based API limits — sessions, concurrent requests, and requests per minute vary by license — and always sign out of API sessions, or other integrations can be locked out.
Acumatica integration surface at a glance (documented by the vendor; see sources)
- Native connector
- Acumatica markets a native integration with Shopify and Shopify POS.
- API
- Contract-based REST API: {instance}/entity/{endpoint}/{version}/{Entity}, endpoints configured on the Web Service Endpoints (SM207060) form.
- Create/update
- PUT creates a record or updates an existing one; add If-None-Match: * to allow creation only.
- Authentication
- OAuth 2.0 / OpenID Connect via Connected Applications (SM303010), or the REST API sign-in method.
- API limits
- Set by license: max API sessions, concurrent requests, and requests per minute (License Monitoring Console, SM604000).
- Change events
- Push notifications to a webhook, message queue, SignalR hub, or commerce destination, sourced from generic inquiries.
- Shopify Orders
- Connector or service Map
- Acumatica Sales orders
Acumatica Cloud ERP is popular with US distributors, manufacturers, and multi-channel retailers, partly because it’s licensed by resources rather than per user. For Shopify merchants, the important facts are that Acumatica has its own native Shopify connector and that its API limits come from your license, not from a fixed public table. As on every page, documented marks statements from Acumatica or Shopify documentation, and recommendation marks our guidance.
Start with the native connector
Documented: Acumatica markets a native integration with Shopify and Shopify POS that keeps orders, products, and inventory aligned between the two systems.
Recommendation: map your real processes against the connector before writing code — order types, payment methods, taxes, refunds, multi-location stock, and POS. The connector covers the standard D2C flow; custom work is typically needed for a 3PL in the middle, unusual bundles or kits, B2B approval steps, or orders that must be split across branches. Compare options in custom integration vs. off-the-shelf connectors.
The contract-based REST API
Documented: Acumatica’s contract-based REST API is accessed through endpoints configured on the Web Service Endpoints (SM207060) form. URLs follow the pattern {instance}/entity/{endpoint}/{version}/{Entity} — for example the SalesOrder entity of the Default endpoint at a given version. The API can retrieve, create, update, and delete records. A PUT request creates a record or updates an existing one; adding the If-None-Match: * header restricts it to creation only.
Recommendation:
- Pin the endpoint version your integration was built against and test before moving to a newer one; entity and field shapes differ between versions.
- If you add custom fields, extend the endpoint rather than relying on screen-based workarounds, so the API contract stays explicit.
- Request only the fields and detail entities you need (
$select,$expand), because large expanded payloads count against your license’s throughput.
PUT https://{instance}/entity/Default/{version}/SalesOrder
Authorization: Bearer {access_token}
Content-Type: application/json
{
"OrderType": { "value": "SO" },
"CustomerID": { "value": "WEBUS" },
"CustomerOrder": { "value": "SHOP-US-5551234" },
"Details": [
{ "InventoryID": { "value": "TSHIRT-BLK-M" }, "OrderQty": { "value": 2 } }
]
}
Illustrative only. Field names, required values, and available entities depend on your endpoint version and configuration.
Authentication and API sessions
Documented: client applications sign in either with the contract-based REST API’s sign-in method or through OAuth 2.0 / OpenID Connect. OAuth clients are registered on the Connected Applications (SM303010) form, which supports the authorization code, implicit, resource owner password credentials, and hybrid flows.
Documented: each license limits the number of API sessions. When an extra session tries to sign in beyond that limit, the sign-in is rejected, and Acumatica warns that applications which don’t sign out can prevent other applications from signing in.
Recommendation: prefer OAuth with refresh tokens for long-running integrations. If you use session sign-in, reuse a session for a batch of work and always sign out in a finally block. Session leaks are the most common reason an Acumatica integration “randomly” stops working when a second integration goes live.
License-based API limits
Documented: every license sets three limits, shown on the License Monitoring Console (SM604000): the maximum number of API sessions, the maximum number of concurrent API requests, and the maximum number of API requests per minute. Incoming requests wait in an internal queue and are processed in parallel by API processing cores, up to the concurrent-request limit. When the requests in the past minute reach 50% of the per-minute limit, subsequent requests are delayed. API consumption and throttling can be reviewed on the API Monitoring tab of the System Monitor (SM201530).
Recommendation: read your license’s actual values before sizing the sync — don’t rely on figures from blog posts. Budget the per-minute limit across all integrations (Shopify, 3PL, EDI, CRM), batch inventory updates instead of sending one call per SKU, and move bulk loads to off-peak hours.
Push notifications for changes in Acumatica
Documented: Acumatica push notifications send data changes to external systems. The source is a data query — a generic inquiry or a built-in definition — and destinations can be a webhook (HTTP address that receives POST requests), a message queue, a SignalR hub, or a commerce push destination. For webhooks, you can specify a header name and value for security. Notifications that fail after automatic attempts can be reviewed on the Process Push Notifications form and resent.
Recommendation: track only the fields you need (stock quantities, shipment status, tracking numbers), authenticate requests with the custom header, and process them through a queue. Combine push notifications with a scheduled reconciliation query — notifications tell you something changed; reconciliation proves nothing was missed.
Orders without duplicates
Documented (Shopify): Shopify webhooks can be delivered more than once.
Recommendation: store the Shopify order ID in a field you can query (the customer order number or a dedicated custom field) with a per-store prefix, keep your own table of processed events, and look the order up before retrying after a timeout. A PUT without the order number creates a new auto-numbered order every time, so retries without a lookup are a direct path to duplicates. See retries and idempotency.
Inventory, fulfillment, and finance
Recommendation:
- Inventory: let Acumatica own on-hand quantities and publish available-to-sell per warehouse to the matching Shopify location, with a safety buffer for fast movers.
- Fulfillment: confirm the shipment in Acumatica, then create the fulfillment and tracking (UPS, FedEx, USPS) in Shopify.
- Tax: post the sales tax Shopify or your tax engine calculated at checkout rather than recalculating it; have your tax advisor confirm the setup per state. See sales tax in ERP integrations.
- Payouts: reconcile Shopify Payments payouts as net deposits with fees, refunds, and adjustments booked separately — see the approach on the QuickBooks Online page.
Common pitfalls
- Leaked API sessions blocking every other integration.
- Ignoring license limits until a sale-day spike delays every request.
- Duplicate orders from retried
PUTrequests without a lookup. - Push notifications tracking every field, flooding the queue.
- Untested endpoint upgrades that change entity shapes under a running integration.
Frequently asked questions
Does Acumatica have a native Shopify connector?
Yes. Acumatica markets a native integration with Shopify and Shopify POS that synchronizes orders, products, and inventory between the two systems. Evaluate it first; custom code is usually only needed for processes outside its scope.
Why does my Acumatica integration get "API login limit" errors?
Each Acumatica license limits the number of concurrent API sessions. Integrations that sign in for every request and never sign out keep sessions open and can block other applications from signing in. Reuse one session (or an OAuth token) and always sign out when a session-based job finishes.
How fast can an integration call the Acumatica API?
It depends on your license. Acumatica documents three license-level limits — API sessions, concurrent API requests, and API requests per minute — shown on the License Monitoring Console (SM604000). When requests in the past minute reach 50% of the per-minute limit, further requests are delayed rather than rejected immediately. Check your own license's values before sizing a sync.
How does Acumatica tell my integration that something changed?
Through push notifications. You define a data query (typically a generic inquiry), choose the fields to track, and pick a destination such as a webhook URL. Acumatica sends a POST with the changes and lets you add a custom header so the receiver can authenticate the request. Failed notifications can be reviewed and resent.
Sources and further reading
Platform-specific statements on this page were checked against these sources on . Vendor APIs change; confirm details in the current documentation before you build.
- [1] Acumatica native integration with Shopify and Shopify POS — Acumatica
- [2] Contract-Based REST API — Acumatica Help
- [3] Connected Applications (SM303010) — Acumatica Help
- [4] License Restrictions for API Users — Acumatica Help
- [5] Push Notifications: General Information — Acumatica Help
- [6] Push Notifications: Destinations — Acumatica Help
- [7] Shopify webhooks — Shopify
Related reading
- Platforms Shopify ERP Integration How Shopify connects to an ERP — the GraphQL Admin API, webhooks, inventory states, fulfillment orders, rate limits — plus the sync patterns and pitfalls that matter.
- ERP integrations Shopify Business Central Integration: Connector, APIs, and Limits How Shopify integrates with Dynamics 365 Business Central — the built-in Shopify Connector, API v2.0, Entra ID auth, expiring webhooks, and per-user API limits.
- ERP integrations Shopify NetSuite Integration: Architecture, APIs, and Pitfalls How to integrate Shopify with Oracle NetSuite — REST web services, OAuth 2.0, external-ID upserts, concurrency limits, order and inventory flows, and connector options.
- Comparisons Custom ERP Integration vs. Off-the-Shelf Connectors Compare building a custom ecommerce-ERP integration with buying a prebuilt connector — fit, cost over time, flexibility, support, and the questions to ask vendors.
- Guides How to Implement Retries and Idempotency A practical implementation of retries with exponential backoff and jitter, plus idempotency keys, so ecommerce-ERP integrations can retry safely without side effects.
- Tools ERP Integration Cost Estimator Estimate relative complexity and an illustrative effort range for your project.