Shopify has fine‑tuned the way custom discounts are applied to draft orders. As of the latest Merchant Changelog, any discount you add manually to a draft order will now be calculated in the draft order’s presentment currency – the currency the customer sees at checkout – rather than the shop’s default currency. This change eliminates confusion when you sell across borders and ensures the discount amount matches the shopper’s expectations.
What Changed
Previously, custom discounts on draft orders were always computed using the shop’s base currency. If a store’s default currency was USD but a shopper was checking out in EUR, the discount would be shown in USD and then converted at checkout, often leading to rounding differences and a poor user experience. The update switches the calculation to the presentment currency – the exact currency displayed to the customer – so the discount value is transparent and accurate from the moment it’s entered.
Why It Matters for Merchants
Impact on Developers
If you build apps or custom integrations that create draft orders via the Admin API, the payload you send for a discount remains the same, but the value you provide should now be expressed in the presentment currency of the draft order. The API automatically interprets the amount based on the draft’s currency field, so no new parameters are required. However, you should verify that any logic that previously fetched the shop’s currency to compute discount amounts is updated to reference the draft order’s presentment_currency instead.
How to Implement and Test the New Behavior
Below is a concise GraphQL example that creates a draft order with a custom discount in the presentment currency (EUR in this case). Notice that we do not need to specify a currency on the discount line; Shopify derives it from the draft order’s presentmentCurrencyCode field.
graphql
mutation CreateDraftOrderWithDiscount {
draftOrderCreate(input: {
lineItems: [{
title: "Premium T‑Shirt",
quantity: 2,
price: "45.00"
}]
presentmentCurrencyCode: EUR
customDiscounts: [{
description: "Summer Promo",
amount: "10.00" # Interpreted as 10 EUR
}]
}) {
draftOrder {
id
presentmentCurrencyCode
customDiscounts {
description
amount
}
}
userErrors { field message }
}
}
Testing steps
presentmentCurrencyCode is “EUR” and the discount amount matches the value you sent.Action Checklist
shop.currency to draftOrder.presentmentCurrencyCode.Conclusion & Next Steps
The shift to presentment‑currency discounts streamlines cross‑border sales and reduces the friction merchants and developers often face with currency conversions. By updating your discount logic and testing the new flow, you’ll provide a smoother checkout experience and keep your financial reporting clean. Need help adapting your custom apps or training staff on the new process? Reach out to our Shopify Partner Support or drop a comment below – we’re happy to walk you through the details.
