Discussing APIs and development related to customers, discounts, and order management.
I can see the Admin Orders API accepts `currency` as an option, allowing us to create orders in a currency different to the shop currency.
e.g. in a UK (GBP) Store we can create an order via the Admin API with the currency set to USD. This results in both the shop_money and presentment_money set to USD:
```
```
My understanding is this is actually different behaviour when compared to native Shopify Payments multi-currency support where the shop_money would remain in GBP and just the presentment_money would be set to USD?
Is there any documentation around this as we're reluctant to start creating orders where the shop currency is different to the merchants default shop currency in case there are any downstream implications, e.g. reporting, analytics or other third party apps etc.
Thanks,
Richard
These are the requests I've tested on a GBP development store:
```
POST https://{{store}}.myshopify.com/admin/orders.json
{
"order": {
"line_items": [{
"variant_id": 20962533146742,
"quantity": 1,
"price": "99.99"
}
],
"currency": "USD",
"financial_status": "paid"
}
}
```
And
```
POST https://{{store}}.myshopify.com/admin/orders.json
{
"order": {
"line_items": [{
"variant_id": 20962533146742,
"quantity": 1,
"price": "75.60"
}
],
"currency": "GBP",
"financial_status": "paid"
}
}
```
Which gives us two orders with different shop and presentment currencies from one another:
This is exactly the behaviour we want, however as mentioned previously we're nervous because a) I can't find any documentation about this functionality and b) we don't want to cause any downstream issues for our users.
I can actually see already it causes issues with the built-in Shopify reports:
You can see it's just treating the 99.99 USD as GBP here.
I can confirm the native Shopify Payments multi currency support creates orders with presentment_currency and shop_currency set to different values, e.g.
```
"total_price_set": {
"shop_money": {
"amount": "76.59",
"currency_code": "GBP"
},
"presentment_money": {
"amount": "102.00",
"currency_code": "USD"
}
},
```
Is it possible for third party apps to do this via the Admin API?
You are, unfortunately, correct. There is currently no way to create a true multi-currency order via REST API. If this was supported, the parameter `presentment_currency` would accept the foreign currency, however, at this time, `currency` is not allowed to be different from `presentment_currency` on the order create API. Generally, since the only way to create a multi-currency order today is through Online Store, this just hasn't been prioritized.
The ability to accept any currency in the `currency` parameter is legacy behaviour (pre-dating multi-currency) as apps would often use that to import orders. At that time `presentment_currency`, which is what is used for multi-currency didn't exist. The `currency` field continues to accept any currency and yes, that does break reporting in sad ways. This behaviour may change as better multi-currency support is added to the API.
Can you help me understand how you would expect to use this API? For reporting to not break, an amount in shop currency would also need to exist. Is this a value that you'd expect to provide or to be auto generated with fx rates at the time of order creation in Shopify?
To learn more visit the Shopify Help Center or the Community Blog.
Thanks for the insight.
I think, for our use case, either API approach would work; we could either explicitly pass in both the shop and presentment currencies ourselves as we do already have them or alternatively we'd be happy to just supply the presentment currency and have Shopify perform the currency conversion itself on the way in.
Ultimately we're just keen to avoid creating orders with a different shop currency for fear of breaking functionality which assumes there's only one shop currency; i.e. native reporting and potentially other third party apps.
@SwatiSwoboda I have a use case where I need to create a B2B shop (and want to only deploy one Shopify instance), where I want to offer different (digital) products, which relate to different countries and need to be paid in the respective local currency. Since this is B2B, I won't be using any payment gateways, but simply issue invoices for the orders (downstream). So we need to be able to create an order in different currencies. We could envision doing this both via the draft order API or the order API directly - however I assume this is still not supported? Appreciate your update on options and timeline! Many thanks!