AxtonPay API

Document version: 0.9

Almindelig information

API-endpoint

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

Content-type

API accepterer HTTP-anmodninger med 2 indholdstyper: 'application/x-www-form-urlencoded', 'application/json'.

HTTP overskriften skal passe til indholdet af POST kroppen.

Forkortelser og definitioner

  • {PID} - ID på fakturaen, det er normalt den unikke 8-cifrede alfanumeriske sekvens.
  • Shop - Din hjemmeside, der accepterer betalinger gennem AxtonPay-tjenesten

Algoritme for arbejde med API

Sædvanlig rækkefølge af handlinger for at modtage betaling:

  • opret en faktura ('/api/v1/private/checkout/payment/create'), API-svaret vil returnere fakturaens URL ('invoice_url'),
  • send køberen til denne faktura for at foretage betaling,
  • vent på AxtonPay servernotifikationer, som vil komme til 'server_notification_url',
  • ved modtagelse af enhver meddelelse fra AxtonPay, skal du tjekke gyldigheden af dens underskrift og helst sende en kvittering for modtagelsen til AxtonPay ('/api/v1/private/checkout/payment/confirm/{PID}'),
  • hvis status for en faktura ændres, udfør handlinger svarende til denne status (f.eks. anmod om fuld information om fakturaen, send varerne, opret en ticket til supportteamet osv.).

Hvis du angiver en tom eller ugyldig 'server_notification_url', når du opretter en faktura, kan tjenesten ikke sende notifikationer om statusændringer; i sådanne tilfælde bør du selv tjekke fakturaen med jævne mellemrum ('/api/v1/private/checkout/payment/get/{PID}').

Godkendelse af forespørgsler

For at godkende en forespørgsel er det nødvendigt at beregne en hash fra en streng dannet på en speciel måde. Strengen dannes ved at sammenkæde (lime sammen) URL-argumenterne (QUERY_STRING) og kroppen af POST-forespørgslen (REQUEST_BODY). Det er vigtigt, at alle komponenter tages nøjagtigt i den form, de vil blive sendt til serveren. URL-argumenterne (QUERY_STRING) skal tages fra URL'en som en enkelt linje, uden at ændre rækkefølgen af argumenterne og uden at udelade nogen elementer. POST-forespørgslens krop (REQUEST_BODY) skal også bruges uden nogen ændringer, inklusive ikke at fjerne citater, mellemrum, parenteser eller linjeskift.

I tilfælde af en tom POST anmodningskrop, og i tilfælde af tomme URL-argumenter, vil den komponent blot være en tom streng.

Sekvensen af data i underskriftsanmodningen: QUERY_STRING først, derefter POST data. Du bør ikke indsætte nogen forbindelsestegn mellem dem, blot sammenkæde de to tekststrenge.

Endnu en gang er hvert symbol vigtigt. Du bør ikke tilføje eller fjerne selv et mellemrum eller et linjeskift. Brug blot de rå data modtaget af serveren.

En SHA-256 hash med nøglen 'Secret key' tages fra den resulterende streng og bruges som det andet argument i funktionen hash_hmac().

Det er obligatorisk at afgive 'time'-parameteren, der indeholder den aktuelle POSIX timestamp (Unix time).

Denne signatur er gyldig i 24 timer. Hvis værdien af 'time'-parameteren afviger fra den nuværende servertid med mere end 24 timer (uanset om det er fremad eller bagud), vil anmodningen mislykkes, selvom signaturen er beregnet uden fejl.

Hvis handelsmandspanelet har accepteret en anmodning med en underskrift, kan den underskrift ikke bruges igen, selv ikke til at sende anmodningen med de samme parametre (dette inkluderer parameter 'time').

Den resulterende hash sendes i HTTP headeren 'Sign'.

Ud over den beregnede signatur skal forespørgslen også indeholde en 'Api-Key' header med den anvendte API-nøgle. Eksempel:

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

Du kan underskrive anmodningen, der blev sendt til AxtonPay, med enhver gyldig nøgle, der tilhører denne kasse. Dog bruger AxtonPay altid den nøgle, som du har valgt i handelspanelet.

Eksempel på beregning af signatur:

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

Vær opmærksom på mellemrum og linjeskift i et andet eksempel:

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

Det Python eksempel på at sammensætte strengen til signaturberegning:

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

Parametre

API'en accepterer alle parametre både i QUERY_STRING og i kroppen af POST-anmodningen.

Booleske variabler

API'en forventer at få '0' eller '1' i Booleske variabler, men på grund af implicit typekonvertering vil enhver tekststreng blive behandlet som en '1', selv ordet 'false'. Derfor, for eksplicit at sætte en 'FALSE'-værdi for en Boolesk variabel, skal du give den enten værdien '0' eller en tom streng.

