AxtonPay API

Document version: 0.9

Common information

API endpoint

https://mp.axtonpay.com/api/v1/private/checkout

Content-type

API accepts HTTP requests with 2 content types: 'application/x-www-form-urlencoded', 'application/json'.

The HTTP header should fit the content of POST body.

Abbreviations and definitions

  • {PID} - ID of the invoice, usually it's the unique 8-character alphanumeric sequence.
  • Shop - Your website that accepts payments through the AxtonPay service

Algorithm of work with API

Usual sequence of actions to receive payment:

  • create an invoice ('/api/v1/private/checkout/payment/create'), the API response will return the invoice URL ('invoice_url'),
  • send the buyer to this invoice in order to make payment,
  • wait for AxtonPay server notifications, that will be coming to 'server_notification_url',
  • upon receipt of any notification from AxtonPay, check the validity of its signature and preferably send a confirmation of receipt to AxtonPay ('/api/v1/private/checkout/payment/confirm/{PID}'),
  • if the status of an invoice is changed, perform actions corresponding to this status (e.g., request full information about the invoice, ship the goods, create a ticket to the support team, etc.).

If you set an empty or invalid 'server_notification_url' when creating an invoice, the service is unable to send notifications about status changes; in such cases, you should check the invoice yourself at some interval ('/api/v1/private/checkout/payment/get/{PID}').

Authorization of requests

To authorize a request it is necessary to calculate a Hash from a string formed in a special way. The string is composed by concatenating (gluing together) the URL arguments (QUERY_STRING) and the body of the POST request (REQUEST_BODY). It is important that all components should be taken exactly in the form in which they will be transmitted to the server. The URL arguments (QUERY_STRING) should be taken from the URL as a single line, without changing the order of arguments and without dropping any elements. POST request body (REQUEST_BODY) should also be used without any modifications, including do not remove from it quotes, spaces, brackets, line breaks.

In the cases of an empty POST request body, and in the case of an empty URL arguments, that component will simply be empty string.

The sequence of data in the signing request: QUERY_STRING first, then the POST data. You should not insert any connecting signs between them, just concatenate two text strings.

Once again, every symbol is significant. You should not add or remove even a whitespace or symbol of new line. Just use the raw data received by server.

A SHA-256 hash with the key 'Secret key' is taken from the resulting string and used as the second argument of function hash_hmac().

It is mandatory to pass the 'time' parameter containing the current POSIX timestamp (Unix time).

This signature is valid for 24 hours. If the value of 'time' parameter differs from the current server time by more than the 24 hours (whether forward or backward), the request will fail even if the signature is calculated without errors.

If merchant panel has accept a request with some signature that signature cannot be used again, even to send the request with the same parameters (this includes parameter 'time').

The resulting hash is passed in the HTTP header 'Sign'.

In addition to the calculated signature, the request must also contain an 'Api-Key' header containing the used API key. Example:

$headers = [
      'Api-Key: ' . $the_api_key,
      'Sign: ' . $signature_sha256
    ];

You may sign the request sent to the AxtonPay with any valid key that belongs to this checkout. However the AxtonPay always use the key which you have selected in the merchant panel.

Example of signature calculation:

/* 
Imagine there is the POST request:
URI: '/api/v1/private/checkout/payment/create?time=1735084500.3561'
POST body: '[email protected]&shop_payment_id=INVOICE-1746&pms=all&amount=19.95&currency=USD'
So there are HTTP query string and request body:
*/ 
$the_query_string = 'time=1735084500.3561';
$the_request_body = '[email protected]&shop_payment_id=INVOICE-1746&pms=all&amount=19.95&currency=USD';

// • A pair of 'API key' and 'Secret key' gathered from the admin panel
$the_api_key = 'key1';
$the_api_secret = 'secret1';

