Discounts code market independent

I’m building a loyalty app that creates one‑time fixed‑amount discount codes per customer using the Admin GraphQL API:

Operation

Open GraphiQLCopy

“customerGets”: {

“value”: {

“discountAmount”: {

“amount”: “4.00”,

“appliesOnEachItem”: false

}

},

“items”: { “all”: true }

}

My problem:

  • The shop base currency is, for example, USD.

  • The checkout/market currency is INR.

  • When I set discountAmount.amount = 4.00, the code applies roughly ₹374 off, not ₹4 off. So it’s clearly being interpreted in shop base currency and then converted.

Questions:

  1. Is there any way in the Admin or Storefront GraphQL APIs to create a fixed-amount discount code whose amount is defined in the buyer’s presentment/market currency (for example, exactly ₹4 off in INR), rather than in the shop’s base currency?

  2. If not, what is the recommended pattern for apps that need “X units off in the buyer’s currency” when using discountCodeBasicCreate?

    • Is the only supported approach to:

      • Fetch a market-aware price or FX rate (for example via productVariant.contextualPricing),

      • Convert the desired presentment discount (e.g. ₹4) back into the shop base currency, and

      • Use that converted base-currency value in discountAmount.amount?

I want to confirm there is no first-class way to specify discount amounts in market currency, and that deriving base-currency amounts via contextualPricing/FX is the correct and supported approach.

Hi @Ammaar_Farhan_Syed

The short answer to this is No: there is currently no first‑class way in the Admin or Storefront GraphQL APIs to define a fixed-amount discount in the buyer’s presentment/market currency.

Given that constraint, there are two realistic patterns. The cleanest and often recommended approach for multi-currency setups is to use percentage discounts instead of fixed amounts: you choose a percentage that corresponds to your target benefit (e.g. ~2% off if that is roughly ₹4 off on typical orders), and Shopify will always calculate the correct presentment-currency discount using current prices and FX rates. This avoids mismatches between your own FX math and Shopify’s and works consistently across all markets; see discount value types in the Admin API docs and international pricing docs.

If you truly need to approximate “X units off in the buyer’s currency,” then your 3-step approach is indeed the only supported pattern:

1: determine the buyer’s currency and fetch a market-aware price or FX proxy (for example via productVariant.contextualPricing as documented under international pricing and contextual pricing);
2: convert your target presentment amount (e.g. ₹4) back into the shop base currency;
3: use that computed base-currency value as discountAmount.amount in discountCodeBasicCreate. This will always be approximate, because Shopify’s actual FX rates at redemption time may differ slightly, but it is aligned with how the platform is designed and is the de facto pattern used by loyalty apps that need near-fixed buyer-currency discounts.