When shopify order created in BC its not bring the currency code

Hi Team,

One of our customers is experiencing an issue with the Shopify–Business Central integration.

When a customer places an order in EUR on Shopify, the order and payment are correctly recorded in EUR within Shopify. However, when the order is created in Business Central, the Currency Code is left blank, causing the sales order to be created in the local currency (GBP).

We have performed the following checks:

  • Verified that the Customer Card in Business Central has the Currency Code set to EUR.
  • Reviewed the Shopify Shop Setup and relevant configuration settings in the Shopify Admin Portal, and all settings appear to be correct.
  • Checked the Shopify schema/data being received by Business Central and found that the currency information is not being passed to BC.
  • Reviewed the API response for one of the affected Shopify orders and noticed that the EUR currency code is not present in the response received from Shopify.

Schema below:

{
“data”: {
“orders”: {
“pageInfo”: {
“hasNextPage”: false
},
“edges”: [
{
“cursor”: “eyJsYXN0X2lkIjoxMzI2MDk1MzIyMzU0NiwibGFzdF92YWx1ZSI6IjIwMjYtMDctMjIgMTM6NTA6MDkuMzkxOTQ0In0=”,
“node”: {
“legacyResourceId”: “13260953223546”,
“name”: “#1115”,
“createdAt”: “2026-07-22T13:50:09Z”,
“updatedAt”: “2026-07-22T13:50:11Z”,
“channel”: null,
“test”: false,
“fullyPaid”: true,
“unpaid”: false,
“closed”: false,
“displayFinancialStatus”: “PAID”,
“displayFulfillmentStatus”: “UNFULFILLED”,
“subtotalLineItemsQuantity”: 2,
“totalPriceSet”: {
“shopMoney”: {
“amount”: “27.2”,
“currencyCode”: “GBP”
}
},
“customAttributes”: ,
“tags”: ,
“risk”: {
“assessments”: [
{
“riskLevel”: “NONE”
}
]
},
“displayAddress”: {
“countryCodeV2”: “IE”
},
“shippingAddress”: {
“countryCodeV2”: “IE”
},
“billingAddress”: {
“countryCodeV2”: “IE”
},
“totalTaxSet”: {
“presentmentMoney”: {
“amount”: “5.32”
},
“shopMoney”: {
“amount”: “4.53”
}
},
“taxLines”: [
{
“channelLiable”: null
}
],
“purchasingEntity”: {}
}
}
]
}
},
“extensions”: {
“cost”: {
“requestedQueryCost”: 68,
“actualQueryCost”: 6,
“throttleStatus”: {
“maximumAvailable”: 20000,
“currentlyAvailable”: 19994,
“restoreRate”: 1000
}
}
}
}

This issue has now become a blocker and requires urgent attention. It is creating a financial mismatch in Business Central because:

  • The sales orders are being created in GBP due to the blank currency code.
  • The corresponding payment entries are being created in EUR.
  • As a result, there is a mismatch on the Customer Ledger Entries, impacting financial reconciliation and reporting.

Could you please help us understand how to resolve this issue and advise why the currency code is not being included in the order data received from Shopify? Any guidance on a workaround or permanent fix would be greatly appreciated.

Thank you.

Kind regards,
Arun Gupta

Arun.g@mecuriusit.com

Hi @Arun_Gupta! The EUR currency code is in your Shopify data, but the query you shared is reading shopMoney, which always reflects the store’s base currency (GBP in your case). That’s why totalPriceSet.shopMoney.currencyCode comes back as GBP.

Order money fields on the Admin API are returned as a MoneyBag with two branches. shopMoney is the amount in the shop currency, and presentmentMoney is the amount in the currency the buyer actually paid in. The response excerpt you shared selects totalPriceSet.shopMoney.currencyCode and totalTaxSet.presentmentMoney.amount, but it doesn’t request presentmentMoney.currencyCode on any of the price sets. GraphQL only returns the fields you ask for, so the EUR code isn’t missing from Shopify, it’s not being selected.

To get the buyer-facing currency, add presentmentMoney.currencyCode to your price fields, or use the order-level presentmentCurrencyCode field directly:

query OrderCurrency($id: ID!) {
  order(id: $id) {
    currencyCode
    presentmentCurrencyCode
    totalPriceSet {
      shopMoney {
        amount
        currencyCode
      }
      presentmentMoney {
        amount
        currencyCode
      }
    }
  }
}

Order.presentmentCurrencyCode returns the currency the customer paid in, which is expected to be EUR for this order. That’s the value your Business Central integration should map to the Sales Order Currency Code. Order.currencyCode is a separate field that returns the shop currency (GBP), so don’t use it for the buyer-facing currency.

If after adding those fields presentmentCurrencyCode or presentmentMoney.currencyCode still comes back as GBP or null for an order you know was sold in EUR, share an x-request-id from the response headers and I can take a closer look for you!