If your checkout reads the card number to decide which currency to show, Visa says you are doing dynamic currency conversion, and its registration, disclosure and dispute rules apply. Pick the same currency from the shopper's IP address and it counts as multi-currency pricing, and almost none of those rules apply.
The two models look the same on screen, but they move money differently. Under DCC the shopper pays a conversion mark-up and the merchant gets a cut. NatWest found one Spanish accommodation provider charging 13.4% more for paying in pounds. The pages ranking for "DCC vs MCP" are mostly acquirers selling one or the other. Most skip the scheme rule IDs, the UK legal position and the API fields involved. Rules here were checked against the Visa Core Rules (24 October 2026 edition), Mastercard's Transaction Processing Rules (10 June 2025), the UK Payment Services Regulations 2017 and PSP documentation on 30 October 2026.
What Is Dynamic Currency Conversion (DCC)?
DCC is a conversion offered at the point of sale. The terminal, ATM or checkout spots a foreign card, quotes the price in the cardholder's billing currency at the provider's own rate, and asks the cardholder to choose. If they accept, the transaction enters the network already in their currency, so the issuer has nothing to convert. Mastercard's rulebook calls it POI currency conversion and states plainly that the merchant or acquirer applies the rate.
The provider's mark-up is the revenue, and the merchant shares in it. Fiserv's published US DCC terms add a 3.5% margin to the wholesale rate and credit the merchant a 0.50% "foreign currency fee" on its DCC turnover. Adyen settles the merchant the original amount plus a share of the mark-up, which shows up as a negative (credit) value in the DCC Markup (NC) column of its settlement details report.
What Is Multi-Currency Pricing (MCP)?
With multi-currency pricing the merchant sets prices in the shopper's currency before payment starts. Visa defines an MCP transaction as one where the merchant displays prices in currencies other than its local one, the transaction currency is one of those displayed, and no DCC takes place (ID# 0030764). The cardholder is charged in the currency they saw. The merchant's acquirer converts to the settlement currency later and charges the merchant for it.
Those conversion fees are published. Stripe adds 2% on a UK account when a payment needs converting, and 1% on a US account. Shopify Payments charges 1.5% for US stores and 2% almost everywhere else, and its automatic pricing passes this to the customer as (price × rate) × (1 + fee) before rounding. The merchant also carries refund FX risk. Stripe's own example: a 60 USD charge settles as 52.80 EUR at 0.88, and a refund at 0.86 debits 51.60 EUR. If the rate had moved the other way, the merchant would have lost the difference.
DCC vs Multi-Currency Pricing: Who Sets the Rate and Who Pays?
| DCC | Multi-currency pricing | Neither (issuer converts) | |
|---|---|---|---|
| Price first shown in | Merchant's currency, then a converted offer | Shopper's currency | Merchant's currency |
| Who converts | DCC provider or acquirer, at the point of sale | Merchant's acquirer, at settlement | Card scheme, then the issuer adds its fee |
| Who pays the conversion cost | Cardholder, inside the rate | Merchant, usually priced in | Cardholder, via the issuer fee |
| Merchant revenue | Share of the mark-up | None, pays a fee | None |
| Scheme registration | Required at Visa and Mastercard | Not required | Not applicable |
| Dispute exposure | Visa 12.3, Mastercard 4834 currency errors | Mastercard 4834 if charged in a different currency from the quote | None specific |
The third column is the one shoppers forget. Their alternative to DCC is not a free conversion. It is the Visa or Mastercard rate plus whatever their own bank charges.
How Much Does Dynamic Currency Conversion Cost in the UK?
Most measured mark-ups predate the 2020 disclosure rules, but the newer figures point the same way:
- BEUC (2017): Stiftung Warentest found that DCC at ATMs added 2.6% to 12%, and 2% to 5% in shops. A Norwegian bank's study of 1,500 transactions found DCC averaged 7.6% over the Visa rate, with a maximum of 12.4%.
- Which? (March 2019): Ryanair's checkout still switched UK customers' euro fares into pounds at the payment step. On the example fare, paying in euros came to £137.10, about £8.70 (6%) less.
- NatWest (3 October 2024): customers lose over £17m a year by paying in pounds abroad. In Poland, 77% of the spend value from its customers was made in sterling.
| UK issuer | Non-sterling fee | Does paying in pounds abroad avoid it? |
|---|---|---|
| Barclays | 2.75% or 2.99% | Yes. Its terms call these DCC transactions and waive the fee |
| Lloyds, Halifax | 2.99%, plus 50p per non-euro purchase on standard accounts | Yes for purchases. No for ATM cash in pounds, which carries a foreign cash fee |
| HSBC UK | 2.75% debit, 2.99% credit | Implied only |
| NatWest | 2.75% | Not stated |
| Monzo, Starling, Chase UK | None | Nothing to avoid, so DCC is pure cost |
For a Barclays customer, a 3.5% DCC mark-up costs roughly half a percent more than paying in local currency. At the 13.4% NatWest found, it costs over ten percent more. For a Monzo customer, the whole mark-up is lost.
DCC Rules in the UK and EU in 2026
EU. Regulation (EU) 2021/1230, Article 4, is the core text. Before the payment starts, the party offering DCC must:- show the mark-up as a percentage over the latest ECB euro reference rate;
- show the amount in the payee's currency and the amount in the payer's account currency;
- tell the payer they can pay in the payee's currency and let their own bank convert.
- PSRs 2017, regulation 57(2). Anyone offering conversion at an ATM, at the point of sale or as the payee must disclose all charges and the exchange rate. This applies in any currency. Under regulation 141, a merchant that isn't a PSP and breaches it commits a criminal offence. There is a due-diligence defence.
- Retained Article 3a of Regulation 924/2009. It is still in force. It requires the same ECB-referenced mark-up, both amounts, and the notice that the payer can pay in local currency. It covers payments in sterling, euro or another EU currency.
Visa vs Mastercard DCC Rules: Consent, Pre-Selection and Chargebacks
| Rule | Visa (Core Rules, Oct 2026) | Mastercard (TPR 3.8, Jun 2025) |
|---|---|---|
| Registration | Acquirer registers and certifies under the DCC Guide (ID# 0025740) | Acquirer registers before acquiring any DCC transaction |
| Default selection | Banned in every channel (ID# 0003100) | Banned, except online, where pre-selection is allowed if disclosed and declinable |
| Steering | No wording or flow that defaults to DCC | No YES/NO prompts, no red/green buttons |
| Card-present consent | Disclosure and acceptance on a customer-facing screen | Disclosure before the authorisation request |
| Excluded cards | Visa Multi-Currency Solution and travel prepaid | Contactless at or under the CVM limit; ranges flagged ineligible, including multi-currency debit ranges where cross-border card-present volume is 50% or more |
| Dispute | 12.3 Incorrect Currency: 120 days, full amount, pre-arbitration limited to the difference | 4834 Currency Errors: the difference only |
| Penalties | Up to USD 10,000 or USD 50,000 per audit violation, plus Tier 2 assessments (ID# 0030703) | Up to USD 25,000 per violation for not registering or not filling DE 54 |
One checkout usually serves both schemes, so in practice Visa's stricter rule on pre-selection is the one you build to.
Is Converting Prices by Card BIN Dynamic Currency Conversion?
At Visa, yes. The last sentence of ID# 0003100 says that an e-commerce merchant that uses the cardholder's payment credential to decide whether to convert must meet every DCC requirement. The common pattern of reading the BIN once the card number is typed and switching the basket to that card's currency is DCC. It needs a registered acquirer behind it. The tooling makes this easy to do by accident. Checkout.com's POST /metadata/card returns the card's billing currency, and Mastercard's own parameter tables carry a default billing currency per account range. If the currency comes from IP geolocation, a shipping country or a currency picker shown before card entry, it counts as MCP.
Mastercard draws a related line in its chargeback guide. Showing the cardholder's currency "for information purposes only" (a "≈ €58" hint, say) gives no 4834 right. Quoting a price as payable in euros and then charging in sterling does.
Multi-currency cards are the other trap. A UK customer's Wise or Revolut card has one billing currency on record, usually sterling, even when the holder is spending from a euro balance. A DCC offer in pounds can then mean two conversions: the merchant's into sterling and the card provider's back out of euros. Visa bans DCC on cards enabled with its Multi-Currency Solution, and Mastercard marks multi-currency ranges ineligible in its parameter extract. Whether a given fintech's range carries that flag depends on how its issuer registered it. Wise tells users to always pay in the local currency.
How DCC Appears in ISO 8583: DE 54 Amount Type 58
Mastercard requires a DE 54 (Additional Amounts) occurrence on every DCC transaction, in the 0200 financial message and the 1240 first presentment:
DE 4 transaction amount after conversion
DE 49 currency the cardholder chose
DE 54 subfield 2 = 58 (amount type: DCC performed)
subfield 3 = 826 (pre-conversion currency, e.g. GBP)
subfield 5 = ... (pre-conversion total amount)
In the EEA, the UK and Gibraltar, the fields are set by whichever registered switch the acquirer uses. Acquirer host specs use a two-pass model: get the rate, show the offer, then send the authorisation in whichever currency the cardholder picked. The Worldpay ISO 8583 Reference Guide V2.63 (March 2026, a US host spec) carries the result in field 62.44: Y means the cardholder opted in to DCC, N means they opted out and a dollar authorisation is needed, and Z means the merchant has suspended its DCC programme. Visa's own DCC indicator lives in its proprietary V.I.P. spec, which is not public. The ISO 8583 field guide covers how DE 4, DE 49 and the bitmap fit together.
Stripe vs Adyen vs Checkout.com: DCC and Multi-Currency Pricing APIs
Stripe has four relevant pieces. Only one of them is DCC, and it hasn't launched:- Presentment currency.
PaymentIntent.currencyis the presentment currency. Conversion appears asexchange_rateon the balance transaction. Stripe's balance transaction types also includestripe_fx_feefor its currency conversion fee. - Adaptive Pricing (Checkout, Payment Links and hosted invoices; not Elements on the Payment Intents API). Stripe picks the local currency by location using machine learning. The customer pays a 2–4% fee built into the rate and the merchant pays nothing extra. The converted amount comes back as
presentment_details {presentment_amount, presentment_currency}. It doesn't run withcapture_method=manual. The same doc guarantees the rate "for 24 hours" in one line and "through settlement" in another. - FX Quotes API (preview). This one is for building your own MCP price lists:
{
"object": "fx_quote",
"lock_duration": "five_minutes",
"lock_status": "active",
"to_currency": "usd",
"rates": {
"eur": {
"exchange_rate": 1.06053,
"rate_details": {
"base_rate": 1.08295,
"fx_fee_rate": 0.02,
"duration_premium": 0.0007,
"reference_rate": 1.0827,
"reference_rate_provider": "ecb"
}
}
}
}
Locks come as none, five_minutes, hour or day. For GBP, EUR and USD the premium is 0.07% for five minutes, 0.10% for an hour and 0.20% for a day. A locked payment quote is cancelled if the market moves more than 3.5%.
- Terminal DCC (not launched). The Terminal docs say "local currency only". But the private-preview OpenAPI spec lists
request_dynamic_currency_conversiononcollect_payment_method. The Terminal Java SDK also has aDynamicCurrencyConversionmodel withtransactionMarkupPercent,cardholderRateand areferenceMarkupPercentdocumented as EEA-only. That last field matches the EU's mark-up-over-ECB disclosure. My inference is that Stripe Terminal DCC is coming.
- Setup. Enable it with
PATCH .../terminalSettings {"dcc":{"enableDcc":true}}. - Restrictions. It can't be combined with a surcharge, and refunds can't use DCC.
- Results. The Terminal API response carries
dcc.exchangerate,dcc.markupand the original and converted amounts. - Online.
/authoriseand CheckoutPaymentRequestaccept adccQuoteobject (ForexQuote:basePoints,validTill,signatureand more). The quote service that produces it is not in any published spec, so online DCC goes through your account manager.
GET /forex/rates?product=daily_acquiring&source=visareturns rates fixed for a calendar day. Its docs suggest using them to price products in several currencies at a margin.- The OpenAPI spec names the field
exchange_rate, while the docs example showsrateas a string. Parse defensively. - Reconciliation exposes
processing_to_transaction_currency_fx_rateandfx_rate_appliedon financial actions. Pricing on IC++ vs blended decides whether you see the FX spread as its own line.
Is Stripe Adaptive Pricing DCC by Another Name?
My view, and it is an opinion: legally no, economically mostly yes. The shopper pays a 2–4% mark-up set by the PSP, the merchant pays nothing extra, and the currency is picked for the shopper. The DCC rules don't apply only because the currency comes from location rather than the card number. So the line between the two models is the data source behind the currency decision, not who pays or how the screen looks. The fee sits inside the exchange rate rather than being quoted as a mark-up over a reference rate.
I expect the PSR to narrow that gap in the EU. A mark-up over a mid-market rate, shown as a monetary amount, is a format any conversion product can be held to. Once DCC terminals show it, a checkout that hides a 2–4% spread inside the rate will look worse by comparison.
Agents make this sharper. Visa's April 2026 rule for agentic payment providers (ID# 0031173) lets an agent accept a DCC or MCP offer using consent captured when the user set up the payment instruction. A standing yes to DCC covers offers the user never sees, from merchants whose mark-up the agent cannot judge, for a user whose bank may charge 0%. If I were building an agent wallet, the default would be to decline DCC.
What This Means for Payment Engineering Teams
- Decide the currency before the card is entered. Use location, account country or a visible selector. If you want to use BIN data, register DCC through your acquirer, because Visa treats it as DCC.
- Never pre-select the converted option. Mastercard allows it online, but Visa doesn't, and one checkout serves both.
- Charge in the currency you quote. Label display-only conversions as approximate. Mastercard's 4834 turns on that difference.
- Store the full FX tuple per payment: presentment amount and currency, settlement amount, rate, rate source, quote ID and lock expiry. Refunds and disputes need all of it. Stripe converts a standard presentment-currency refund at the current rate, while Adaptive Pricing refunds reuse the original rate.
- Refund DCC sales in the original transaction currency. Mastercard's rules require it, and Adyen won't run a refund through DCC.
- For UK and EU DCC screens, show the mark-up over the ECB reference rate with both amounts and the "pay in local currency" option. Then plan for the mid-market format the PSR will require.
- Exclude multi-currency cards. Honour the scheme flags rather than trusting the BIN currency.
- In agent flows, make DCC an explicit policy setting and default it to off.