// • Concatenation:
$string_for_sha = $the_query_string . $the_request_body;
// Value: '[email protected]&shop_payment_id=INVOICE-1746&pms=all&amount=19.95&currency=USD'

// • Calculating the HTTP header 'Sign'
// hash method is SHA-256
$signature_sha256 = hash_hmac("sha256", $string_for_sha, $the_api_secret); 
// '31ca271a15e45802e07b7559a5f520656c050dda79e6fa46d52a15fc51d193cd'

/* • Signed HTTP request:
  Method: POST
  URI: '/api/v1/private/checkout/payment/create?time=1735084500.3561'
  HTTP header 'Api-Key': 'key1'
  HTTP header 'Sign': '31ca271a15e45802e07b7559a5f520656c050dda79e6fa46d52a15fc51d193cd'
  POST body: '[email protected]&shop_payment_id=INVOICE-1746&pms=all&amount=19.95&currency=USD'
*/

Pay attention to whitespaces and line breaks in another example:

/* 
Imagine there is the POST request:
URI: '/api/v1/private/checkout/payment/create?shop_name=Very%20useful%20service'
POST body: '{
  "shop_user_id": "[email protected]",
  "shop_payment_id": "INVOICE-1746",
  "shop_payment_desc": "Premium service
(1 month)",

  "pms": "all",
  "amount": "19.95",
  "currency": "USD",
  "time": "1735084500.3561"
}'

Attention! It's important to keep the raw data 'as is', including all tabulations, whitespaces, and line breaks. 
For example, the signature becomes invalid if your software formats json, adds or removes spaces. 

So there are such HTTP query string and POST request body:
*/ 
$the_query_string = 'shop_name=Very%20useful%20service';
$the_request_body = '{
  "shop_user_id": "[email protected]",
  "shop_payment_id": "INVOICE-1746",
  "shop_payment_desc": "Premium service
(1 month)",

  "pms": "all",
  "amount": "19.95",
  "currency": "USD",
  "time": "1735084500.3561"
}';

// • A pair of 'API key' and 'Secret key' gathered from the merchant panel
$the_api_key = 'key1';
$the_api_secret = 'secret1';

// • Concatenation:
//
// hash method is SHA-256 (HTTP query string + request body)
$string_for_sha = $the_query_string . $the_request_body;
/* Value: 'shop_name=Very%20useful%20service{
  "shop_user_id": "[email protected]",
  "shop_payment_id": "INVOICE-1746",
  "shop_payment_desc": "Premium service
(1 month)",

  "pms": "all",
  "amount": "19.95",
  "currency": "USD",
  "time": "1735084500.3561"
}'
*/

// • Calculating the HTTP header 'Sign'

$signature_sha256 = hash_hmac("sha256", $string_for_sha, $the_api_secret); 
// 'ef15476f28b379e4b137a2dcd9ed495332e4766004ac3610bb92a69ba2303c28'

/* • Signed HTTP request:
  Method: POST
  URI: '/api/v1/private/checkout/payment/create'
  HTTP header 'Api-Key': 'key1'
  HTTP header 'Sign': 'ef15476f28b379e4b137a2dcd9ed495332e4766004ac3610bb92a69ba2303c28'
  POST body: '{
  "shop_user_id": "[email protected]",
  "shop_payment_id": "INVOICE-1746",
  "shop_payment_desc": "Premium service
(1 month)",

  "pms": "all",
  "amount": "19.95",
  "currency": "USD",
  "time": "1735084500.3561"
}' 
*/

The Python example of composing the string for signature calculation:

string_for_hash_calculation = f'{request.query_params.urlencode()}{request.data.urlencode()}'

Parameters

The API accepts all parameters in both QUERY_STRING and in the body of the POST request.

Boolean variables

The API expects to get '0' or '1' in Boolean variables, but because of implicit type conversion, any text string will be treated as a '1', even the word 'false'. Thus, to explicitly set a 'FALSE' value for a Boolean variable, you need to pass to it either the value '0' or an empty string.

