See all services Shopify Plus Partner

Integration / Makro Middleware

Acumatica to Shopify Plus, built to fit.

Your ERP stays the system of record. Shopify Plus becomes where the order gets placed. We build custom Acumatica to Shopify Plus middleware for B2B, multi-warehouse and real-time sync.

Acumatica system of record Middleware map · reconcile · audit Shopify Plus buyer self-serve
Live sync feed prod · northwind
Acumatica → Shopify · one wayOrders travel both ways

The real problem

Acumatica runs the business. The store runs the customer.

The work is the space between: finance, inventory, customer-specific pricing and order management on one side, B2B buyer self-serve on the other. The native connector is strong and free, and was the first ERP to support Shopify B2B. But under Plus-scale load it slips.

01 / backbone

Acumatica is the ledger

Finance, inventory, customer-specific pricing, order management. The authoritative record the business is run on.

02 / front door

Shopify is self-serve

Where B2B buyers place repeat orders without a phone call, a rep, or an EDI batch. The native connector is strong and free, and was the first ERP to support Shopify B2B.

03 / the gap

Under Plus-scale load it slips

The native connector oversells in a flash sale, imports only the first payment capture, and hands you a Sync History grid instead of a system you can audit, replay and reconcile.

Our position

We built a product around that exact gap. Acumatica plugs into it as a first-class adapter, path mapped.

The decision guide

Three ways to connect Acumatica and Shopify, and when each is right.

There are three ways to connect Acumatica to Shopify: the native connector included in Retail or Commerce Edition, an iPaaS platform like Celigo, DCKAP or MuleSoft, and a custom build on the Shopify Plus side. The choice is not whether a tool supports Plus, since Acumatica says all versions work. It is reliability, observability and reconciliation under load.

Option 01

Native connector

Included free in Acumatica's Retail or Commerce Edition. Real-time-capable, bidirectional, and the first ERP connector to support Shopify B2B. Competent on the happy path.

  • licenseincluded, no extra fee
  • synctwo-phase, queue-backed
  • observabilitySync History grid
  • scopesingle warehouse, no Location map

Right for straightforward catalogs where the out-of-the-box sync is enough.

Option 02

iPaaS (Celigo, DCKAP, MuleSoft)

Subscription middleware on a shared platform. Strong for non-standard multi-system flows across templated connectors.

  • mappingsconfigurable, template-bound
  • tenancyshared platform
  • retentionwindowed, 30 to 90 days
  • pricingannual fee, grows with volume

Right for non-standard multi-system flows that fit a fixed-mapping template.

Option 03 our build

Custom middleware

Built on top of Acumatica's native connector, around your exact order flow, B2B experience and the edge cases the connector cannot reach. Owned by you, operated with a support agreement.

  • mappingsyour fields, per-company price lists
  • tenancysingle-tenant, isolated
  • recovery7 failure classes, DLQ, replay
  • scopemulti-store, multi-warehouse native

Right for the Plus B2B storefront, multi-store catalog control, multi-warehouse mapping, payment and order-edit handling, or the need to audit and replay every transaction.

Where Makro fits

A Shopify Plus partner

We make the native connector deliver a great Plus B2B store, and own the edge cases it explicitly cannot reach.

  • ownsthe oversell race
  • ownssingle-capture payments
  • ownswarehouse to Location map
  • ownspermanent replay + reconcile

Right for brands whose B2B catalog, multi-store or multi-warehouse setup, or order complexity has outgrown the connector out of the box.

Architecture

One direction for master data. Both directions for orders.

Customers, items, inventory and pricing are read out of Acumatica and pushed to Shopify. The storefront never writes to the ledger. Orders are the only thing that travels both ways, and Acumatica stays the source of truth.

System of record

Acumatica

read · never overwritten

The platform

Makro Middleware.

map · reconcile · audit

The storefront

Shopify Plus B2B

where buyers self-serve

