Skip to content

Ten dollars off, in every currency

Date

19 Aug 2026

Category

Build

Platform

Shopify

Client

Steadyrack

Sell in more than one currency and a fixed-amount discount code stops being a fixed amount. You write it once, in the store’s own currency, and every other market gets a converted version of it at the rate applying when the code is used. The customer sees an amount nobody chose and nobody can predict, and it moves.

What we found

There is no per-currency field on a native discount code, so the choice on the table is a percentage (which behaves consistently but discounts expensive orders harder than you meant) or a fixed amount that drifts. Neither is what a campaign actually wants, which is a round number in front of the customer, in the money they are already looking at.

Shopify Functions can express this, because a function runs on the cart with the cart’s own currency in front of it. So the discount stops being a static amount and becomes a small piece of logic the store owns.

What we did

Built a discount function with a settings panel that renders on Shopify’s own discount page, so it is created and edited where every other discount lives, not in a separate app interface. Each currency gets its own exact amount and its own minimum spend. A currency that isn’t configured returns nothing at all, which is the safe direction to fail in: no accidental discount, no converted approximation.

Verified against real carts before it went anywhere near a campaign: ten dollars off in US dollars came off as exactly ten, ten Canadian dollars came off as exactly ten Canadian dollars, and the minimum spend refused a cent below the threshold and applied a cent above it. The function is an extension the client owns rather than an app subscription, and it sits on the discount page beside the native ones.

What to take from it

Two things worth knowing before you plan a multi-currency promotion.

First, check what your fixed-amount codes are actually taking off in each market before you send the campaign, not after. The number in the admin is the only one that looks like the number you chose.

Second, if unique single-use codes are generated by your email platform, they will not run this. Those tools create their own native price rule, and a price rule cannot point at a function-backed discount, so the logic never fires. Codes for a discount like this have to be bulk-generated against the discount itself and then uploaded into the email tool as a pool. It works, but it is a top-up chore rather than a set-and-forget, and it is much cheaper to know that while you are still deciding the mechanic.