Decimal separator

Only the decimal point is used as a decimal separator in numbers.

Character case in parameters

With few exceptions, all parameters are case-sensitive.

Callback URL

In the admin panel of AxtonPay, on the checkout settings page, it is possible to set store URLs for receiving server-server notifications from AxtonPay, as well as URLs for redirecting the buyer after invoice payment or its cancelation, as well as in case of an error.

These URLs can be overridden in the invoice creation request.

Methods of AxtonPay API

Invoice creation: /api/v1/private/checkout/payment/create

Method /api/v1/private/checkout/payment/create initiates the invoice creation.

If successful, the method returns a link ('invoice_url') to which you should forward the customer for payment.

Own invoice parameters:

  • time (required) - POSIX timestamp (Unix time)
  • amount (required) - amount to be paid (the price of the product or service the store wants to receive)
  • currency (required) - 3-letter currency code according to ISO 4217-alpha, case-insensitive
  • pms (required) - payment methods displayed on the invoice page. If you want to allow all payment methods, the value is 'all'; if you want to allow only some of them, list their comma-separated numeric identifiers.
  • pm - identifier of the selected payment method. It is important that if the 'pm' parameter is passed, the invoice will be created in 'transparent mode', i.e. the buyer will not see the invoice page, but will go right to the payment system.
  • extra_data - an associative array containing any additional data; this data is returned to the store in its entirety
  • shop_user_id - user identifier in the store, it is returned to the store in unchanged form
  • shop_payment_id - payment identifier in the store, it is returned to the store in unchanged form
  • shop_name - store name (displayed on the invoice page)
  • shop_payment_desc - order description (displayed on the invoice page)
  • shop_payment_remark - your notes about this payment (this is a field for any notes you have on the payment, which AxtonPay does not pass anywhere; it is only visible in the list of payments; it does not go back to the store)
  • valid_time - the time interval in which the invoice can be paid; in seconds
  • view_time - time interval during which the invoice is available for viewing via external link; in seconds; countdown starts after 'valid_time' period ends
  • server_notification_method - method of sending server-server notifications about payment statuses to the store; valid values: POST, GET

Some settings for the invoice are set on the checkout settings page. But the values passed in the request will take precedence over these settings.

Checkout parameters which can be overridden for this invoice:

  • customer_success_url - a link to which the buyer will be redirected if the invoice is successfully paid (i.e. if the invoice status is 'paid' or 'overpaid').
  • customer_cancel_url - a link to which the buyer will be redirected if the payment is canceled
  • customer_fail_url - a link to which the buyer will be redirected if the payment ends in an error
  • server_notification_url - link for sending server-server notifications of payment statuses to the store

Note: In order to comply with your own privacy policy, it is usually not necessary to include your customer's personal data in the invoice properties. For example, in the "shop_user_id" parameter, it is better to specify an abstract customer ID rather than their email or phone number. Also in the "shop_payment_desc", it is better not to include customer data at all, because they already know everything about themselves; instead, you can write some information about the paid goods or services, or even just write the type of action, for example, "Purchase" or "Balance top-up".

All references are necessarily transmitted with the protocol.

Example of request:

<?php
// API credentials - get it from settings of the checkout
$api_key = 'API_KEY';
$api_secret = 'API_SECRET';
// API endpoint
$api_endpoint = 'https://mp.axtonpay.com/api/v1/private/checkout';
// Current POSIX timestamp
$time = time();
// API method URL
$api_url = $api_endpoint . '/payment/create';