Master data: Acumatica → Makro Middleware → Shopify, one way
Orders: Shopify → Acumatica, status returns
Contract-based RESTThe recommended surface, on the Default endpoint, version-pinned in the URL. The contract does not change when your Acumatica is customized or localized, so field mappings survive a client-side change.Acumatica → MK
PUT-upsert + $filterPUT with a $filter is a native upsert: match updates, no match creates. The exactly-once primitive an order sync needs, anchored by the cross-session-stable NoteID GUID.MK → Acumatica
Push NotificationsAcumatica announces a change instead of being polled. At-least-once with up to five retries; the payload Id drives consumer-side dedup, with delta reads as the fallback.Acumatica → MK
OData v3/v4 readsGeneric Inquiries and reporting reads, read-only. Heavy reporting pulls run here so the write surface stays clean and the throttle headroom stays for orders.Acumatica → MK
OAuth 2.0 · least-privilege userAuthorization Code with refresh tokens, on a dedicated integration user. The token inherits that user's roles, so least privilege lives in the role, not in shared credentials.handshake
SalesOrder entityOrders captured in Shopify are written into Acumatica, status flows back. The inbound webhook is HMAC-verified, deduplicated, transformed, and pushed once.Shopify ↕ Acumatica

The console

This is not a connector. It is something you operate.

Every sync, every failure, every reconciliation is visible. This is the same Makro Middleware console your team would watch in production. Move through the views.

console.makro.agency / northwind-traders / sync
live
Sync Monitor
Sync Monitor Dead Letter Queue Observability Entity Key Map Schedules Order Relations
Records / 24h
48,210
across 9 entities
Queue depth
3 pending
2 retrying · 1 review
Avg latency
1.2s
event → Shopify
Last reconcile
04:00
0 drift detected
Activitylive · last 60s
Throughputrecords / hr
In queue
3
of 48,210 processed
Auto-retrying
2
transient · rate-limit
Needs review
1
permanent
Resolved / 24h
41
38 auto · 3 manual
Dead Letter Queuenothing is dropped in silence
TimeEntityError classAttemptsNextAction
08:13:04SalesOrder · SO006142PERMANENT · validation3 / 3heldInspect
07:55:22Customer · ABCORP01TRANSIENT · timeout2 / 509:50Retry now
06:40:11StockItem · AALEGO500RATE_LIMIT · 4291 / 5pacedInspect
Sync volume7-day · records
Circuit breakersper endpoint
Acumatica · RESTlast trip · never
closed
Shopify · Admin APIlast trip · 3d ago
closed
Push Notificationslast trip · never
closed
Uptime · 90 dayserror rate 0.03%
Customer · ABCORP01entity_key_map
CustomerIDABCORP01
NoteID8f2a-c1d9-4e07-44b0
shopify gidgid://shopify/Company/61…
checksuma91f… unchanged
versionv17
→ decision: SKIP · already in sync

Every record carries three identities at once: the Acumatica business key, the cross-session-stable NoteID GUID, and the Shopify GID. The middleware reads this row before every write and decides create, update, or skip.

A PUT with a $filter is a native upsert, so a record synced twice updates rather than duplicating. This is what stops Acumatica's documented Business-Customer contact duplication and double-posted orders before they reach your ledger.

Change detection runs on the stored checksum, so a catalog of 50,000 items with 12 real edits syncs 12 records, not 50,000.

