Is there an official list of currencies supported by in-app purchase?

At the moment I have copied and paste into a file the drop-down list that appears when clicking on "Other Currencies" when adding a new In-app purchase.

Then I parsed the file in python, using regex and extracted the following:

{'AED', 'AUD', 'BGN', 'BRL', 'CAD', 'CHF', 'CLP', 'CNY', 'COP', 'CZK', 'DKK', 'EGP', 'EUR', 'GBP', 'HKD', 'HRK', 'HUF', 'IDR', 'ILS', 'INR', 'JPY', 'KRW', 'KZT', 'MXN', 'MYR', 'NGN', 'NOK', 'NZD', 'PEN', 'PHP', 'PKR', 'PLN', 'QAR', 'RON', 'RUB', 'SAR', 'SEK', 'SGD', 'THB', 'TRY', 'TWD', 'TZS', 'USD', 'VND', 'ZAR'}

I need to know the currencies supported by in-app purchase because apple is forcing me to use in-app purchase for a marketplace app.

Does the iPhone support more currencies than the one supported by in-app purchase?

A seller should not be able to set a price in a currency not supported by in-app purchase.

Are all the currencies supported by an iPhone (ios >= 13) and the currencies supported by in-app purchase exactly the same?

Maybe this answers my own question. Wrote the below in swift:

var codes = Set<String>()
for identifier in Locale.availableIdentifiers {
  let locale = Locale(identifier: identifier)
  if let currencyCode = locale.currencyCode {
    codes.insert(currencyCode)
  }
}
print(codes.sorted())

Which prints:

["AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYN", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRU", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SRD", "SSP", "STN", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VES", "VND", "VUV", "WST", "XAF", "XCD", "XOF", "XPF", "YER", "ZAR", "ZMW"]

So it seems that my iPhone (iOS 14.6) supports 153 currencies while in-app purchase supports a subset of 45 currencies. Which means 108 currencies available on iPhone are not supported by in-app purchase. Here is the list of unsupported currencies:

{'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CDF', 'CRC', 'CUP', 'CVE', 'DJF', 'DOP', 'DZD', 'ERN', 'ETB', 'FJD', 'FKP', 'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HNL', 'HTG', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KWD', 'KYD', 'LAK', 'LBP', 'LKR', 'LRD', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', 'MUR', 'MVR', 'MWK', 'MZN', 'NAD', 'NIO', 'NPR', 'OMR', 'PAB', 'PGK', 'PYG', 'RSD', 'RWF', 'SBD', 'SCR', 'SDG', 'SHP', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SYP', 'SZL', 'TJS', 'TMT', 'TND', 'TOP', 'TTD', 'UAH', 'UGX', 'UYU', 'UZS', 'VES', 'VUV', 'WST', 'XAF', 'XCD', 'XOF', 'XPF', 'YER', 'ZMW'}

Is there anyone out there that had to think about this? In a marketplace scenario if the seller has one of the unsupported currencies I am currently thinking to default to USD. In this way I can limit the currency exchange calls to only the supported in-app purchase currencies.

I welcome better ideas.

Hi there, I was searching for the answer and bumped into this just an update since locale.currencyCode is decprecated. locale.currencyCode is replaced with Locale( identifier: identifier ).currency but it can be nil so I use if let.

I am still a beginner in Swift, please let me know if there is anyting wrong with the code.

	func generateCurrencyCode (){
		var currencyCode = Set&lt;String>()
		for identifier in Locale.availableIdentifiers {
			if let locale = Locale( identifier: identifier ).currency {
				currencyCode.insert(locale.identifier) &#x2F;&#x2F; locale returns Currency(_identifier: ____, _normalizedIdentifier: _____ )
			} 
		}
		return currencyCode
		
	}

currencyCode will be as follow

["ZMW", "TJS", "COP", "JMD", "CRC", "GMD", "AFN", "FKP", "NAD", "MAD", "AMD", "IRR", "BIF", "QAR", "MXN", "MKD", "MZN", "BRL", "CVE", "BWP", "ETB", "HUF", "SLL", "XCD", "THB", "ALL", "BDT", "XPF", "BBD", "BOB", "BGN", "TZS", "BHD", "MGA", "SHP", "KMF", "KZT", "PAB", "SGD", "AZN", "BMD", "BAM", "KHR", "TOP", "RWF", "AOA", "GNF", "TWD", "HNL", "PKR", "JPY", "PGK", "CDF", "SEK", "TTD", "MRU", "SSP", "PYG", "USD", "MNT", "MMK", "VUV", "BSD", "HKD", "EGP", "LYD", "NGN", "MOP", "ILS", "UGX", "BTN", "UAH", "RON", "LKR", "MDL", "KRW", "NPR", "ANG", "DZD", "RUB", "NZD", "KES", "EUR", "CZK", "XOF", "HTG", "KGS", "SRD", "TND", "KPW", "GHS", "SDG", "NOK", "GEL", "MYR", "LAK", "MUR", "XAF", "IQD", "PHP", "STN", "ARS", "SOS", "INR", "TRY", "GIP", "JOD", "DKK", "SCR", "CAD", "DOP", "KYD", "OMR", "KWD", "CNY", "GBP", "SBD", "GYD", "BZD", "CLP", "NIO", "FJD", "SAR", "DJF", "PEN", "MVR", "SZL", "MWK", "ZAR", "BND", "UYU", "AED", "RSD", "LRD", "AUD", "GTQ", "IDR", "SYP", "LBP", "AWG", "CHF", "YER", "UZS", "ISK", "BYN", "PLN", "CUP", "ERN", "VES", "TMT", "VND", "WST"]
Is there an official list of currencies supported by in-app purchase?
 
 
Q