Skip to main content

FAQ

General

What is dpay.pl?

dpay.pl is a payment gateway for accepting online payments. It supports many payment methods, including BLIK, bank transfers, payment cards, Google Pay, Apple Pay, Premium SMS and Direct Carrier Billing.

How do I create an account?

Go to panel.dpay.pl and select Register. After you complete the form, you will receive an email with an activation link. See Registration for the full process.

How long does account verification take?

The verification process (KYC) usually takes 1–2 business days. During that time, our team reviews the submitted documents.

Does dpay.pl provide a sandbox?

Yes. After registration, you can test the integration without charging real accounts. Contact technical support through the panel to obtain test credentials.


Technical integration

What is the API base URL?

Payment registration and BLIK operations:

https://api-payments.dpay.pl/api/v1_0/payments/

Transaction operations such as refunds, details, payouts and bank lists:

https://panel.dpay.pl/api/v1/

Direct Carrier Billing:

https://secure.dpay.pl/dcb/

What is the Secret Hash and where can I find it?

The Secret Hash is a private key used to generate checksums. In the panel, go to Payment Points > Services, open the relevant service and scroll to the bottom of the page.

caution

Never disclose the Secret Hash. Do not include it in frontend code or commit it to a source-code repository.

I receive an "Invalid checksum" error. What should I do?

The most common causes are:

  1. Incorrect field order — verify the order against Checksum generation.
  2. Incorrect Secret Hash — make sure you use the current key from the panel.
  3. Extra whitespace — check for spaces and newline characters in values.
  4. Incorrect separator — use the | (pipe) separator throughout.

How do I test IPN locally?

Use a tunnelling tool such as ngrok:

ngrok http 3000

Pass the generated address, for example https://abc123.ngrok.io/api/ipn, as url_ipn in test requests.

Where do I provide the success, failure and IPN URLs?

Pass url_success, url_fail and url_ipn in every payment registration request. All three fields are required. They are not configured in the panel; only the values sent with each transaction apply.

What amount format should I use?

For most payment methods, send a string with a decimal point, for example "29.99".

DCB (Direct Carrier Billing) is the exception: provide the amount in grosz, so "1023" means PLN 10.23.


Payments

Which payment methods does dpay.pl support?

  • BLIK one-time codes
  • BLIK BNPL (deferred payment)
  • Pay-by-Link bank transfers
  • Visa and Mastercard cards through the gateway or S2S
  • Google Pay
  • Apple Pay
  • MB WAY in Portugal
  • Bizum in Spain
  • Czech and Slovak banks through white-label integration
  • Premium SMS
  • Direct Carrier Billing (DCB)

How does BLIK Level 0 work?

BLIK Level 0 lets the customer enter a six-digit BLIK code directly on your website without being redirected to the gateway. The request requires blik_code, user_ip and user_agent. See BLIK Level 0.

A BLIK payment was declined. How do I identify the reason?

For a declined payment, additionalInfo.error contains the raw BLIK rejection code passed through unchanged. The set is open and can include values such as USER_DECLINED, TIMEOUT or INSUFFICIENT_FUNDS. A BLIK code is valid for about two minutes; if it has expired, ask the customer to generate a new code in their banking app. See Error codes.

Can I issue a partial refund?

Yes. For BLIK, Visa and Mastercard cards, MB WAY and Pay-by-Link, you can issue multiple partial refunds until their total reaches the original transaction amount. PayPo and Twisto support one refund, either full or partial. See Refunds.

How long do I have to issue a refund?

The 180-day limit applies to card, MB WAY, PayPo and Twisto payments; for BLIK, the effective limit is 179 days. Pay-by-Link bank-transfer refunds do not have a time limit.

Which currencies are supported?

Currencies available in the payment registration API:

CurrencyPayment methods
PLNBLIK, Pay-by-Link, cards, Google Pay, Apple Pay, Premium SMS, DCB
EURMB WAY, Bizum, Slovak banks
CZKCzech banks
Paying in the card currency (DCC)

An eligible foreign cardholder can use Dynamic Currency Conversion to pay in the card's currency. You still register the transaction in PLN; the conversion is offered during payment.


IPN (Instant Payment Notification)

What is IPN?

IPN is an automatic HTTP POST notification sent by dpay.pl to your server after a transaction status changes. It is the only reliable source of payment status information.

What should my IPN endpoint return?

Your endpoint must respond with HTTP 200 and the body "OK". dpay.pl retries delivery if the endpoint returns a different status code.

How many times does dpay.pl retry IPN delivery?

dpay.pl makes up to 10 delivery attempts with exponential backoff: 2, 4, 8, 16, 32, 64, 128, 256 and 512 minutes. After the tenth attempt, the notification is no longer retried.

Can I check a transaction status manually?

Yes. Sign in to panel.dpay.pl, open Transactions and find the relevant transaction.

Why do I receive the same IPN payload more than once?

Common reasons include:

  • your server did not return HTTP 200;
  • a connection timeout;
  • a server-side error.

Make the endpoint respond within a few seconds and ensure it is idempotent, so it can safely process the same transaction notification more than once.


Security

Does my server need to support HTTPS?

Yes. All success, failure and IPN URLs must use HTTPS. dpay.pl does not send notifications to HTTP addresses.

How do I verify the IPN signature?

Generate SHA-256 from the required IPN fields and your Secret Hash, then compare it with the signature field. See IPN handling.

Can I store card data on my server?

No. Never store raw card numbers, CVVs or expiry dates. Encrypt card data with RSA in the customer's browser and send only the encrypted value to dpay.pl.

What is 3D Secure?

3D Secure is an additional card-payment authentication layer. The cardholder's bank can require another confirmation step, such as an SMS code. dpay.pl handles 3DS automatically and returns redirect data when the bank requires authentication.


Admin panel

How do I view transaction history?

Sign in to panel.dpay.pl and open Transactions. You can filter by date, status, amount and transaction ID.

How do I change the success, failure and IPN URLs?

These URLs are not configured in the panel. Pass url_success, url_fail and url_ipn in every payment registration request; change the values sent by your application when needed.

How do I generate a new Secret Hash?

Go to Payment Points > Services, open the relevant service, scroll to the bottom and use the key regeneration option. After changing the Secret Hash, update your server configuration as well.

warning

The old Secret Hash stops working immediately after a new one is generated. Plan the change to avoid an interruption in payment processing.


Contact

If you did not find the answer you need: