Przejdź do głównej zawartości

Wypłaty wielowalutowe

Wypłaty wielowalutowe rozszerzają API wypłat o wypłaty w walucie innej niż waluta sklepu. Przewalutowanie jest dostępne między walutami PLN, CZK, EUR i HUF.

Wymagania

Wypłaty wielowalutowe wymagają specjalnej konfiguracji po stronie PayU i spełnienia określonych wymagań formalnych.


Wypłaty wielowalutowe są dostępne tylko przy wypłatach na rachunek bankowy submerchanta marketplace.

Pobieranie tabeli kursów​

Do przewalutowania wypłat używaj kursów udostępnianych przez PayU. Aby pobrać tabelę kursów, wygeneruj token OAuth i wyślij żądanie HTTP GET na endpoint /api/v2_1/mcp-partners/{fxPartnerId}/fx-table.

Ciało żądania metody GET

Wysyłając żądania z metodą GET, upewnij się, że w ciele żądania nie przesyłasz żadnych danych. Zgodnie ze standardem RFC 9110 żądania, które nie spełniają tego wymogu, zostaną odrzucone przez PayU i zwrócony zostanie kod HTTP 403.

Przykład żądania pobrania tabeli kursów
curl -X GET https://secure.payu.com/api/v2_1/mcp-partners/9999e44b-f68f-42e1-ad6c-3735ba1e2954/fx-table \
-H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd"

Szczegóły parametrów znajdziesz w sekcji Retrieve Rate Table w naszej referencji API.

W odpowiedzi PayU zwraca obiekt zawierający pary walutowe wraz z ich kursami.

Odświeżanie tabeli kursów

Zawsze korzystaj z najnowszej tabeli kursów. Nową tabelę pobieraj natychmiast po wygaśnięciu poprzedniej.

Przykład odpowiedzi na żądanie pobrania tabeli kursów
{
"id": "3050",
"validTo": "2024-05-12T20:20:00Z",
"currencyPairs": [
{
"baseCurrency": "EUR",
"exchangeRate": 4.2556,
"termCurrency": "PLN"
}
...
]
}

Rozszerzenie żądania wypłaty​

Aby wykonać wypłatę z przewalutowaniem, wyślij rozszerzone żądanie wypłaty metodą HTTP POST na endpoint /api/v2_1/payouts. Dodaj do żądania następujące obiekty:

  • account – zawierający identyfikator submerchanta,
  • payout – zawierający walutę sklepu i kwotę wypłaty,
  • fxData – zawierający dane potrzebne do przewalutowania.
Przykład żądania wypłaty wraz z przewalutowaniem
{
"shopId": "JahDKDVm",
"account": {
"extCustomerId": "submerchant1"
},
"payout": {
"currencyCode": "PLN",
"description": "Some payout",
"extPayoutId": "my_payout_id_123455",
"amount": 49
},
"fxData": {
"partnerId": "9999e44b-f68f-42e1-ad6c-3735ba1e2954",
"currencyCode": "EUR",
"amount": 11,
"rate": 0.22458,
"tableId": "2055"
}
}

Szczegółowe informacje na temat parametrów znajdziesz w sekcji Create a Payout w naszej referencji API.

Odpowiedź na żądanie wypłaty wielowalutowej​

Jeśli wypłata została zlecona poprawnie, PayU zwraca potwierdzenie z danymi wypłaty.

Przykład odpowiedzi na żądanie wypłaty
{
"payout": {
"payoutId": "bd71af6089ed4723b8699a9b4d14432c",
"extPayoutId": "my_payout_id_123455",
"extCustomerId": "submerchant1",
"amount": 49,
"currencyCode": "PLN",
"status": "PENDING",
"fxData": {
"currencyCode": "EUR",
"amount": 11,
"rate": 0.22458,
"partnerId": "9999e44b-f68f-42e1-ad6c-3735ba1e2954",
"tableId": "2055"
}
},
"status": {
"statusCode": "SUCCESS"
}
}

Pobieranie danych wypłaty wielowalutowej​

Aby pobrać dane wypłaty wielowalutowej, wyślij żądanie HTTP GET na endpoint /api/v2_1/payouts/{payoutId}. Parametr payoutId jest zwracany w odpowiedzi na żądanie wypłaty.

Odpowiedź zawiera dane wypłaty i jej bieżący status.

