AxtonPay API

Document version: 0.9

Informazioni comuni

endpoint API

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

Content-type

L'API accetta richieste HTTP con 2 tipi di contenuto: 'application/x-www-form-urlencoded', 'application/json'.

L'intestazione HTTP dovrebbe adattarsi al contenuto del corpo POST.

Abbreviazioni e definizioni

  • {PID} - ID della fattura, di solito è la sequenza alfanumerica unica di 8 caratteri.
  • Shop - Il tuo sito web che accetta pagamenti tramite il servizio AxtonPay

Algoritmo di lavoro con API

Sequenza abituale di azioni per ricevere il pagamento:

  • crea una fattura ('/api/v1/private/checkout/payment/create'), la risposta dell'API restituirà l'URL della fattura ('invoice_url'),
  • inviare l'acquirente a questa fattura per effettuare il pagamento,
  • aspetta le notifiche del server AxtonPay, che arriveranno a 'server_notification_url',
  • alla ricezione di qualsiasi notifica da AxtonPay, verificare la validità della sua firma e preferibilmente inviare una conferma di ricezione a AxtonPay ('/api/v1/private/checkout/payment/confirm/{PID}'),
  • Se lo stato di una fattura viene modificato, eseguire le azioni corrispondenti a questo stato (ad esempio, richiedere informazioni complete sulla fattura, spedire la merce, creare un ticket per il team di supporto, ecc.).

Se imposti un 'server_notification_url' vuoto o non valido durante la creazione di una fattura, il servizio non è in grado di inviare notifiche sui cambiamenti di stato; in tali casi, dovresti controllare la fattura da solo a intervalli regolari ('/api/v1/private/checkout/payment/get/{PID}').

Autorizzazione delle richieste

Per autorizzare una richiesta è necessario calcolare un Hash da una stringa formata in un modo speciale. La stringa è composta concatenando (unendo insieme) gli argomenti dell'URL (QUERY_STRING) e il corpo della richiesta POST (REQUEST_BODY). È importante che tutti i componenti siano presi esattamente nella forma in cui verranno trasmessi al server. Gli argomenti dell'URL (QUERY_STRING) devono essere presi dall'URL come una singola riga, senza cambiare l'ordine degli argomenti e senza eliminare alcun elemento. Anche il corpo della richiesta POST (REQUEST_BODY) deve essere utilizzato senza alcuna modifica, inclusi il non rimuovere da esso virgolette, spazi, parentesi, interruzioni di linea.

Nei casi di un corpo della richiesta POST vuoto e nel caso di argomenti URL vuoti, quel componente sarà semplicemente una stringa vuota.

La sequenza dei dati nella richiesta di firma: QUERY_STRING prima, poi i dati POST. Non dovresti inserire alcun segno di collegamento tra di essi, semplicemente concatenare le due stringhe di testo.

Ancora una volta, ogni simbolo è significativo. Non dovresti aggiungere né rimuovere nemmeno uno spazio o un simbolo di nuova linea. Usa solo i dati grezzi ricevuti dal server.

Un hash SHA-256 con la chiave 'Secret key' viene preso dalla stringa risultante e usato come secondo argomento della funzione hash_hmac().

È obbligatorio passare il parametro 'time' contenente l'attuale POSIX timestamp (Unix time).

Questa firma è valida per 24 ore. Se il valore del parametro 'time' differisce dall'orario attuale del server di più di 24 ore (sia in avanti che indietro), la richiesta fallirà anche se la firma è calcolata senza errori.

Se il pannello del commerciante ha accettato una richiesta con una certa firma, quella firma non può essere utilizzata di nuovo, nemmeno per inviare la richiesta con gli stessi parametri (questo include il parametro 'time').

L'hash risultante viene passato nell'intestazione HTTP 'Sign'.

Oltre alla firma calcolata, la richiesta deve contenere anche un'intestazione 'Api-Key' contenente la chiave API utilizzata. Esempio:

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

Puoi firmare la richiesta inviata al AxtonPay con qualsiasi chiave valida che appartenga a questo checkout. Tuttavia, il AxtonPay utilizza sempre la chiave che hai selezionato nel pannello del merchant.

Esempio di calcolo della firma:

/* 
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'
*/

Fai attenzione agli spazi bianchi e ai ritorni a capo in un altro esempio:

/* 
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"
}' 
*/

L'esempio Python di composizione della stringa per il calcolo della firma:

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

Parametri

L'API accetta tutti i parametri sia nel QUERY_STRING che nel corpo della richiesta POST.

Variabili booleane

L'API si aspetta di ricevere '0' o '1' in variabili Booleane, ma a causa della conversione implicita di tipo, qualsiasi stringa di testo sarà trattata come un '1', anche la parola 'false'. Pertanto, per impostare esplicitamente un valore 'FALSE' per una variabile Booleana, è necessario passarle o il valore '0' o una stringa vuota.