// Prepare POST parameters
$post_data = [
    'amount' => 4.99,
    'currency' => 'USD',
    'pms' => 'all', // visible payment methods; either 'all' or comma-separated list of selected GUIDs
    // 'pm' => '92807385', // define the certain payment method if you do not want payer to see the list of all possible payment methods

    // Below parameters are optional
    'extra_data' => ['param1'=>'value 1', 'param2'=>'value 2'],

    'shop_user_id' => '[email protected]',
    'shop_payment_id' => 'TEST-333-' . $time,
    'shop_name' => 'TEST-333 web shop',
    'shop_payment_desc' => 'TEST-333 payment description visible to payer',
    'shop_payment_remark' => 'TEST-333 payment remark for admin',

    'customer_success_url' => 'https://example.com/?status=paid-or-overpaid&once=TEST-333-' . $time, 
    'customer_cancel_url' => 'https://example.com/?status=cancelled-by-payer&once=TEST-333-' . $time,
    'customer_fail_url' => 'https://example.com/?status=error&once=TEST-333-' . $time,
    'server_notification_url' => 'https://example.com/?for=server-to-server-notificataions',
    'server_notification_method' => 'POST',
	
    'valid_time' => 60*60*24*7, // seconds
    'view_time'  => 60*60*24*21, // seconds, clock starts after ending of 'valid_time' period
];

// Prepare GET parameters
$query_string = 'time=' . $time;

// Build the request body
$request_body = json_encode($post_data); // Encode as JSON
// $request_body = http_build_query($post_data);

// Concatenate QUERY_STRING and REQUEST_BODY
$string_for_sha = $query_string . $request_body;

// Calculate the signature
$signature = hash_hmac('sha256', $string_for_sha, $api_secret);

// Prepare HTTP headers
$headers = [
    'Api-Key: ' . $api_key,
    'Sign: ' . $signature,
    'Content-Type: application/json'
];

// Initialize cURL
$ch = curl_init($api_url . '?' . $query_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request_body);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// Execute the request
$response = curl_exec($ch);

// Close cURL
curl_close($ch);
?>

Example of a successful response when requesting the creation of an invoice:

{
    "status": "ok",
    "data": "invoice created",
    "pid": "HNQ5CAHM",
    "test": false,
    "created_at": "2025-12-27T08:14:55.000000Z",
    "invoice_url": "https:\/\/27375212.b88pay.com\/i\/HNQ5CAHM"
}

Obtaining invoice information: /api/v1/private/checkout/payment/get/{PID}

To get the information you need to call the method /api/v1/private/checkout/payment/get/{PID}, by specifying the PID of the invoice at the end of the URL.

Параметры запроса:

  • time (required) - POSIX timestamp (Unix time)

Example of a line for composing a signature:

// Full URL:
https://mp.axtonpay.com/api/v1/private/checkout/payment/get/GIKR3XPY?time=1766837343

// String for signature calculation: 
time=1766837343

Example of an answer:

