TotalPriceSet.ShopMoney returned from API does not match Total Paid in Shopify Admin

I have an order here with conversion from NZD to Canadian Dollars. Using Shopify API to fetch TotalPriceSet.PresentmentMoney accurately returns the 258.27 in NZD, but TotalPriceSet.ShopMoney actually returns 218.70 when 218.92 is expected. What is the reason for this discrepancy? Is there anyway to return the actual value displayed in Shopify Admin (or at least the conversion rate shown so I can calculate myself) ?

Hi eight1echo - could this be caused by changes in currency rates on different days?

At what point is the currency exchange displayed (1 = 1.179759) actually calculated? I could see the reason for the discrepancy being a different currency exchange value at the point where the customer pays, and at the point where we capture the payment in Shopify Admin (as the displayed exchange value is not displayed until payment in captured). Even if this is true, I would still expect the API to return the value actually displayed (218.92 in this case).

This is also not just this order. For any international order the value displayed in Shopify Admin is always slightly different than TotalPriceSet.ShopMoney returned by the API, usually by 10-20 cents.

Hi again eight1echo,

After connecting with the product team it sounds like there could be something unique to this store which is causing this. You may need to reach out directly to a support agent so our internal teams can investigate this - you can reach them via the support tab in your partner dashboard.

Hi Liam,

Upon further investigation it seems I was correct about different values at customer payment authorization and at capture payment.

If I run this query:

{
  shop {
    name
  }
  order(id: "gid://shopify/Order/5698010153098") {
    transactions {
      amountSet {
        shopMoney {
          amount
          currencyCode
        }
      }
      kind
    }
  }
}

I get a response with two Transactions, AUTHORIZATION and CAPTURE:

{
  "data": {
    "shop": {
      "name": "...."
    },
    "order": {
      "transactions": [
        {
          "amountSet": {
            "shopMoney": {
              "amount": "218.71",
              "currencyCode": "CAD"
            }
          },
          "kind": "AUTHORIZATION"
        },
        {
          "amountSet": {
            "shopMoney": {
              "amount": "218.92",
              "currencyCode": "CAD"
            }
          },
          "kind": "CAPTURE"
        }
      ]
    }
  },
......

The CAPTURE transaction contains the Order Total I was expecting from my original query in the first post in this topic, so I am able to solve my original problem but figured I would update you in case this is not desired behavior. Personally I would expect Order.TotalPriceSet.ShopMoney to return the captured payment as it is displayed in Shopify Admin UI.