Skip to main content

BLIK Recurring

BLIK Recurring lets you charge the buyer without their involvement (MIT – Merchant Initiated Transaction). First, the buyer makes a payment (CIT – Customer Initiated Transaction) that registers a PAYID payment token.

Important Information

To activate the service, sign an annex to your agreement.


Before integrating, read the documentation and requirements on the BLIK Recurring Payments page.


The buyer can delete the token in their bank. A deleted token no longer appears in the list of available tokens.

General Information about BLIK Recurring Payments​

After the PAYID token is saved, the merchant can initiate recurring transactions and decide on their frequency and amount. In this model:

  • The merchant can initiate transactions with variable amounts and frequencies.
  • The maximum amount of a single transaction is PLN 2,000. Transactions above this limit are automatically declined.
  • If the buyer has insufficient funds, a limit is exceeded, the bank does not support recurring payments, or another technical issue occurs, the system returns an appropriate error and the payment is not retried automatically – the merchant is responsible for retrying the payment.

In this model, the merchant assumes responsibility for potential fraud. The merchant confirms this by setting the recommendedAuthLevel parameter to NO_CONFIRMATION.

Refund of Activation Charges

Currently, you cannot register a recurring payment with a zero amount. If the activation involves charging the buyer and it is not a fee for a service, the merchant must refund the activation charge.

Security Requirements and Recommendations​

Before integrating the service, read the requirements and recommendations from our security experts. They help you protect against fraud.

BLIK Recurring Payment with PAYID Token Registration​

To register a PAYID token, extend the standard order with a buyer section containing the extCustomerId and email fields, and with a payMethods section containing the blikData object with register set to true. In blikData, also include the recurring object that specifies the payment type.

Important Request Body Sections
{
...
"buyer": {
"extCustomerId": "<buyer identifier in the merchant system>",
"email": "<buyer email address>"
},
"totalAmount": <activation amount>,
"payMethods": {
"payMethod": {
"type": "BLIK_AUTHORIZATION_CODE",
"value": "<BLIK authorization code>",
"blikData": {
"aliasLabelProposal": "<recurring payment title>",
"register": true,
"recurring": {
"type": "O",
"initializationDate": "<first MIT transaction date>",
"expirationDate": "<PAYID token expiration date>"
}
}
}
}
}

For details about the parameters, see the Create an Order section in our API Reference.

Additional Information

If you manage your buyers' tokens yourself, include the generated PAYID token value in the registerTokenValue field. Otherwise, omit this parameter during token registration – PayU generates a unique value automatically.


The initializationDate and expirationDate parameters are optional.


The aliasLabelProposal value should be easy for the buyer to recognize and clearly refer to the specific recurring transaction.


You can include the optional authorizeDespiteRecurringNotSupported parameter (default: false). It specifies whether the BLIK transaction should be processed even if the buyer's bank does not support BLIK recurring payments.

If the request is sent for a bank that does not support BLIK recurring payments, PayU returns the AUTH_TOKEN_TYPE_NOT_SUPPORTED_BY_ISSUER error (see the table below).

HTTP StatusDescription
400
ERROR_AUTHORIZATION_CODE / AUTH_CODE_EXPIRED
The authorization code has expired.
400
ERROR_AUTHORIZATION_CODE / AUTH_CODE_LIMIT_EXCEEDED
The authorization code limit has been exceeded.
400
ERROR_AUTHORIZATION_CODE / AUTH_CODE_CANCEL
The authorization code has been canceled.
400
ERROR_AUTHORIZATION_CODE / AUTH_CODE_USED
The authorization code has already been used.
400
ERROR_AUTHORIZATION_CODE / AUTH_CODE_INVALID
Invalid authorization code.
400
ERROR_VALUE_MISSING / MISSING_AUTHORIZATION_CODE
Validation error. The BLIK T6 authorization code is required for authorization.
400
ERROR_VALUE_INVALID / INVALID_BLIK_CODE
Invalid BLIK authorization code. It must consist of 6 digits.
400
ERROR_VALUE_INVALID / INVALID_AUTHORIZATION_CODE_USAGE
The authorizationCode field cannot be used in this context.
400
ERROR_VALUE_INVALID / INVALID_RECOMMENDED_AUTH_LEVEL_USAGE
The recommendedAuthLevel field cannot be used in this context.
400
ERROR_VALUE_INVALID / INVALID_APP_KEY_USAGE
The appKey field cannot be used in this context.
400
ERROR_VALUE_MISSING / MISSING_REGISTER_TOKEN_VALUE
The registerTokenValue field is required for merchants who manage their own tokens.
400
ERROR_VALUE_MISSING / INVALID_CURRENCY_CODE
Invalid currency code.
400
ERROR_VALUE_MISSING / MISSING_BUYER_EMAIL
Validation error. The email field is missing in the buyer section.
400
ERROR_VALUE_MISSING / MISSING_BUYER_EXT_CUSTOMER_ID
Validation error. The extCustomerId field is missing in the buyer section.
400
ERROR_VALUE_INVALID / INVALID_COUNTRY_CODE
Validation error in the countryCode field of the blikData section. An unsupported country code was used.
400
ERROR_VALUE_INVALID / INVALID_BLIK_RECURRING_TYPE
Validation error in the type field of the recurring section. An unsupported type was used.
400
ERROR_VALUE_INVALID / MISSING_ALIAS_LABEL_PROPOSAL
Validation error. The aliasLabelProposal field is missing in the blikData section.
400
ERROR_VALUE_INVALID / INVALID_INITIALIZATION_DATE
Validation error in the initializationDate field of the recurring section. The date cannot be later than the expirationDate value.
400
ERROR_VALUE_INVALID / INVALID_EXPIRATION_DATE
Validation error in the expirationDate field of the recurring section. The date cannot be in the past or earlier than the initializationDate value. If set, it cannot be more than 10 years in the future.
400
ERROR_TOKEN / AUTH_TOKEN_EXISTS
The token registration failed because the token already exists.
400
BUSINESS_ERROR / RECURRING_TOKEN_PAYMENT_NOT_ALLOWED
PayU has not enabled the recurring payment service for you.
400
ERROR_TOKEN / AUTH_TOKEN_TYPE_NOT_SUPPORTED_BY_ISSUER
The token cannot be registered because the selected bank does not support recurring payments.