Separatore decimale

Solo il punto decimale viene usato come separatore dei decimali nei numeri.

Maiuscole e minuscole nei parametri

Con poche eccezioni, tutti i parametri fanno distinzione tra maiuscole e minuscole.

URL di richiamata

Nel pannello di amministrazione di AxtonPay, nella pagina delle impostazioni di checkout, è possibile impostare gli URL del negozio per ricevere notifiche server-server da AxtonPay, così come gli URL per reindirizzare l'acquirente dopo il pagamento della fattura o la sua cancellazione, così come in caso di errore.

Questi URL possono essere sovrascritti nella richiesta di creazione della fattura.

Metodi di AxtonPay API

Creazione della fattura: /api/v1/private/checkout/payment/create

Il metodo /api/v1/private/checkout/payment/create avvia la creazione della fattura.

Se ha successo, il metodo restituisce un link ('invoice_url') al quale dovresti indirizzare il cliente per il pagamento.

Parametri della propria fattura:

  • time (richiesto) - POSIX timestamp (Unix time)
  • amount (richiesto) - importo da pagare (il prezzo del prodotto o del servizio che il negozio vuole ricevere)
  • currency (richiesto) - Codice valuta di 3 lettere secondo ISO 4217-alpha, insensibile alle maiuscole
  • pms (richiesto) - metodi di pagamento visualizzati sulla pagina della fattura. Se vuoi consentire tutti i metodi di pagamento, il valore è 'all'; se vuoi consentirne solo alcuni, elenca i loro identificativi numerici separati da virgola.
  • pm - identificatore del metodo di pagamento selezionato. È importante che, se viene passato il parametro 'pm', la fattura venga creata in 'modalità trasparente', cioè l'acquirente non vedrà la pagina della fattura, ma andrà direttamente al sistema di pagamento.
  • extra_data - un array associativo contenente eventuali dati aggiuntivi; questi dati vengono restituiti al negozio nella loro interezza
  • shop_user_id - identificatore utente nel negozio, viene restituito al negozio in forma invariata
  • shop_payment_id - identificatore di pagamento nel negozio, viene restituito al negozio in forma invariata
  • shop_name - nome del negozio (visualizzato sulla pagina della fattura)
  • shop_payment_desc - descrizione dell'ordine (visualizzata sulla pagina della fattura)
  • shop_payment_remark - le tue note su questo pagamento (questo è un campo per eventuali note sul pagamento, che AxtonPay non invia da nessuna parte; è visibile solo nell'elenco dei pagamenti; non viene inviato al negozio)
  • valid_time - l'intervallo di tempo in cui la fattura può essere pagata; in secondi
  • view_time - intervallo di tempo durante il quale la fattura è disponibile per la visualizzazione tramite link esterno; in secondi; il conto alla rovescia inizia dopo la fine del periodo 'valid_time'
  • server_notification_method - metodo di invio di notifiche server-server riguardanti lo stato dei pagamenti al negozio; valori validi: POST, GET

Alcune impostazioni per la fattura sono impostate nella pagina delle impostazioni del checkout. Ma i valori passati nella richiesta avranno priorità su queste impostazioni.

Parametri di checkout che possono essere sovrascritti per questa fattura:

  • customer_success_url - un link al quale l'acquirente verrà reindirizzato se la fattura viene pagata con successo (cioè se lo stato della fattura è 'paid' o 'overpaid').
  • customer_cancel_url - un link al quale l'acquirente sarà reindirizzato se il pagamento viene annullato
  • customer_fail_url - un link al quale l'acquirente verrà reindirizzato se il pagamento termina con un errore
  • server_notification_url - link per inviare notifiche server-server degli stati di pagamento al negozio

Nota: Per conformarsi alla propria politica sulla privacy, di solito non è necessario includere i dati personali del cliente nelle proprietà della fattura. Ad esempio, nel parametro "shop_user_id", è meglio specificare un ID cliente astratto piuttosto che la loro email o il numero di telefono. Anche nel parametro "shop_payment_desc", è meglio non includere affatto i dati del cliente, perché loro già conoscono tutto su se stessi; invece, si possono scrivere alcune informazioni sui beni o servizi pagati, o anche semplicemente il tipo di azione, ad esempio, "Acquisto" o "Ricarica del saldo".

Tutti i riferimenti sono necessariamente trasmessi con il protocollo.

Esempio di richiesta:

<?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);
?>

Esempio di una risposta di successo quando si richiede la creazione di una fattura:

{
    "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"
}

Ottenere informazioni sulla fattura: /api/v1/private/checkout/payment/get/{PID}

Per ottenere le informazioni di cui hai bisogno, chiama il metodo /api/v1/private/checkout/payment/get/{PID}, specificando l'PID della fattura alla fine dell'URL.

