Payments Lab provide payment gateway under dpay brand. API can be used both for Technical Service Provider and Payment Service Provider services.
Simplest way to integrate with dpay, is using dpay provided plugin for most popular e-commerce platforms. Here you can find ready plugins: Plugins
Another way to use dpay, is by using simple payment link creation tool included in panel.dpay.pl. You can create: - one time link - multiple use link This tool is free to use and it is easy way to accept payments for your business. While using one time link will just generate a simple pay link, but when you create a multiple use link you can also: - generate qr codes - receive special email notification
If you want to accept donations, or just tips for your business, you can do that using dpay's payment page system.
Donation page system allows you to add your own logo and text and that's it! You don't need to worry about page hosting - we take care of that.
Check out our (Example Donation Page)[https://pay.dpay.pl/payment-page/01HXMVYFVRG38SHE0F9S4XK01E]
If you have IT development capability, you can integrate with our REST API. Our API is designed with KISS pricinpal in mind. There are three ways that you can currently use our API to integrate payments:
Simplest: create payment & redirect payer to dpay gateway
White-label options:
All of those ways, requires you to:
Some of our customers prefer to use Get Payment Status instead of IPN but we advise to use IPNs.
Below you can find simplified descriptions of payments flow used in REST API Integration.
After placing the order, the customer clicks the 'pay' button. The Seller's system sends the transaction registration request to the dpay gateway and receives back a unique transaction identifier and a payment link. The seller's system then redirects the customer to the transaction based on received link. In the event of cancellation of the payment, the customer is redirected to the 'url_fail' address. After the successfull transaction, the customer is redirected to the address given in the 'url_success' parameter.
The dpay gateway sends the transaction confirmation to the address given in the 'url_ipn' parameter. The notification with confirmation of the transaction is sent asynchronously. In order to confirm the credibility of the received confirmation, in response to the payment confirmation, the seller's system verifies the request on the basis of the checksum.
When you define channel
, email
, client_name
, client_surname
, accept_tos
params and send it with transaction register request, you can easily redirect customer to the defined channel (eg. bank).Channels list can be obtained from Get banks list method or from dpay management system.All other processes will be done as in classic payment flow.
All requests to dpay servers should come from Europe. If you need to send requests to dpay servers from servers outside the Europe, you should contact dpay staff.
Payments Lab allows to change default logo on the gateway. Logo should be sent to dpay support ([email protected]
), in png or svg format in height of 35 px and width between 95 to 200 px.
Payments Lab allows to change default gateway style/color (green) to different. Currently supported: default (green), dark, and orange.
Default:
Dark:
Orange:
If the client_name, client_surname and email will be sent in the request, the client will be able to pay without entering the data again. Quickpayment flow currently works for Paybylink, BLIK and standard bank transfer.
transactionType required | string Default: "transfers" Type of transaction, currently required is transfers |
service required | string Default: "TestTest" Payment Point name from panel.dpay.pl |
value required | string Default: "1.00" Transaction value in PLN eg. 10.23, 451.00. |
url_success required | string Default: "https://yourwebsite.tld/success" URL that payer is redirected after successful payment |
url_fail required | string Default: "https://yourwebsite.tld/fail" URL that payer is redirected after failed/expired payment |
url_ipn required | string Default: "https://yourwebsite.tld/ipn" URL for IPN communication |
checksum required | string Default: "sha256 string" Checksum of transaction |
installment | boolean Default: true Sending true will allow client to pay in installment form. |
creditcard | boolean Default: true Sending true will allow client to pay by creditcard. |
paysafecard | boolean Default: true Sending true will allow client to pay by paysafecard. |
paypal | boolean Default: true Sending true will allow client to pay by paypal account. |
nobanks | boolean Default: false Sending true will disable Paybylink and Bank transfer method. |
channel | string Default: "" Allows to redirect client directly to bank (without dpay gateway view), also known as direct payment |
string Default: "" Client email (required for direct payments) | |
client_name | string Default: "" Client name (required for direct payments) |
client_surname | string Default: "" Client surname (required for direct payments) |
accept_tos | integer Default: 1 Required for direct payments (Shop with DirectPayments should show dpay TOS before payment with checkbox to accept, field only accepts value: 1) |
description | string Default: "Example description 123" Transaction description visible for payer on gateway |
custom | string Default: "your custom data" Custom data passed to url_ipn in Instant Payment Notification |
style | |
user_agent | string Default: "" User agent of client browser, used to detect mobile devices. |
user_ip | string Default: "" User IP address, used to detect mobile devices. |
blik_code | string Default: "" Blik code for mobile payments. Allows to accept BLIK level 0 payments. You need to include user_agent and user_ip to use this feature. |
{- "transactionType": "transfers",
- "service": "TestTest",
- "value": "1.00",
- "checksum": "sha256 string",
- "installment": true,
- "creditcard": true,
- "paysafecard": true,
- "paypal": true,
- "nobanks": false,
- "channel": "",
- "email": "",
- "client_name": "",
- "client_surname": "",
- "accept_tos": 1,
- "description": "Example description 123",
- "custom": "your custom data",
- "style": "default",
- "user_agent": "",
- "user_ip": "",
- "blik_code": ""
}
{- "error": false,
- "status": true,
- "transactionId": "00000000-0000-0000-0000-000000000000"
}
Returns transaction details
service required | string Default: "TestTest" Service name |
transaction_id required | string Default: "AAAAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE" Transaction/payment ID |
checksum required | string Default: "ca10f9defba8fd68011d332ff32c4bdaa6d561baac005feaab218de2cade1542" Checksum sha256 (service name|transaction_id|secret hash) |
{- "service": "TestTest",
- "transaction_id": "AAAAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE",
- "checksum": "ca10f9defba8fd68011d332ff32c4bdaa6d561baac005feaab218de2cade1542"
}
{- "service": "success",
- "transaction": {
- "transaction_id": "AAAAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE",
- "value": "1.00",
- "rate": 1,
- "minimal_fee": 20,
- "permanent_fee": 20,
- "status": "paid",
- "urls": {
}, - "creation_date": "2021-05-06 23:06:56",
- "payment_date": "2021-05-06 23:06:56",
- "settled": false,
- "refunded": false,
- "direct": false
}
}
Refunds transaction currently supports only full refund. Available for BLIK, BLIK BNPL, Bank Transfers, Cards.
service required | string Default: "TestTest" Service name |
transaction_id required | string Default: "AAAAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE" Transaction/payment ID |
checksum required | string Default: "ca10f9defba8fd68011d332ff32c4bdaa6d561baac005feaab218de2cade1542" Checksum sha256 (service name|transaction_id|secret hash) |
{- "service": "TestTest",
- "transaction_id": "AAAAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE",
- "checksum": "ca10f9defba8fd68011d332ff32c4bdaa6d561baac005feaab218de2cade1542"
}
Allow's to retrive information about specific withdraw.
service required | string Default: "TestTest" Service name |
timestamp required | any Default: 1652000000 UNIX timestamp, used to checksum verification. Timestamp must be less than 60 seconds ago. |
withdraw_id required | integer Default: 12345 Withdraw id |
checksum required | string Default: "ca10f9defba8fd68011d332ff32c4bdaa6d561baac005feaab218de2cade1542" Checksum sha256 (service name|timestamp|withdraw_id|secret hash) |
{- "service": "TestTest",
- "timestamp": 1652000000,
- "withdraw_id": 12345,
- "checksum": "ca10f9defba8fd68011d332ff32c4bdaa6d561baac005feaab218de2cade1542"
}
{- "id": 12345,
- "state": 0,
- "net": 1.23,
- "fee": 0.1,
- "gross": 1.33,
- "creation_date": "2022-01-10 01:01:01",
- "direct_settlement": 0,
- "paysafecard": 0,
- "nrb": "AABBBBCCCCDDDDDDDDDDDDDDDD",
- "receiver": {
- "nrb": "AABBBBCCCCDDDDDDDDDDDDDDDD",
- "title": "dpay.pl ID - title",
- "amount": 12.13,
- "service": "TestTest",
- "receiverName": "Jan Kowalski",
- "receiverAddress": "ul. Przykładowa 1A/10, 01-100 Warszawa"
}
}
{- "bank": [
- {
- "card": "0",
- "id": "24900005",
- "image": "24900005.png",
- "name": "Alior Bank"
}, - {
- "card": "0",
- "id": "16000003",
- "image": "16000003.png",
- "name": "BGŻ BNP Paribas"
}, - {
- "card": "0",
- "id": "10200003",
- "image": "10200003.png",
- "name": "iPKO"
}, - {
- "card": "0",
- "id": "10200029",
- "image": "10200029.png",
- "name": "Inteligo"
}, - {
- "card": "0",
- "id": "17500009",
- "image": "17500009.png",
- "name": "Raiffeisen Polbank"
}, - {
- "card": "0",
- "id": "11602202",
- "image": "11602202.png",
- "name": "Bank Millennium"
}, - {
- "card": "0",
- "id": "10300006",
- "image": "10300006.png",
- "name": "Citi Handlowy"
}, - {
- "card": "0",
- "id": "12400001",
- "image": "12400001.png",
- "name": "Pekao24Przelew"
}, - {
- "card": "0",
- "id": "15600013",
- "image": "15600013.png",
- "name": "Getin Bank"
}, - {
- "card": "0",
- "id": "16800007",
- "image": "16800007.png",
- "name": "Plus Bank"
}, - {
- "card": "0",
- "id": "86420002",
- "image": "86420002.png",
- "name": "Podkarpacki Bank Spółdzielczy"
}, - {
- "card": "0",
- "id": "BS,1",
- "image": "bps.png",
- "name": "BPS"
}, - {
- "card": "0",
- "id": "BS,2",
- "image": "sgb.png",
- "name": "SGB"
}, - {
- "card": "0",
- "id": "14600009",
- "image": "14600009.png",
- "name": "Noble Pay"
}, - {
- "card": "0",
- "id": "19500001",
- "image": "19500001.png",
- "name": "Płacę z Idea Bank"
}, - {
- "card": "0",
- "id": "18701045",
- "image": "18701045.png",
- "name": "nestPrzelew"
}, - {
- "card": "0",
- "id": "10500002",
- "image": "10500002.png",
- "name": "ING"
}, - {
- "card": "1",
- "id": "01010101",
- "image": "01010101.png",
- "name": "Płatność kartą"
}, - {
- "card": "0",
- "id": "15401157",
- "image": "15401157.png",
- "name": "Bank Testowy"
}
]
}
Returns banks operated by dpay for specific service.
service required | string Default: "TestTest" Service name |
timestamp required | any Default: 1652000000 UNIX timestamp, used to checksum verification. Timestamp must be less than 60 seconds ago. |
checksum required | string Default: "ca10f9defba8fd68011d332ff32c4bdaa6d561baac005feaab218de2cade1542" Checksum sha256 (service name|timestamp|secret hash) |
{- "service": "TestTest",
- "timestamp": 1652000000,
- "checksum": "ca10f9defba8fd68011d332ff32c4bdaa6d561baac005feaab218de2cade1542"
}
{- "bank": [
- {
- "card": "0",
- "id": "24900005",
- "image": "24900005.png",
- "name": "Alior Bank"
}, - {
- "card": "0",
- "id": "16000003",
- "image": "16000003.png",
- "name": "BGŻ BNP Paribas"
}, - {
- "card": "0",
- "id": "10200003",
- "image": "10200003.png",
- "name": "iPKO"
}, - {
- "card": "0",
- "id": "10200029",
- "image": "10200029.png",
- "name": "Inteligo"
}, - {
- "card": "0",
- "id": "17500009",
- "image": "17500009.png",
- "name": "Raiffeisen Polbank"
}, - {
- "card": "0",
- "id": "11602202",
- "image": "11602202.png",
- "name": "Bank Millennium"
}, - {
- "card": "0",
- "id": "10300006",
- "image": "10300006.png",
- "name": "Citi Handlowy"
}, - {
- "card": "0",
- "id": "12400001",
- "image": "12400001.png",
- "name": "Pekao24Przelew"
}, - {
- "card": "0",
- "id": "15600013",
- "image": "15600013.png",
- "name": "Getin Bank"
}, - {
- "card": "0",
- "id": "16800007",
- "image": "16800007.png",
- "name": "Plus Bank"
}, - {
- "card": "0",
- "id": "86420002",
- "image": "86420002.png",
- "name": "Podkarpacki Bank Spółdzielczy"
}, - {
- "card": "0",
- "id": "BS,1",
- "image": "bps.png",
- "name": "BPS"
}, - {
- "card": "0",
- "id": "BS,2",
- "image": "sgb.png",
- "name": "SGB"
}, - {
- "card": "0",
- "id": "14600009",
- "image": "14600009.png",
- "name": "Noble Pay"
}, - {
- "card": "0",
- "id": "19500001",
- "image": "19500001.png",
- "name": "Płacę z Idea Bank"
}, - {
- "card": "0",
- "id": "18701045",
- "image": "18701045.png",
- "name": "nestPrzelew"
}, - {
- "card": "0",
- "id": "10500002",
- "image": "10500002.png",
- "name": "ING"
}, - {
- "card": "1",
- "id": "01010101",
- "image": "01010101.png",
- "name": "Płatność kartą"
}, - {
- "card": "0",
- "id": "15401157",
- "image": "15401157.png",
- "name": "Bank Testowy"
}
]
}
Returns rules that payer should accept before direct payment.
Zapoznałem się i akceptuję <a target="_blank" href="https://dpay.pl/files.view#rules">Regulamin świadczenia usług płatniczych</a> oraz <a href="https://secure.dpay.pl/privacy" target="_blank">Politykę prywatności</a>. <br>Chcę aby usługa została zrealizowana niezwłocznie, a w przypadku odstąpienia od umowy, wiem, że nie otrzymam zwrotu poniesionych kosztów za usługi zrealizowane na moje żądanie do chwili odstąpienia od umowy.
After successful payment, you will receive an Instant Payment Notification (IPN) containing the transaction details. IPN will be sent to the URL defined in the TransactionRegister request.
The IPN schema is defined below.
id | string Default: "AAAAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE" Transaction ID |
amount | float Default: 1.23 Transaction value eg. 1.23 PLN |
type | string Default: "transfer" Transaction type eg. transfer |
attempt | integer Default: 1 IPN delivery attempt |
version | integer Default: 1 IPN version |
custom | string Default: "your custom data eg. shop transaction id" Custom data pass-through |
{- "id": "AAAAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE",
- "amount": 1.23,
- "type": "transfer",
- "attempt": 1,
- "version": 1,
- "custom": "your custom data eg. shop transaction id"
}
[- {
- "18plus": 0,
- "id": 1,
- "netto": "0.50",
- "number": "7043",
- "public": 1,
- "vat": "0.65"
}, - {
- "18plus": 0,
- "id": 2,
- "netto": "1.00",
- "number": "71700",
- "public": 1,
- "vat": "1.23"
}, - {
- "18plus": 0,
- "id": 3,
- "netto": "2.00",
- "number": "72240",
- "public": 1,
- "vat": "2.46"
}, - {
- "18plus": 0,
- "id": 4,
- "netto": "3.00",
- "number": "73313",
- "public": 1,
- "vat": "3.69"
}, - {
- "18plus": 0,
- "id": 5,
- "netto": "4.00",
- "number": "74240",
- "public": 1,
- "vat": "4.92"
}, - {
- "18plus": 0,
- "id": 6,
- "netto": "5.00",
- "number": "75550",
- "public": 1,
- "vat": "6.15"
}, - {
- "18plus": 0,
- "id": 7,
- "netto": "6.00",
- "number": "76550",
- "public": 1,
- "vat": "7.38"
}, - {
- "18plus": 0,
- "id": 8,
- "netto": "9.00",
- "number": "7943",
- "public": 1,
- "vat": "11.07"
}, - {
- "18plus": 0,
- "id": 9,
- "netto": "19.00",
- "number": "91909",
- "public": 1,
- "vat": "23.37"
}, - {
- "18plus": 0,
- "id": 10,
- "netto": "25.00",
- "number": "92505",
- "public": 1,
- "vat": "30.75"
}, - {
- "18plus": 1,
- "id": 20,
- "netto": "1.00",
- "number": "71806",
- "public": 1,
- "vat": "1.23"
}, - {
- "18plus": 1,
- "id": 21,
- "netto": "3.00",
- "number": "73806",
- "public": 1,
- "vat": "3.69"
}, - {
- "18plus": 1,
- "id": 22,
- "netto": "6.00",
- "number": "76806",
- "public": 1,
- "vat": "7.38"
}, - {
- "18plus": 1,
- "id": 23,
- "netto": "9.00",
- "number": "79806",
- "public": 1,
- "vat": "11.07"
}, - {
- "18plus": 1,
- "id": 24,
- "netto": "19.00",
- "number": "91986",
- "public": 1,
- "vat": "23.37"
}, - {
- "18plus": 1,
- "id": 25,
- "netto": "25.00",
- "number": "92596",
- "public": 1,
- "vat": "30.75"
}
]
SMS Premium code verification.
client required | string Example: 1 Client ID |
service required | string Example: 1 Service ID |
code required | string Example: A1B2C3D4 Code eg. A1B2C3D4 |
{- "code": "A1B2C3D4",
- "msisdn": 123456789,
- "net": 6,
- "net_gross": 4,
- "number": 71480,
- "revenue": 50,
- "status": true,
- "tariff": 7,
- "vat": "7.38"
}
This request allows to register new DCB payment.
guid | string Default: "EC29490E-F3AC-421C-91BF-16840E7BFF93" Service GUID |
value required | integer Default: 1023 Transaction value in PLN eg. 10.23, 451.00 times 100 => 1023, 45100. |
url_success required | string Default: "https://yourwebsite.tld/success" URL that payer is redirected after successful payment |
url_fail required | string Default: "https://yourwebsite.tld/fail" URL that payer is redirected after failed/expired payment |
checksum required | string Default: "sha256 string" Checksum of transaction |
{- "guid": "EC29490E-F3AC-421C-91BF-16840E7BFF93",
- "value": 1023,
- "checksum": "sha256 string"
}
{- "error": false,
- "status": true,
- "transactionId": "00000000-0000-0000-0000-000000000000"
}
Returns user's balance.
key | string User (service) API Key |
checksum | string Checksum created from hashed sha256 concatenation of key from dpay staff, secret user(service) api key, function name (getBalance), timestamp (same as in query param) |
timestamp | integer UNIX timestamp, used to checksum verification |
{- "status": "success",
- "message": 1.23
}
Allow's to send money directly to your Partner. Service requires special dpay staff verification and acceptance. Every payout costs 1 PLN (there is no dpay's commision, it's bank commision).
key | string User (service) API Key |
checksum | string Checksum created from hashed sha256 concatenation of key from dpay staff, secret user(service) api key, function name (getBalance), timestamp (same as in query param) |
timestamp | integer UNIX timestamp, used to checksum verification |
nrb | string Default: "AABBBBCCCCDDDDDDDDDDDDDDDD" Receiver NRB |
title | string Default: "TEST" Payout title (displayed in elixir transaction), passing TEST, Receiver will se DPAY.PL PAYOUT TEST |
receiverName | string Default: "Company sp. z o.o." Receiver name (eg. Company sp. z o.o.) |
receiverAddress | string Default: "ul. Testowa 12/13a" Receiver address (eg. ul. Testowa 12/13a) |
amount | float Default: 12.53 Transfer amount |
{- "nrb": "AABBBBCCCCDDDDDDDDDDDDDDDD",
- "title": "TEST",
- "receiverName": "Company sp. z o.o.",
- "receiverAddress": "ul. Testowa 12/13a",
- "amount": 12.53
}
{- "status": "success",
- "id": 123,
- "message": "Direct settlement/Payout sent successfully, id: 123."
}
Utilities chapter contains methods about getting information about dpay eg. PI license number.