Active schedules
7
all workflows enabled
Runs today
96
0 failures
Next run
09:46
inventory available
Nightly batch
01:00
REST · 48,210 records
Workflowstenant · northwind
Stock item delta syncREST · LastModifiedDateTimeevery 15 min 09:38 · 142 recordsnext 09:53Run now
Inventory availableInventoryQuantityAvailableevery 5 min 09:41 · 3 SKUsnext 09:46Run now
Price listsflattened price cubehourly 09:00 · 1,204 rowsnext 10:00Run now
CustomersREST · deltaevery 15 min 09:40 · 6 recordsnext 09:55Run now
Order status returnAcumatica → Shopifyevery 5 min 09:42 · 11 ordersnext 09:47Run now
Full catalog batchpaged REST exportnightly · 01:00 01:00 · 48,210 recordsnext 01:00Run now
Daily reconciliationboth systems vs key mapdaily · 04:00 04:00 · 0 driftnext 04:00Run now
Shopify order#1042
gidgid://shopify/Order/57…
companyABC Corp
line 1AALEGO500 × 12
line 2CONGRILL × 4
total$8,420.00
Acumatica sales orderSO · SO006142
OrderTypeSO
OrderNbrSO006142
CustomerIDABCORP01
line 1AALEGO500 · qty 12
statusOpen
Order journey#1042 → SO006142 · 5s end to end
09:42:04webhook received 09:42:04HMAC ✓ · dedup ✓ 09:42:05transformed 09:42:06PUT $filter to Acumatica 09:42:09SO006142 created 09:42:09status → Shopify
drag, scroll, or use the tabs

Inside the platform

Ten subsystems, one machine.

The same engineered parts run behind every ERP adapter. What changes for Acumatica is how we speak to it: the entity key map, the dead-letter queue, the error classifier and the rest are the platform. None of them is a setting you toggle.

01 / 10

The failure modes no vendor page admits

Where the native Acumatica connector breaks.

The native connector is strong, but it handles the happy path and skips the edge cases. These are the points it cannot reach under Plus-scale load. A custom middleware layer is built to handle all of them, explicitly.

The overselling race

staff-confirmed

The connector's "real-time" mode is two-phase and queue-backed: the change is recorded in Sync History immediately, but the posting into Acumatica waits for a scheduled run. In a flash sale, orders do not reach Acumatica fast enough, so it pushes a stale, higher count back to Shopify and re-opens sold-out stock. It is a lost-update race between two throttled systems, by design.

→ authoritative ledger, reserve-on-order, write-back guard

Phantom inventory

8/10 severity

Acumatica has no single stock level. Availability is computed per an Availability Calculation Rule assigned per Item Class, so "committed" is whatever that rule deducts. Rules that do not deduct open or on-hold orders make availability overstate stock and generate phantom backorders.

→ publish Available, never On Hand, consumed directly

Single-capture payments

silent revenue loss

The connector does not support multiple captures against a single authorization. It imports only the first capture and ignores the rest, per Acumatica's own marketplace listing. On split-payment and partial-capture flows it silently under-records revenue.

→ model the full capture set, reconcile captured vs ordered

Multi-warehouse to Shopify Location

core to Plus

The connector does not map Acumatica warehouses to Shopify Locations, and does not give store-level control over which items pass to each store. It aggregates or publishes a single warehouse. Shopify Plus models inventory per Location, so segmenting multi-store or multi-region catalogs is custom work, not a toggle.

→ per-warehouse Available mapped to the right Shopify Location

B2B customer duplication and location churn

documented

Acumatica was the first ERP to support Shopify B2B and syncs the data well, but it has documented data-model failures: it generates new Individual-category customers for each contact of a Business Customer, and at random creates more than one location for a customer, activating one while deactivating the other.

→ deterministic hierarchy mapping through the entity key map

The order-edit and observability lock

7/10 severity

State lives in a Sync History grid with no permanent replay and no independent reconciliation. iPaaS retention is windowed: 30 to 90 days, the recent 20,000 errors, manual retry within roughly 30 days. You cannot replay an order from four months ago, and nothing proves Acumatica and Shopify agree.

→ permanent append-only ledger and a daily reconciliation pass

When a record fails

Integrations are judged by how they fail. Follow one failed record.

It is classified before it is retried, and nothing disappears into a Sync History grid. Colour carries the verdict: amber is sorted, teal retries, red is held, green replays.

01

It arrives

A record fails to write to Shopify or Acumatica. Instead of disappearing into a Sync History grid, it enters the pipeline with full context.

captured
02

It gets classified

Every failure is sorted before anything is retried, so a bad record never loops forever. An Acumatica HTTP 429 is a rate-limit, not a permanent fault.

transientrate-limitpermanent
classified
03

Transient retries