Parametri della richiesta:

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

Esempio di una riga per comporre una firma:

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

// String for signature calculation: 
time=1766837343

Esempio di una risposta:

{
    "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"
    }
}

Confronto tra importo richiesto e importo pagato

La risposta contiene diversi importi (nella valuta in cui è stata emessa la fattura):

  • "amount" - importo fatturato
  • "filled" - pagato parte della fattura,
  • "total_filled" - quanto il cliente ha pagato in totale, comprese le commissioni.

Se "filled = amount", allora è pagato esattamente quanto deve essere.

Se "filled > amount", c'è un pagamento in eccesso.

Se "filled < amount", la fattura non è stata pagata per intero (pagamento insufficiente).

Fattura: elaborazione della notifica da AxtonPay riguardo al cambiamento di stato

Ogni volta che lo stato di una fattura cambia, AxtonPay invia una notifica a server_notification_url (usando il server_notification_method)

Dati di esempio:

{
    "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 risposta a questa notifica AxtonPay si aspetta di ricevere HTTP code 200, che conferma il suo avvenuto ricevimento. Altrimenti, AxtonPay riproverà 12 volte di più a intervalli progressivamente crescenti, e poi lo stato della notifica cambia in 'error' (ma questo non influisce sullo stato della fattura stessa).

Valori di stato possibili:

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

Gli stati di pagamento riuscito sono 1 (paid) e 5 (overpaid); in caso di ricezione degli stessi puoi trasferire l'acquisto pagato al cliente o ricaricare il saldo. Per i pagamenti con stato 5 (overpaid), in caso di ricarica del saldo puoi ricaricare il saldo per l'importo effettivamente ricevuto, ma in caso di vendita di beni/servizi e di un importo significativo di pagamento in eccesso è consigliabile contattare il pagatore e decidere con lui come gestire l'eccesso di pagamento.

Lo stato parzialmente riuscito è 4 (underpaid); in caso di ricezione di questo stato è possibile ricaricare il saldo per l'importo del pagamento effettivamente ricevuto. Tuttavia, questo stato non può essere considerato riuscito per la vendita di beni/servizi.

Tutti gli altri stati - 0 (pending), 2 (error), 3 (canceled by customer) significano completa assenza di pagamento; in caso di ricezione degli stessi non devono essere eseguite azioni di ricarica del saldo o vendita di beni/servizi.

Verifica della firma

Per essere sicuri che la notifica sia inviata da AxtonPay esattamente è necessario verificare la firma della notifica ricevuta prima di fidarsi di essa. La verifica è simile alla firma delle proprie richieste, solo che viene aggiunto l'ultimo passaggio, quando si dovrebbe confrontare la firma calcolata con l'intestazione HTTP ricevuta 'Sign'.

I principali passaggi dopo aver ricevuto la notifica sullo stato di pagamento modificato sono i seguenti:

  • prendere l'intera serie di argomenti (QUERY_STRING) dalla notifica ricevuta,
  • prendi l'intero POST data (REQUEST_BODY) dalla notifica ricevuta,
  • calcola la firma usando quei QUERY_STRING + REQUEST_BODY e l''Secret key' appropriato,
  • confronta la firma calcolata con quella ricevuta nell'intestazione HTTP 'Sign',
  • se le firme sono le stesse, la notifica è davvero arrivata da AxtonPay;
  • Se le firme sono diverse, potrebbe essere un tentativo di imbrogliare da parte del pagatore.

Esempio di una riga per la generazione della firma:

// 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

Conferma che il negozio ha elaborato le informazioni di pagamento: /api/v1/private/checkout/payment/confirm/{PID}

Questa richiesta viene inviata a AxtonPay in risposta a una notifica ricevuta da esso. Funzionalmente, è una conferma che il negozio ha ricevuto e elaborato con successo la notifica ricevuta.

Per inviare una richiesta, chiama il metodo /api/v1/private/checkout/payment/confirm/{PID}, specificando il pid della fattura alla fine dell'URL.

Parametri della richiesta:

  • time (richiesto) - POSIX timestamp (Unix time)
  • status (obbligatorio, intero) - numero dello stato di pagamento per il quale il negozio invia la conferma

Se lo stato trasmesso corrisponde allo stato attuale di questa fattura nel sistema, AxtonPay risponderà con 'OK' e se non corrisponde, risponderà con un errore.

Esempio di una riga per la generazione della firma:

// 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"}

Esempio di una risposta se lo stato di pagamento attuale è lo stesso:

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

Esempio di una risposta se lo stato attuale del pagamento differisce da quello trasmesso nella richiesta:

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

Codici valuta

Le valute che possono essere utilizzate per la creazione di una fattura.

La maggior parte dei codici valuta utilizzati appartiene a valute fiat, e sono uguali a ISO 4217. Inoltre, l'elenco contiene diverse criptovalute.

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