{
    "status": "ok",
    "data": {
        "pid": "HNQ5CAHM",
        "checkout_guid": 34677320,
        "created_at": "2025-12-27 12:07:21",
        "updated_at": "2025-12-27 12:07:34",
        "data": {
            "ip": "1.2.3.4",
            "pms": "all",
            "extra_data": {
                "param1": "val1",
                "param2": "val2",
                "server_notification_url": "https:\/\/example.com\/?for=server-to-server-notificataions"
            },
            "redirect_url": "\/wait\/HNQ5CAHM",
            "customer_fail_url": "https:\/\/example.com\/?status=error&id=TEST-333-1766837240",
            "allow_change_amount": false,
            "customer_cancel_url": "https:\/\/example.com\/?status=cancelled-by-payer&id=TEST-333-1766837240",
            "customer_success_url": "https:\/\/example.com\/?status=paid-or-overpaid&id=TEST-333-1766837240"
        },
        "payment_status": 0,
        "amount": "4.99",
        "filled": "0.00",
        "currency_id": 5,
        "transparent": 1,
        "expires_at": "2026-01-03 12:07:21",
        "invisible_at": "2026-01-26 12:07:21",
        "paid_at": null,
        "confirmed_at": null,
        "shop_name": "TEST-333 web shop",
        "shop_user_id": "[email protected]",
        "shop_payment_id": "TEST-333-1766837240",
        "shop_payment_desc": "TEST-333 payment description visible to payer",
        "shop_payment_remark": "TEST-333 payment remark for merchant",
        "payment_method_id": 92807385,
        "gateway_id": 40056646,
        "payment_option_id": 297,
        "txid": null,
        "account_from": null,
        "account_to": "TEnYvbfg9YqJeaVtVHAwEvG2kmAJcTzxTh",
        "payment_option_amount": "17.865973",
        "payment_option_filled": "0.000000",
        "payment_option_currency_id": 317,
        "exchange_rates_expires_at": "2025-12-27 12:27:33",
        "test": false,
        "initiator": "api",
        "initiator_info": null,
        "payment_option": {
            "id": 297,
            "gateway_id": 40056646,
            "pm": "trx",
            "currency_id": 317,
            "name": "Tron",
            "icon": "crypto\/tron.png",
            "min_invoice": null,
            "max_invoice": null
        },
        "payment_option_currency": {
            "id": 317,
            "name": "Tron",
            "code": "TRX",
            "minor_unit": 6
        },
        "currency": {
            "id": 5,
            "name": "United States dollar",
            "code": "USD",
            "minor_unit": 2
        },
        "invoice_url": "https:\/\/27375212.b88pay.com\/i\/HNQ5CAHM"
    }
}

Comparison of amount requested and amount paid

The response contains several different amounts (in the currency in which the invoice was issued):

  • "amount" - invoiced amount,
  • "filled" - paid part of the invoice,
  • "total_filled" - how much the client paid in total, including commissions.

If "filled = amount", then it's paid exactly as much as it needs to be.

If "filled > amount", there is an overpayment.

If "filled < amount", the invoice has not been paid in full (underpayment).

Invoice: processing of notification from AxtonPay about status change

Each time the status of an invoice is changed, AxtonPay sends a notification to server_notification_url (using the server_notification_method)

Example data:

{
    "pid": "U5IB4WIO",
    "status": "3",
    "shop_user_id": "3q23g",
    "shop_payment_id": "h76r5",
    "amount": "240.00000000",
    "filled": "0.00000000",
    "fee": "0",
    "total_filled": "0.00000000",
    "currency": "DASH",
    "test": "0"
}

In response to this notification AxtonPay expects to receive HTTP code 200, which confirms its successful receipt. Otherwise, AxtonPay will retry 12 more times at progressively increasing intervals, and then the notification status changes to 'error' (but this does not affect the status of the invoice itself).

Possible status values:

  • 0 - pending
  • 1 - paid
  • 2 - error
  • 3 - cancelled by customer
  • 4 - underpaid
  • 5 - overpaid
  • 8 - expired

Successful payment statuses are 1 (paid) and 5 (overpaid); in case of their receipt you can transfer the paid purchase to the customer or replenish the balance. For payments with status 5 (overpaid), in case of balance replenishment you can replenish the balance by the amount of the actually received payment, but in case of sale of goods/services and a significant amount of overpayment it is advisable to contact the payer and decide with him how to deal with the overpayment.

Partially successful status is 4 (underpaid); in case of receiving this status it is possible to recharge the balance by the amount of actually received payment. However, this status cannot be considered successful for the sale of goods/services.

All other statuses - 0 (pending), 2 (error), 3 (canceled by customer) mean complete absence of payment; in case of their receipt no actions on balance replenishment or sale of goods/services should be performed.

Signature checking

To be sure that notification is sent by AxtonPay exactly it is necessary to verify the signature of the received notification before trusting it. The verification is similar to signing your own requests, only the last step is added, when you should compare the calculated signature with the received HTTP header 'Sign'.

