Przelewy24

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

Payment Method Properties

Available country codesPL
Processing (Presentation) currenciesEUR, PLN
Settlement currenciesEUR, PLN
Consumer currenciesPLN
Channel member tagp24
Scheme name in the settlement filePrzelewy24
Minimum transaction amountPLN 0.01, EUR 0.01
Maximum transaction amountPLN 55,000 or EUR equivalent
Session timeout1 hour
RefundFull, partial and multiple partial refunds are all available.
Refund Validity365 days
ChargebackNo
Integration TypeAsynchronous
SandboxPPRO-hosted

Transaction Flow

  1. The consumer selects the payment method on the merchant checkout page.
  2. They are redirected to the P24 payment page where they choose their bank or provide their BLIK code.
  3. They are redirected to the bank’s online banking portal.
  4. To confirm the transaction, the consumer logs in to the online banking portal.
  5. They are redirected back to the merchant’s website for payment confirmation.

P24 Integration

Specific input parameters for the TRANSACTION call

Field NameM/O/CTypeDescription
specin.emailMasciiThe email address of the account holder.
Maximum of 50 characters.
specin.p24methodOasciiThe numeric identifier of the bank. Used for bypassing the P24 HPP and redirecting to a pre-selected banking page.

The values for this SPECIN are retrieved via the REQUESTDATA call; this is documented below.
specin.termsacceptedOasciiDetermines whether the GDPR page is displayed before the payment page.

Possible values:

- 0 (default): The GDPR page is shown

- 1: The GDPR page is not shown

For standard input parameters, see Input parameters for the TRANSACTION call.

This payment method supports the dynamic descriptor field (see The dynamic descriptor).

Retrieving bank information with a REQUESTDATA call

If specin.p24method is passed with a TRANSACTION call and contains a valid bank identifier, the bank selection page will be bypassed. The consumer will be redirected to that bank directly.

👍

Note

If an invalid value is sent for specin.p24method, the consumer is redirected to the P24 bank selection page.

You can retrieve valid values for specin.p24method through a REQUESTDATA call with the same channel, tag, and countrycode parameters as for the TRANSACTION call. Set the resource to p24methods.

returnmode=urlencodeext
&txtype=REQUESTDATA
&login=YOURLOGIN
&password=YOURPASSWORD
&contractid=YOURCONTRACTID
&channel=livechannel
&tag=p24
&resource=p24methods
STATUS=SUCCEEDED
&TYPE=contentType
&CONTENT=content
STATUS=FAILED
&ERRMSG=Oh+no

The REQUESTDATA output parameter TYPE will be application/JSON, and CONTENT will be a JSON structure containing information about available banks.

CONTENT:
{"resource": "p24methods",
 "specin": "p24method",
 "p24methods": [
 {
 "name": "BLIK - PSP",
 "p24method": "154"
  },
  {
  "name": "Euro Bank",
  "p24method": "94"
  },
  {
  "name": "mBank - mTransfer",
  "p24method": "25"
  },
  {
  "name": "Płac ̨e z IKO",
  "p24method": "135"
  },
  {
  "name": "Płac ̨e z Orange",
  "p24method": "146"
  },
  {
  "name": "Przekaz tradycyjny",
  "p24method": "178"
  },
  {
  "name": "Raiffeisen Bank PBL",
  "p24method": "102"
  },
  {
  "name": "U ̇zyj przedpłaty",
  "p24method": "177"
  },
  {
  "name": "Przekaz/Przelew tradycyjny",
  "p24method": "1000"
  }
]
}

The JSON field p24methods reflects what you must pass as an optional input parameter to the TRANSACTION call to bypass the bank selection page.

Request p24methods data for every contractid separately.

Cache the list based on the value of contractid. Fetch a new one if the cached list gets too old, for example, 15 minutes. If fetching a list fails, continue to use the previous list.

Example: Sending specin.p24method=25 as part of a P24 API call redirects the consumer to the bank page.

👍

Note

Due to the General Data Protection, P24 requires that the consumers accept their terms and conditions as an intermediate redirect before redirecting to the bank page.

Specific output parameters for the TRANSACTION call

Field NameTypeDescription
specout.p24descriptorA P24-generated payment descriptor. It contains the dynamic descriptor specin (subject to truncation).
specout.p24methodThe numeric identifier of the payment scheme or bank used for the payment. P24 assigns this number once the transaction succeeded.
specout.p24methodnameFriendly name of the payment scheme or bank used for the payment. It is assigned together with the above output parameters if current information of available payment methods could be retrieved from the scheme

For standard output parameters, see Output parameters for the TRANSACTION call.

TRANSACTION call input

tag=p24
&txtype=TRANSACTION
&countrycode=PL
&currency=PLN
&amount=1055
&merchanttxid=bAnr8kK2GmJf
&login=johndoe
&password=wXBrpVporFVjGO4R
&contractid=JOHNDOE
&channel=testchannel
&merchantredirecturl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Flanding.php
&notificationurl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Fnotification.php
&specin.dynamicdescriptor=DynDescriptor&accountholdername=Tester%20Doe
&specin.email=test%40gmx.de
&returnmode=urlencodeext

TRANSACTION call output

REQUESTSTATUS=SUCCEEDED
&STATUS=SUCCEEDED
&TXID=598968946
&ERRMSG=
&CHANNEL=testchannel
&TAG=p24
&PAYMENTGUARANTEE=NONE
&REDIRECTSECRET=CwbROPqA2Fc90AviHtOtAC0dAdeh37xb
&SPECOUT.P24DESCRIPTOR=P24-H99-999-999 ABC1234 Dynamic
&SPECOUT.P24METHOD=25
&SPECOUT.P24METHODNAME=mBank - mTransfer
&SPECOUT.SRCCOUNTRY=PL

Additional information

We report the name of the merchant in the transaction. The API parameter is merchantLabel.

Branding Guidelines

For more information about branding, see the P24 branding guidelines.

FAQ

How does currency conversion work when charging a Polish consumer in EUR?

The consumer pays in PLN based on an exchange rate calculated by P24 based on FX feeds from a number of sources. PPRO presents and settles in EUR, with the consumer paying any FX margin.

What happens if a P24 bank goes down?

P24 disables or removes a bank that is either in maintenance or down at the time the consumer loads the P24 paywall. The bank is also not returned in the REQUESTDATA call for the p24methods resource. PPRO recommends caching the data from the REQUESTDATA call once every ~15 minutes to ensure an up-to-date banklist is available.