BLIK Recurring Payment with PAYID Token​

To initiate a subsequent BLIK recurring payment, extend the standard order with a payMethods section containing the PAYID token and the blikData object. In blikData, include the bank application identifier appKey and the recurring object that specifies the request type.

Missing bankApplicationReferences Field

If the response to the request for available payment methods does not include the bankApplicationReferences field for the BLIK token (type="PAYID"), do not send the appKey field when creating a payment with this token.

Include the appKey field only if the response for the PAYID token contains the bankApplicationReferences array and its objects include the key field. In that case, use the key value as the appKey value in your payment creation request.

payMethods Section for Recurring Payment with PAYID Token
{
...
"payMethods": {
"payMethod": {
"type": "BLIK_TOKEN",
"value": "<PAYID token value used for authorization>",
"blikData": {
"appKey": "<identifier of the bank mobile application chosen by the buyer>",
"recommendedAuthLevel": "NO_CONFIRMATION",
"recurring": {
"type": "O"
}
}
}
}
}

For details about the parameters, see the Create an Order section in our API Reference.

Additional Information

By setting the recommendedAuthLevel parameter to NO_CONFIRMATION, the merchant confirms that they assume responsibility for potential fraud.

HTTP StatusDescription
400
ERROR_TOKEN / AUTH_TOKEN_NOT_FOUND
The token does not exist.
400
ERROR_TOKEN / AUTH_TOKEN_NOT_ACTIVE
The token is not active.
400
ERROR_VALUE_MISSING / INVALID_CURRENCY_CODE
Invalid currency code.
400
ERROR_VALUE_INVALID / INVALID_COUNTRY_CODE
Validation error in the countryCode field of the blikData section. An unsupported country code was used.
400
ERROR_VALUE_MISSING / MISSING_APPKEY
Validation error. The appKey field is missing in the blikData section.
400
ERROR_VALUE_INVALID / INVALID_ALIAS_LABEL_PROPOSAL_USAGE
The aliasLabelProposal field cannot be used in a token payment when PayU manages the tokens.
400
ERROR_VALUE_MISSING / MISSING_ALIAS_LABEL_PROPOSAL
The aliasLabelProposal field is required in a PAYID token payment when the merchant manages the tokens.
400
ERROR_VALUE_INVALID / INVALID_REGISTER_TOKEN_VALUE_USAGE
The registerTokenValue field cannot be used in a PAYID token payment.
400
ERROR_VALUE_MISSING / MISSING_AUTHORIZATION_CODE_OR_TOKEN
Validation error. Authorization data is required – the token is missing.
400
ERROR_VALUE_INVALID / AMBIGUOUS_AUTHORIZATION_USAGE
Two authorization methods were provided. To pay with a token, fill in only the value field with the token.
400
ERROR_VALUE_MISSING / MISSING_BUYER_EMAIL
Validation error. The email field is missing in the buyer section.
400
ERROR_VALUE_MISSING / MISSING_BUYER_EXT_CUSTOMER_ID
Validation error. The extCustomerId field is missing in the buyer section.
400
ERROR_VALUE_INVALID / INVALID_BLIK_RECURRING_TYPE
Validation error in the type field of the recurring section. An unsupported type was used.
400
ERROR_VALUE_INVALID / INVALID_INITIALIZATION_DATE_USAGE
The initializationDate field cannot be used in a token payment.
400
ERROR_VALUE_INVALID / INVALID_EXPIRATION_DATE_USAGE
The expirationDate field cannot be used in a token payment.
400
ERROR_VALUE_INVALID / TOTAL_AMOUNT_REQUIRE_SCA
The totalAmount value cannot exceed the threshold set for merchant-initiated transactions.
400
BUSINESS_ERROR / RECURRING_TOKEN_PAYMENT_NOT_ALLOWED
PayU has not enabled the recurring payment service for you.
400
ERROR_VALUE_INVALID / INITIALIZATION_DATE_NOT_MET
Validation error in the initializationDate field of the recurring section. The transaction was attempted before the defined date.
400
ERROR_VALUE_INVALID / EXPIRATION_DATE_NOT_MET
Validation error in the expirationDate field of the recurring section. The transaction was attempted after the defined date.
400
ERROR_VALUE_INVALID / NO_CONFIRMATION_AUTH_LEVEL_REQUIRED
Validation error in the recommendedAuthLevel field of the blikData section. The field must be set to NO_CONFIRMATION.