# BLIK recurring payments

Accept recurring BLIK payments with customer-authorized mandates.

BLIK recurring payments let you save a customer’s BLIK payment method and charge it again later for subscriptions or other off-session payments without asking the customer to enter a new BLIK code. You can [save BLIK while accepting a payment](https://docs.stripe.com/payments/blik/save-during-payment.md) or [set up BLIK without an initial payment](https://docs.stripe.com/payments/blik/set-up-payment.md).

## How it works

When you create a reusable BLIK payment method, the customer enters a BLIK code and authorizes a recurring mandate in their banking app. After the mandate is active, you can create off-session PaymentIntents with the saved PaymentMethod.

## BLIK Model O

Stripe uses [BLIK Model O](https://www.blik.com/lp/reccuring-payments/Model-O.141951072.html) for recurring payments. Model O supports flexible charge amounts and schedules, so you don’t need to set a fixed amount or billing interval when the customer authorizes the mandate.

## Mandate expiration 

To create a time-limited mandate, set an optional `expires_at` Unix timestamp. The timestamp must be no more than 10 years after the mandate is created. Don’t provide a duration or a number of seconds until expiration. If you omit `expires_at`, the mandate is indefinite.

| Integration | Parameter |
| --- | --- |
| PaymentIntents, SetupIntents, and Checkout Sessions | `payment_method_options[blik][mandate_options][expires_at]` |
| Subscriptions | `payment_settings[payment_method_options][blik][mandate_options][expires_at]` |

## Eligibility and capabilities

To use BLIK for recurring payments, both the `blik_payments` and `blik_recurring_payments` capabilities must be `active`. The `blik_recurring_payments` capability depends on `blik_payments`.

### Request from the Dashboard

In the Dashboard, go to [Payment methods settings](https://dashboard.stripe.com/settings/payment_methods), select BLIK, and enable recurring payments. If you use Connect, request BLIK recurring payments for your platform and for each connected account that accepts recurring BLIK payments.

### Request with the API

If you use Connect, request the BLIK payments capability for the connected account before requesting the BLIK recurring payments capability.

```curl
curl https://api.stripe.com/v1/accounts/{{CONNECTEDACCOUNT_ID}}/capabilities/blik_payments \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d requested=true
```

```curl
curl https://api.stripe.com/v1/accounts/{{CONNECTEDACCOUNT_ID}}/capabilities/blik_recurring_payments \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d requested=true
```

Check the [Account capability](https://docs.stripe.com/api/capabilities/retrieve.md) status before you create a recurring BLIK payment. Both capabilities must have a status of `active`.

## Business eligibility

The following business categories can’t use BLIK recurring payments:

- Telecommunications
- Money transfer, currency exchange, cash disbursement, stored-value, and payment-intermediary services
- Securities brokerage
- Insurance
- Gambling and wagering

If your business is eligible, Stripe evaluates the recurring BLIK capability when you request it. Contact [Stripe Support](https://support.stripe.com/contact) if you have questions about your account’s eligibility.

## Limitations

- Recurring BLIK payments support only off-session use.
- Off-session recurring charges must use the `pln` currency.
- Each off-session recurring charge can’t exceed 2,000 PLN.

## Use with Billing

You can accept BLIK for subscriptions and recurring invoices. Set `collection_method` to `charge_automatically` so Stripe charges the customer’s saved BLIK payment method for each invoice.

When you create a mandate with Checkout or a Subscription, [mandate_options](https://docs.stripe.com/api/checkout/sessions/create.md?api-version=2026-09-30.endive#create_checkout_session-payment_method_options-blik-mandate_options) is optional. See [Mandate expiration](https://docs.stripe.com/payments/blik/recurring-payments.md#mandate-expiration) to set `expires_at`. Invoices charge an existing BLIK mandate.

Before you create the subscription or invoice, make sure both `blik_payments` and `blik_recurring_payments` are active.

### Checkout subscriptions

Create a [Checkout Session](https://docs.stripe.com/api/checkout/sessions/create.md?api-version=2026-09-30.endive) in `subscription` mode. Checkout collects the BLIK code, gets the customer’s mandate authorization, and charges future subscription invoices automatically.

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d mode=subscription \
  -d "customer={{CUSTOMER_ID}}" \
  -d "line_items[0][price]={{PRICE_ID}}" \
  -d "line_items[0][quantity]=1" \
  -d "allowed_payment_method_types[0]=blik" \
  --data-urlencode "success_url=https://example.com/success"
```

For a time-limited Checkout mandate, add `payment_method_options[blik][mandate_options][expires_at]` with the Unix timestamp described in [Mandate expiration](https://docs.stripe.com/payments/blik/recurring-payments.md#mandate-expiration). Omit it when the mandate should be indefinite.

### Subscriptions API

To create a subscription with an existing BLIK PaymentMethod, add `blik` to [Subscription payment method types](https://docs.stripe.com/api/subscriptions/create.md?api-version=2026-09-30.endive#create_subscription-payment_settings-payment_method_types).

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d "default_payment_method={{PAYMENTMETHOD_ID}}" \
  -d collection_method=charge_automatically \
  -d "payment_settings[payment_method_types][0]=blik"
```

### Invoices API

For a recurring invoice that uses an existing BLIK mandate, first create a billable [Invoice Item](https://docs.stripe.com/api/invoiceitems/create.md?api-version=2026-09-30.endive), then add `blik` to [Invoice payment method types](https://docs.stripe.com/api/invoices/create.md?api-version=2026-09-30.endive#create_invoice-payment_settings-payment_method_types) and set `collection_method` to `charge_automatically`.

```curl
curl https://api.stripe.com/v1/invoiceitems \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "pricing[price]={{PRICE_ID}}"
```

```curl
curl https://api.stripe.com/v1/invoices \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "default_payment_method={{PAYMENTMETHOD_ID}}" \
  -d collection_method=charge_automatically \
  -d auto_advance=true \
  -d "payment_settings[payment_method_types][]=blik"
```

## Recover recurring payments

BLIK recurring payments are available only in PLN, and each transaction can’t exceed 2,000 PLN. If a customer’s bank doesn’t support recurring BLIK payments, the payment fails with `recurring_not_supported_by_bank`. Let the customer retry with a supported BLIK account or choose another payment method. If a mandate expires, collect a new BLIK mandate before attempting another payment.

Customers can update their payment method for eligible subscriptions in the [customer portal](https://docs.stripe.com/customer-management.md).

For direct integrations, see [Save BLIK details during a payment](https://docs.stripe.com/payments/blik/save-during-payment.md) or [Set up future BLIK recurring payments](https://docs.stripe.com/payments/blik/set-up-payment.md).

## Supported banks and retry behavior

BLIK recurring payments are available to customers of the following banks:

- Alior Bank
- Credit Agricole
- ING Bank Śląski
- Millennium Bank
- mBank
- Nest Bank
- PKO Bank Polski
- Santander Bank Polska
- SGB Cooperative Banks

If a customer’s bank doesn’t support BLIK recurring payments, the setup or payment fails with the [recurring_not_supported_by_bank](https://docs.stripe.com/declines/codes.md#recurring_not_supported_by_bank) decline code. Handle this result by letting the customer retry with another BLIK account that supports recurring payments or choose a different payment method.

For other recurring payment declines, use `error.decline_code` to decide how to respond:

| Decline code | Recommended response |
| --- | --- |
| `insufficient_funds` | Ask the customer to add funds or use another payment method. |
| `customer_declined` | Ask the customer to retry and approve the payment. |
| `payment_limit_exceeded` | Ask the customer to adjust their BLIK limit or use another payment method. |
| `partner_generic_decline` | Ask the customer to contact their bank or use another payment method. |

## Custom checkout pages

Whether you use [hosted Checkout](https://docs.stripe.com/payments/checkout.md) or a custom payment form, present the recurring mandate terms to the customer before you collect their BLIK code. Hosted Checkout collects the BLIK code and mandate authorization, but you must provide the billing and mandate disclosures.

If you build a fully custom BLIK form instead of using hosted Checkout, you’re responsible for displaying the required recurring disclosures. Before you collect the BLIK code, show the customer all of the following:

- **Billing terms and agreement**: The terms and conditions the customer accepts, and a clear statement that they’re authorizing recurring, off-session BLIK payments.
- **Initial charge**: The amount charged when you create the reusable payment method, if any. A SetupIntent doesn’t charge the customer, and saving BLIK during a payment charges the initial payment amount.
- **Charge cycle and recurrence**: The charge cycle or recurrence terms, including the date of the first charge and the cadence or rule for any subsequent charges.
- **Supported banks**: The list of [banks that support BLIK recurring payments](https://docs.stripe.com/payments/blik/recurring-payments.md#supported-banks-and-retry-behavior), so the customer can confirm whether they can use their BLIK account.

You must handle the [unsupported-bank result](https://docs.stripe.com/payments/blik/recurring-payments.md#supported-banks-and-retry-behavior) and provide a retry path with a different BLIK account or payment method.

## See also

- [Save BLIK details during a payment](https://docs.stripe.com/payments/blik/save-during-payment.md)
- [Set up future BLIK recurring payments](https://docs.stripe.com/payments/blik/set-up-payment.md)
- [BLIK recurring-payment failure simulations](https://docs.stripe.com/payments/blik/save-during-payment.md#simulate-failures)
- [Accept a one-time BLIK payment](https://docs.stripe.com/payments/blik/accept-a-payment.md)