Transient and 429 rate-limit failures retry with adaptive backoff and pacing, automatically, until they clear. At-least-once Push Notifications dedup on the payload Id.

retrying
04

Permanent is held

A permanent failure, a validation reject or a missing record, routes straight to the dead-letter queue for review. It is never retried blindly or lost.

held for review
05

You replay it

Fix the cause, replay from the queue. A daily reconciliation pass catches anything the live path missed. The whole journey is on the audit trail.

replayed · reconciled

Claims you can check

What you will hear, and what the docs actually say.

Every reality below is verified against a primary Acumatica source, a community thread with a staff answer, the marketplace listing, or a named vendor doc. This is the difference between a team that read the marketing and a team that shipped against the documentation.

01
The claim"The native connector does it all. It's free in Retail or Commerce Edition and real-time, so just turn it on."
The realityThe connector is competent and genuinely included in Retail or Commerce Edition. But its "real-time" mode is two-phase and queue-backed: in the high-volume sub-mode the change is recorded in Sync History in real time, while the posting into Acumatica still waits for a scheduled run. Acumatica positions it for companies "without the need for heavy customization."
02
The claim"Inventory syncs in real time, so you won't oversell."
The realityThe canonical failure, explained by Acumatica's own staff: during a flash sale, orders do not reach Acumatica fast enough, so Acumatica pushes a stale, higher count back to Shopify and re-opens sold-out stock. It is a lost-update race between two independently throttled systems, by design, not a config slip.
03
The claim"Sync the stock level and you're good."
The realityAcumatica has no single stock level. Publish Available, never On Hand. Available is computed per an Availability Calculation Rule assigned per Item Class, so two item classes compute it differently. Rules that do not deduct open or on-hold orders overstate stock and generate phantom backorders. The middleware consumes Available directly.
04
The claim"Just read the customer's price from Acumatica at checkout."
The realityThere is no Acumatica API that returns a single resolved customer-specific price. Price is a layered cube (base, customer price class, customer-specific, by promotion, UOM, warehouse, quantity-tier and effective-date) resolved top-to-bottom, first match wins, only when a document is priced. Discounts are a separate engine applied after. Production builds flatten the cube into Shopify B2B price lists or price a SalesOrder line and read it back.
05
The claim"Acumatica calculates your cart tax."
The realityCart-time tax should be computed in Shopify, never round-tripped to the throttled, queued ERP on the checkout path. By default Acumatica recalculates imported tax, which makes the invoice disagree with what the shopper paid. You set Tax Synchronization plus Disable Automatic Tax Calculation (2023 R1+) so the ERP preserves Shopify's number. The trade-off: disabling recalc stops Acumatica filing those invoices to Avalara.
06
The claim"Payments come through complete."
The realityThe connector does not support multiple captures against a single authorization. It imports only the first capture and ignores the rest, a limitation on Acumatica's own marketplace listing. For Plus merchants doing partial captures or split fulfillment, this silently under-records revenue. A custom layer models the full capture set and reconciles captured vs ordered.
07
The claim"B2B works. Acumatica was the first ERP to support Shopify B2B."
The realityTrue, and we do not claim otherwise. But it syncs the B2B data, it does not design the buyer experience, and it has documented B2B data-model failures: it generates new Individual-category customers for each contact of a Business Customer, and at random creates more than one location for a customer. The Shopify B2B storefront and deterministic hierarchy mapping are the build.
08
The claim"One Acumatica instance can connect to multiple Shopify stores, so multi-store is handled."
The realityOne instance can connect to many stores, but the connector does not give store-level control over which items pass to each store, and does not map Acumatica warehouses to Shopify Locations. Shopify Plus models inventory per Location. Segmenting multi-store catalogs and mapping per-warehouse Available onto the right Location is custom work, not a toggle.
09
The claim"Authenticate it however. Cookie login is fine for a connector."
The realityFor production, use OAuth 2.0 Authorization Code with refresh tokens against a dedicated least-privilege integration user registered on Connected Applications. The token inherits that user's roles, so least privilege lives there. Skip api:concurrent_access unless you track the session cookie, or every call spins a new session and burns the concurrent-session license. And always log out.
10
The claim"It's a normal REST API. POST to create, and a custom field is another fragile endpoint."
The realityAcumatica's contract-based REST API uses PUT for both create and update, and PUT with $filter is a native upsert, anchored by the cross-session-stable NoteID GUID. A Usr custom field can be promoted to first-class or read via $custom. A UDF or attribute rides $custom only, with a per-entity view name. A custom record needs a new endpoint. We run $adHocSchema per client to discover them.
11
The claim"There's a requests-per-minute limit you just stay under."
The realityAcumatica meters three distinct license limits (API users, concurrent requests or cores, and requests-per-minute), and the behavior is non-obvious: at 50% of the per-minute limit requests are delayed, and declined only past a 20-deep queue or a wait over 10 minutes, with HTTP 429 as the back-off signal. A BFCM burst must be queued and paced by the middleware, not fired in parallel.
12
The claim"Fulfillment posts back in one call once you create the shipment."
The realityCreate-and-confirm in a single default API call is not supported. You PUT the Shipment entity, then issue a separate ConfirmShipment action. The middleware treats shipment create and confirm as a two-step state machine with idempotency keys, and pushes the Shopify fulfillment and tracking only after confirm succeeds, or it notifies customers about shipments that later fail.
13
The claim"The event feed is reliable. Wire the webhook and trust it."
The realityAcumatica Push Notifications are at-least-once with up to five automatic retries; the payload Id is a transaction id provided so the consumer can deduplicate, and replying with an error causes redelivery. The SignalR destination is not reliable, since a missed notification cannot be resent later. Idempotency, dedup and ordering are the consumer's job, exactly what a custom layer owns.
14
The claim"An iPaaS like Celigo gives you full error recovery, so you don't need custom."
The realityThe tooling is strong but windowed: flow and error-retry data is kept 30 to 90 days, error-retry data is the most recent 20,000 errors, manual retry only works within roughly 30 days, and auto-retry is up to four attempts over 10 hours. You cannot replay an order from four months ago, and no off-the-shelf option performs an independent reconciliation pass. Permanent ledger plus reconciliation is the wedge.

