AxtonPay API

Document version: 0.9

Uobičajene informacije

API krajnja tačka

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

Content-type

API prihvata HTTP zahtjeve sa 2 tipa sadržaja: 'application/x-www-form-urlencoded', 'application/json'.

HTTP zaglavlje bi trebalo odgovarati sadržaju POST tijela.

Skraćenice i definicije

  • {PID} - ID fakture, obično je to jedinstveni 8-znamenkasti alfanumerički niz.
  • Shop - Vaša web stranica koja prihvata plaćanja putem AxtonPay servisa

Algoritam rada sa API-jem

Uobičajeni redoslijed radnji za primanje uplate:

  • kreirajte fakturu ('/api/v1/private/checkout/payment/create'), API odgovor će vratiti URL fakture ('invoice_url'),
  • pošaljite kupca na ovaj račun kako bi izvršio uplatu,
  • čekaj AxtonPay obavještenja servera, koja će dolaziti na 'server_notification_url',
  • prihvatanjem bilo kakve obavijesti od AxtonPay, provjerite važenje njegovog potpisa i po mogućnosti pošaljite potvrdu primitka AxtonPay ('/api/v1/private/checkout/payment/confirm/{PID}'),
  • Ako se status fakture promijeni, izvršite radnje koje odgovaraju tom statusu (npr. zatražite potpune informacije o fakturi, isporučite robu, kreirajte tiket za tim za podršku itd.).

Ako postavite praznu ili nevažeću 'server_notification_url' prilikom kreiranja računa, servis neće moći slati obavještenja o promjenama statusa; u takvim slučajevima trebali biste sami provjeravati račun u nekim intervalima ('/api/v1/private/checkout/payment/get/{PID}').

Odobravanje zahtjeva

Da bi se autorizirao zahtjev, potrebno je izračunati Hash od niza koji je formiran na poseban način. Niz se sastoji od spajanja (lijepljenja zajedno) URL argumenata (QUERY_STRING) i tijela POST zahtjeva (REQUEST_BODY). Važno je da svi dijelovi budu uzeti tačno u obliku u kojem će biti poslani serveru. URL argumenti (QUERY_STRING) trebaju biti uzeti iz URL-a kao jedna linija, bez promjene redoslijeda argumenata i bez izbacivanja bilo kojeg elementa. Tijelo POST zahtjeva (REQUEST_BODY) također treba koristiti bez ikakvih izmjena, uključujući ne uklanjanje navodnika, razmaka, zagrada i prijeloma linija.

U slučajevima praznog POST tijela zahtjeva, i u slučaju praznih URL argumenata, ta komponenta će jednostavno biti prazan niz.

Redoslijed podataka u zahtjevu za potpisivanje: QUERY_STRING prvo, zatim POST podaci. Ne biste trebali umetati nikakve spojne znakove između njih, samo spojite dva tekstualna niza.

Još jednom, svaki simbol je značajan. Ne biste trebali dodavati ili uklanjati niti jedan razmak ili simbol novog reda. Koristite samo sirove podatke primljene od servera.

Haš SHA-256 sa ključem 'Secret key' se uzima iz rezultirajućeg niza i koristi kao drugi argument funkcije hash_hmac().

Obavezno je proslijediti 'time' parametar koji sadrži trenutno POSIX timestamp (Unix time).

Ovaj potpis vrijedi 24 sata. Ako vrijednost 'time' parametra odstupa od trenutnog vremena servera za više od 24 sata (bilo unaprijed ili unazad), zahtjev će biti neuspješan čak i ako je potpis izračunat bez grešaka.

Ako trgovačka ploča prihvati zahtjev sa nekim potpisom, taj potpis se ne može ponovno koristiti, čak ni za slanje zahtjeva sa istim parametrima (to uključuje parametar 'time').

Dobiveni hash se prosljeđuje u HTTP zaglavlje 'Sign'.

Pored izračunate potpise, zahtjev također mora sadržavati 'Api-Key' zaglavlje koje sadrži korišteni API ključ. Primjer:

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

Možete potpisati zahtjev poslan AxtonPay bilo kojim važećim ključem koji pripada ovom plaćanju. Međutim, AxtonPay uvijek koristi ključ koji ste odabrali u panelu trgovca.

Primjer izračuna potpisa:

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

Obratite pažnju na razmake i prekide linija u drugom primjeru:

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

Python primjer sastavljanja niza za izračunavanje potpisa:

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

Parametri

API prihvata sve parametre i u QUERY_STRING i u tijelu POST zahtjeva.

Buleove varijable

API očekuje da dobije '0' ili '1' u Boolean varijablama, ali zbog implicitne konverzije tipova, svaki tekstualni niz će biti tretiran kao '1', čak i riječ 'false'. Dakle, da biste eksplicitno postavili vrijednost 'FALSE' za Boolean varijablu, potrebno je da joj proslijedite ili vrijednost '0' ili prazan niz.

