Skip to content
SystemSyncer
Menu

Free template · CSV

Shopify to ERP Field Mapping Template

A starting field map for the order-to-cash flows most Shopify–ERP integrations need.

Download CSV 23 rows · opens in Excel, Google Sheets, or Numbers · no sign-up

Most integration bugs are mapping decisions nobody wrote down: which field holds the PO number, what happens to a discount on a bundle, which tax lines are the marketplace’s liability. This template turns those decisions into a reviewable table that developers, finance, and operations can sign off on before code is written.

Shopify field names use the GraphQL Admin API. ERP fields are left as placeholders in brackets because every ERP — and every ERP configuration — names them differently.

How to use it

  1. Replace each bracketed ERP field with the actual field or API property in your ERP, or mark the row “not mapped” with a reason.
  2. Fill in the transform rule for anything that isn’t a straight copy (rounding, unit conversions, code lookups).
  3. Agree the owner of each row — the person who decides when the rule changes.
  4. Verify every Shopify field against the API version your integration pins; fields are occasionally renamed or deprecated.
  5. Keep the finished file in version control next to the integration code, and update it in the same change as the mapping code.

What each column means

Entity
The business object the row belongs to (order, line, customer, tax line…).
Shopify field
Field path in the Shopify GraphQL Admin API.
ERP field
Target field in your ERP. Placeholders are in [brackets].
Direction
Which way data flows: Shopify → ERP, ERP → Shopify, or both.
Required
Whether the ERP rejects the record without it.
Transform rule
Any conversion, lookup, rounding, or default applied.
Validation
What the integration checks before sending; failures go to review, not to the ERP.
Owner
Who decides changes to the rule (IT, finance, operations).
Notes
Edge cases, open questions, and links to decisions.

Preview

The full template, exactly as in the download.

EntityShopify fieldERP fieldDirectionRequiredTransform ruleValidationOwnerNotes
OrderOrder.id[External reference / external ID]Shopify → ERPYesPrefix with store code, e.g. SHOP-US-{numeric id}Unique in ERP; used as idempotency keyITNever reuse across stores
OrderOrder.name[Customer-facing order number]Shopify → ERPNoCopy as text (e.g. #1043)Max length of ERP fieldOperationsShown on picking slips and support screens
OrderOrder.createdAt[Order date]Shopify → ERPYesConvert UTC to the ERP company time zoneValid dateFinanceAffects which period the sale lands in
OrderOrder.currencyCode[Currency]Shopify → ERPYesISO 4217 code lookupCurrency enabled in ERPFinanceUse shop currency or presentment currency consistently
OrderOrder.poNumber[Customer PO number]Shopify → ERPB2B: yesCopy as textRequired for accounts flagged PO-requiredSales opsB2B customers match invoices on it
OrderOrder.paymentGatewayNames[Payment method]Shopify → ERPYesMap each gateway name to an ERP payment methodUnmapped gateway → review queueFinanceDrives which clearing account receives the payment
OrderOrder.displayFinancialStatus[Release / hold status]Shopify → ERPYesOnly release PAID (or authorized, per policy)Status in allowed listFinanceDecide how to handle pending and partially paid orders
CustomerOrder.customer.id[Customer external reference]Shopify → ERPNoD2C: generic web customer per channel; B2B: see company locationExists or create per policyFinanceDon’t match customers on email alone
CustomerOrder.purchasingEntity → CompanyLocation.externalId[Customer account / ship-to]Shopify → ERPB2B: yesDirect lookup by external IDAccount active and not on credit holdSales opsB2B orders only
AddressOrder.shippingAddress.address1 / address2[Ship-to street]Shopify → ERPYesTrim; split if ERP lines are shorterNot empty for shippable ordersOperationsCheck ERP line length limits
AddressOrder.shippingAddress.city / provinceCode / zip / countryCodeV2[Ship-to city / state / ZIP / country]Shopify → ERPYesCountry and state codes as ISO codesValid state for US addressesOperationsCarriers reject mismatched state and ZIP
LineLineItem.sku[Item number]Shopify → ERPYesExact match; no fuzzy matchingSKU exists in ERP and is sellableOperationsUnmatched SKU → review queue, not a placeholder item
LineLineItem.quantity[Quantity]Shopify → ERPYesConvert units if ERP sells in packsPositive integerOperationsSubtract removed quantities on edited orders
LineLineItem.originalUnitPriceSet.shopMoney.amount[Unit price]Shopify → ERPYesShop currency; tax-exclusive or inclusive per store settingMatches price list within tolerance (B2B)FinanceDocument whether prices include tax
LineLineItem.discountAllocations[Line discount]Shopify → ERPNoSum allocations per line; or post as separate discount lineTotal discounts reconcile to orderFinanceDecide per-line vs. order-level discount posting
TaxOrder.taxLines (title, rate, priceSet)[Tax code + amount by jurisdiction]Shopify → ERPYesMap title/jurisdiction to ERP tax code; don’t recalculateEvery tax line has a mappingFinanceUnmapped tax line → review queue
TaxTaxLine.channelLiable[Marketplace-collected flag]Shopify → ERPYesIf true, record as collected and remitted by the channelBoolean presentFinanceKeeps marketplace tax out of your own returns
ShippingOrder.shippingLines (title, code, originalPriceSet)[Shipping method + freight charge]Shopify → ERPYesMap shipping code to ERP ship method / carrier serviceMethod exists in ERPOperationsFree shipping still needs a method
FulfillmentFulfillmentOrder.id[Fulfillment reference]Shopify → ERPYesStore on ERP order lines for later fulfillmentPresent for each locationITNeeded to fulfill the right lines on split shipments
FulfillmentFulfillment.trackingInfo (company, number, url)[Carrier + tracking number]ERP → ShopifyYesMap ERP carrier codes to Shopify carrier names (UPS, FedEx, USPS…)Tracking number format per carrierOperationsCustomer notification is sent from Shopify
RefundRefund.refundLineItems (lineItem, quantity, restockType)[Credit memo / return lines]Shopify → ERPYesReverse sales, tax, and shipping in the same jurisdictionsRefunded qty ≤ shipped qtyFinanceRestock type decides whether stock returns
InventoryInventoryLevel.quantities (available) by location[Available-to-sell by warehouse]ERP → ShopifyYesERP available − unexported orders − safety bufferNot negativeOperationsMap each Shopify location to one ERP location
PayoutShopifyPaymentsPayout.net + balance transactions[Bank deposit + fees]Shopify → ERPYesClear payments from clearing account; book fees separatelySum of transaction nets = payout netFinanceSee payout reconciliation guide

Notes

  • Shopify field paths reflect the GraphQL Admin API at the time of review. Confirm them in the API reference for your pinned version.
  • ERP placeholders are intentionally generic. Do not assume a field exists until you’ve checked your ERP’s API reference.

All templates · Free planning tools