Przelewy24(P24)

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

Payment Method Properties

CategoryBank Transfer
MarketsPL
One-time paymentsYes
Recurring paymentsNo
Processing currenciesEUR, PLN
Consumer currenciesEUR, PLN
Settlement currenciesEUR, PLN
Minimum payment amount0.01 PLN
Maximum payment amount55,000.00 PLN
Refund- Full - Partial - Multiple Partial
Refund validity365 days
CapturesNo
ChargebackNo
Sandbox availabilityPPRO provided

Make a P24 payment

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

Data FieldRequiredDescription
paymentMethodYP24REST
amount.valueYThe amount to be paid in the smallest units of the currency used.
amount.currencyYPLN The currency used for the payment
consumer.nameYFull name of the consumer
consumer.countryYThe country where the consumer is shopping
consumer.emailYEmail of the consumer
authenticationSettings: REDIRECT
settings.returnUrl
YSpecify the URL to which the consumer should be redirected after completing the payment

Request

POST /v1/payment-charges

{
    "paymentMethod": "P24REST",
    "amount": {
        "value": 100,
        "currency": "PLN"
    },
    "paymentDescriptor": "Payment Descriptor",
    "consumer": {
        "name": "John Smith",
        "country": "PL",
        "email": "[email protected]",
        "billingAddress": {
            "firstName": "John",
            "lastName": "Smith",
            "phoneNumber": "01522113356",
            "street": "Hellersbergstraße 14",
            "postalCode": "41460",
            "city": "Berlin",
            "region": "Berlin",
            "country": "DE"
        }
    },
    "order": {
        "orderItems": [
            {
                "name": "Product Name 1",
                "quantity": 1,
                "amount": 100
            }
        ]
    },
    "authenticationSettings": [
        {
            "type": "REDIRECT",
            "settings": {
                "returnUrl": "https://www.ppro.com/"
            }
        }
    ]
}

Response

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

{
    "id": "charge_PfNx0bBEt2jrhEAKnzzuG",
    "paymentMethod": "P24REST",
    "paymentMedium": "ECOMMERCE",
    "scheduleType": "UNSCHEDULED",
    "instrumentId": "instr_PxrXFvR0tFTSygPuvJCJV",
    "currency": "PLN",
    "country": "PL",
    "paymentDescriptor": "Payment Descriptor",
    "status": "AUTHENTICATION_PENDING",
    "consumer": {
        "name": "John Smith",
        "email": "[email protected]",
        "country": "PL",
        "billingAddress": {
            "firstName": "John",
            "lastName": "Smith",
            "phoneNumber": "01522113356",
            "street": "Hellersbergstraße 14",
            "postalCode": "41460",
            "city": "Berlin",
            "region": "Berlin",
            "country": "DE"
        }
    },
    "order": {
        "orderItems": [
            {
                "name": "Product Name 1",
                "quantity": 1,
                "amount": 100
            }
        ],
        "industryData": []
    },
    "authenticationMethods": [
        {
            "details": {
                "requestUrl": "https://authman.sandbox.lp-pl.ppro.com/v0/redirections/forward?redirection_token=eyJhbGciOiJIUzUxMiJ9.eyJzZXNzaW9uIjp7InIiOiJjaGFyZ2VfUGZOeDBiQkV0MmpyaEVBS256enVHIn19.wRRPBKnAlZVKxVVivCilaMn0eTFHZ47DYViM0qR8zGUxrexvJT4eX95EGEZg8v_CaJd3zQG18u837wXOHE0bVw",
                "requestMethod": "GET"
            },
            "type": "REDIRECT"
        }
    ],
    "authorizations": [
        {
            "id": "authz_dvSruB89emFl5VtH92hU3",
            "amount": 100,
            "status": "AUTHENTICATION_PENDING",
            "createdAt": "2025-01-06T17:00:57.198Z",
            "updatedAt": "2025-01-06T17:00:57.198Z"
        }
    ],
    "captures": [],
    "refunds": [],
    "voids": [],
    "createdAt": "2025-01-06T17:00:56.774Z",
    "updatedAt": "2025-01-06T17:00:57.198Z",
    "_links": {
        "authorizations": {
            "href": "/v1/payment-charges/charge_PfNx0bBEt2jrhEAKnzzuG/authorizations"
        },
        "captures": {
            "href": "/v1/payment-charges/charge_PfNx0bBEt2jrhEAKnzzuG/captures"
        },
        "refunds": {
            "href": "/v1/payment-charges/charge_PfNx0bBEt2jrhEAKnzzuG/refunds"
        },
        "voids": {
            "href": "/v1/payment-charges/charge_PfNx0bBEt2jrhEAKnzzuG/voids"
        }
    }
}

Consumer Authentication

P24 requires authentication by the consumer, which they do via their bank's online environment. You will need to redirect their browser to P24's payment page using the link provided in the requestUrl field of the REDIRECT authentication method response. On P24's payment page to choose their bank

The payment charge will remain in the AUTHENTICATION_PENDING state until the consumer logs into their bank and approves the payment. After this, the charge will transition to the CAPTURED state.

Handling the Payment Result

The consumer will be redirected to the authenticationMethods.settings.returnUrl provided in the initial payment charge creation request, depending on whether the authorization is a success, a failure, or if the user cancelled/aborted the flow.

If the consumer fails to authenticate the payment within the timeout window, the charge will transition to the DISCARDED state.

You can receive webhooks for all changes to the payment charge state and use these to build business logic such as delivering the goods when the charge is CAPTURED.