Limits and restrictions
Information about API rate limits, amount limits for each payment method, and time restrictions.
API rate limiting
The dpay.pl API applies request limits to maintain service stability:
- The default limit is 120 requests per minute. The limit is calculated per service (Payment Point) and can be increased for your service on request.
- Responses include the
X-RateLimit-Limitheader with the current limit andX-RateLimit-Remainingwith the number of requests left in the current window. - After exceeding the limit, you receive an HTTP 429 response with
Retry-After, the number of seconds until requests are accepted again, andX-RateLimit-Reset, the reset timestamp.
If you receive a 429 response, wait for the period specified in Retry-After before retrying. Implement exponential backoff for subsequent attempts.
Amount limits
Standard payment methods
| Method | Min. amount | Max. amount | API registration currency |
|---|---|---|---|
| BLIK | 0.01 PLN | 999 999.99 PLN | PLN |
| Bank transfers (PBL) | 0.01 PLN | 999 999.99 PLN | PLN |
| Payment cards | 0.01 PLN | 999 999.99 PLN | PLN |
| Google Pay | 0.01 PLN | 999 999.99 PLN | PLN |
| Apple Pay | 0.01 PLN | 999 999.99 PLN | PLN |
MB WAY (transactionType: mb_way_direct) | 0.01 EUR | 999 999.99 EUR | EUR |
Bizum (transactionType: bizum_direct) | 0.01 EUR | 999 999.99 EUR | EUR |
| Czech banks (white-label) | 0.01 CZK | 999 999.99 CZK | CZK |
| Slovak banks (white-label) | 0.01 EUR | 999 999.99 EUR | EUR |
When registering a transaction through the API, use PLN for most payment methods. Use EUR for MB WAY (transactionType: mb_way_direct), Bizum, and Slovak banks, and CZK for Czech banks. PLN is not accepted for MB WAY. Any other combination results in a registration error.
Independently, a service (Payment Point) can be configured with any of these currencies: PLN, EUR, CZK, USD, RON. currency_code must be one of the currencies enabled for the service.
Actual transaction limits may be lower and depend on your account configuration in the dpay.pl panel. Contact support to configure limits appropriate for your business.
Direct Carrier Billing (DCB)
DCB has specific limits imposed by mobile operator regulations:
| Operator | Daily limit | Monthly limit |
|---|---|---|
| Various operators | Operator-dependent | Operator-dependent |
DCB limits are set by mobile operators and can vary based on:
- Customer account type (pre-paid or post-paid)
- Customer transaction history
- The operator's policy
If a limit is exceeded, the operator declines the payment. Offer the customer an alternative payment method.
SMS Premium
SMS Premium limits depend on the premium number and its configuration in the dpay.pl panel.
Time restrictions
| Element | Validity period |
|---|---|
| BLIK code | About 2 minutes from generation |
| Payment session (gateway) | Up to 15 minutes |
| SMS Premium code | Single-use, no time limit |
| Refund eligibility | 180 days from the transaction date (BLIK: 179 days; PBL transfers: no time limit) |
| IPN retries | Up to 10 attempts (about 17 hours) |
Refund limits
| Restriction | Value |
|---|---|
| Maximum refund period | 180 days from the transaction date for cards, MB WAY, PayPo, and Twisto; 179 days for BLIK; no time limit for PBL transfers |
| Refund amount | Cannot exceed the transaction amount |
| Partial refunds | The sum of all refunds must not exceed the original amount |
| Number of refunds | PayPo and Twisto: only one full or partial refund; other methods: multiple partial refunds |
For details, see Refunds.
Recommendations
- Implement retries with backoff: do not send requests in a loop without delays
- Cache data: avoid repeatedly querying the API for the same information
- Monitor 429 responses: if you receive them regularly, optimize your request frequency
- Inform customers about DCB limits: display an appropriate message and offer an alternative payment method