Adyen locale vs countryCode: what is the difference?
locale sets the language on screen. countryCode decides
which payment methods the shopper is offered and how amounts and fields are formatted.
They are independent, and setting one does not imply the other.
So locale: 'nl-NL' does not give you iDEAL, and
countryCode: 'NL' does not give you Dutch text.
What each one actually controls
countryCode goes on the session and is a commercial setting. Adyen uses it,
together with the currency and amount, to decide which payment methods your merchant
account can offer this shopper. Change it from NL to US and
iDEAL disappears while ACH Direct Debit appears. It also drives formatting, so address
fields and amount display follow local convention.
locale is a presentation setting. It selects the translation used for
labels, validation messages and button text. It has no influence at all on which methods
you get.
Both being independent is the point. A Dutch-speaking shopper buying from your German
store is locale: 'nl-NL' with countryCode: 'DE', and that
combination is entirely legitimate.
This applies the same way whether you are on Drop-in or Components, since both take the settings from the session and the component config rather than from anything the page does on its own.
Changing locale needs a new component
This is the part that costs an afternoon. If you change locale after the
component exists, remounting the instance you already have will not change the language.
The translation is resolved when the component is created, so you have to create it again.
It matters on any checkout with a language switcher, because the obvious implementation, updating the config and remounting, appears to do nothing and gives you no error to search for.
Currency is a third thing
Worth saying because it gets folded into the same confusion. Currency lives on the
session amount, not on either of these settings. A common working combination is
countryCode: 'NL' with EUR, but nothing stops you from
pairing a country with a currency that has no local methods, in which case the shopper
sees cards and little else.
Try it yourself
Both Adyen playgrounds expose locale and countryCode as
separate controls, so you can change one at a time and watch which one moves the method
list and which one moves the words.
Questions, feedback, or work in payments?
I'm always happy to hear from fellow payments people.
Personal project by Elie Joseph. Not affiliated with, endorsed by, or officially connected to any payment service provider. All product and company names, logos and brands referenced on this site are property of their respective owners. Playgrounds run against test environments only. No real payments are processed. Use only test data. Never enter real card numbers, real personal information, or any genuine payment details on this site or in any linked test environment.