Decimalni separator

Samo se decimalna tačka koristi kao decimalni separator u brojevima.

Veliko i malo slovo u parametrima

Sa nekoliko izuzetaka, svi parametri razlikuju velika i mala slova.

URL za povratni poziv

U administrativnom panelu AxtonPay, na stranici postavki plaćanja, moguće je postaviti URL adrese prodavnice za primanje obavijesti server-server od AxtonPay, kao i URL adrese za preusmjeravanje kupca nakon plaćanja fakture ili njenog otkazivanja, kao i u slučaju greške.

Ovi URL-ovi se mogu prebrisati u zahtjevu za kreiranje fakture.

Metode AxtonPay API-ja

Kreiranje računa: /api/v1/private/checkout/payment/create

Metoda /api/v1/private/checkout/payment/create pokreće kreiranje fakture.

Ako je uspješna, metoda vraća link ('invoice_url') na koji biste trebali uputiti kupca radi plaćanja.

Parametri vlastite fakture:

  • time (obavezno) - POSIX timestamp (Unix time)
  • amount (obavezno) - iznos za plaćanje (cijena proizvoda ili usluge koju trgovina želi primiti)
  • currency (obavezno) - Troslovni kod valute prema ISO 4217-alpha, nije osjetljivo na velika i mala slova
  • pms (obavezno) - načini plaćanja prikazani na stranici fakture. Ako želite omogućiti sve načine plaćanja, vrijednost je 'all'; ako želite omogućiti samo neke od njih, navedite njihove brojevne identifikatore odvojene zarezom.
  • pm - identifikator odabrane metode plaćanja. Važno je da ako se proslijedi 'pm' parametar, faktura će biti kreirana u 'transparentnom modu', tj. kupac neće vidjeti stranicu fakture, već će ići direktno na sistem plaćanja.
  • extra_data - asocijativni niz koji sadrži sve dodatne podatke; ovi podaci se u cijelosti vraćaju prodavnici
  • shop_user_id - identifikator korisnika u prodavnici, vraća se u prodavnicu u nepromijenjenom obliku
  • shop_payment_id - identifikator plaćanja u prodavnici, vraća se u prodavnicu u neizmijenjenom obliku
  • shop_name - ime prodavnice (prikazano na stranici računa)
  • shop_payment_desc - opis narudžbe (prikazan na stranici fakture)
  • shop_payment_remark - vaše bilješke o ovoj uplati (ovo je polje za bilo kakve bilješke koje imate o uplati, koje AxtonPay nigdje ne prosljeđuje; vidljivo je samo u listi uplata; ne vraća se u prodavnicu)
  • valid_time - vremenski interval u kojem faktura može biti plaćena; u sekundama
  • view_time - vremenski interval tokom kojeg je faktura dostupna za pregled putem vanjskog linka; u sekundama; odbrojavanje počinje nakon što 'valid_time' period završi
  • server_notification_method - metoda slanja obavještenja sa servera na server o statusima plaćanja u prodavnici; važeće vrijednosti: POST, GET

Neka podešavanja za fakturu su postavljena na stranici za podešavanja naplate. Ali vrijednosti poslane u zahtjevu će imati prednost nad tim podešavanjima.

Parametri naplate koji se mogu prepisati za ovu fakturu:

  • customer_success_url - link na koji će kupac biti preusmjeren ako je račun uspješno plaćen (tj. ako je status računa 'paid' ili 'overpaid').
  • customer_cancel_url - link na koji će kupac biti preusmjeren ako plaćanje bude otkazano
  • customer_fail_url - link na koji će kupac biti preusmjeren ako plaćanje završi greškom
  • server_notification_url - link za slanje server-server obavijesti o statusima plaćanja u prodavnicu

Napomena: Kako biste se uskladili sa sopstvenom politikom privatnosti, obično nije potrebno uključivati lične podatke vašeg kupca u svojstva fakture. Na primjer, u "shop_user_id" parametru je bolje navesti apstraktni ID kupca umjesto njihove e-mail adrese ili broja telefona. Također, u "shop_payment_desc" je bolje da uopšte ne uključujete podatke o kupcu, jer oni već sve znaju o sebi; umjesto toga, možete napisati neke informacije o plaćenoj robi ili uslugama, ili čak samo napisati vrstu radnje, na primjer, "Kupovina" ili "Dopuna stanja".

Sve reference se nužno prenose putem protokola.

Primjer zahtjeva:

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

Primjer uspješnog odgovora prilikom zahtjeva za izradu fakture:

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

Dobijanje informacija o fakturi: /api/v1/private/checkout/payment/get/{PID}

Da biste dobili informacije koje trebate, pozovite metodu /api/v1/private/checkout/payment/get/{PID}, tako što ćete na kraju URL-a navesti PID fakture.