The main steps after receiving notification about the changed payment status are following:

  • take the whole string of arguments (QUERY_STRING) from the received notification,
  • take the whole POST data (REQUEST_BODY) from the received notification,
  • calculate the signature using those QUERY_STRING + REQUEST_BODY and the appropriate 'Secret key',
  • compare calculated signature with one that is received in the HTTP header 'Sign',
  • if the signatures are the same, the notification really came from AxtonPay;
  • if the signatures are different, it may be an attempt to cheat by the payer.

Example of a line for signature generation:

// Full URL:
https://EXAMPLE.COM?time=1737027838.1237

// POST body: 
pid=ABCD5678&status=1&shop_user_id=&shop_payment_id=&amount=25.00000000&filled=25.00000000&fee=0&total_filled=25.00000000&currency=RDD&test=0

// String for signature calculation: 
time=1737027838.1237pid=ABCD5678&status=1&shop_user_id=&shop_payment_id=&amount=25.00000000&filled=25.00000000&fee=0&total_filled=25.00000000&currency=RDD&test=0

Confirmation that the store has processed the payment information: /api/v1/private/checkout/payment/confirm/{PID}

This request is sent to AxtonPay in response to a notification received from it. Functionally, it is a confirmation that the store has successfully received and processed the received notification.

To send a request, call the method /api/v1/private/checkout/payment/confirm/{PID}, by specifying the pid of the invoice at the end of the URL.

Request parameters:

  • time (required) - POSIX timestamp (Unix time)
  • status (required, integer) - payment status number for which the store sends confirmation

If the transmitted status matches the current status of this invoice in the system, AxtonPay will respond with 'OK' and if it does not match, it will respond with an error.

Example of a line for signature generation:

// Full URL:
https://mp.axtonpay.com/api/v1/private/checkout/payment/confirm/ABCD5678?time=1737011414

// POST body: 
{"status":"1"}

// String for signature calculation:
time=1737011414{"status":"1"}

Example of a response if the current payment status is the same:

{
    "status": "ok",
    "data": "\"Paid\" status notification is confirmed"
}

Example of a response if the current payment status differs from the one transmitted in the request:

{
    "status": "error",
    "message": "Something went wrong"
}

Currency codes

The currencies that can be used for an invoice creation.

Most of used currency codes belong to fiat currencies, and they are equal to the ISO 4217. Also list contains a several cryptocurrencies.

