All entries
Chapter VIII
Journal · 30 Oct 2026 · 13 min read

DCC vs Multi-Currency Pricing: Who Pays the FX?

Dynamic currency conversion vs multi-currency pricing for engineers: Visa and Mastercard rules, UK and EU disclosure law, PSP APIs and real mark-ups.

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?

DCCMulti-currency pricingNeither (issuer converts)
Price first shown inMerchant's currency, then a converted offerShopper's currencyMerchant's currency
Who convertsDCC provider or acquirer, at the point of saleMerchant's acquirer, at settlementCard scheme, then the issuer adds its fee
Who pays the conversion costCardholder, inside the rateMerchant, usually priced inCardholder, via the issuer fee
Merchant revenueShare of the mark-upNone, pays a feeNone
Scheme registrationRequired at Visa and MastercardNot requiredNot applicable
Dispute exposureVisa 12.3, Mastercard 4834 currency errorsMastercard 4834 if charged in a different currency from the quoteNone 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.
What the cardholder saves by accepting DCC depends on their issuer, which the merchant can't see from the BIN:
UK issuerNon-sterling feeDoes paying in pounds abroad avoid it?
Barclays2.75% or 2.99%Yes. Its terms call these DCC transactions and waive the fee
Lloyds, Halifax2.99%, plus 50p per non-euro purchase on standard accountsYes for purchases. No for ATM cash in pounds, which carries a foreign cash fee
HSBC UK2.75% debit, 2.99% creditImplied only
NatWest2.75%Not stated
Monzo, Starling, Chase UKNoneNothing 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.
The same information goes on a durable medium afterwards. Since 19 April 2021 issuers must also send an electronic message the first time each month a cardholder pays in a given Union currency, and cardholders can opt out of it. The rule only covers payments in EU currencies. Online checkouts are covered too: PSD2 Article 59(2) names conversion offered "by the payee", and the regulation's recitals expect DCC charges to be shown on-screen for online purchases. UK. Two layers apply:
  • 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.
The UK never brought in the monthly issuer message. Paragraphs 5 and 6 of Article 3a applied in the EU only from April 2021, after the Brexit transition period ended, so they are missing from the UK text. What changes next. The Council's 17 April 2026 compromise text of the Payment Services Regulation drops the ECB benchmark. It requires the charge as a monetary amount and as a mark-up over an "aggregated mid-market exchange rate", no more than 10 minutes old. It applies 21 months after entry into force and was not yet in the Official Journal on 30 October 2026. The Commission's review of the current rules was due by 19 April 2022. Expert-group minutes from October 2024 record it as delayed, and I could not find a published version.

Visa vs Mastercard DCC Rules: Consent, Pre-Selection and Chargebacks

RuleVisa (Core Rules, Oct 2026)Mastercard (TPR 3.8, Jun 2025)
RegistrationAcquirer registers and certifies under the DCC Guide (ID# 0025740)Acquirer registers before acquiring any DCC transaction
Default selectionBanned in every channel (ID# 0003100)Banned, except online, where pre-selection is allowed if disclosed and declinable
SteeringNo wording or flow that defaults to DCCNo YES/NO prompts, no red/green buttons
Card-present consentDisclosure and acceptance on a customer-facing screenDisclosure before the authorisation request
Excluded cardsVisa Multi-Currency Solution and travel prepaidContactless at or under the CVM limit; ranges flagged ineligible, including multi-currency debit ranges where cross-border card-present volume is 50% or more
Dispute12.3 Incorrect Currency: 120 days, full amount, pre-arbitration limited to the difference4834 Currency Errors: the difference only
PenaltiesUp 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.currency is the presentment currency. Conversion appears as exchange_rate on the balance transaction. Stripe's balance transaction types also include stripe_fx_fee for 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 with capture_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_conversion on collect_payment_method. The Terminal Java SDK also has a DynamicCurrencyConversion model with transactionMarkupPercent, cardholderRate and a referenceMarkupPercent documented as EEA-only. That last field matches the EU's mark-up-over-ECB disclosure. My inference is that Stripe Terminal DCC is coming.
Adyen does DCC on terminals:

  • 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.markup and the original and converted amounts.
  • Online. /authorise and Checkout PaymentRequest accept a dccQuote object (ForexQuote: basePoints, validTill, signature and more). The quote service that produces it is not in any published spec, so online DCC goes through your account manager.
Checkout.com offers no DCC API, only rates:
  • GET /forex/rates?product=daily_acquiring&source=visa returns 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 shows rate as a string. Parse defensively.
  • Reconciliation exposes processing_to_transaction_currency_fx_rate and fx_rate_applied on financial actions. Pricing on IC++ vs blended decides whether you see the FX spread as its own line.
Square UK has no DCC and no multi-currency processing at all.

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.
DCC pays the merchant when the shopper accepts a worse rate. MCP costs the merchant a fee to give the shopper a known price. Which rulebook you end up under comes down to what data your checkout reads, and when. The same BIN data drives 8-digit BIN lookups. More card-stack notes are on Tom Wang's site.