Document version: 0.9
Informacje ogólne
punkt końcowy API
https://mp.axtonpay.com/api/v1/private/checkout
Content-type
API akceptuje HTTP żądania z 2 typami treści: 'application/x-www-form-urlencoded', 'application/json'.
Nagłówek HTTP powinien pasować do zawartości POST ciała.
Skróty i definicje
- {PID} - Identyfikator faktury, zazwyczaj jest to unikalny 8-znakowy ciąg alfanumeryczny.
- Shop - Twoja strona internetowa, która akceptuje płatności przez usługę AxtonPay
Algorytm pracy z API
Zwykła kolejność działań w celu otrzymania płatności:
- utwórz fakturę ('/api/v1/private/checkout/payment/create'), odpowiedź API zwróci adres URL faktury ('invoice_url'),
- prześlij nabywcy tę fakturę w celu dokonania płatności,
- czekaj na powiadomienia serwera AxtonPay, które będą przychodzić do 'server_notification_url',
- po otrzymaniu jakiejkolwiek powiadomienia od AxtonPay, sprawdź ważność jego podpisu i najlepiej wyślij potwierdzenie odbioru do AxtonPay ('/api/v1/private/checkout/payment/confirm/{PID}'),
- jeżeli status faktury zostanie zmieniony, wykonaj działania odpowiadające temu statusowi (np. poproś o pełne informacje dotyczące faktury, wyślij towar, utwórz zgłoszenie do zespołu wsparcia itp.).
Jeśli ustawisz pusty lub nieprawidłowy 'server_notification_url' podczas tworzenia faktury, usługa nie będzie mogła wysyłać powiadomień o zmianach statusu; w takich przypadkach powinieneś samodzielnie sprawdzać fakturę w pewnych odstępach czasu ('/api/v1/private/checkout/payment/get/{PID}').
Autoryzacja żądań
Aby autoryzować żądanie, konieczne jest obliczenie skrótu (Hash) z ciągu utworzonego w specjalny sposób. Ciąg ten jest tworzony przez łączenie (sklejanie) argumentów URL (QUERY_STRING) i treści żądania POST (REQUEST_BODY). Ważne jest, aby wszystkie składniki były użyte dokładnie w takiej formie, w jakiej będą przesyłane do serwera. Argumenty URL (QUERY_STRING) powinny być pobierane z URL w jednej linii, bez zmiany kolejności argumentów i bez pomijania jakichkolwiek elementów. Treść żądania POST (REQUEST_BODY) również powinna być użyta bez żadnych modyfikacji, w tym nie należy usuwać z niej cudzysłowów, spacji, nawiasów ani znaków końca linii.
W przypadku pustego ciała żądania POST oraz w przypadku pustych argumentów URL, ten komponent będzie po prostu pustym ciągiem znaków.
Kolejność danych w żądaniu podpisu: QUERY_STRING najpierw, potem POST dane. Nie należy wstawiać między nimi żadnych znaków łączących, tylko połączyć dwa ciągi tekstowe.
Jeszcze raz, każdy symbol jest znaczący. Nie powinieneś dodawać ani usuwać nawet spacji czy symbolu nowej linii. Używaj tylko surowych danych otrzymanych przez serwer.
Z wyniku ciągu znaków pobierany jest SHA-256 skrót z kluczem 'Secret key' i używany jako drugi argument funkcji hash_hmac().
Przekazanie parametru 'time' zawierającego bieżący POSIX timestamp (Unix time) jest obowiązkowe.
Ten podpis jest ważny przez 24 godziny. Jeśli wartość parametru 'time' różni się od bieżącego czasu serwera o więcej niż 24 godziny (czy to do przodu, czy do tyłu), żądanie zakończy się niepowodzeniem, nawet jeśli podpis został obliczony bez błędów.
Jeśli panel handlowca zaakceptuje żądanie z jakimś podpisem, ten podpis nie może być użyty ponownie, nawet do wysłania żądania z tymi samymi parametrami (obejmuje to parametr 'time').
Powstały hash jest przekazywany w nagłówku HTTP 'Sign'.
Oprócz obliczonego podpisu, żądanie musi również zawierać nagłówek 'Api-Key' zawierający użyty klucz API. Przykład:
$headers = [
'Api-Key: ' . $the_api_key,
'Sign: ' . $signature_sha256
];
Możesz podpisać żądanie wysłane do AxtonPay dowolnym ważnym kluczem należącym do tego zamówienia. Jednak AxtonPay zawsze użyje klucza, który wybrałeś w panelu sprzedawcy.
Przykład obliczania podpisu:
/* 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¤cy=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¤cy=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¤cy=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¤cy=USD' */
Zwróć uwagę na białe znaki i podziały wierszy w innym przykładzie:
/*
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 przykład składania ciągu do obliczania podpisu:
string_for_hash_calculation = f'{request.query_params.urlencode()}{request.data.urlencode()}'
Parametry
API akceptuje wszystkie parametry zarówno w QUERY_STRING, jak i w ciele żądania POST.
Zmienne logiczne
API oczekuje otrzymania '0' lub '1' w zmiennych logicznych, ale z powodu niejawnej konwersji typów, każdy ciąg tekstowy będzie traktowany jako '1', nawet słowo 'false'. Dlatego, aby jawnie ustawić wartość 'FALSE' dla zmiennej logicznej, należy przekazać jej albo wartość '0', albo pusty ciąg.
Separator dziesiętny
Tylko kropka dziesiętna jest używana jako separator dziesiętny w liczbach.
Wielkość liter w parametrach
Z nielicznymi wyjątkami, wszystkie parametry rozróżniają wielkość liter.
Adres URL wywołania zwrotnego
W panelu administracyjnym AxtonPay, na stronie ustawień kasy, możliwe jest ustawienie adresów URL sklepu do odbierania powiadomień serwer-serwer od AxtonPay, a także adresów URL do przekierowania kupującego po opłaceniu faktury lub jej anulowaniu, a także w przypadku błędu.
Te adresy URL mogą zostać zastąpione w żądaniu tworzenia faktury.
Metody AxtonPay API
Tworzenie faktury: /api/v1/private/checkout/payment/create
Metoda /api/v1/private/checkout/payment/create inicjuje tworzenie faktury.
Jeśli operacja zakończy się powodzeniem, metoda zwraca link ('invoice_url'), na który należy odesłać klienta w celu dokonania płatności.
Własne parametry faktury:
- time (wymagane) - POSIX timestamp (Unix time)
- amount (wymagane) - kwota do zapłaty (cena produktu lub usługi, którą sklep chce otrzymać)
- currency (wymagane) - Trzyliterowy kod waluty zgodnie z ISO 4217-alpha, bez rozróżniania wielkości liter
- pms (wymagane) - metody płatności wyświetlane na stronie faktury. Jeśli chcesz zezwolić na wszystkie metody płatności, wartość to 'all'; jeśli chcesz zezwolić tylko na niektóre z nich, wymień ich oddzielone przecinkami numeryczne identyfikatory.
- pm - identyfikator wybranej metody płatności. Ważne jest, że jeśli zostanie przekazany parametr 'pm', faktura zostanie utworzona w 'trybie przejrzystym', tj. kupujący nie zobaczy strony faktury, lecz przejdzie od razu do systemu płatności.
- extra_data - tablica asocjacyjna zawierająca wszelkie dodatkowe dane; te dane są zwracane do magazynu w całości
- shop_user_id - identyfikator użytkownika w sklepie, jest zwracany do sklepu w niezmienionej formie
- shop_payment_id - identyfikator płatności w sklepie, jest zwracany do sklepu w niezmienionej formie
- shop_name - nazwa sklepu (wyświetlana na stronie faktury)
- shop_payment_desc - opis zamówienia (wyświetlany na stronie faktury)
- shop_payment_remark - twoje notatki dotyczące tej płatności (to pole na wszelkie notatki dotyczące płatności, które AxtonPay nigdzie nie przekazuje; jest widoczne tylko na liście płatności; nie trafia z powrotem do sklepu)
- valid_time - przedział czasowy, w którym faktura może zostać opłacona; w sekundach
- view_time - okres czasu, w którym faktura jest dostępna do przeglądania za pomocą zewnętrznego linku; w sekundach; odliczanie rozpoczyna się po zakończeniu okresu 'valid_time'
- server_notification_method - metoda wysyłania powiadomień serwer-serwer o statusach płatności do sklepu; ważne wartości: POST, GET
Niektóre ustawienia faktury są ustawione na stronie ustawień kasy. Jednak wartości przekazane w żądaniu będą miały pierwszeństwo przed tymi ustawieniami.
Parametry realizacji zamówienia, które można nadpisać dla tej faktury:
- customer_success_url - link, na który kupujący zostanie przekierowany, jeśli faktura zostanie pomyślnie opłacona (tj. jeśli status faktury to 'paid' lub 'overpaid').
- customer_cancel_url - link, na który kupujący zostanie przekierowany, jeśli płatność zostanie anulowana
- customer_fail_url - link, na który kupujący zostanie przekierowany, jeśli płatność zakończy się błędem
- server_notification_url - link do wysyłania powiadomień serwer-serwer o statusach płatności do sklepu
Uwaga: Aby przestrzegać własnej polityki prywatności, zazwyczaj nie jest konieczne umieszczanie danych osobowych klienta w właściwościach faktury. Na przykład w parametrze "shop_user_id" lepiej jest określić abstrakcyjne ID klienta zamiast jego adresu e-mail lub numeru telefonu. Również w "shop_payment_desc" lepiej w ogóle nie umieszczać danych klienta, ponieważ oni już wszystko o sobie wiedzą; zamiast tego można napisać jakieś informacje o opłaconych towarach lub usługach, albo nawet po prostu wskazać rodzaj działania, na przykład „Zakup” lub „Doładowanie salda”.
Wszystkie odniesienia są niezbędnie przesyłane wraz z protokołem.
Przykład prośby:
<?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);
?>
Przykład udanej odpowiedzi przy żądaniu wystawienia faktury:
{
"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"
}
Uzyskiwanie informacji o fakturze: /api/v1/private/checkout/payment/get/{PID}
Aby uzyskać potrzebne informacje, należy wywołać metodę /api/v1/private/checkout/payment/get/{PID}, podając PID faktury na końcu adresu URL.
Parametry zapytania:
- time (wymagane) - POSIX timestamp (Unix time)
Przykład linijki do tworzenia podpisu:
// Full URL: https://mp.axtonpay.com/api/v1/private/checkout/payment/get/GIKR3XPY?time=1766837343 // String for signature calculation: time=1766837343
Przykład odpowiedzi:
{
"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"
}
}
Porównanie żądanej kwoty i wpłaconej kwoty
Odpowiedź zawiera kilka różnych kwot (w walucie, w której wystawiono fakturę):
- "amount" - kwota faktury
- "filled" - zapłacił część faktury,
- "total_filled" - ile klient zapłacił łącznie, wliczając prowizje.
Jeśli "filled = amount", to jest zapłacone dokładnie tyle, ile trzeba.
Jeżeli "filled > amount", występuje nadpłata.
Jeśli "filled < amount", faktura nie została opłacona w całości (niedopłata).
Faktura: przetwarzanie powiadomienia od AxtonPay o zmianie statusu
Za każdym razem, gdy status faktury zostanie zmieniony, AxtonPay wysyła powiadomienie do server_notification_url (korzystając z server_notification_method)
Przykładowe dane:
{
"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"
}
W odpowiedzi na to powiadomienie AxtonPay oczekuje na otrzymanie HTTP code 200, co potwierdza jego pomyślne odebranie. W przeciwnym razie AxtonPay podejmie 12 kolejnych prób w coraz dłuższych odstępach czasu, a następnie status powiadomienia zmieni się na 'error' (jednak nie wpływa to na status samej faktury).
Możliwe wartości statusu:
- 0 - pending
- 1 - paid
- 2 - error
- 3 - cancelled by customer
- 4 - underpaid
- 5 - overpaid
- 8 - expired
Statusy udanych płatności to 1 (paid) i 5 (overpaid); w przypadku ich otrzymania możesz przelać opłaconą zakupioną rzecz klientowi lub zasilić saldo. W przypadku płatności ze statusem 5 (overpaid), w przypadku zasilenia salda możesz zasilić saldo kwotą faktycznie otrzymanej płatności, ale w przypadku sprzedaży towarów/usług i znacznej nadpłaty zaleca się skontaktowanie się z płatnikiem i ustalenie z nim, jak postąpić z nadpłatą.
Status częściowo udany to 4 (underpaid); w przypadku otrzymania tego statusu możliwe jest doładowanie salda kwotą faktycznie otrzymanej płatności. Jednakże ten status nie może być uznany za pomyślny przy sprzedaży towarów/usług.
Wszystkie inne statusy - 0 (pending), 2 (error), 3 (canceled by customer) oznaczają całkowity brak płatności; w przypadku ich otrzymania nie należy podejmować działań w zakresie uzupełniania salda ani sprzedaży towarów/usług.
Sprawdzanie podpisu
Aby mieć pewność, że powiadomienie zostało wysłane dokładnie przez AxtonPay, konieczne jest zweryfikowanie podpisu otrzymanego powiadomienia przed jego zaufaniem. Weryfikacja jest podobna do podpisywania własnych żądań, tylko dodany jest ostatni krok, w którym należy porównać obliczony podpis z otrzymanym nagłówkiem HTTP 'Sign'.
Główne kroki po otrzymaniu powiadomienia o zmienionym statusie płatności są następujące:
- wez cały ciąg argumentów (QUERY_STRING) z otrzymanego powiadomienia,
- weź cały POST data (REQUEST_BODY) z otrzymanego powiadomienia,
- oblicz podpis używając tych QUERY_STRING + REQUEST_BODY i odpowiedniego 'Secret key',
- porównaj obliczony podpis z tym, który został otrzymany w nagłówku HTTP 'Sign',
- jeśli podpisy są takie same, powiadomienie naprawdę pochodziło od AxtonPay;
- Jeśli podpisy są różne, może to być próba oszustwa ze strony płatnika.
Przykład linii do generowania podpisu:
// 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¤cy=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¤cy=RDD&test=0
Potwierdzenie, że sklep przetworzył informacje o płatności: /api/v1/private/checkout/payment/confirm/{PID}
To żądanie jest wysyłane do AxtonPay w odpowiedzi na powiadomienie otrzymane od niego. Funkcjonalnie jest to potwierdzenie, że sklep pomyślnie odebrał i przetworzył otrzymane powiadomienie.
Aby wysłać żądanie, wywołaj metodę /api/v1/private/checkout/payment/confirm/{PID}, podając pid faktury na końcu adresu URL.
Parametry żądania:
- time (wymagane) - POSIX timestamp (Unix time)
- status (wymagane, liczba całkowita) - numer statusu płatności, dla którego sklep wysyła potwierdzenie
Jeśli przesłany status zgadza się z aktualnym statusem tej faktury w systemie, AxtonPay odpowie za pomocą 'OK', a jeśli się nie zgadza, odpowie błędem.
Przykład linii do generowania podpisu:
// 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"}
Przykład odpowiedzi, jeśli aktualny status płatności jest taki sam:
{
"status": "ok",
"data": "\"Paid\" status notification is confirmed"
}
Przykład odpowiedzi, jeśli aktualny status płatności różni się od tego przesłanego w żądaniu:
{
"status": "error",
"message": "Something went wrong"
}
Kody walut
Waluty, które można wykorzystać do wystawienia faktury.
Większość używanych kodów walut należy do walut fiducjarnych i są one równe ISO 4217. Lista zawiera również kilka kryptowalut.
| Kod | Imię | Cyfry dziesiętne | Typ |
| BCH | Bitcoin Cash | 8 | Kryptowaluta |
| BLK | Blackcoin | 8 | Kryptowaluta |
| BNB | Binancecoin | 18 | Kryptowaluta |
| BTC | Bitcoin | 8 | Kryptowaluta |
| BTT | BitTorrent | 18 | Token kryptograficzny |
| BUSD | Binance USD | 18 | Token kryptograficzny |
| DAI | Dai | 18 | Token kryptograficzny |
| DASH | Dash | 8 | Kryptowaluta |
| DOGE | Dogecoin | 8 | Kryptowaluta |
| ETC | Ethereum Classic | 18 | Kryptowaluta |
| ETH | Ethereum | 18 | Kryptowaluta |
| LTC | Litecoin | 8 | Kryptowaluta |
| NLG | Gulden | 8 | Kryptowaluta |
| RDD | ReddCoin | 8 | Kryptowaluta |
| TRX | Tron | 6 | Kryptowaluta |
| USDC | USD Coin | 6 | Token kryptograficzny |
| USDD | Decentralized USD | 18 | Token kryptograficzny |
| USDT | Tether USDT | 6 | Token kryptograficzny |
| VTC | Vertcoin | 8 | Kryptowaluta |
| XVG | Verge | 8 | Kryptowaluta |
| AED | United Arab Emirates dirham | 2 | Waluta fiducjarna |
| AFN | Afghan afghani | 2 | Waluta fiducjarna |
| ALL | Albanian lek | 2 | Waluta fiducjarna |
| AMD | Armenian dram | 2 | Waluta fiducjarna |
| ANG | Netherlands Antillean guilder | 2 | Waluta fiducjarna |
| AOA | Angolan kwanza | 2 | Waluta fiducjarna |
| ARS | Argentine peso | 2 | Waluta fiducjarna |
| AUD | Australian dollar | 2 | Waluta fiducjarna |
| AWG | Aruban florin | 2 | Waluta fiducjarna |
| AZN | Azerbaijani manat | 2 | Waluta fiducjarna |
| BAM | Bosnia and Herzegovina convertible mark | 2 | Waluta fiducjarna |
| BBD | Barbados dollar | 2 | Waluta fiducjarna |
| BDT | Bangladeshi taka | 2 | Waluta fiducjarna |
| BGN | Bulgarian lev | 2 | Waluta fiducjarna |
| BHD | Bahraini dinar | 3 | Waluta fiducjarna |
| BIF | Burundian franc | 2 | Waluta fiducjarna |
| BMD | Bermudian dollar | 2 | Waluta fiducjarna |
| BND | Brunei dollar | 2 | Waluta fiducjarna |
| BOB | Boliviano | 2 | Waluta fiducjarna |
| BRL | Brazilian real | 2 | Waluta fiducjarna |
| BSD | Bahamian dollar | 2 | Waluta fiducjarna |
| BTN | Bhutanese ngultrum | 2 | Waluta fiducjarna |
| BWP | Botswana pula | 2 | Waluta fiducjarna |
| BYN | Belarusian ruble | 2 | Waluta fiducjarna |
| BZD | Belize dollar | 2 | Waluta fiducjarna |
| CAD | Canadian dollar | 2 | Waluta fiducjarna |
| CDF | Congolese franc | 2 | Waluta fiducjarna |
| CHF | Swiss franc | 2 | Waluta fiducjarna |
| CLP | Chilean peso | 2 | Waluta fiducjarna |
| CNY | Renminbi (Chinese) yuan | 2 | Waluta fiducjarna |
| COP | Colombian peso | 2 | Waluta fiducjarna |
| CRC | Costa Rican colon | 2 | Waluta fiducjarna |
| CUC | Cuban convertible peso | 2 | Waluta fiducjarna |
| CUP | Cuban peso | 2 | Waluta fiducjarna |
| CVE | Cape Verde escudo | 2 | Waluta fiducjarna |
| CZK | Czech koruna | 2 | Waluta fiducjarna |
| DJF | Djiboutian franc | 2 | Waluta fiducjarna |
| DKK | Danish krone | 2 | Waluta fiducjarna |
| DOP | Dominican peso | 2 | Waluta fiducjarna |
| DZD | Algerian dinar | 2 | Waluta fiducjarna |
| EGP | Egyptian pound | 2 | Waluta fiducjarna |
| ERN | Eritrean nakfa | 2 | Waluta fiducjarna |
| ETB | Ethiopian birr | 2 | Waluta fiducjarna |
| EUR | Euro | 2 | Waluta fiducjarna |
| FJD | Fiji dollar | 2 | Waluta fiducjarna |
| FKP | Falkland Islands pound | 2 | Waluta fiducjarna |
| GBP | Pound sterling | 2 | Waluta fiducjarna |
| GEL | Georgian lari | 2 | Waluta fiducjarna |
| GHS | Ghanaian cedi | 2 | Waluta fiducjarna |
| GIP | Gibraltar pound | 2 | Waluta fiducjarna |
| GMD | Gambian dalasi | 2 | Waluta fiducjarna |
| GNF | Guinean franc | 0 | Waluta fiducjarna |
| GTQ | Guatemalan quetzal | 2 | Waluta fiducjarna |
| GYD | Guyanese dollar | 2 | Waluta fiducjarna |
| HKD | Hong Kong dollar | 2 | Waluta fiducjarna |
| HNL | Honduran lempira | 2 | Waluta fiducjarna |
| HRK | Croatian kuna | 2 | Waluta fiducjarna |
| HTG | Haitian gourde | 2 | Waluta fiducjarna |
| HUF | Hungarian forint | 2 | Waluta fiducjarna |
| IDR | Indonesian rupiah | 2 | Waluta fiducjarna |
| ILS | Israeli new shekel | 2 | Waluta fiducjarna |
| INR | Indian rupee | 2 | Waluta fiducjarna |
| IQD | Iraqi dinar | 3 | Waluta fiducjarna |
| IRR | Iranian rial | 2 | Waluta fiducjarna |
| ISK | Icelandic krona | 2 | Waluta fiducjarna |
| JMD | Jamaican dollar | 2 | Waluta fiducjarna |
| JOD | Jordanian dinar | 3 | Waluta fiducjarna |
| JPY | Japanese yen | 3 | Waluta fiducjarna |
| KES | Kenyan shilling | 2 | Waluta fiducjarna |
| KGS | Kyrgyzstani som | 2 | Waluta fiducjarna |
| KHR | Cambodian riel | 2 | Waluta fiducjarna |
| KMF | Comoro franc | 2 | Waluta fiducjarna |
| KPW | North Korean won | 2 | Waluta fiducjarna |
| KRW | South Korean won | 2 | Waluta fiducjarna |
| KWD | Kuwaiti dinar | 3 | Waluta fiducjarna |
| KYD | Cayman Islands dollar | 2 | Waluta fiducjarna |
| KZT | Kazakhstani tenge | 2 | Waluta fiducjarna |
| LAK | Lao kip | 2 | Waluta fiducjarna |
| LBP | Lebanese pound | 2 | Waluta fiducjarna |
| LKR | Sri Lankan rupee | 2 | Waluta fiducjarna |
| LRD | Liberian dollar | 2 | Waluta fiducjarna |
| LSL | Lesotho loti | 2 | Waluta fiducjarna |
| LYD | Libyan dinar | 3 | Waluta fiducjarna |
| MAD | Moroccan dirham | 2 | Waluta fiducjarna |
| MDL | Moldovan leu | 2 | Waluta fiducjarna |
| MGA | Malagasy ariary | 2 | Waluta fiducjarna |
| MKD | Macedonian denar | 2 | Waluta fiducjarna |
| MMK | Myanmar kyat | 2 | Waluta fiducjarna |
| MNT | Mongolian togrog | 2 | Waluta fiducjarna |
| MOP | Macanese pataca | 2 | Waluta fiducjarna |
| MRU | Mauritanian ouguiya | 2 | Waluta fiducjarna |
| MUR | Mauritian rupee | 2 | Waluta fiducjarna |
| MVR | Maldivian rufiyaa | 2 | Waluta fiducjarna |
| MWK | Malawian kwacha | 2 | Waluta fiducjarna |
| MXN | Mexican peso | 2 | Waluta fiducjarna |
| MYR | Malaysian ringgit | 2 | Waluta fiducjarna |
| MZN | Mozambican metical | 2 | Waluta fiducjarna |
| NAD | Namibian dollar | 2 | Waluta fiducjarna |
| NGN | Nigerian naira | 2 | Waluta fiducjarna |
| NIO | Nicaraguan cordoba | 2 | Waluta fiducjarna |
| NOK | Norwegian krone | 2 | Waluta fiducjarna |
| NPR | Nepalese rupee | 2 | Waluta fiducjarna |
| NZD | New Zealand dollar | 2 | Waluta fiducjarna |
| OMR | Omani rial | 3 | Waluta fiducjarna |
| PAB | Panamanian balboa | 2 | Waluta fiducjarna |
| PEN | Peruvian sol | 2 | Waluta fiducjarna |
| PGK | Papua New Guinean kina | 2 | Waluta fiducjarna |
| PHP | Philippine peso | 2 | Waluta fiducjarna |
| PKR | Pakistani rupee | 2 | Waluta fiducjarna |
| PLN | Polish zloty | 2 | Waluta fiducjarna |
| PYG | Paraguayan guarani | 2 | Waluta fiducjarna |
| QAR | Qatari riyal | 2 | Waluta fiducjarna |
| RON | Romanian leu | 2 | Waluta fiducjarna |
| RSD | Serbian dinar | 2 | Waluta fiducjarna |
| RUB | Russian ruble | 2 | Waluta fiducjarna |
| RWF | Rwandan franc | 2 | Waluta fiducjarna |
| SAR | Saudi riyal | 2 | Waluta fiducjarna |
| SBD | Solomon Islands dollar | 2 | Waluta fiducjarna |
| SCR | Seychelles rupee | 2 | Waluta fiducjarna |
| SDG | Sudanese pound | 2 | Waluta fiducjarna |
| SEK | Swedish krona/kronor | 2 | Waluta fiducjarna |
| SGD | Singapore dollar | 2 | Waluta fiducjarna |
| SHP | Saint Helena pound | 2 | Waluta fiducjarna |
| SLL | Sierra Leonean leone | 2 | Waluta fiducjarna |
| SOS | Somali shilling | 2 | Waluta fiducjarna |
| SRD | Surinamese dollar | 2 | Waluta fiducjarna |
| SSP | South Sudanese pound | 2 | Waluta fiducjarna |
| STN | Sao Tome and Pricipe dobra | 2 | Waluta fiducjarna |
| SVC | Salvadoran colon | 2 | Waluta fiducjarna |
| SYP | Syrian pound | 2 | Waluta fiducjarna |
| SZL | Swazi lilangeni | 2 | Waluta fiducjarna |
| THB | Thai baht | 2 | Waluta fiducjarna |
| TJS | Tajikistani somoni | 2 | Waluta fiducjarna |
| TMT | Turkmenistan manat | 2 | Waluta fiducjarna |
| TND | Tunisian dinar | 3 | Waluta fiducjarna |
| TOP | Tongan paanga | 2 | Waluta fiducjarna |
| TRY | Turkish lira | 2 | Waluta fiducjarna |
| TTD | Trinidad and Tobago dollar | 2 | Waluta fiducjarna |
| TWD | New Taiwan dollar | 2 | Waluta fiducjarna |
| TZS | Tanzanian shilling | 2 | Waluta fiducjarna |
| UAH | Ukrainian hryvnia | 2 | Waluta fiducjarna |
| UGX | Ugandan shilling | 0 | Waluta fiducjarna |
| USD | United States dollar | 2 | Waluta fiducjarna |
| UYU | Uruguayan peso | 2 | Waluta fiducjarna |
| UZS | Uzbekistan som | 2 | Waluta fiducjarna |
| VES | Venezuelan bolivar soberano | 2 | Waluta fiducjarna |
| VND | Vietnamese dong | 2 | Waluta fiducjarna |
| VUV | Vanuatu vatu | 0 | Waluta fiducjarna |
| WST | Samoan tala | 2 | Waluta fiducjarna |
| XAF | CFA franc BEAC | 3 | Waluta fiducjarna |
| XCD | East Caribbean dollar | 2 | Waluta fiducjarna |
| XOF | CFA franc BCEAO | 2 | Waluta fiducjarna |
| XPF | CFP franc (franc Pacifique) | 3 | Waluta fiducjarna |
| XTS | Kody zarezerwowane specjalnie do celów testowych | 2 | Zarezerwowany kod |
| XXX | Kody przypisane do transakcji, w których nie jest zaangażowana żadna waluta | 2 | Zarezerwowany kod |
| YER | Yemeni rial | 2 | Waluta fiducjarna |
| ZAR | South African rand | 2 | Waluta fiducjarna |
| ZMW | Zambian kwacha | 2 | Waluta fiducjarna |
| ZWL | Zimbabwean dollar | 2 | Waluta fiducjarna |