Code Name Decimal digits Type
BCH Bitcoin Cash 8 Cryptocurrency
BLK Blackcoin 8 Cryptocurrency
BNB Binancecoin 18 Cryptocurrency
BTC Bitcoin 8 Cryptocurrency
BTT BitTorrent 18 Crypto token
BUSD Binance USD 18 Crypto token
DAI Dai 18 Crypto token
DASH Dash 8 Cryptocurrency
DOGE Dogecoin 8 Cryptocurrency
ETC Ethereum Classic 18 Cryptocurrency
ETH Ethereum 18 Cryptocurrency
LTC Litecoin 8 Cryptocurrency
NLG Gulden 8 Cryptocurrency
RDD ReddCoin 8 Cryptocurrency
TRX Tron 6 Cryptocurrency
USDC USD Coin 6 Crypto token
USDD Decentralized USD 18 Crypto token
USDT Tether USDT 6 Crypto token
VTC Vertcoin 8 Cryptocurrency
XVG Verge 8 Cryptocurrency
AED United Arab Emirates dirham 2 Fiat currency
AFN Afghan afghani 2 Fiat currency
ALL Albanian lek 2 Fiat currency
AMD Armenian dram 2 Fiat currency
ANG Netherlands Antillean guilder 2 Fiat currency
AOA Angolan kwanza 2 Fiat currency
ARS Argentine peso 2 Fiat currency
AUD Australian dollar 2 Fiat currency
AWG Aruban florin 2 Fiat currency
AZN Azerbaijani manat 2 Fiat currency
BAM Bosnia and Herzegovina convertible mark 2 Fiat currency
BBD Barbados dollar 2 Fiat currency
BDT Bangladeshi taka 2 Fiat currency
BGN Bulgarian lev 2 Fiat currency
BHD Bahraini dinar 3 Fiat currency
BIF Burundian franc 2 Fiat currency
BMD Bermudian dollar 2 Fiat currency
BND Brunei dollar 2 Fiat currency
BOB Boliviano 2 Fiat currency
BRL Brazilian real 2 Fiat currency
BSD Bahamian dollar 2 Fiat currency
BTN Bhutanese ngultrum 2 Fiat currency
BWP Botswana pula 2 Fiat currency
BYN Belarusian ruble 2 Fiat currency
BZD Belize dollar 2 Fiat currency
CAD Canadian dollar 2 Fiat currency
CDF Congolese franc 2 Fiat currency
CHF Swiss franc 2 Fiat currency
CLP Chilean peso 2 Fiat currency
CNY Renminbi (Chinese) yuan 2 Fiat currency
COP Colombian peso 2 Fiat currency
CRC Costa Rican colon 2 Fiat currency
CUC Cuban convertible peso 2 Fiat currency
CUP Cuban peso 2 Fiat currency
CVE Cape Verde escudo 2 Fiat currency
CZK Czech koruna 2 Fiat currency
DJF Djiboutian franc 2 Fiat currency
DKK Danish krone 2 Fiat currency
DOP Dominican peso 2 Fiat currency
DZD Algerian dinar 2 Fiat currency
EGP Egyptian pound 2 Fiat currency
ERN Eritrean nakfa 2 Fiat currency
ETB Ethiopian birr 2 Fiat currency
EUR Euro 2 Fiat currency
FJD Fiji dollar 2 Fiat currency
FKP Falkland Islands pound 2 Fiat currency
GBP Pound sterling 2 Fiat currency
GEL Georgian lari 2 Fiat currency
GHS Ghanaian cedi 2 Fiat currency
GIP Gibraltar pound 2 Fiat currency
GMD Gambian dalasi 2 Fiat currency
GNF Guinean franc 0 Fiat currency
GTQ Guatemalan quetzal 2 Fiat currency
GYD Guyanese dollar 2 Fiat currency
HKD Hong Kong dollar 2 Fiat currency
HNL Honduran lempira 2 Fiat currency
HRK Croatian kuna 2 Fiat currency
HTG Haitian gourde 2 Fiat currency
HUF Hungarian forint 2 Fiat currency
IDR Indonesian rupiah 2 Fiat currency
ILS Israeli new shekel 2 Fiat currency
INR Indian rupee 2 Fiat currency
IQD Iraqi dinar 3 Fiat currency
IRR Iranian rial 2 Fiat currency
ISK Icelandic krona 2 Fiat currency
JMD Jamaican dollar 2 Fiat currency
JOD Jordanian dinar 3 Fiat currency
JPY Japanese yen 3 Fiat currency
KES Kenyan shilling 2 Fiat currency
KGS Kyrgyzstani som 2 Fiat currency
KHR Cambodian riel 2 Fiat currency
KMF Comoro franc 2 Fiat currency
KPW North Korean won 2 Fiat currency
KRW South Korean won 2 Fiat currency
KWD Kuwaiti dinar 3 Fiat currency
KYD Cayman Islands dollar 2 Fiat currency
KZT Kazakhstani tenge 2 Fiat currency
LAK Lao kip 2 Fiat currency
LBP Lebanese pound 2 Fiat currency
LKR Sri Lankan rupee 2 Fiat currency
LRD Liberian dollar 2 Fiat currency
LSL Lesotho loti 2 Fiat currency
LYD Libyan dinar 3 Fiat currency
MAD Moroccan dirham 2 Fiat currency
MDL Moldovan leu 2 Fiat currency
MGA Malagasy ariary 2 Fiat currency
MKD Macedonian denar 2 Fiat currency
MMK Myanmar kyat 2 Fiat currency
MNT Mongolian togrog 2 Fiat currency
MOP Macanese pataca 2 Fiat currency
MRU Mauritanian ouguiya 2 Fiat currency
MUR Mauritian rupee 2 Fiat currency
MVR Maldivian rufiyaa 2 Fiat currency
MWK Malawian kwacha 2 Fiat currency
MXN Mexican peso 2 Fiat currency
MYR Malaysian ringgit 2 Fiat currency
MZN Mozambican metical 2 Fiat currency
NAD Namibian dollar 2 Fiat currency
NGN Nigerian naira 2 Fiat currency
NIO Nicaraguan cordoba 2 Fiat currency
NOK Norwegian krone 2 Fiat currency
NPR Nepalese rupee 2 Fiat currency
NZD New Zealand dollar 2 Fiat currency
OMR Omani rial 3 Fiat currency
PAB Panamanian balboa 2 Fiat currency
PEN Peruvian sol 2 Fiat currency
PGK Papua New Guinean kina 2 Fiat currency
PHP Philippine peso 2 Fiat currency
PKR Pakistani rupee 2 Fiat currency
PLN Polish zloty 2 Fiat currency
PYG Paraguayan guarani 2 Fiat currency
QAR Qatari riyal 2 Fiat currency
RON Romanian leu 2 Fiat currency
RSD Serbian dinar 2 Fiat currency
RUB Russian ruble 2 Fiat currency
RWF Rwandan franc 2 Fiat currency
SAR Saudi riyal 2 Fiat currency
SBD Solomon Islands dollar 2 Fiat currency
SCR Seychelles rupee 2 Fiat currency
SDG Sudanese pound 2 Fiat currency
SEK Swedish krona/kronor 2 Fiat currency
SGD Singapore dollar 2 Fiat currency
SHP Saint Helena pound 2 Fiat currency
SLL Sierra Leonean leone 2 Fiat currency
SOS Somali shilling 2 Fiat currency
SRD Surinamese dollar 2 Fiat currency
SSP South Sudanese pound 2 Fiat currency
STN Sao Tome and Pricipe dobra 2 Fiat currency
SVC Salvadoran colon 2 Fiat currency
SYP Syrian pound 2 Fiat currency
SZL Swazi lilangeni 2 Fiat currency
THB Thai baht 2 Fiat currency
TJS Tajikistani somoni 2 Fiat currency
TMT Turkmenistan manat 2 Fiat currency
TND Tunisian dinar 3 Fiat currency
TOP Tongan paanga 2 Fiat currency
TRY Turkish lira 2 Fiat currency
TTD Trinidad and Tobago dollar 2 Fiat currency
TWD New Taiwan dollar 2 Fiat currency
TZS Tanzanian shilling 2 Fiat currency
UAH Ukrainian hryvnia 2 Fiat currency
UGX Ugandan shilling 0 Fiat currency
USD United States dollar 2 Fiat currency
UYU Uruguayan peso 2 Fiat currency
UZS Uzbekistan som 2 Fiat currency
VES Venezuelan bolivar soberano 2 Fiat currency
VND Vietnamese dong 2 Fiat currency
VUV Vanuatu vatu 0 Fiat currency
WST Samoan tala 2 Fiat currency
XAF CFA franc BEAC 3 Fiat currency
XCD East Caribbean dollar 2 Fiat currency
XOF CFA franc BCEAO 2 Fiat currency
XPF CFP franc (franc Pacifique) 3 Fiat currency
XTS Codes specifically reserved for testing purposes 2 Reserved code
XXX The codes assigned for transactions where no currency is involved 2 Reserved code
YER Yemeni rial 2 Fiat currency
ZAR South African rand 2 Fiat currency
ZMW Zambian kwacha 2 Fiat currency
ZWL Zimbabwean dollar 2 Fiat currency