Decimaltegn

Kun decimalpunktet bruges som decimalseparator i tal.

Tegn i parametre

Med få undtagelser er alle parametre store-/småbogstavsfølsomme.

Tilbagekaldelses-URL

I administrationspanelet for AxtonPay, på siden med betalingsindstillinger, er det muligt at indstille butik-URL'er til at modtage server-til-server-notifikationer fra AxtonPay, samt URL'er til omdirigering af køberen efter fakturabetaling eller dens annullering, samt i tilfælde af en fejl.

Disse URL'er kan overskrives i fakturaoprettelsesanmodningen.

Metoder af AxtonPay API

Fakturering: /api/v1/private/checkout/payment/create

Metode /api/v1/private/checkout/payment/create igangsætter oprettelsen af fakturaen.

Hvis metoden lykkes, returnerer den et link ('invoice_url'), som du skal sende kunden til for betaling.

Egne fakturaparametre:

  • time (påkrævet) - POSIX timestamp (Unix time)
  • amount (påkrævet) - beløb der skal betales (prisen på produktet eller tjenesten, som butikken ønsker at modtage)
  • currency (påkrævet) - 3-bogstavs valutakode ifølge ISO 4217-alpha, ikke-følsom over for store og små bogstaver
  • pms (påkrævet) - betalingsmetoder vist på fakturasiden. Hvis du vil tillade alle betalingsmetoder, er værdien 'all'; hvis du kun vil tillade nogle af dem, skal du liste deres kommaseparerede numeriske identifikatorer.
  • pm - identifikator for den valgte betalingsmetode. Det er vigtigt, at hvis 'pm'-parameteren sendes, vil fakturaen blive oprettet i 'transparent tilstand', dvs. køberen vil ikke se fakturasiden, men vil gå direkte til betalingssystemet.
  • extra_data - en associativ array, der indeholder yderligere data; disse data returneres til butikken i deres helhed
  • shop_user_id - brugeridentifikator i butikken, den returneres til butikken i uændret form
  • shop_payment_id - betalingsidentifikator i butikken, den returneres til butikken i uændret form
  • shop_name - butiksnavn (vist på fakturasiden)
  • shop_payment_desc - ordrebekrivelse (vist på fakturasiden)
  • shop_payment_remark - dine noter om denne betaling (dette er et felt til eventuelle noter, du har om betalingen, som AxtonPay ikke videregiver nogen steder; det er kun synligt i listen over betalinger; det går ikke tilbage til butikken)
  • valid_time - tidsintervallet, hvori fakturaen kan betales; i sekunder
  • view_time - tidsinterval, hvor fakturaen er tilgængelig for visning via ekstern link; i sekunder; nedtælling starter efter 'valid_time' perioden slutter
  • server_notification_method - metode til at sende server-server notifikationer om betalingsstatus til butikken; gyldige værdier: POST, GET

Nogle indstillinger for fakturaen er indstillet på kassesideindstillingerne. Men de værdier, der sendes i forespørgslen, vil have forrang over disse indstillinger.

Checkout-parametre, der kan overskrives for denne faktura:

  • customer_success_url - et link, som køberen vil blive omdirigeret til, hvis fakturaen er betalt succesfuldt (dvs. hvis fakturaens status er 'paid' eller 'overpaid').
  • customer_cancel_url - et link, som køberen vil blive omdirigeret til, hvis betalingen annulleres
  • customer_fail_url - et link, som køberen vil blive omdirigeret til, hvis betalingen ender i en fejl
  • server_notification_url - link til at sende server-server notifikationer om betalingsstatusser til butikken

Bemærk: For at overholde din egen privatlivspolitik er det normalt ikke nødvendigt at inkludere dine kunders personlige oplysninger i fakturaegenskaberne. For eksempel er det i "shop_user_id"-parameteren bedre at angive et abstrakt kunde-ID i stedet for deres e-mail eller telefonnummer. Også i "shop_payment_desc" er det bedre slet ikke at inkludere kundedata, da de allerede kender alt om sig selv; i stedet kan du skrive nogle oplysninger om de betalte varer eller tjenester, eller endda bare skrive typen af handling, for eksempel "Køb" eller "Saldoopfyldning".

Alle referencer overføres nødvendigvis med protokollen.

Eksempel på anmodning:

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

Eksempel på et vellykket svar ved anmodning om oprettelse af en faktura:

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

Hentning af fakturainformation: /api/v1/private/checkout/payment/get/{PID}

For at få de oplysninger, du har brug for, skal du kalde metoden /api/v1/private/checkout/payment/get/{PID} ved at angive fakturaens PID i slutningen af URL'en.

Forespørgselsparametre:

  • time (påkrævet) - POSIX timestamp (Unix time)

Eksempel på en linje til at komponere en signatur:

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

