Dedicated to the Hydrogen framework, headless commerce, and building custom storefronts using the Storefront API.
I have Shopify Payments set up in my development store.
The checkout is configured to support multiple currencies, which works well when checking out via the standard checkout. The shop is configured in EUR, and I'm able to check out in USD after changing the currency via the currency switcher built in to the Debut theme.
However, when I create a checkout via the Checkout API I'm unable to get the checkout to show in a presentment currency. It always shows in the default shop currency.
The payload includes a presentment_currency.
Here's the anonymized POST for a shop with default currency set to EUR.
I'm attempting to request a checkout in USD, but it generates a link to a checkout in EUR:
POST https://[shop].myshopify.com/admin/checkouts.json HTTP/1.1
X-Shopify-Access-Token: [ACCESSTOKEN]
Accept: application/json
Content-Type: application/json
Host: [shop].myshopify.com
Cookie: __cfduid=db46f8a2697c32efd861be690364e65591570279904
Request-Context: appId=cid-v1:[APP]
Request-Id: |a766b2d3-4bf8d561e71d2d78.
Content-Length: 101
Expect: 100-continue
{"checkout":{"line_items":[{"quantity":3,"variant_id":28327434256477}],"presentment_currency":"USD"}}
I'm using the presentment_currency in line with the documentation found here:
https://help.shopify.com/en/api/reference/sales-channels/checkout
I've also tried to do the same using the Draft Order API, setting the currency field.
This also fails to display in USD, and also displays in EUR:
POST https://[SHOP]/admin/draft_orders.json HTTP/1.1
X-Shopify-Access-Token: [ACCESS TOKEN]
Accept: application/json
Content-Type: application/json
Host: [SHOP].myshopify.com
Cookie: __cfduid=db46f8a2697c32efd861be690364e65591570279904
Request-Context: appId=cid-v1:[APP]
Request-Id: |a766b2ec-4bf8d561e71d2d78.
Content-Length: 129
Expect: 100-continue
{"draft_order":{"currency":"USD","line_items":[{"quantity":3,"variant_id":28327434256477}],"use_customer_default_address":false}}
What am I missing?
Any news on this?
According to the documentation this should work.
I'm probably missing something.
Can anyone point me in the right direction?
This does not appear to be working as intended, so thank you for the report. I've logged this as an issue internally and will keep this thread posted on any significant developments.
Cheers.
Alex | Shopify
- Was my reply helpful? Click Like to let me know!
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit the Shopify Help Center or the Shopify Blog
Hello,
We have the same problem.
Do you have any idea when the problem will be fixed? It is very important for us.
Thanks.
One of our Shopify apps is also affected by this problem. Is there a time frame until when the problem will be fixed?
Hello,
Is there any update or timeframe on this? I'm also facing the same issue & couldn't pass the currency value.
Hello?
Is it me you're looking for?
Hi folks,
Sorry for the delay in response! Alex switched roles, and this must have fallen between the cracks.
I can see a fix was shipped back in January that added the support of presentment_currency
in the admin api checkout creation flow. Considering the date of the recent comments on this thread, can someone confirm if this is not the case when using this endpoint?
To learn more visit the Shopify Help Center or the Community Blog.
Hi @Busfox , unfortunately, Draft Orders are still always in the store's default currency (https://help.shopify.com/en/manual/payments/shopify-payments/multi-currency/limitations)
Selling in multiple currencies is currently supported on just the Online Store sales channel. Draft orders are always in the shop's currency. This doc contains more information about our multi-currency feature and some of the limitations.
Hi @Busfox,
I can confirm this does not work in the Checkout API (and not supported in the DraftOrder API).
When passing in a presentment_currency in the checkout API:
The response still defaults to the base currency of the shop:
So, not fixed.
Regards,
Bart
@Busfox Do you have any news on the status of this issue? Do you have an ETA on a fix and can you let us know on which APIs this scenario will be supported?
Still not working into August. Is there any update on the issue?
I have heard back from Shopify on this:
"We shipped a fix that should have resolved this but it looks like the issue still persists. I was able to reproduce this and I've contacted the team in charge to let them know. I don't have a timeline for when this could be fixed but I'd keep you updated."
Do you have any news regarding this problem? It has now been over a year since this request has been open, over a year since you said the problem was going to be fixed. It's really shameful, it totally blocks our international development on our side. We are at a standstill because of this stupid bug.
Can you please update us on this subject?
Thank you.
This lack of responsiveness is mind-blowing 😔
We are also waiting for a fix... The wait is starting to be long.
Any updates?
@aruninnoppl Shopify confirmed this is a bug on their end (see above). We're waiting for feedback from the Shopify team now.
Any update/fix yet?
@DiscountNinja were you able to solve this?
Checkout API is still restricted to Shopify Plus, right?
Any update on this? Please!
It's been 3 years now since this bug was confirmed. How is it still not fixed?
I've found a working solution, but only when using their new shiny Storefront GraphQL API, that Shopify are pushing for everyone to use.
https://shopify.dev/api/storefront/2022-10/input-objects/CheckoutCreateInput
mutation checkoutCreate($input: CheckoutCreateInput!) {
checkoutCreate(input: $input) {
checkout {
id
email
createdAt
currencyCode
paymentDue
shippingAddress {
address1
}
requiresShipping
availableShippingRates {
ready
shippingRates {
handle
price
title
}
}
}
}
}
{
"input": {
"email": "[email protected]",
"lineItems": [
{
"quantity": 1,
"variantId": "{{storefront_variant_id}}"
}
],
"shippingAddress": {
"firstName": "John",
"lastName": "Doe",
"address1": "123 Test Street",
"province": "Quebec",
"country": "Canada",
"city": "Montreal",
"zip": "H3K0X2"
},
"presentmentCurrencyCode": "EUR"
}
}
I get error "CheckoutCreateInput isn't a defined input type (on $input)". Maybe they got rid of it after v2022-10, even though it's still documented in v2023-10.
Full response
{
"errors": [
{
"message": "CheckoutCreateInput isn't a defined input type (on $input)",
"locations": [
{
"line": 1,
"column": 25
}
],
"path": [
"mutation checkoutCreate"
],
"extensions": {
"code": "variableRequiresValidType",
"typeName": "CheckoutCreateInput",
"variableName": "input"
}
},
{
"message": "Field 'checkoutCreate' doesn't exist on type 'Mutation'",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"mutation checkoutCreate",
"checkoutCreate"
],
"extensions": {
"code": "undefinedField",
"typeName": "Mutation",
"fieldName": "checkoutCreate"
}
},
{
"message": "Variable $input is declared by checkoutCreate but not used",
"locations": [
{
"line": 1,
"column": 1
}
],
"path": [
"mutation checkoutCreate"
],
"extensions": {
"code": "variableNotUsed",
"variableName": "input"
}
}
]
}
Headers
HTTP/2 200
date: Tue, 21 Nov 2023 21:14:28 GMT
x-sorting-hat-podid: 88
x-sorting-hat-shopid: 6870368307
x-shopid: 6870368307
x-shopify-api-version: 2023-10
x-shopify-stage: production
x-dc: gcp-us-west2,gcp-us-east1,gcp-us-east1
x-request-id: d5e18696-094e-4b32-b3bc-9ac2d9aac098
cf-cache-status: DYNAMIC
server-timing: cfRequestDuration;dur=213.000059
server: cloudflare
cf-ray: 829bf1485f037cf7-LAX
So back to square one. Documented feature doesn't work.
This doesn't appear to work anymore. Maybe it was abandoned after 2022-10, though it's still listed in the 2023-10 docs. The error I get is below
{
"errors": [
{
"message": "CheckoutCreateInput isn't a defined input type (on $input)",
"locations": [
{
"line": 1,
"column": 25
}],
"path": ["mutation checkoutCreate"],
"extensions":
{
"code": "variableRequiresValidType",
"typeName": "CheckoutCreateInput",
"variableName": "input"
}
},
{
"message": "Field 'checkoutCreate' doesn't exist on type 'Mutation'",
"locations": [
{
"line": 2,
"column": 3
}],
"path": ["mutation checkoutCreate", "checkoutCreate"],
"extensions":
{
"code": "undefinedField",
"typeName": "Mutation",
"fieldName": "checkoutCreate"
}
},
{
"message": "Variable $input is declared by checkoutCreate but not used",
"locations": [
{
"line": 1,
"column": 1
}],
"path": ["mutation checkoutCreate"],
"extensions":
{
"code": "variableNotUsed",
"variableName": "input"
}
}]
}
Documented feature does not work. Back to square one.