Skip to content
Last updated

Note

If the text mentions Subscription, it refers to BLIK Recurrent Payments.

What are BLIK Recurrent Payments?

BLIK Recurrent Payments allow a merchant or service provider to perform subsequent debits of a user's account based on a previously granted authorization. Once a recurring payment is created, the user no longer needs to manually enter the BLIK code for each payment — subsequent transactions are initiated by the merchant and executed depending on the selected model: automatically or upon confirmation in the banking application.

Why use BLIK Recurrent Payments?

  • User convenience – no need to enter a BLIK code each time.
  • Higher conversion rate – a simpler payment process increases the chance of completing a transaction.
  • Revenue predictability – ideal for subscription-based and recurring billing models.
  • Flexibility – supports both fixed and variable amounts.
  • Security – transactions are executed according to the official BLIK standard with authorization in the banking app.
  • User control – each consent is visible in the user's banking app and can be revoked at any time.

Available Models

BLIK Recurrent Payments provide several operational models — described below for integration documentation purposes.

Model A — Fixed amount, no additional confirmation required

  • Purpose: subscriptions, installments, or services with fixed amounts and frequency.
  • How it works: the first transaction requires entering the 6-digit BLIK code and confirming it in the banking app; after the recurring payment is created, subsequent charges are made by the merchant without requiring additional confirmation from the user.
  • Features: simplicity, predictability for the user; the recurrence period can be predetermined (in practice, there may be limits — e.g., model A may have a maximum validity period).

Example use: a monthly streaming subscription with a fixed payment each month.

Model M — Variable amount, user confirmation required each time

  • Purpose: cases where the amount or timing of payments may vary (e.g., bills, variable charges).
  • How it works: the first transaction initializes the consent (BLIK code); subsequent transactions are initiated by the merchant but must be confirmed in the user's banking app.
  • Features: greater control for the user over each charge; consent may be limited in time or indefinite (until revoked).

Example use: paying variable utility bills or donation systems where the amount may change.

Model O — Variable amount, no additional confirmation required

  • Purpose: cases requiring payments of variable amounts but without the need for user confirmation each time.
  • How it works: similar to Model M in terms of variable amount and frequency, but subsequent charges may be made automatically without user interaction (initiated by the merchant and processed without additional confirmation in the banking app).
  • Features: combines flexibility regarding amount with the convenience of automatic charging.

Example use: services where the amount may vary but the user has authorized automatic debits (e.g., settlement accounts, flexible subscriptions).

BLIK Requirements

For official BLIK requirements and model details, see the BLIK website.

Subscription Frequency

Model A requires specifying frequency. Model M allows it optionally.

The frequency defines how often the next Recurring Payment can occur.

The field is divided into two parts:

  1. The first part specifies the duration value in units defined by the second part and contains 1–3 characters:
    • The first character: [1-9]
    • The second character: [0-9] (optional)
    • The third character: [0-9] (optional)
  2. The second part defines the unit of time in one letter:
    • D - daily
    • W – weekly
    • M - monthly
    • Y – yearly

If the recurring payment date falls on a non-existent day in a month (e.g., 31st of September), the payment should be executed on the last day of that month (e.g., 30th September).

For a M (monthly) period, we recommend setting the first payment date options.initiationDate between the 1st and 28th of the month to avoid scheduling issues.

If the frequency is exceeded, the bank will require the user to confirm the Recurring Payment in the banking app.

Subscription Registration via Authorization

SimPay allows creating an initial transaction with a value of 0 PLN to register a subscription.
In this case, the payer will not be charged when approving the Recurring Payment in their banking app.

Simply set the amount field to 0 when creating the transaction.

The amount field can only be set to 0 during subscription registration in SimPay.
Any further attempt to charge 0 PLN in a recurring payment will result in an error.

Creating a Subscription

  1. When generating a transaction, you must:

    • set the directChannel field to blik-recurrent,
    • send the payer’s antifraud.useragent,
    • send customer.email,
    • send customer.ip,
    • send customer.countryCode (currently only PL is supported),
    • set the transaction currency to PLN (BLIK currently supports only PLN),
    • send antifraud.systemId – a unique payer identifier in your system (e.g., account ID). If a user has multiple subscriptions, the systemId must remain the same.
  2. Next, send the Recurring Payment Creation Request.

Required options by model:

Model A (AUTO)

  • options.expiresAt – expiration date (required, up to +10 years from now),
  • options.frequency – see above (Subscription Frequency),
  • options.amountLimitPerTransaction – per-transaction charge limit,
  • options.initiationDate – first recurring payment date (mandatory),
  • options.amountLimitTotal – total limit for all recurring charges,
  • options.transactionsCountLimit – optional, currently unused by banks.

Model O (OPEN)

  • options.initiationDate – optional; specifies first payment date,
  • options.expiresAt – optional; expiration date, up to +10 years.

Model M (MANUAL)

  • options.initiationDate – optional; specifies first payment date,
  • options.expiresAt – optional; expiration date, up to +10 years,
  • options.frequency – optional; subscription frequency.

If the 6-digit BLIK code is incorrect, the response will match that of a BLIK Level 0 error.
See the BLIK Level 0 documentation for reference.

If the code is correct, two parameters will be returned:

  • subscriptionId – SimPay subscription ID used for future charges,
  • aliasId – SimPay alias ID (optional).

Receiving a subscriptionId does not mean the subscription is active yet.
You must wait for the IPN event subscription:status_changed.

Other events: transaction_blik_level0:code_status_changed, transaction:status_changed, and blik:alias_status_changed.

If the user has insufficient funds or a BLIK-side error occurs, it will be included in the transaction_blik_level0:code_status_changed message.
For more details, see IPN v2.

The event subscription:status_changed with status subscription_active means the subscription is now active.
You may now charge the user according to the selected model.

Executing a Recurring Payment (Subsequent Transaction)

  1. When generating a transaction:

    • set directChannel to blik-recurrent,
    • send customer.email,
    • send customer.countryCode (currently only PL),
    • set currency to PLN (BLIK supports only PLN),
    • send antifraud.systemId – the same as used during subscription creation.

    Do not send IP address or UserAgent in subsequent recurring payments.

  2. Next, send the Recurring Payment Execution Request.

  • If retrying a failed charge, send a proper attempt value (0–9, where each next value increases by 1).

  • The alias.noDelay parameter applies to models A and O.
    Setting noDelay = true means you expect an immediate authorization response.
    Otherwise, authorization may take up to 72 hours.

The response includes needsUserConfirmation — indicates whether the transaction requires user confirmation (true) or was processed directly (false).

Only one IPN event is sent: transaction:status_changed.
If status = transaction_paid, the payer was successfully charged and funds are transferred to you.

AntiFraud System

SimPay uses an AntiFraud system for Recurring Payments, based on analysis of the payer’s previous transactions.
Currently, it applies only to model O.
If suspicious activity is detected, the payer receives an email with a confirmation link.
They have 7 days to confirm the transaction.