Payment methods
Payment methods
Bank card (Shadowpays side)
Acquiring. Card data is collecting on the Shadowpays side. Additional fields for /deposit/create request
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| payment_system | string | Yes | Payment system name | CardGate |
| note | string | Yes | Payment description for client | Account deposit 321 |
| system_fields | object | Yes | Container for additional fields of payment system | |
| system_fields > client_id | string | No | Client ID in the Merchant system | 321 |
Пример запроса:
{
"transaction_id": "123",
"amount": "10.00",
"currency": "USD",
"payment_system": "CardGate",
"note": "Account deposit 321",
"system_fields": {
"client_id": "321"
},
"url": {
"callback_url": "https://site.com/callback",
"fail_url": "https://site.com/fail",
"pending_url": "https://site.com/pending",
"success_url": "https://site.com/success"
}
}
Answer is common Shadowpays response with Redirect block to Shadowpays checkout page. After checkout client will be redirected to 3DS and then returned according the url block if present.
Bank card (Merchant side)
Acquiring. Card data is collecting on the Merchant side. Additional fields for /deposit/create request:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| payment_system | string | Yes | Payment system name | CardGateS2S |
| system_fields | object | Yes | Container for additional fields of payment system | |
| system_fields > client_id | string | Yes | Client ID in the Merchant system | 321 |
| system_fields > card_number | string | Yes | Card number | 4111111111111111 |
| system_fields > card_month | integer(2) | Yes | Card expiry month | 01 |
| system_fields > card_year | integer(4) | Yes | Card expiry year | 2020 |
| system_fields > cardholder_name | string | Yes | Cardholder name | Mr Cardholder |
| system_fields > card_cvv | integer | Yes | Card security code | 345 |
| system_fields > client_email | string | No | Client e-mail | test@test.com |
| system_fields > client_phone | string | No | Client phone in international format | +37111111111 |
| system_fields > client_ip | string | No | Client ip-address | 192.168.1.1 |
| system_fields > client_user_agent | string | No | User-agent of client browser | Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2 |
Optional fields can be needed in live mode. Please specify it before going live.
Request example:
{
"transaction_id": "123",
"amount": "10.00",
"currency": "USD",
"payment_system": "CardGateS2S",
"note": "Account deposit 321",
"system_fields": {
"client_id": "321",
"card_number": "4111111111111111",
"card_month": "01",
"card_year": "2020",
"cardholder_name": "Mr Cardholder",
"card_cvv": "345"
},
"url": {
"callback_url": "https://site.com/callback",
"fail_url": "https://site.com/fail",
"pending_url": "https://site.com/pending",
"success_url": "https://site.com/success"
}
}
Answer is common Shadowpays response with Redirect block to 3DS page. After passing 3DS client will be returned according the url block if present.
Attention! Redirect block can contain different "url", "method" and "params".
The example of the common response:
{
"status": "created",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "10.00",
"amount_merchant": "9.3",
"amount_client": "10.00",
"currency": "USD",
"payment_system": "CardGateS2S",
"redirect": {
"url": "https://bank.com/3ds",
"method": "POST",
"params": {
"pareq": "12345678"
}
}
}
In some cases answer may not contain redirect block. It could happen in some cases like not enrolled in 3DS card or some unexpected system behavior. Merchant system should await for callback with final status or check status of the transaction by itself.
The example of that kind of response:
{
"status": "created",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "10.00",
"amount_merchant": "9.3",
"amount_client": "10.00",
"currency": "USD",
"payment_system": "CardGateS2S"
}
3DSv2 (Merchant side)
Additional request data needs to be sent to use 3DSv2 authentication method.
Additional fields for /deposit/create request:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| three_ds_v2 | object | Only for 3DSv2 | Container for 3DSv2 parameters | |
| three_ds_v2 > accept_header | string | Yes | Exact content of the HTTP accept headers as sent to the 3DS Requester from the Cardholder browser. | text/html,application/xhtml+xml,application/xml |
| three_ds_v2 > java_enabled | boolean | Yes | Boolean that represents the ability of the cardholder browser to execute Java. The value can be retrieved by accessing a property of the navigator with JavaScript, navigator.javaEnabled. | true |
| three_ds_v2 > language | string | Yes | Value representing the browser language as defined in IETF BCP47. The value can be retrieved by accessing a property of the navigator with JavaScript, navigator.language. | en-EN |
| three_ds_v2 > color_depth | integer | Yes | Value representing the bit depth of the colour palette for displaying images, in bits per pixel. Obtained from Cardholder browser using the screen.colorDepth property. The value can be one of 1, 4, 8, 15, 16, 24, 32, 48. | 48 |
| three_ds_v2 > screen_height | integer | Yes | Total height of the Cardholder's screen in pixels. Value is returned from the screen.height property. | 800 |
| three_ds_v2 > screen_width | integer | Yes | Total width of the Cardholder's screen in pixels. Value is returned from the screen.width property. | 600 |
| three_ds_v2 > time_zone_offset | string | Yes | Time difference between UTC time and the Cardholder browser local time, in minutes. The value can be retrieved using Javascript getTimezoneOffset() method. | -300 |
| three_ds_v2 > user_agent | string | Yes | Exact content of the HTTP user-agent header. | AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 |
| three_ds_v2 > ip | string | Yes | Cardholder's IP address. | 127.0.0.1 |
Request example:
{
"transaction_id": "123",
"amount": "10.00",
"currency": "USD",
"payment_system": "CardGateS2S",
"note": "Account deposit 321",
"system_fields": {
"client_id": "321",
"card_number": "4111111111111111",
"card_month": "01",
"card_year": "2020",
"cardholder_name": "Mr Cardholder",
"card_cvv": "345"
},
"url": {
"callback_url": "https://site.com/callback",
"fail_url": "https://site.com/fail",
"pending_url": "https://site.com/pending",
"success_url": "https://site.com/success"
},
"three_ds_v2": {
"accept_header": "text/html,application/xhtml+xml,application/xml",
"java_enabled": true,
"language": "en-EN",
"color_depth": 48,
"screen_height": 800,
"screen_width": 600,
"time_zone_offset": "-300",
"user_agent": "AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0",
"ip": "127.0.0.1",
}
}
Wallet (Shadowpays side)
Contact your manager to specify if this method is available.
Deposit. Wallet number and additional data are collecting on the Shadowpays side.
The request is sent by POST to the address:
https://psp.shadowpays.com/api/deposit/create/form
The request is identical as for /deposit/create request of specific wallet method but you don't need to send the wallet number or fields that client could fill in the "system_fields" block.
In case of successful transaction creation the response should be a common redirect response with payment completion form URL:
{
"status": "created",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "10.00",
"amount_merchant": "9.3",
"amount_client": "10.00",
"currency": "USD",
"payment_system": "Wallet",
"redirect": {
"url": "https://psp.shadowpays.com/payment/checkout/deposit/12345678",
"method": "GET",
"params": []
}
}
In case of error occurred the response should be the common error response.
After completion of payment client will be returned to merchant site according the url block if present.
Wallet (Merchant side)
Deposit. Wallet number and additional data are collecting on merchant's side.
The request is sent by POST to the address:
https://psp.shadowpays.com/api/deposit/create
Refer to specific wallet method section of this documentation to check mandatory request fields.
The examples of the responses:
No action needed, transaction status is not final:
{
"status": "created",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "10.00",
"amount_merchant": "9.3",
"amount_client": "10.00",
"currency": "USD",
"payment_system": "Wallet"
}
Redirect response to complete transaction:
{
"status": "created",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "10.00",
"amount_merchant": "9.3",
"amount_client": "10.00",
"currency": "USD",
"payment_system": "Wallet",
"redirect": {
"url": "https://wallet.com/complete",
"method": "POST",
"params": {
"some": "param",
"another": "param2",
}
}
}
Redirect response to complete transaction by entering OTP code (please refer to OTP Merchant Side section for alternative ways of processing):
{
"status": "created",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "10.00",
"amount_merchant": "9.3",
"amount_client": "10.00",
"currency": "USD",
"payment_system": "Wallet",
"redirect": {
"url": "https://psp.shadowpays.com/payment/checkout/otp/12345678",
"method": "GET",
"params": []
}
}
No action needed, transaction is successful:
{
"status": "ok",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "10.00",
"amount_merchant": "9.3",
"amount_client": "10.00",
"currency": "USD",
"payment_system": "Wallet"
}
In case of error occurred the response should be the common error response.
Wallet OTP (Merchant side)
There is a possibility to collect OTP code for wallet payment completion on merchant's side.
If merchant got response with redirect block to /payment/checkout/otp/ endpoint, you can draw an input for client to enter OTP code there and then send it to the system.
The request is sent by POST to the address:
https://psp.shadowpays.com/deposit/complete/otp
Fields for /deposit/complete/otp request:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| id | int | Yes | Transaction ID | 300 |
| system_fields | object | Yes | Container for additional fields of payment system | |
| system_fields > otp | string | Yes | OTP | 1234 |
Request example:
{
"id": 300,
"system_fields": {
"otp": "1234",
}
}
The examples of the responses:
No action needed, transaction status is not final:
{
"status": "created",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "10.00",
"amount_merchant": "9.3",
"amount_client": "10.00",
"currency": "USD",
"payment_system": "Wallet"
}
Redirect response to complete transaction:
{
"status": "created",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "10.00",
"amount_merchant": "9.3",
"amount_client": "10.00",
"currency": "USD",
"payment_system": "Wallet",
"redirect": {
"url": "https://wallet.com/complete",
"method": "POST",
"params": {
"some": "param",
"another": "param2",
}
}
}
No action needed, transaction is successful:
{
"status": "ok",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "10.00",
"amount_merchant": "9.3",
"amount_client": "10.00",
"currency": "USD",
"payment_system": "Wallet"
}
In case of error occurred the response should be the common error response.
Paysafecard
Additional fields for /deposit/create request:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| payment_system | string | Yes | Payment system name | Paysafecard |
| system_fields | object | Yes | Container for additional fields of payment system | |
| system_fields > client_success_url | string | Yes | URL for client redirection after successful payment | https://site.com/success |
| system_fields > client_failure_url | string | Yes | URL for client redirection after unsuccessful payment | https://site.com/fail |
| system_fields > client_id | string | Yes | Client ID in the Merchant system | 321 |
The example of the request:
{
"transaction_id": "123",
"amount": "10.00",
"currency": "EUR",
"payment_system": "Paysafecard",
"note": "Account deposit 321",
"system_fields": {
"client_success_url": "https://site.com/success",
"client_failure_url": "https://site.com/fail",
"client_id": "321"
},
"url": {
"callback_url": "https://site.com/callback",
}
}
Additional fields for /deduce/create request:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| payment_system | string | Yes | Payment system name | Paysafecard |
| system_fields | object | Yes | Container for additional fields of payment system | |
| system_fields > client_id | string | Yes | Client ID in the Merchant system | 321 |
| system_fields > client_email | string | No | Client e-mail | test@test.com |
| system_fields > client_date_of_birth | date(Y-m-d) | Yes | Date of birth user (in Paysafecard system) | 1991-02-13 |
| system_fields > client_first_name | string | Yes | First name in Paysafecard system | Ivan |
| system_fields > client_last_name | string | Yes | Last name in Paysafecard system | Ivanov |
The example of the request:
{
"transaction_id": "123",
"amount": "10.00",
"currency": "EUR",
"payment_system": "Paysafecard",
"note": "Account payout 321",
"system_fields": {
"client_id":"321",
"client_email": "test@test.com",
"client_date_birth": "1991-02-13",
"client_first_name": "Ivan",
"client_last_name": "Ivanov"
},
"url": {
"callback_url": "https://site.com/callback",
}
}
Answer is common Shadowpays payout response.
Applepay
Additional fields for /deposit/create request:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| payment_system | string | Yes | Payment system name. | ApplePay - Specify with your manager |
| system_fields | object | Yes | Container for additional fields of payment system. | |
| system_fields > client_id | string | Yes | Client ID in the Merchant system | 321 |
| system_fields > client_email | string | Yes | Client e-mail | test@test.com |
| url | object | Yes | Container for URL addresses transmitting. | |
| url > success_url | string | Yes | URL for client redirection after successful payment | https://site.com/success |
| url > fail_url | string | Yes | URL for client redirection after unsuccessful payment | http://site.com/fail |
The example of the request:
{
"transaction_id": "123",
"amount": "100.00",
"currency": "EUR",
"system_fields": {
"client_id" : "321",
"client_email" : "test@test.com"
},
"payment_system": "ApplePay",
"url": {
"fail_url": "https://site.com/fail",
"success_url": "https://site.com/success"
}
}
Answer is common Shadowpays response with Redirect block to Shadowpays checkout page with the ApplePay button. After checkout client will be redirected to ApplePay payment process or 3DS page and then returned according the url block.
The example of the common response:
{
"status": "created",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "100.00",
"amount_merchant": "95.00",
"amount_client": "100.00",
"currency": "EUR",
"payment_system": "ApplePay",
"redirect": {
"url": "https://psp.shadowpays.com/payment/checkout/ap",
"method": "GET",
"params": {
"data": "12345678"
}
}
}
Googlepay
Additional fields for /deposit/create request:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| payment_system | string | Yes | Payment system name. | GooglePay - Specify with your manager |
| system_fields | object | Yes | Container for additional fields of payment system. | |
| system_fields > client_id | string | Yes | Client ID in the Merchant system | 321 |
| system_fields > client_email | string | Yes | Client e-mail | test@test.com |
| url | object | Yes | Container for URL addresses transmitting. | |
| url > success_url | string | Yes | URL for client redirection after successful payment | https://site.com/success |
| url > fail_url | string | Yes | URL for client redirection after unsuccessful payment | http://site.com/fail |
The example of the request:
{
"transaction_id": "123",
"amount": "100.00",
"currency": "EUR",
"payment_system": "GooglePay",
"system_fields": {
"client_id" : "321",
"client_email" : "test@test.com"
},
"url": {
"fail_url": "https://site.com/fail",
"success_url": "https://site.com/success"
}
}
Answer is common Shadowpays response with Redirect block to Shadowpays checkout page with the GooglePay button. After checkout client will be redirected to GooglePay payment process or 3DS page and then returned according the url block.
The example of the common response:
{
"status": "created",
"id": "300",
"transaction_id": "123",
"type": "deposit",
"amount_to_pay": "100.00",
"amount_merchant": "95.00",
"amount_client": "100.00",
"currency": "EUR",
"payment_system": "GooglePay",
"redirect": {
"url": "https://psp.shadowpays.com/payment/checkout/gp",
"method": "GET",
"params": {
"data": "12345678"
}
}
}
Trustly
Additional fields for /deposit/create request:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| payment_system | string | Yes | Payment system name. | Trustly - Specify with your manager |
| system_fields | object | Yes | Container for additional fields of payment system. | |
| system_fields > client_first_name | string | Yes | Client first name in Trustly system | John |
| system_fields > client_last_name | string | Yes | Client last name in Trustly system | Doe |
| system_fields > client_email | string | Yes | Client email in Trustly system | test@test.test |
| system_fields > client_document_id | string | Yes | Client document ID in Trustly system | DocumentID |
| system_fields > client_country_code | string|Country Alpha-2 | Yes | Client country code | DE |
| system_fields > client_id | string | Yes | Client ID in the Merchant system | 321 |
The example of the request:
{
"transaction_id": "123",
"amount": "10.00",
"currency": "EUR",
"payment_system": "Trustly",
"note": "Account deposit 321",
"system_fields": {
"client_first_name": "John",
"client_last_name": "Doe",
"client_email": "test@test.test",
"client_document_id": "DocumentID",
"client_country_code": "DE",
"client_id": "321",
},
"url": {
"callback_url": "https://site.com/callback",
"fail_url": "https://site.com/fail",
"pending_url": "https://site.com/pending",
"success_url": "https://site.com/success"
}
}
Answer is common Shadowpays response with Redirect block to Trustly page. After payment completion client will be returned according the url block if present.
Blik
Additional fields for /deposit/create request:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| payment_system | string | Yes | Payment system name. | Blik - Specify with your manager |
| system_fields | object | Yes | Container for additional fields of payment system. | |
| system_fields > client_first_name | string | Yes | Client first name in Blik system | John |
| system_fields > client_last_name | string | Yes | Client last name in Blik system | Doe |
| system_fields > client_id | string | Yes | Client ID in the Merchant system | 321 |
The example of the request:
{
"transaction_id": "123",
"amount": "10.00",
"currency": "EUR",
"payment_system": "Blik",
"note": "Account deposit 321",
"system_fields": {
"client_first_name": "John",
"client_last_name": "Doe",
"client_id": "321",
},
"url": {
"callback_url": "https://site.com/callback",
"fail_url": "https://site.com/fail",
"pending_url": "https://site.com/pending",
"success_url": "https://site.com/success"
}
}
Answer is common Shadowpays response with Redirect block to Blik page. After payment completion client will be returned according the url block if present.
Bancontact
Additional fields for /deposit/create request:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| payment_system | string | Yes | Payment system name. | Bancontact - Specify with your manager |
| system_fields | object | Yes | Container for additional fields of payment system. | |
| system_fields > client_first_name | string | Yes | Client first name in Bancontact system | John |
| system_fields > client_last_name | string | Yes | Client last name in Bancontact system | Doe |
| system_fields > client_id | string | Yes | Client ID in the Merchant system | 321 |
The example of the request:
{
"transaction_id": "123",
"amount": "10.00",
"currency": "EUR",
"payment_system": "Bancontact",
"note": "Account deposit 321",
"system_fields": {
"client_first_name": "John",
"client_last_name": "Doe",
"client_id": "321",
},
"url": {
"callback_url": "https://site.com/callback",
"fail_url": "https://site.com/fail",
"pending_url": "https://site.com/pending",
"success_url": "https://site.com/success"
}
}
Answer is common Shadowpays response with Redirect block to Bancontact page. After payment completion client will be returned according the url block if present.
EPS
Additional fields for /deposit/create request:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| payment_system | string | Yes | Payment system name. | EPS - Specify with your manager |
| system_fields | object | Yes | Container for additional fields of payment system. | |
| system_fields > client_first_name | string | Yes | Client first name in EPS system | John |
| system_fields > client_last_name | string | Yes | Client last name in EPS system | Doe |
| system_fields > client_id | string | Yes | Client ID in the Merchant system | 321 |
The example of the request:
{
"transaction_id": "123",
"amount": "10.00",
"currency": "EUR",
"payment_system": "EPS",
"note": "Account deposit 321",
"system_fields": {
"client_first_name": "John",
"client_last_name": "Doe",
"client_id": "321",
},
"url": {
"callback_url": "https://site.com/callback",
"fail_url": "https://site.com/fail",
"pending_url": "https://site.com/pending",
"success_url": "https://site.com/success"
}
}
Answer is common Shadowpays response with Redirect block to EPS page. After payment completion client will be returned according the url block if present.
Cryptocurrency P2P
Payment flow contains transaction initiation on Shadowpays side using notification/push protocol. Please provide a URL for notifications/push receiving to your manager.
Payment process starts with linking dedicated cryptocurrency wallet and customer on merchant's side.
The request should contain client_id.
The request is sent by POST to the address:
https://psp.shadowpays.com/api/deposit/wallet/link
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| payment_system | string | Yes | Payment system name | Cryptocurrency_USDT_ETH |
| system_fields | object | Yes | Container for additional fields of payment system | |
| system_fields > client_id | string | Yes | Client ID in the Merchant system | 321 |
The example of the request:
{
"payment_system": "Cryptocurrency_USDT_ETH",
"system_fields": {
"client_id":"321",
}
}
Answer will contain hash-address of dedicated cryptocurrency wallet in case of success.
The example of the successful response:
{
"status": "created",
"payment_system": "Cryptocurrency_USDT_ETH",
"system_fields": {
"address": "TNn9diUSJZS123143245Q9vwWvuT84QcZ"
}
}
Error response will be standart.
Customer should send funds to received wallet.
After receiving funds system initiates payment request to provided URL.
Request method is POST with JSON formatted body:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| id | integer | Yes | Transaction number in system | 300 |
| status | string | Yes | Transaction status: 'ok', fixed | ok |
| type | string | Yes | Transaction type: 'deposit', fixed | deposit |
| amount_payed | string | Yes | The amount paid by a Client | 10.00 |
| amount_merchant | string | Yes | The amount credited to the Merchant account | 9.30 |
| currency | string(3) | Yes | Transaction currency | USD |
| payment_system | string | Yes | Payment system name | Cryptocurrency_USDT_ETH |
| system_fields | object | Yes | Container for additional fields of payment system | |
| system_fields > client_id | string | Yes | Client ID in the Merchant system | 321 |
The example of the request:
{
"status": "ok",
"id": 301,
"type": "deposit",
"amount_payed": "10.00",
"amount_merchant": "9.30",
"currency": "EUR",
"payment_system": "Cryptocurrency_USDT_ETH",
"system_fields": {
"client_id": "321",
}
}
Merchant response should be with status code 200 and contain body:
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| transaction_id | string | No | Transaction number in Merchant system | 123 |
| status | string | Yes | Transaction status: 'ok', fixed | ok |
The example of the response:
{
"status": "ok",
"transaction_id": "123"
}