Hi,
We are about to launch an international version of our website. We have offered AUD, NZD, and USD pricing on our site for some time, however we are now splitting our pricing model so that AUD and NZD is used on our Australian site, and USD is used on our international site. We have been using the live conversion feature historically to calculate the NZD/USD equivalent, however we now want to be able to set unique pricing for USD.
We followed this guide: https://help.shopify.com/en/manual/payments/shopify-payments/multi-currency/international-pricing#set-product-prices-for-a-country-or-region and uploaded a spreadsheet with USD prices for our AUD products - so they are now going to be the exact same figure for USD and AUD.
I’ve since noticed some weirdness with the way it calculates totals. When I create a checkout using the GraphQL API, I send it a presentmentCurrencyCode of USD.
mutation checkoutCreate($checkoutCreate: CheckoutCreateInput!) {
checkoutCreate(input: $checkoutCreate) {
checkout {
id
}
checkoutUserErrors {
code
field
message
}
}
}
CheckoutCreateInput:
{
"checkoutCreate": {
"presentmentCurrencyCode": "USD"
}
},
I then add an item to my cart:
mutation addToCart($checkoutId: ID!, $lineItems: [CheckoutLineItemInput!]!) {
checkoutLineItemsReplace(checkoutId: $checkoutId, lineItems: $lineItems) {
checkout {
...CheckoutFragment
__typename
}
userErrors {
code
field
message
__typename
}
__typename
}
}
{
"checkoutId": "Z2........x=",
"lineItems": [
{
"quantity": 1,
"variantId": "Z2..........=="
}
]
}
This returns the following response:
{
"data": {
"node": {
"id": "Z2...=",
"currencyCode": "USD",
"lineItems": {
"edges": [
{
"node": {
"variant": {
"title": "My Variant",
"presentmentPrices": {
"edges": [
{
"node": {
"price": {
"amount": "359.0",
"currencyCode": "AUD"
}
}
},
{
"node": {
"price": {
"amount": "378.0",
"currencyCode": "NZD"
}
}
},
{
"node": {
"price": {
"amount": "359.0",
"currencyCode": "USD"
}
}
}
]
},
"priceV2": {
"amount": "359.0",
"currencyCode": "AUD"
}
}
}
}
]
},
"lineItemsSubtotalPrice": {
"amount": "306.0",
"currencyCode": "USD"
}
}
}
}
As you can see the total for the cart comes to $306, when it should be $359.
Now I know presentmentPrices are deprecated, but due to the way our site has been created we do not easily have the ability to change the GraphQL queries. I have also tried using the @inContext directive, but get the same result - however the priceV2 node is correct:
{
"data": {
"node": {
"id": "Z2....=",
"currencyCode": "USD",
"lineItems": {
"edges": [
{
"node": {
"variant": {
"title": "My Variant",
"presentmentPrices": {
"edges": [
{
"node": {
"price": {
"amount": "359.0",
"currencyCode": "AUD"
}
}
},
{
"node": {
"price": {
"amount": "378.0",
"currencyCode": "NZD"
}
}
},
{
"node": {
"price": {
"amount": "359.0",
"currencyCode": "USD"
}
}
}
]
},
"priceV2": {
"amount": "359.0",
"currencyCode": "USD"
}
}
}
}
]
},
"lineItemsSubtotalPrice": {
"amount": "306.0",
"currencyCode": "USD"
}
}
}
}
I spent an hour on live chat last night only to be told to come here, any help would be appreciated!