Copyright © 2026 Unity Technologies
Description
The IAP SDK derives the country it sends on D2C order creation from .NET System.Globalization. Unity's shipped globalization data resolves only a subset of cultures. Where a player's specific culture is absent, RegionInfo.CurrentRegion falls back to US regardless of the OS-level region, and the SDK sends US / USD on to the payment provider. The player is presented with a US checkout they may have no way to pay through.
This is not specific to one market. Any player whose regional variant is missing from the shipped culture data is affected.
Steps to reproduce
Actual result
The three values return US, USD, en-US. Checkout renders in USD against the provider's US entity, and local payment methods are not offered.
Expected result
Country resolves to the player's actual region, and the checkout session is created against that region's entity and currency.
Culture data detail
CultureInfo.GetCultures(CultureTypes.SpecificCultures) returns three Nigerian specific cultures: ha-Latn-NG, yo-NG, ig-NG. There is no en-NG. Constructing en-NG yields neutral en, after which RegionInfo.CurrentRegion throws NotImplementedException. yo-NG resolves correctly to NG / NGN, and new RegionInfo("NG") works standalone. So the region data exists; the English regional variant an English-language Nigerian build lands on does not.
Ruled out during investigation
Workaround
None for a multi-market title. Pinning CultureInfo.CurrentCulture to a resolvable culture before initialising the StoreController only works if every player is in one country, and the SDK exposes no per-request country override. For Nigeria the pin would have to be yo-NG, ig-NG or ha-Latn-NG, with unknown knock-on effects on number and date formatting and on the Localization package if it reads CultureInfo.
Issues you vote on will appear here