Skip to content

Stripe decline codeStripe: card declined, currency_not_supported

currency_not_supported is the Stripe decline code for a card that can’t pay in the currency of the charge. The customer’s bank decides this, so the fix is to ask for another card, or to charge in a currency the card and your account both support.

Short answer

Tell the customer the card can’t pay in this currency and ask for another card or payment method. A bad currency code gives an API error, not this decline. If many customers in one country hit it, offer their local currency, if your account supports it, or another payment method.

Rather not fix it yourself? Stripe Billing Fix and Setup handles it at a fixed price, agreed before work starts.

Why the card refuses the currency, and the fix

  1. 01

    The card issuer doesn’t allow the currency

    “The customer needs to check with the issuer whether the card can be used for the type of currency specified.” Stripe, Decline codes (currency_not_supported)

    Some cards, often local debit cards, only pay in their home currency. Stripe can’t change this, so ask the customer to use another card or a different payment method.

  2. 02

    American Express can’t take that currency

    “American Express doesn’t support currencies marked with an asterisk (*) in any Stripe account country.” Stripe, Supported currencies

    American Express doesn’t support some currencies in any Stripe country. If Amex customers fail in one currency, check the asterisk list on Stripe’s currency page and offer another currency or method. Currencies without an asterisk can still fail for Amex in some countries.

  3. 03

    The app sends the wrong currency

    “Make sure to use all lowercase letters when entering the three-letter ISO code in any payment request.” Stripe, Supported currencies

    A currency picked from the browser locale, or a typo in a config file, can charge a currency you didn’t plan for. Send the three-letter ISO code in lowercase, from one list your app controls.

    const PRICES = { usd: 1999, eur: 1899, gbp: 1599 }; // server-side, minor units
    if (!(requested in PRICES)) throw new Error('Unsupported currency');
    await stripe.paymentIntents.create({ amount: PRICES[requested], currency: requested });
  4. 04

    The message hides the next step

    A generic “card declined” leaves the customer guessing. For this code it is fine to say the card can’t pay in this currency and suggest another card.

Checked against the vendor’s docs on : Stripe docs: Decline codes; Stripe docs: Supported currencies.

Rather hand it over?

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

“Working with Simon makes everything run so smoothly and better than I could ask for it. Amazingly communicative, extremely knowledgeable of coding and the backend processes. I strongly recommend.”
A buyer in the United States, January 2026. App development on Fiverr
All 127 Fiverr reviews

Related: Stripe card_not_supported · Stripe amount_too_small · Stripe generic_decline · Stripe Checkout Session expired

Questions

More on this error

Will retrying the same card work?

No. The card issuer refuses the currency, so the same card in the same currency fails again. Ask for another card or method.

Should I charge everyone in USD?

It doesn’t fix this code: a card that only pays in its home currency refuses USD too. Offer the customer’s local currency, if your account supports it, or another payment method.

Can you fix it for me?

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

A different error?

Describe it and get a written quote

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.