Odpowiedź na żądanie pobrania danych wypłaty
{
"payout": {
"payoutId": "bd71af6089ed4723b8699a9b4d14432c",
"extPayoutId": "my_payout_id_123455",
"amount": 49,
"currencyCode": "PLN",
"description": "Billing: 5000000444",
"status": "PENDING",
"fxData": {
"currencyCode": "EUR",
"amount": 11,
"rate": 0.22458,
"partnerId": "9999e44b-f68f-42e1-ad6c-3735ba1e2954",
"tableId": "2055"
}
},
"status": {
"statusCode": "SUCCESS"
}
}

Szczegółowe informacje na temat parametrów znajdziesz w sekcji Retrieve a Payout w naszej referencji API.

Wypłaty wielowalutowe w historii operacji submerchanta​

Wypłata wielowalutowa pobrana z historii operacji submerchanta nie zawiera danych konwersji. Oprócz innych danych wyświetlana jest tylko kwota, która została potrącona z salda submerchanta. Poniżej znajduje się przykład wypłaty wielowalutowej pobranej wraz z historią operacji:

Wypłata wielowalutowa widoczna w pobranej historii operacji submerchanta
{
"operations": [
...
{
"currencyCode": "PLN",
"amount": 49,
"type": "PAYOUT",
"description": "Billing: 5000000444",
"status": "COMPLETED",
"details": {
"payoutId": "bd71af6089ed4723b8699a9b4d14432c",
"extPayoutId": "my_payout_id_123455",
"accountNumber": "PL76804610704885900358890402",
"counterparties": [],
"funds": []
},
"eventDate": "2024-05-09T11:10:35+02:00",
"creationDate": "2024-05-09T11:09:39+02:00"
}
],
...
}

Więcej informacji na temat pobierania historii operacji submerchanta znajdziesz na stronie Marketplace.

To samo dotyczy zestawień generowanych w panelu menedżerskim. Zestawienie zawiera kwotę potrąconą z salda submerchanta bez szczegółów przewalutowania.

Kody błędów dla wypłat wielowalutowych​

Poniżej znajdziesz listę błędów odnoszących się konkretnie do wypłat wielowalutowych.

Kody błędów dla wypłat wielowalutowych
Status HTTPStatusKod błęduOpis
400
BUSINESS_ERROR
FX_PAYOUT_NOT_ALLOWED
Usługa wypłat wielowalutowych dla danego merchanta jest niedostępna. Wymagana jest specjalna konfiguracja po stronie PayU.
400
ERROR_VALUE_INVALID
FX_PARTNER_NOT_FOUND
Podany identyfikator partnera nie istnieje.
400
ERROR_VALUE_INVALID
FX_TABLE_OUTDATED
Użyta tabela kursowa jest już przeterminowana.
400
ERROR_VALUE_INVALID
FX_TERM_AMOUNT_INVALID
Niepoprawnie wyliczona kwota wypłaty po przewalutowaniu.
400
ERROR_VALUE_INVALID
FX_TABLE_NOT_FOUND
Nie znaleziono tabeli kursowej o podanym identyfikatorze w ramach wskazanego partnera.
400
ERROR_VALUE_INVALID
FX_RATE_INVALID
Podany kurs jest niepoprawny dla wskazanej pary walutowej.
400
ERROR_VALUE_INVALID
FX_CURRENCY_PAIR_NOT_SUPPORTED
Użyta para walutowa nie jest wspierana lub niedostępna.
400
ERROR_VALUE_INVALID
FX_TERM_CURRENCY_NOT_SUPPORTED
Podany kod waluty, do której ma nastąpić przewalutowanie, nie jest obsługiwany.
400
ERROR_VALUE_INVALID
FX_BASE_CURRENCY_NOT_SUPPORTED
Podany kod waluty, z której ma nastąpić przewalutowanie, nie jest obsługiwany.
400
ERROR_VALUE_INVALID
INCONSISTENT_PAYOUT_CURRENCY
Podana waluta nie jest zgodna ze zdefiniowaną walutą sklepu.
400
ERROR_VALUE_INVALID
MISSING_<fieldName>
Brakuje wskazanego pola.
400
ERROR_VALUE_INVALID
INVALID_<fieldName>
Wskazane pole jest niepoprawne.
400
ERROR_VALUE_INVALID
<fieldName>_TOO_LONG
Wskazane pole jest za długie.