How long it takes

Timeline by scope, not a contact-us wall.

An Acumatica ⇄ Shopify Plus build lands in one of three bands depending on B2B complexity, the number of warehouses and stores, and how many of the break points above are in play.

Band 01 · foundation

46 weeks

single store · standard catalog

  • Customers, stock items and Available one way, Acumatica to Shopify
  • Orders both ways with PUT-upsert by $filter and the NoteID key
  • Reserve-on-order and a write-back guard against the oversell race
  • Dead-letter queue, daily reconciliation, the console

Band 02 · B2B

810 weeks

Shopify Plus B2B · price lists

  • Everything in foundation, plus the flattened price cube
  • Per-company Shopify price lists and deterministic hierarchy mapping
  • The two-call shipment state machine and full capture set
  • Tax synchronization at the Shopify edge, invoice preserved

Band 03 · multi-entity

1216 weeks

multi-warehouse · multi-store

  • Everything in B2B, plus multi-warehouse to Shopify Location mapping
  • Store-level catalog control across multiple Shopify stores
  • Branch and currency carried on every call in multi-entity tenants
  • $adHocSchema discovery and custom-field mapping per client
Cost · scoped per build

We price an Acumatica integration as an engineering engagement: a build with a support agreement, not a per-record meter or a platform seat that renews forever. The native connector itself has no separate license fee, since it is included in the Retail or Commerce Edition, so cost is mostly the storefront, the B2B experience and the Plus-scale reliability build. For context, enterprise iPaaS commonly runs $30,000 to $100,000+ a year before the work begins. Your exact figure is scoped to the band and the break points in play, and we put it in writing before anything starts.

Security posture

Built to pass your review, and your Acumatica admin's questions.

AES-256-GCM · per-tenant

Credentials never in plain config