// String for signature calculation: 
time=1766837343

Eksempel på et svar:

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

Sammenligning af anmodet beløb og udbetalt beløb

Svaret indeholder flere forskellige beløb (i den valuta, som fakturaen blev udstedt i):

  • "amount" - faktureret beløb,
  • "filled" - betalte en del af fakturaen,
  • "total_filled" - hvor meget klienten betalte i alt, inklusive provisioner.

Hvis "filled = amount", så betales det præcis så meget, som det skal.

Hvis "filled > amount", er der en overbetaling.

Hvis "filled < amount", har fakturaen ikke været betalt fuldt ud (underbetaling).

Faktura: behandling af meddelelse fra AxtonPay om statusændring

Hver gang status for en faktura ændres, sender AxtonPay en notifikation til server_notification_url (ved hjælp af server_notification_method)

Eksempeldata:

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

Som svar på denne meddelelse forventer AxtonPay at modtage HTTP code 200, som bekræfter dens vellykkede modtagelse. Ellers vil AxtonPay prøve igen 12 gange mere med gradvist stigende intervaller, og derefter ændres meddelelsens status til 'error' (men dette påvirker ikke fakturaens status i sig selv).

Mulige statusværdier:

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

Succesfulde betalingsstatusser er 1 (paid) og 5 (overpaid); i tilfælde af modtagelsen heraf kan du overføre det betalte køb til kunden eller påfylde saldoen. For betalinger med status 5 (overpaid), i tilfælde af saldoopfyldning kan du påfylde saldoen med det faktisk modtagne betalingsbeløb, men i tilfælde af salg af varer/tjenester og et væsentligt beløb af overbetaling anbefales det at kontakte betaleren og aftale med ham, hvordan man håndterer overbetalingen.

Delvist succesfuld status er 4 (underpaid); i tilfælde af at modtage denne status er det muligt at genoplade saldoen med det faktisk modtagne beløb. Denne status kan dog ikke betragtes som succesfuld for salg af varer/tjenester.

Alle andre statusser - 0 (pending), 2 (error), 3 (canceled by customer) betyder fuldstændig manglende betaling; i tilfælde af deres modtagelse bør der ikke udføres handlinger vedrørende saldoopfyldelse eller salg af varer/tjenester.

Signaturkontrol

For at være sikker på, at notifikationen sendes af AxtonPay nøjagtigt, er det nødvendigt at verificere signaturen af den modtagne notifikation, før man stoler på den. Verifikationen ligner at signere dine egne forespørgsler, kun det sidste trin er tilføjet, hvor du skal sammenligne den beregnede signatur med den modtagne HTTP-header 'Sign'.

De vigtigste trin efter modtagelse af meddelelse om den ændrede betalingsstatus er følgende:

  • tag hele rækken af argumenter (QUERY_STRING) fra den modtagne meddelelse,
  • tag hele POST data (REQUEST_BODY) fra den modtagne meddelelse,
  • beregn signaturen ved hjælp af disse QUERY_STRING + REQUEST_BODY og den passende 'Secret key',
  • sammenlign den beregnede signatur med den, der modtages i HTTP-headeren 'Sign',
  • hvis underskrifterne er de samme, kom meddelelsen virkelig fra AxtonPay;
  • Hvis underskrifterne er forskellige, kan det være et forsøg på at snyde fra betalerens side.

Eksempel på en linje til signaturgenerering:

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

Bekræftelse på, at butikken har behandlet betalingsinformationen: /api/v1/private/checkout/payment/confirm/{PID}

Denne anmodning sendes til AxtonPay som svar på en meddelelse modtaget fra den. Funktionelt set er det en bekræftelse på, at butikken har modtaget og behandlet den modtagne meddelelse korrekt.

For at sende en anmodning skal du kalde metoden /api/v1/private/checkout/payment/confirm/{PID} ved at angive fakturaens pid i slutningen af URL’en.

Forespørgselsparametre:

  • time (påkrævet) - POSIX timestamp (Unix time)
  • status (påkrævet, heltal) - betalingsstatusnummer, som butikken sender bekræftelse for

Hvis den overførte status matcher den aktuelle status for denne faktura i systemet, vil AxtonPay svare med 'OK', og hvis den ikke matcher, vil det svare med en fejl.

Eksempel på en linje til signaturgenerering:

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

Eksempel på et svar, hvis den nuværende betalingsstatus er den samme:

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

Eksempel på et svar, hvis den aktuelle betalingsstatus adskiller sig fra den, der blev sendt i anmodningen:

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

Valutakoder

De valutaer, der kan bruges til oprettelse af en faktura.

De fleste af de anvendte valutakoder tilhører fiat-valutaer, og de er lig med ISO 4217. Listen indeholder også flere kryptovalutaer.

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