Przelewy24

Integrate Przelewy24 and allow consumers to pay in various ways, such as online bank transfers, e-wallet, or installments.

Payment method properties

MarketsPL
Processing currenciesEUR PLN
Consumer currenciesEUR PLN
Settlement currenciesEUR PLN
Minimum payment amount0.01 PLN
Maximum payment amount55,000.00 PLN
Payment instrument
Recurring paymentsNo
Separate capturesNo
RefundFull - Partial - Multiple
Refund validity365 days
CapturesNo
DisputesNo
Sandbox availabilityPrzelewy24 sandbox

Consumer bank selection

In the Przelewy24 payment flow, the consumer selects their online bank or payment method and is then redirected to their bank's online environment to approve the payment.

Przelewy24 supports providing the consumer’s preferred bank by including the bankCode in the request. This allows you to bypass the Przelewy24 bank selection page.

bankCodeBank
25mBank - mTransfer
94Euro Bank
102Raiffeisen Bank PBL
135Płac ̨e z IKO
146Płac ̨e z Orange
154BLIK
177U ̇zyj przedpłaty
178Przekaz tradycyjny
1000Przekaz/Przelew tradycyjny

Make a Przelewy24 payment

Przelewy24 payments follow our standardized REDIRECT payment flow. However, we recommend including all relevant settings for any authentication methods you support.

To make a Przelewy24 payment, you'll need to provide the following data at minimum when calling our /v1/payment-charges API:

Data FieldDescription
paymentMethodP24
amount.valueThe amount to be paid in the smallest units of the currency used.
amount.currencyPLN
consumer.nameFull name of the consumer.
consumer.countryThe country where the consumer is shopping.
consumer.emailEmail of the consumer.
authenticationSettings: REDIRECT
settings.returnUrl
Add the url where the consumer should be redirected to after they complete the payment. Required for the REDIRECT payment flow.
ument: BANK_ACCOUNT
details.bankCode
Providing the bankCode will bypass the bank selection. Optional and must meet the conditions listed above.

Request

POST /v1/payment-charges

{
  "paymentMethod": "P24",
  "amount": {
    "value": 1000,
    "currency": "PLN"
  },
  "consumer": {
    "name": "John Smith",
    "country": "PL",
    "email": "[email protected]"
  },
  "instrument": {
    "type": "BANK_ACCOUNT",
    "details": {
      "bankCode": "25" //optional
    }
  },
  "authenticationSettings": [
    {
      "type": "REDIRECT",
      "settings": {
        "returnUrl": "https://www.webshop.com/order-results-page"
      }
    }
  ]
}

Response

You'll receive our standard payment charge response (see potential responses in the API Reference)

{
  "id": "charge_X0O78tadFHrZCbGhkycPk",
  "status": "AUTHENTICATION_PENDING",
  
  // ...
  
  "authenticationMethods": [
    {
      "type": "REDIRECT",
      "details": {
        "requestUrl": "https://redirection-target.ppro.com",
        "requestMethod": "GET"
      }
    }
  ]
}

Pick the desired authentication method

REDIRECT

  1. Redirect your consumer to the returned $.authenticationMethods[?(@.type == "REDIRECT")].details.requestUrl.
    For example, with the value of https://redirection-target.ppro.com/ using the returned $.authenticationMethods[?(@.type == "REDIRECT")].details.requestMethod HTTP method.
  2. The consumer will finalize the payment process on the redirected page.

Handling the payment result

REDIRECT

  1. Once the consumer has confirmed the payment, they are redirected to the returnUrl provided in the initial payment charge creation request.
  2. After the consumer is redirected back to your site, check the payment status by making a GET /v1/payment-charges/{paymentChargeId}. Use the Status that you received to display the payment outcome to the consumer.
  3. Webhooks are also sent to inform you of the payment outcome. If the shopper closes the browser and doesn't return to your website, you can rely on webhooks to receive the payment result.

Payment instrument

An instrument of type BANK_ACCOUNT will be created for Przelewy24 payments where the consumers chosen bank will be returned.

Request

GET /v1/payment-instruments/{instrument-id}

Response

{
  "id": "instr_LlSIQh8ddrKUF1ohX9bZT",
  "details": {
    "bankName": "BLIK",
    "bankCode": "154"
  },
  "type": "BANK_ACCOUNT"
}

Account on file

To streamline future Przelewy24 transactions, include the instrumentId in your requests. This allows for bypassing of the bank selection step and route the payment directly using the associated bankCode.