Acumatica and Shopify secrets are held as encrypted fields, isolated per tenant and rotatable without downtime. No secret sits in plaintext, anywhere.

HMAC · replay-safe

Inbound traffic is verified

Every Shopify webhook is HMAC-verified before it is trusted, then deduplicated by event id, so a replayed webhook cannot create a second order.

OAuth 2.0 · scoped integration user

Least-privilege access to Acumatica

Authentication runs on OAuth 2.0 Authorization Code with refresh tokens, on a dedicated least-privilege integration user registered on Connected Applications. We request api and offline_access, and skip api:concurrent_access.

append-only · source-tagged

Everything is on the record

An append-only audit trail logs every operation, source-tagged, so you can prove what happened during month-end close.

The questions we have already answered

Where Acumatica integrations get hard, and where we land.

The details that separate a team that read the docs from a team that shipped against them. Open any one.

01How do you integrate Acumatica with Shopify?+
Three ways: the native Acumatica Shopify connector (included in Retail/Commerce Edition, real-time-capable, bidirectional, B2B-capable), an iPaaS like Celigo or DCKAP (subscription middleware for non-standard multi-system flows), or a custom build from a Shopify Plus partner (built around your exact order flow, B2B experience, and the edge cases the connector can't reach). Because the native connector is strong, most projects are about the Shopify-side build and the Plus-scale reliability, not the sync itself.
02Does the Acumatica Shopify connector sync inventory in real time, and does it prevent overselling?+
Its "real-time" mode is two-phase and queue-backed: the change is recorded immediately but the posting waits for a scheduled run, which creates a documented overselling race during flash sales. Acumatica can push a stale, higher count back to Shopify and re-open sold-out stock. Custom middleware fixes this with an authoritative inventory ledger, reserve-on-order, and a write-back guard, publishing Available (not On Hand).
03What are the limitations of the native Acumatica Shopify connector?+
Common ones: scheduled (not truly real-time) posting and the overselling race; it imports only the first payment capture against a single authorization; it doesn't map Acumatica warehouses to Shopify Locations or give store-level catalog control across multiple stores; and its state lives in a Sync History grid with no permanent replay or independent reconciliation. It syncs data; it doesn't design the Plus B2B storefront.
04Do I need a specific Acumatica edition to connect to Shopify?+
The native Shopify connector is part of Acumatica's Retail/Commerce Edition; if you're on it, there's no separate connector to license. One Acumatica instance can connect to multiple Shopify stores.
05Native Acumatica connector vs Celigo vs custom, which is better?+
Start with the native connector, it's free, bidirectional, and B2B-capable, so it's enough for many catalogs. Use an iPaaS like Celigo for non-standard multi-system flows. Bring in a custom build / Shopify Plus partner when the storefront, Shopify B2B experience, multi-store/multi-warehouse control, payment/order-edit edge cases, or the need to replay and reconcile every transaction are what matter, iPaaS error retention is windowed (30 to 90 days, recent 20,000 errors), so you can't replay an order from four months ago.
06Can the native Acumatica connector handle Shopify B2B?+
Partly. It syncs the B2B data, company accounts, contract pricing, PO numbers, custom catalogs, credit terms, and Acumatica was the first ERP to support Shopify B2B. What it doesn't do is design the B2B storefront experience or resolve the data-model edge cases (it can duplicate Business-Customer contacts and churn customer locations). That experience layer and the deterministic hierarchy mapping are a Shopify Plus build.
07How much does an Acumatica ⇄ Shopify integration cost and how long does it take?+
The native connector itself has no separate license fee, it's included in the Retail/Commerce Edition, so cost is mostly the storefront, B2B experience, and Plus-scale reliability build, not connector licensing. Timelines land in three bands by complexity: roughly 4 to 6 weeks for a single-store foundation, 8 to 10 weeks for Shopify Plus B2B price lists, and 12 to 16 weeks for multi-warehouse and multi-store. We scope your exact figure per build and put it in writing before anything starts.
08Who builds Shopify Plus B2B storefronts and custom middleware on Acumatica?+
Makro Agency, a Shopify Plus partner that builds the storefront, the B2B buyer experience, and custom middleware on top of Acumatica's native Shopify connector, for brands whose B2B catalog, multi-store/multi-warehouse setup, or order complexity has outgrown the connector out of the box.
09How do you read a customer-specific price out of Acumatica?+
No Acumatica API returns a single resolved customer-specific price. Price is a layered cube resolved top-to-bottom, first match wins, only when a document is priced, with discounts as a separate engine after. We either flatten the cube into Shopify B2B price lists per company (Acumatica re-validates at order push with ManualPrice set), or let Acumatica price a SalesOrder line and read it back. In multi-entity clients we carry branch and currency on every call.
10How do you handle multi-warehouse and Shopify Locations?+
This is custom work. The native connector aggregates or publishes a single warehouse and does not map Acumatica warehouses to Shopify Locations. We poll per-warehouse Available via InventoryQuantityAvailable, consume it directly rather than re-deriving it, and map each warehouse onto the right Shopify Location so Plus can model inventory per Location.
11Will this touch our production environment, and are we locked in?+
Master data syncs are read-only against Acumatica. Order writes go to a sandbox first, then through a parallel-run with daily reconciliation, and production posting starts when the report says zero drift and you sign off. On the Acumatica side we use standard surfaces only: contract-based REST, OAuth 2.0, Push Notifications. The middleware is our platform, but your data, your mappings and the full audit trail are yours, documented and exportable.
12What do you need from our team?+
Three things: a dedicated least-privilege integration user registered on Connected Applications, access to a sandbox Acumatica tenant, and your Acumatica functional lead in the entity-mapping workshops. We run $adHocSchema discovery per client to map your exact view and field names, including any Usr custom fields and attributes, before mapping to Shopify metafields.

The framework underneath

A proven platform. Acumatica is the next first-class adapter.

Every ERP sits behind the same contract: authenticate, fetch master data, push orders, validate, report. The platform runs in production today against a live enterprise ERP. Acumatica is a registered target on that same framework, its path mapped to the contract-based REST API, OAuth 2.0, the License-Monitoring throttle math, the entity catalog, the price cube and Push Notifications.

We say this plainly: the credibility is a real platform and a precisely understood Acumatica path, not a live Acumatica install. That distinction is exactly what your architect can verify, which is why we lead with it.

adapter contractbase.ts
01authenticate()OAuth 2.0
02fetchMasterData()REST / OData
03pushOrder()PUT $filter upsert
04validate()schema check
05report()audit + status
NS
NetSuite
ERP adapter
middleware in production
AC
Acumatica
contract-based REST · OAuth 2.0 · Push Notifications
path mapped

The engineering standard

Claims you can check.

The proof point comes first: for Clarius we built a unified account page integrating NetSuite ERP, Salesforce CRM and Shopify Plus into one view of customer information, orders and invoices, with Shopify Flow feeding order data back into the ERP. That is a NetSuite engagement, not an Acumatica one. It is here as pattern evidence for how we integrate Shopify Plus to an enterprise ERP. Then the numbers below, which are the platform's checkable standard.

Clarius

NetSuite + Salesforce + Shopify PlusWe built a unified account page integrating Clarius' NetSuite ERP, Salesforce CRM and Shopify Plus into a single view of customer information, orders and invoices across enterprise systems, with Shopify Flow automation feeding order data into the ERP. That is a NetSuite engagement, here as pattern evidence for how we integrate Shopify Plus to an enterprise ERP, not an Acumatica build.

1,756

Automated tests across 139 suites, run on every change.

85%

Coverage gate enforced before any deploy.

39

End-to-end browser tests across Chromium, Firefox and WebKit.

7

Failure classes, each with its own pre-decided policy.

0

Credentials stored in plaintext, anywhere, ever.

Bring your ERP architect and your connector's Sync History. We will walk the platform, not a deck.

A real conversation about your Acumatica environment, your data, and the three sharp questions you already have.

acumatica / final