Przelewy24

Przelewy24 is a Poland-based real-time online bank transfer payment method, often referred to as P24. As one of the country’s most popular payment options, it supports payments from 165 Polish banks and is accepted by over 150,000 merchants worldwide. Consumers simply select their bank and log into their online banking to complete payment. Learn more about Przelewy24.

Payment method properties

MarketsPL
Processing currenciesEUR PLN
Consumer currenciesEUR PLN
Settlement currenciesEUR PLN
Authentication methodsREDIRECT
Authentication timeout
Minimum payment amount0.01 PLN or EUR equivalent
Maximum payment amount55,000.00 PLN or EUR equivalent
Payment instrumentBANK_ACCOUNT
Recurring paymentsNo
Separate capturesNo
RefundFull - Partial - Multiple
Refund validity365 days
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:

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 with the available authentication methods:

{
  "id": "charge_Y3JVzvEaJpvG53xd2R2Zt",
  "paymentMethod": "P24",
  "paymentMedium": "ECOMMERCE",
  "scheduleType": "UNSCHEDULED",
  "instrumentId": "instr_Asu0ig2PXXZSiNrhY44A5",
  "currency": "PLN",
  "country": "PL",
  "status": "AUTHENTICATION_PENDING",
  "consumer": {
    "country": "PL"
  },
  "authenticationMethods": [
    {
      "details": {
        "requestUrl": "https://redirection-target.ppro.com",
        "requestMethod": "GET"
      },
      "type": "REDIRECT"
    }
  ],
  "authorizations": [
    {
      "id": "authz_aPobet0FNZNU1bYqfexFd",
      "amount": 1000,
      "status": "AUTHENTICATION_PENDING",
      "createdAt": "2025-06-21T08:34:20.766Z",
      "updatedAt": "2025-06-21T08:34:20.766Z"
    }
  ],
  "captures": [],
  "refunds": [],
  "voids": [],
  "createdAt": "2025-06-21T08:34:20.114Z",
  "updatedAt": "2025-06-21T08:34:20.766Z",
  "_links": {
    "authorizations": {
      "href": "/v1/payment-charges/charge_Y3JVzvEaJpvG53xd2R2Zt/authorizations"
    },
    "captures": {
      "href": "/v1/payment-charges/charge_Y3JVzvEaJpvG53xd2R2Zt/captures"
    },
    "refunds": {
      "href": "/v1/payment-charges/charge_Y3JVzvEaJpvG53xd2R2Zt/refunds"
    },
    "voids": {
      "href": "/v1/payment-charges/charge_Y3JVzvEaJpvG53xd2R2Zt/voids"
    }
  }
}

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 be presented with the payment slip (voucher) and instructions to complete the payment.

Handling the payment result

REDIRECT

  1. After the consumer completes the payment, they are redirected to the returnUrl specified in the payment charge creation request.
  2. Upon redirect back to your site, retrieve the latest payment status by performing a GET /v1/payment-charges/{paymentChargeId}. Use the returned status field to determine and display the final payment outcome to the consumer.
  3. Additionally, webhooks are triggered to notify you of the payment result. This ensures you receive the outcome even if the consumer closes their browser or fails to return to your website.

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_Asu0ig2PXXZSiNrhY44A5",
  "details": {
    "bankName": "BLIK",
    "bankCode": "154"
  },
  "type": "BANK_ACCOUNT"
}