BLIK

Introduction

BLIK uses a code-based payment flow. The customer enters a 6-digit code generated by their banking app directly into the checkout form. Their bank then sends a push notification to their mobile phone to authorize the payment inside the banking app. No redirect is required. BLIK is a single-use, customer-initiated payment method.

This guide explains the process of integrating BLIK into your app or website using Payrails via Stripe.

Pre-requisites

Before you start accepting BLIK payments with Payrails, there are a few requirements you must meet:

  1. Integrate with Payrails using one of our SDKs or our API
  2. Configure a new integration account for BLIK via Stripe as a Payment Service Provider.
  3. Enable BLIK as a payment method in your Stripe integration configuration. In the Payrails portal, navigate to Settings → Integrations, select your Stripe integration instance, and enable the BLIK checkbox under Payment methods, then save the account.
  4. Enable BLIK as a payment option in your workflow.
  5. Make sure you're sending the BLIK-specific required meta fields in your requests (see Required meta fields below).

Ways to integrate BLIK

Payrails SDK

The simplest way to use BLIK with Payrails is to use our drop-in in your checkout flow. With this integration type, no additional work is required to accept payments with BLIK except for handling success/failure screens for your users.

For a more flexible implementation using our SDK, you can use our Elements integration. See the Elements documentation for your client-side implementation.

Server-to-server integration

You can integrate BLIK by completely managing your own client-side implementation, and using Payrails APIs with a server-to-server integration to process BLIK payments.

Parse BLIK from lookup response

With a server-to-server integration, you can call our lookup payment options endpoint to get available payment options. As shown in the example below, you can see blik returned as an option of the paymentCompositionOptions.

{
  "name": "lookup",
  "actionId": "0bb6413e-cabb-4074-99e6-9e815c69f25b",
  "executedAt": "2026-03-26T12:00:00.000000000Z",
  "data": {
    "paymentCompositionOptions": [
      {
        "integrationType": "redirect",
        "paymentMethodCode": "blik",
        "description": "BLIK"
      }
    ]
  },
  "links": {
    "execution": "https://api.payrails.io/merchant/workflows/payment-acceptance/executions/83c534ac-13b7-43e6-b04b-f3e8b4eb4424",
    "authorize": {
      "method": "POST",
      "href": "https://api.payrails.io/merchant/workflows/payment-acceptance/executions/83c534ac-13b7-43e6-b04b-f3e8b4eb4424/authorize"
    }
  }
}

Required meta fields

BLIK requires the following field to be present in every authorize request:

FieldRequiredNotes
meta.shopperInput.blikCode✅ YesThe 6-digit BLIK code the customer retrieves from their banking app

Note: BLIK does not require returnInfo or meta.order.billingAddress.name — it uses server-side confirmation rather than a redirect.

Pass BLIK payment method in request to authorize payment with Payrails

You can then make a request to our authorize a payment endpoint with blik as the paymentMethodCode. See an example below:

{
  "executionId": "c0fd1c51-e709-47e5-bfd1-5d1c98f7d990",
  "amount": {
    "value": "5000",
    "currency": "PLN"
  },
  "paymentComposition": [
    {
      "integrationType": "redirect",
      "paymentMethodCode": "blik",
      "amount": {
        "value": "5000",
        "currency": "PLN"
      }
    }
  ],
  "meta": {
    "shopperInput": {
      "blikCode": "123456"
    }
  }
}

Note on amounts: PLN uses 2 decimal places. Amounts should be provided in the smallest currency unit — e.g., 5000 for zł50.00.


Note: BLIK is a code-based, single-use payment method. After calling the authorize endpoint, the customer must enter their 6-digit BLIK code (generated from their banking app) at checkout. Their bank then sends a push notification to their phone to approve the payment. The BLIK code is valid for 2 minutes and the customer has 60 seconds to authorize after initiating — after which it times out and a new code must be requested. No redirect to an external page is required.

Handle the redirect response

After the customer approves or declines the payment in their banking app, you will receive an immediate notification of the outcome. Verify the payment status by checking the workflow execution status via the Payrails API or by listening to webhook notifications.

Supported currencies

BLIK via Stripe supports the following presentment currency:

  • PLN — Polish Złoty

Supported regions / countries

Customer regions

BLIK is available to customers based in:

  • Poland 🇵🇱

Merchant regions

Stripe accounts across Europe can accept BLIK payments (AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HR, HU, IE, IS, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK).

Supported workflows and services

WorkflowSupported
Available via Payrails SDK✔️
Available via Payrails API✔️
Delayed / Manual Capture✖️
Instant Capture✔️
Cancel / Void✖️
Refund / Reverse✔️
Save Instruments✖️
Merchant Initiated Transaction (MIT)✖️