Parametri upita:

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

Primjer linije za sastavljanje potpisa:

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

// String for signature calculation: 
time=1766837343

Primjer odgovora:

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

Upoređivanje traženog iznosa i isplaćenog iznosa

Odgovor sadrži nekoliko različitih iznosa (u valuti u kojoj je faktura izdata):

  • "amount" - iznos na fakturi,
  • "filled" - plaćeni dio računa,
  • "total_filled" - koliko je klijent ukupno platio, uključujući provizije.

Ako "filled = amount", onda je plaćeno tačno koliko treba.

Ako "filled > amount", postoji preplata.

Ako "filled < amount", faktura nije u potpunosti plaćena (manje plaćanje).

Faktura: obrada obavještenja od AxtonPay o promjeni statusa

Svaki put kada se promijeni status fakture, AxtonPay šalje obavijest server_notification_url (koristeći server_notification_method)

Primjer podataka:

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

Kao odgovor na ovu obavijest AxtonPay očekuje primanje HTTP code 200, što potvrđuje njen uspješan prijem. U suprotnom, AxtonPay će pokušati još 12 puta u progresivno rastućim intervalima, a potom se status obavijesti mijenja u 'error' (ali to ne utiče na status same fakture).

Moguće vrijednosti statusa:

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

Statusi uspješnih plaćanja su 1 (paid) i 5 (overpaid); u slučaju njihovog prijema možete prenijeti plaćenu kupovinu na kupca ili dopuniti saldo. Za plaćanja sa statusom 5 (overpaid), u slučaju dopune salda možete dopuniti saldo iznosom stvarno primljenog plaćanja, ali u slučaju prodaje robe/usluga i značajnog iznosa preplate, preporučuje se kontaktirati platioca i dogovoriti s njim kako postupiti s preplatom.

Status djelomično uspješan je 4 (underpaid); u slučaju primanja ovog statusa moguće je nadopuniti stanje za iznos stvarno primljene uplate. Međutim, ovaj status se ne može smatrati uspješnim za prodaju roba/usluga.

Svi ostali statusi - 0 (pending), 2 (error), 3 (canceled by customer) označavaju potpunu odsutnost plaćanja; u slučaju njihovog prijema ne smiju se vršiti nikakve radnje na dopuni stanja ili prodaji robe/usluga.

Provjera potpisa

Da biste bili sigurni da je obavještenje poslano od strane AxtonPay-a, potrebno je provjeriti potpis primljenog obavještenja prije nego mu vjerujete. Verifikacija je slična potpisivanju vlastitih zahtjeva, samo se dodaje posljednji korak, kada trebate uporediti izračunati potpis sa primljenim HTTP header-om 'Sign'.

Glavni koraci nakon prijema obavještenja o promijenjenom statusu plaćanja su sljedeći:

  • uzmite cijeli niz argumenata (QUERY_STRING) iz primljene obavijesti,
  • uzmi cijeli POST data (REQUEST_BODY) iz primljene obavijesti,
  • izračunaj potpis koristeći te QUERY_STRING + REQUEST_BODY i odgovarajući 'Secret key',
  • uporedi izračunati potpis sa onim koji je primljen u HTTP zaglavlju 'Sign',
  • ako su potpisi isti, obavještenje je zaista stiglo od AxtonPay;
  • Ako su potpisi različiti, to može biti pokušaj prevare od strane platitelja.

Primjer linije za generisanje potpisa:

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

Potvrda da je prodavnica obradila informacije o plaćanju: /api/v1/private/checkout/payment/confirm/{PID}

Ovaj zahtjev se šalje AxtonPay kao odgovor na obavijest primljenu od njega. Funkcionalno, to je potvrda da je prodavnica uspješno primila i obradila primljenu obavijest.

Da biste poslali zahtjev, pozovite metodu /api/v1/private/checkout/payment/confirm/{PID}, tako što ćete na kraju URL-a navesti pid fakture.

Parametri zahtjeva:

  • time (obavezno) - POSIX timestamp (Unix time)
  • status (obavezno, cijeli broj) - broj statusa plaćanja za koji trgovina šalje potvrdu

Ako preneseni status odgovara trenutnom statusu ove fakture u sistemu, AxtonPay će odgovoriti sa 'OK', a ako ne odgovara, odgovorit će sa greškom.

Primjer linije za generisanje potpisa:

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

Primjer odgovora ako je trenutni status plaćanja isti:

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

Primjer odgovora ako trenutni status plaćanja razlikuje od onog prenesenog u zahtjevu:

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

Valutni kodovi

Valute koje se mogu koristiti za izradu fakture.

Većina korištenih valutnih kodova pripada fiat valutama, i oni su jednaki ISO 4217. Također, lista sadrži nekoliko kriptovaluta.

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