Skip to main content

FAQ

General

What is dpay.pl?

dpay.pl is a payment gateway that enables accepting online payments. It supports multiple 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 click Register. After filling out the form, you will receive an email with an activation link. For a detailed description of the process, see Registration.

How long does account verification take?

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

Does dpay.pl offer a test environment (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?

Main API:

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

For Direct Carrier Billing:

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

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

The Secret Hash is a private key used to generate checksums. You can find it in the panel: Payment Points > Your point > Technical settings.

caution

Never share your Secret Hash publicly. Do not include it in frontend code or in a code repository.

I'm getting an "Invalid checksum" error. What should I do?

Most common causes:

  1. Incorrect field order - verify that the fields are in the correct order (see Generating checksum)
  2. Wrong Secret Hash - make sure you are using the current key from the panel
  3. Extra whitespace - check that the values do not contain spaces or newline characters
  4. Wrong separator - use the | (pipe) separator everywhere

How do I test IPN locally?

Use a tunneling tool such as ngrok:

ngrok http 3000

Use the generated address (e.g. https://abc123.ngrok.io/api/ipn) as the url_ipn in your test requests.

Can I pass URLs dynamically?

Yes. The url_success, url_fail and url_ipn fields can be provided in each API request. Values passed in the request take priority over the settings configured in the panel.

What format should the amount be in?

For most payment methods, use a string with a decimal point: "29.99".

The exception is DCB (Direct Carrier Billing), where the amount is specified in grosz (cents): "1023" means 10.23 PLN.


Payments

What payment methods does dpay.pl support?

  • BLIK (one-time code)
  • BLIK BNPL (deferred payment)
  • Bank transfers (Pay-by-Link)
  • Payment cards (Visa, Mastercard) - via gateway or S2S
  • Google Pay
  • Apple Pay
  • MB WAY (Portugal)
  • Bizum (Spain)
  • Czech and Slovak banks (white-label)
  • Premium SMS
  • Direct Carrier Billing (DCB)

How does BLIK Level 0 work?

BLIK Level 0 allows the customer to enter a 6-digit BLIK code directly on your website, without being redirected to the gateway. This requires additional fields in the request: blik_code, user_ip, user_agent. Details: BLIK Level 0.

What does the "ER_WRONG_TICKET" error mean for a BLIK payment?

The BLIK code is invalid or has expired. BLIK codes are valid for approximately 2 minutes. Ask the customer to generate a new code in their banking app.

Can I issue a partial refund?

Yes. dpay.pl supports partial refunds for selected payment methods: BLIK, payment cards (Visa/Mastercard) and MB WAY. You can also issue multiple partial refunds for a single transaction, as long as the total refunded amount does not exceed the original amount. Details: Refunds.

How long do I have to issue a refund?

A refund can be issued within 180 days of the transaction date. After this period, a refund is no longer possible.

What currencies are supported?

CurrencyPayment methods
PLNBLIK, PBL, cards, Google Pay, Apple Pay, SMS, DCB
EURCards, Google Pay, Apple Pay, MB WAY, Bizum, Slovak banks
CZKCzech banks
USDPayment cards

IPN (Instant Payment Notification)

What is IPN?

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

What response should my IPN endpoint return?

Your endpoint must respond with HTTP status code 200 and body "OK". If it responds with a different code, dpay.pl will retry delivery.

How many times does dpay.pl retry IPN?

dpay.pl retries delivery up to 10 times with increasing delays (exponential backoff - 2, 4, 8, 16, 32, 64, 128, 256, 512 minutes). After 10 attempts, the notification will no longer be retried.

Can I manually check the transaction status?

Yes, in the panel.dpay.pl panel under the Transactions section, you can check the status of any transaction.

Why does IPN arrive with the same data multiple times?

This may be caused by:

  • Your server did not respond with a 200 status code
  • Connection timeout
  • Server-side error

Make sure your endpoint responds quickly (within a few seconds) and is idempotent (able to handle multiple notifications for the same transaction).


Security

Does my server need to support HTTPS?

Yes. All URLs (success, fail, IPN) must use the HTTPS protocol. dpay.pl will not send notifications to HTTP addresses.

How do I verify the IPN signature?

Generate a SHA-256 hash from the concatenation of IPN fields and your Secret Hash, then compare the result with the signature field. Details: IPN handling.

Can I store card data on my server?

No. Never store raw card data (numbers, CVV, expiration dates). Card data should be encrypted with RSA in the customer's browser and transmitted to dpay.pl in encrypted form.

What is 3D Secure?

3D Secure is an additional layer of card payment authorization. The customer's bank may require additional confirmation (e.g. via SMS code). dpay.pl handles 3DS automatically - if the bank requires it, the API will return redirect data.


Admin panel

How do I check the transaction history?

Log in to panel.dpay.pl and go to the Transactions section. You can filter by date, status, amount and transaction ID.

How do I change the URLs (success, fail, IPN)?

Go to Payment Points > Your point > Technical settings and update the relevant fields. Remember that URLs passed dynamically in the API request take priority.

How do I generate a new Secret Hash?

Go to Payment Points > Your point > Technical settings and click Generate new. Remember that after changing the Secret Hash, you must also update it in your server configuration.

warning

After generating a new Secret Hash, the old key stops working immediately. Plan the change to avoid disruptions in payment processing.


Contact

If you did not find the answer to your question: