This topic describes how you can develop a billing system for your application, to allow users to make purchases within your application.
Samsung Checkout offers an optimized purchase experience on Samsung TVs. The user can quickly and safely register a payment method and make frictionless payments repetitively within the TV environment. In addition, Samsung Checkout provides a comprehensive global monetization platform, which allows you to integrate various business models and promotional campaigns into your services.
The TV-optimized purchase experience provides a quick and simple 3-step checkout, once a payment method is registered. The checkout requires only number-centric information to be entered, making it easy to use with a TV remote control. Users can register their payment method directly on the TV or through a mobile phone.
Figure 1. 3-step checkout: Confirm > Provide PIN > Done
To use Samsung Checkout, the user needs:
Important
A Samsung Account is mandatory for using Samsung Checkout. Samsung Checkout assumes that the user is logged in to Samsung Account at all times.
You can manage your product application and product sales through DPI (Digital Product Inventory) and process the actual purchase through Samsung Checkout.
For complete information, see:
Important
All application data that is saved locally on a TV is deleted when the application is deleted from that TV. If the user's purchase history is saved only in the TV storage and not remotely, and the user deletes and reinstalls the application, all application settings and content are removed, including purchased content. If your application saves purchase information in the TV storage only, inform the user that uninstalling the application deletes their purchased content.
The DPI portal provides functions, such as "Purchase History Unapply" and "Refund", to help you address situations when your customer inadvertently deletes application data. Before proceeding with the unapply and refund processes, you must contact a Samsung representative by going to "Samsung Apps TV Seller Office > Support > 1:1 Q&A".
When a user wants to purchase a product on your application, Samsung Checkout provides a common purchase GUI, which identifies the user and confirms first the purchase and then the purchase completion. After the user completes the purchase, Samsung Checkout returns the purchase result to your application.
Figure 2. Samsung Checkout process
The DPI service provides information on buyable products in your application and the purchase history of your customers. It serves the appropriate product information for the user's country, provides user-specific purchase information, and manages applying the product after purchase. The DPI service also assures purchase integrity and provides security through preventing fraudulent access.
The DPI service environment is divided into 2 separate zones:
Note
When a refund of a real payment is made in the operating zone, a charge is applied on you. Consequently, do not use the operating zone for testing.
Dummy payment | Actual Payment |
---|---|
![]() |
![]() |
The following figure illustrates the DPI service environments.
Figure 3. DPI service environments
Implementation information for each DPI service environment is described in the following table.
Service Environment | Details |
---|---|
Environment:
| |
Environment:
| |
Environment:
|
When you submit your application for release, make sure that it has been fully integrated with the billing system:
When the user registers their credit card as a payment method in Samsung Checkout, they can do it through their mobile phone or computer Web site by entering the authentication code.
Figure 4. Registering a credit card as a payment method
When you are creating a user for testing your application, pay attention to the URL you use to enter your authentication code and register a payment method. Each URL requests a different server to handle the payment:
Before you start to develop Samsung Checkout for your application, you must start to register your application on the Seller Office.
You do not need to complete the registration with your source code at this point. To be able to use the DPI portal, you need to proceed to the second step of the App Registration Page and set the "Billing" field to "Use" and the "Samsung Checkout on TV" field to "Yes". You can save the registration at this point and return to it later when your source code is complete.
For more information, see Samsung Checkout DPI Portal guide.
Note
To manage your product for billing, go to the DPI Portal.
You can implement in-app purchases in your application using the Billing APIs.
The payment service supports purchase management and payment as shown in the following flow.
Figure 5. Payment flow
Request the purchase list:
Request the product list.
Request the product information list using a Products List API request.
The user purchases the product:
Request the purchase list.
Update the customer purchase list.
Verify the purchase.
Verify the purchase using a Verify Purchase API request.
Apply the product.
Apply the product using an Apply Product API request, and send the application result to the server.
To implement in-app purchases:
Install the following NuGet packages:
To use the Billing APIs and access the device and user information, the application has to request permission by adding the following privileges to the "tizen-manifest.xml" file:
<tizen:privilege name="http://developer.samsung.com/privilege/sso.partner"/>
<tizen:privilege name="http://developer.samsung.com/privilege/productinfo"/>
<tizen:privilege name="http://tizen.org/privilege/appmanager.launch"/>
<tizen:privilege name="http://developer.samsung.com/privilege/billing"/>
Initialize the required variables:
using Tizen.TV.Service.Sso;
string loginUid = Sso.GetLoginUid(); //get UID value from TV
using Tizen.TV;
string country = Environment.SmartHubConfig.Country;
using Tizen.TV;
int serverType = Environment.SmartHubConfig.ServerType;
// Use dummy payment for development
BillingRequestServerType servertype = BillingRequestServerType.Dummy;
// When submitting to Samsung Apps TV, use Sandbox or Live environment depending on the TV environment.
if(serverType == 0) { // Operating zone
BillingRequestServerType servertype = BillingRequestServerType.Prd;
} else { // Staging zone
BillingRequestServerType servertype = BillingRequestServerType.Dev;
}
string securityKey = "**********"; // YOUR SECURITY KEY ISSUED BY DPI PORTAL
You can use the Billing APIs to manage products and sales.
The check value is used by the DPI service to verify Purchase List and Products List API requests. It is a Base64 hash generated by applying the HMAC SHA256 algorithm on a concatenated string of parameters using the DPI security key.
The application can also use the check value to verify that API response data from the DPI server is legitimate. To ensure the data integrity of requests and responses in real time, generate and verify the check value for API requests and responses during runtime.
Note
The DPI security key is used only by Samsung Smart TV applications for Billing API calls. Do not expose this key. You can use a key management server for greater security.
To generate the check value, the following 2 items are used as parameters:
To generate the HMAC SHA256 hash:
using System;
using System.Security.Cryptography;
private string GetCheckValue(string strMsg, string strKey)
{
var encoding = new System.Text.ASCIIEncoding();
byte[] byteKey = encoding.GetBytes(strKey);
byte[] dataToHmac = encoding.GetBytes(strMsg);
HMACSHA256 hmac = new HMACSHA256(byteKey);
return Convert.ToBase64String(hmac.ComputeHash(dataToHmac));
}
The Products List API requests product information from the DPI server. When the API is in "show" status, it returns the information for the products on sale. This API is generally used to generate a list of buyable products in the application.
To call the Products List API, use the GetProductsList()
method:
using System;
using System.Security.Cryptography;
using Tizen.TV.Service.Billing;
using Tizen.TV;
public void Request_product_list()
{
BillingPlugin pIBilling = new BillingPlugin();
pIBilling.RequestAPIEventHandler += new BillingRequestAPICallbackEventHandler(RequestProductListCallbackEvent);
string strAppId = "**********"; // YOUR APP ID
string strCountryCode = Environment.SmartHubConfig.Country;
string strSecurityKey = "**********"; // YOUR SECURITY KEY ISSUED BY DPI PORTAL
string strCheckValue = GetCheckValue(strAppId + strCountryCode, strSecurityKey);
int iPageSize = 100;
int iPageNumber = 1;
bool bRet = pIBilling.GetProductsList(strAppId, strCountryCode, iPageSize, iPageNumber, strCheckValue, servertype);
if (bRet)
{
// API call success
}
else
{
// API call fail
}
}
private string GetCheckValue(string strMsg, string strKey)
{
var encoding = new System.Text.ASCIIEncoding();
byte[] byteKey = encoding.GetBytes(strKey);
byte[] dataToHmac = encoding.GetBytes(strMsg);
HMACSHA256 hmac = new HMACSHA256(byteKey);
return Convert.ToBase64String(hmac.ComputeHash(dataToHmac));
}
private void RequestProductListCallbackEvent(object sender, BillingRequestAPICallbackEventArgs e)
{
//DO SOMETHING AFTER PARSING e.Result
JObject ProductListObj = JObject.Parse(e.Result);
JArray jArray = JArray.Parse(ProductListObj.GetValue("ItemDetails").ToString());
ProductInfos = jArray.Select(p => new ProductInfo
{
ItemType = (string)p["ItemType"],
Price = (string)p["Price"],
ItemTitle = (string)p["ItemTitle"],
ItemID = (string)p["ItemID"],
CurrencyID = (string)p["CurrencyID"]
}).ToList();
}
The following tables describe the Products List API parameters. The response data is in JSON format.
Products List API request parameters:
Parameter | Type | Mandatory | Description |
---|---|---|---|
"AppID" | Application ID | ||
"CountryCode" | Country code The country code must be retrieved from the TV. |
||
"PageSize" | Requested page size Range: 1~N (maximum 100) Number of products retrieved per page. |
||
"PageNumber" | Requested page number Range: 1~N Each purchase record page has a number of entries equal to the "PageSize" value. To receive the complete purchase record, make Purchase List API requests while increasing the "PageNumber" value, until "EOF" is returned in the "CPResult" parameter. |
||
"CheckValue" | Security check value Required parameters: "AppID" + "CountryCode" |
Products List API response parameters:
Parameter | Type | Mandatory | Description | ||
---|---|---|---|---|---|
"CPStatus" | String | True | Result code:
|
||
"CPResult" | False | Result message:
|
|||
"TotalCount" | Number | True | Total number of invoices Sum of all purchase history pages, or sum of purchase history in the specified time period. |
||
"CheckValue" | String |
Security check value Required parameters: "CPStatus" + "CPResult" + "TotalCount" + "InvoiceDetails[0].ItemID" + … + "InvoiceDetails[TotalCount].ItemID" |
|||
"ItemDetails" | JSON | False | Invoice information | ||
"Seq" | Number | True | Sequence number Range: 1 ~ TotalCount |
||
"ItemID" | String | Product ID | |||
"ItemTitle" | Product name | ||||
"ItemType" | Number | Product type:
|
|||
"Period" | False | Limited period product duration, in minutes | |||
"Price" | True | Product price, in "xxxx.yy" format | |||
"CurrencyID" | String | Currency code | |||
"SubscriptionInfo" | JSON | False | Subscription information Mandatory for subscription products. |
||
"PaymentCyclePeriod" |
String | True |
Subscription payment period:
|
||
"PaymentCycleFrq" | Number | Payment cycle frequency | |||
"PaymentCycle" | Number of payment cycles |
The Purchase List API requests the list of purchased items for a specific user, usually the currently logged-in user. The API response identifies whether purchased products have been applied or have been refunded.
Note
For subscription products, the default value of the "AppliedStatus" parameter is "true", but the "CancelStatus" parameter does not indicate the refund status in purchase history. Instead, it indicates the cancellation status for the next subscription cycle. The "SubsStatus" and "SubsEndTime" parameters detail the subscription expiration status.
To call the Purchase List API, use the GetPurchaseList()
method:
using System;
using System.Security.Cryptography;
using Tizen.TV.Service.Billing;
using Tizen.TV.Service.Sso;
using Tizen.TV;
public void Request_Purchase_list()
{
BillingPlugin pIBilling = new BillingPlugin();
pIBilling.RequestAPIEventHandler += new BillingRequestAPICallbackEventHandler(RequestPurchaseListCallbackEvent);
string strAppId = "**********"; // YOUR APP ID
string strUserUID = Sso.GetLoginUid();
string strCountryCode = Environment.SmartHubConfig.Country;
string strItemType = “2”;
string strSecurityKey = "**********"; // YOUR SECURITY KEY ISSUED BY DPI PORTAL
int iPageNumber = 1;
string strCheckValue = GetCheckValue(strAppId + strUserUID + strCountryCode + strItemType + iPageNumber, strSecurityKey);
bool bRet = pIBilling.GetPurchaseList(strAppId, strUserUID, strCountryCode, iPageNumber, strCheckValue, servertype);
if (bRet)
{
// API call success
}
else
{
// API call fail
}
}
private string GetCheckValue(string strMsg, string strKey)
{
var encoding = new System.Text.ASCIIEncoding();
byte[] byteKey = encoding.GetBytes(strKey);
byte[] dataToHmac = encoding.GetBytes(strMsg);
HMACSHA256 hmac = new HMACSHA256(byteKey);
return Convert.ToBase64String(hmac.ComputeHash(dataToHmac));
}
private void RequestPurchaseListCallbackEvent(object sender, BillingRequestAPICallbackEventArgs e)
{
//DO SOMETHING
}
The following tables describe the Purchase List API parameters. The response data is in JSON format.
Purchase List API request parameters:
Parameter | Type | Mandatory | Description |
---|---|---|---|
"AppID" | Application ID | ||
"CustomID" | Customer ID (Samsung Account UID) | ||
"CountryCode" | Country code The country code must be retrieved from the TV. |
||
"PageNumber" | Requested page number Range: 1~N Each purchase record page has up to 100 entries. To receive the complete purchase record, make Purchase List API requests while increasing the "PageNumber" value, until "EOF" is returned in the "CPResult" parameter. |
||
"CheckValue" | Security check value Required parameters: "AppID" + "CustomID" + "CountryCode" + "ItemType" + "PageNumber" |
Purchase List API response parameters:
Parameter | Type | Mandatory | Description | ||
---|---|---|---|---|---|
"CPStatus" | String | True |
Result code:
|
||
"CPResult" | False |
Result message:
|
|||
"TotalCount" | Number | True |
Total number of invoices Sum of all purchase history pages, or sum of purchase history in the specified time period. |
||
"CheckValue" | String |
Security check value Required parameters: "CPStatus" + "CPResult" + "TotalCount" + "InvoiceDetails[0].ItemID" + … + "InvoiceDetails[TotalCount].ItemID" |
|||
"InvoiceDetails" | JSON | False | Invoice information | ||
"Seq" | Number | True | Sequence number Range: 1 ~ TotalCount |
||
"InvoiceID" | String | Invoice ID | |||
"ItemID" | Product ID | ||||
"ItemTitle" | Product name | ||||
"ItemType" | Number | Product type:
|
|||
"OrderTime" | String | Payment time, in 14-digit UTC time, for example, "20140314175900" | |||
"Period" | Number | False | Limited period product duration, in minutes | ||
"Price" | True | Product price, in "xxxx.yy" format | |||
"OrderCurrencyID" | String | Currency code | |||
"CancelStatus" | Boolean | Cancellation status:
|
|||
"AppliedStatus" | Product application status:
|
||||
"AppliedTime" | String | False | Time product applied, in 14-digit UTC time | ||
"LimitEndTime" | Limited period product end time, in 14-digit UTC time For limited period products only. "LimitEndTime" = "AppliedTime" + "Period" |
||||
"RemainTime" | Limited period product time remaining, in seconds For limited period products only. "RemainTime" = "LimitEndTime" – request time |
||||
"SubscriptionInfo" | JSON | Subscription information Mandatory for subscription products. |
|||
"SubscriptionId" |
String | True | Subscription ID | ||
"SubsStartTime" | Subscription start time, in 14-digit UTC time | ||||
"SubsEndTime" | Subscription expiry time, in 14-digit UTC time | ||||
"SubsStatus" | Subscription status:
|
The Verify Purchase API checks whether a purchase, corresponding to the requested "InvoiceID", was successful.
To call the Verify Purchase API, use the VerifyInvoice()
method:
using System;
using Tizen.TV.Service.Billing;
using Tizen.TV.Service.Sso;
using Tizen.TV;
public void Request_Verify_Purchase(string strInvoiceID)
{
BillingPlugin pIBilling = new BillingPlugin();
pIBilling.RequestAPIEventHandler += new BillingRequestAPICallbackEventHandler(RequestVerifyInvoiceCallbackEvent);
string strAppId = "**********"; // YOUR APP ID
string strUserUID = Sso.GetLoginUid();
// strInvoiceID = issued by GetPurchaseList
string strCountryCode = Environment.SmartHubConfig.Country;
bool bRet = pIBilling.VerifyInvoice(m_strAppId, strUserUID, strInvoiceID, strCountryCode, servertype);
if (bRet)
{
// API call success
}
else
{
// API call fail
}
}
private void RequestVerifyInvoiceCallbackEvent(object sender, BillingRequestAPICallbackEventArgs e)
{
//DO SOMETHING
}
The following tables describe the Verify Purchase API parameters. The response data is in JSON format.
Verify Purchase API request parameters:
Parameter | Type | Mandatory | Description |
---|---|---|---|
"AppID" | Application ID | ||
"InvoiceID" | Invoice ID | ||
"CustomID" | Customer ID (Samsung Account UID) | ||
"CountryCode" | Country code The country code must be retrieved from the TV. |
Verify Purchase API response parameters:
Parameter | Type | Mandatory | Description |
---|---|---|---|
"CPStatus" | Result code:
|
||
"CPResult" | Result message:
|
||
"AppID" | Requested application ID | ||
"InvoiceID" | Requested invoice ID |
The Apply Product API supports product management to help guarantee secure sales of your products. Normally, the DPI service is notified that the purchased product has been successfully applied. The Apply Product API is used in situations where purchase result delivery to the application encounters issues and is not successful. For example, if the network connection is interrupted, the application can fail to receive the “payment complete” message, even though the payment was completed. In this situation, the product is not applied to the application. You can check for unapplied products using the "AppliedStatus" parameter of the Purchase List API response and apply the product at that time.
For subscription products, the product is considered applied at the time of purchase and the "AppliedStatus" is set to "true" by default. Consequently, it is not necessary to check whether a subscription product purchase corresponding to the requested "InvoiceID" was successful.
Note
To avoid applying the same product more than once in error, after 3 failed attempts to request the Apply Product API, wait until the network is reconnected before trying again.
To call the Apply Product API, use the ApplyInvoice()
method:
using System;
using Tizen.TV.Service.Billing;
using Tizen.TV.Service.Sso;
using Tizen.TV;
public void Request_Apply_Purchase(string strInvoiceID)
{
BillingPlugin pIBilling = new BillingPlugin();
pIBilling.RequestAPIEventHandler += new BillingRequestAPICallbackEventHandler(RequestApplyInvoiceCallbackEvent);
string strAppId = "**********"; // YOUR APP ID
string strUserUID = Sso.GetLoginUid();
// strInvoiceID = issued by GetPurchaseList
string strCountryCode = Environment.SmartHubConfig.Country;
bool bRet = pIBilling.ApplyInvoice(strAppId, strUserUID, strInvoiceID, strCountryCode, servertype);
if (bRet)
{
// API call success
}
else
{
// API call fail
}
}
private void RequestApplyInvoiceCallbackEvent(object sender, BillingRequestAPICallbackEventArgs e)
{
//DO SOMETHING
}
The following tables describe the Apply Product API parameters. The response data is in JSON format.
Apply Product API request parameters:
Parameter | Type | Mandatory | Description |
---|---|---|---|
"AppID" | Application ID | ||
"InvoiceID" | Invoice ID | ||
"CustomID" | Customer ID (Samsung Account UID) | ||
"CountryCode" | Country code The country code must be retrieved from the TV. |
Apply Product API response parameters:
Parameter | Type | Mandatory | Description |
---|---|---|---|
"CPStatus" | Result code:
|
||
"CPResult" | Result message:
|
||
"AppliedTime" | Time product applied, in 14-digit UTC time, for example, "20140314175900" |
You can only use the Subscription Cancel API with subscription products, to request canceling the subscription. The DPI server returns the subscription expiry time and the current subscription status.
To call the Subscription Cancel API, use the CancelSubscription()
method:
using System;
using Tizen.TV.Service.Billing;
using Tizen.TV.Service.Sso;
using Tizen.TV;
public void Request_Cancel_Subscription(string strSubscriptionID)
{
BillingPlugin pIBilling = new BillingPlugin();
pIBilling.RequestAPIEventHandler += new BillingRequestAPICallbackEventHandler(RequestCancelSubscriptionCallbackEvent);
string strAppId = "**********"; // YOUR APP ID
string strUserUID = Sso.GetLoginUid();
// strSubscriptionID = issued by GetPurchaseList
string strCountryCode = Environment.SmartHubConfig.Country;
bool bRet = pIBilling.CancelSubscription(strAppId, strUserUID, strSubscriptionID, strCountryCode, servertype);
if (bRet)
{
// API call success
}
else
{
// API call fail
}
}
private void RequestCancelSubscriptionCallbackEvent(object sender, BillingRequestAPICallbackEventArgs e)
{
//DO SOMETHING
}
The following tables describe the Subscription Cancel API parameters. The response data is in JSON format.
Subscription Cancel API request parameters:
Parameter | Type | Mandatory | Description |
---|---|---|---|
"AppID" | Application ID | ||
"SubscriptionID" | Subscription ID | ||
"CustomID" | Customer ID (Samsung Account UID) | ||
"CountryCode" | Country code The country code must be retrieved from the TV. |
Subscription Cancel API response parameters:
Parameter | Type | Mandatory | Description |
---|---|---|---|
"CPStatus" | Result code:
|
||
"CPResult" | Result message:
|
||
"InvoiceID" | Invoice ID | ||
"SubsCancelTime" | Time subscription canceled, in 14-digit UTC time, for example, "20140314175900" | ||
"SubsStatus" | Subscription status:
|
When the user wants to make a purchase, authenticate the user and show the common purchase GUI with the BuyItem()
method.
Important
When the
BuyItem()
method is called, the common purchase GUI is shown in the application automatically. Do not change the purchase GUI appearance until the purchase transaction is complete and the application receives the response.
You can customize the product image in Samsung Checkout by providing the URI to an image on your own content server.
Product image | Default image |
---|---|
![]() |
![]() |
To implement Samsung Checkout:
using System;
using System.Text;
using System.IO;
using Newtonsoft.Json;
using Tizen.TV.Service.Billing;
using Tizen.TV.Service.Sso;
using Tizen.TV;
public void Request_Buy_Item()
{
BillingPlugin pIBilling = new BillingPlugin();
pIBilling.BuyItemEventHandler += new BillingClientClosedEventHandler(BuyItemCallbackEvent);
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
string strAppId = "**********"; // YOUR APP ID
string strUserUID = Sso.GetLoginUid();
using (JsonWriter writer = new JsonTextWriter(sw))
{
writer.Formatting = Formatting.Indented;
writer.WriteStartObject();
writer.WritePropertyName("OrderTotal"); writer.WriteValue(Price); // issued by GetProductList. String type
writer.WritePropertyName("OrderItemID"); writer.WriteValue(ItemID); // issued by GetProductList. String type
writer.WritePropertyName("OrderTitle"); writer.WriteValue(ItemTitle); // issued by GetProductList. String type
writer.WritePropertyName("OrderCurrencyID"); writer.WriteValue(CurrencyID); // issued by GetProductList. String type
writer.WritePropertyName("OrderCustomID"); writer.WriteValue(strUserUID);
writer.WriteEndObject();
}
bool bRet = pIBilling.BuyItem(m_strAppId, servertype, sb.ToString());
if (bRet)
{
// API call success
}
else
{
// API call fail
}
}
private void BuyItemCallbackEvent(object sender, BillingClientClosedEventArgs e)
{
// DO SOMETHING
}
The Buy Item API request and response data are in JSON format:
Buy Item API request parameters:
Parameter | Type | Mandatory | Description | ||
---|---|---|---|---|---|
"AppID" | String | True | Application ID | ||
"PaymentServer" |
Possible values:
|
||||
"PaymentDetails" | JSON | Payment details | |||
"OrderItemID" | String | Purchase item ID, for example, "DP123400000000" "ItemID" issued by the Products List API. |
|||
"OrderTitle" |
Purchase item title "ItemTitle" issued by the Products List API. The length must not exceed 100 characters. |
||||
"OrderTotal" |
Total purchase price "Price" issued by the Products List API. When converting the number to string type, pay attention to the unit separators. |
||||
"OrderCurrencyID" |
Purchase currency unit "CurrencyID" issued by the Products List API. |
||||
"OrderID" | False | Management ID for purchases managed by third-party applications | |||
"OrderCustomID" | True |
Customer ID (Samsung Account UID) "CustomID" parameter from the Purchase List API. If the value of "OrderCustomID" is empty or "NULL", the Samsung Account UID value is used. |
|||
"OrderItemPath" | False |
Item image URI The image must be in JPEG, JPG, or PNG format. |
|||
"StltAppId" | Settlement application ID |
BuyItem()
method response parameters:
Parameter | Type | Mandatory | Description |
---|---|---|---|
"payResult" | String | True | Possible values:
|
Note
The “Dynamic Product” type is also supported on Samsung Checkout.
The request parameters for dynamic products differ, and are not described in this topic. For more information, contact a Samsung representative by going to "Samsung Apps TV Seller Office > Support > 1:1 Q&A".
The following table lists result codes and messages that are returned by the DPI service.
Result Code | Result Message | Description |
---|---|---|
100000 | "SUCCESS" | Additional messages:
|
400111 | "AppID not correct" | Requested application ID does not exist |
For explanations of additional DPI result codes, at the DPI Portal, go to "Help > Error Code".
The following table lists countries with their corresponding country code, currency, and currency code.
Country Name | Country Code | Currency | Currency Code |
---|---|---|---|
Aland Islands | AX | Euro | EUR |
Argentina | AR | Argentine peso | ARS |
Australia | AU | Australian dollar | AUD |
Austria | AT | Euro | EUR |
Belgium | BE | Euro | EUR |
Brazil | BR | Brazilian real | BRL |
Bulgaria | BG | Bulgarian lev | BGN |
Canada | CA | Canadian dollar | CAD |
Chile | CL | Chilean peso | CLP |
Colombia | CO | Colombian peso | COP |
Czech Republic | CZ | Czech koruna | CZK |
Denmark | DK | Danish krone | DKK |
Estonia | EE | Euro | EUR |
Faroe Islands | FO | Danish krone | DKK |
Finland | FI | Euro | EUR |
France | FR | Euro | EUR |
Germany | DE | Euro | EUR |
Greece | GR | Euro | EUR |
Greenland | GL | Danish krone | DKK |
Guatemala | GT | Guatemalan quetzal | GTQ |
Guernsey | GG | British pound | GBP |
Hungary | HU | Hungarian forint | HUF |
India | IN | Indian rupee | INR |
Ireland | IE | Euro | EUR |
Isle of Man | IM | British pound | GBP |
Israel | IL | Israeli shekel | ILS |
Italy | IT | Euro | EUR |
Jersey | JE | British pound | GBP |
Kazakhstan | KZ | Kazakhstani tenge | KZT |
Korea, Republic of | KR | South Korean won | KRW |
Latvia | LV | Euro | EUR |
Lithuania | LT | Euro | EUR |
Luxembourg | LU | Euro | EUR |
Mexico | MX | Mexican peso | MXN |
Netherlands | NL | Euro | EUR |
Norway | NO | Norwegian krone | NOK |
Panama | PA | US dollar | USD |
Peru | PE | Peruvian sol | PEN |
Poland | PL | Polish zloty | PLN |
Portugal | PT | Euro | EUR |
Romania | RO | Euro | EUR |
Russia | RU | Russian ruble | RUB |
Saudi Arabia | SA | Saudi riyal | SAR |
Slovakia | SK | Euro | EUR |
South Africa | ZA | South African rand | ZAR |
Spain | ES | Euro | EUR |
Sweden | SE | Swedish krona | SEK |
Switzerland | CH | Swiss franc | CHF |
Turkey | TR | Turkish lira | TRY |
United Arab Emirates | AE | Emiriti dirham | AED |
Ukraine | UA | Ukrainian hryvnia | UAH |
United Kingdom | GB | British pound | GBP |
United States of America | US | US dollar | USD |