Recurring

BLIK supports recurring payments, and we streamline this process for you with Payment agreements.

BLIK provides a flexible and automated solution designed for merchants managing subscription or usage based payments. Learn more.

❗️

Important

The maximum amount of a single recurring payment charge is 2,000 PLN.

Recurring is only available through the MULTI_FACTOR payment flow.

Create the payment agreement

To create a BLIK payment agreement, provide the following information when calling our payment agreements endpoint:

Data FieldDescription
paymentMethodBLIK
amount.valueThe amount to be paid in the smallest units of the currency used.
amount.currencyPLN
conumer.nameFull name of the consumer.
consumer.countryThe country of residence of the consumer.
consumer.client.ipThe IP of the consumers browser or HTTP client.
This is required for the MULTI_FACTOR payment flow.
consumer.client.userAgentThe user agent of the consumer or HTTP client.
This is required for the MULTI_FACTOR payment flow.

You can also include the initialPaymentCharge object in this agreement creation call to immediately initiate the first payment without making a separate call. If you include this object, you'll need to specify:

  • The exact amount.value and amount.currency of the first payment

If you don't include an initialPaymentCharge during agreement creation, you'll need to make a separate API call to /v1/payment-agreements/{agreement_id}/payment-charges to create the first charge.

Request

POST /v1/payment-agreements

{
  "consumer": {
    "name": "John Smith",
    "country": "PL",
    "client": {
     "ip": "11.22.22.33",
     "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
    }
  },
  "paymentMethod": "BLIK",
  "startDate": "2026-03-26T20:24:27Z",
  "endDate": "2026-11-27T09:30:00Z",
  "authenticationSettings": [
    {
      "type": "MULTI_FACTOR",
      "settings": {
        "verificationCode": "999009"
      }
    }
  ]
}
{
  "paymentMethod": "BLIK",
  "consumer": {
    "name": "John Smith",
    "country": "PL",
    "client": {
     "ip": "11.22.22.33",
     "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
    }
  },
  "initialPaymentCharge": {
    "amount": {
      "value": 1000,
      "currency": "PLN"
    }
  },
  "authenticationSettings": [
    {
      "type": "MULTI_FACTOR",
      "settings": {
        "verificationCode": "999009"
      }
    }
  ]
}

Response

You'll receive a response with the available authentication methods:

{
  "id": "agr_kldVsUfaTdcCIpT8bBIWo",
  "status": "AUTHENTICATION_PENDING",
  "paymentMethod": "BLIK",
  "startDate": "2025-04-15T16:20:13.302Z",
  "instrumentId": "instr_gQHo8F6xz3kOegCiaimw0",
  "consumer": {
    "name": "John Smith",
    "country": "PL"
  },
  "authenticationMethods": [
    {
      "type": "MULTI_FACTOR"
    }
  ],
  "history": [
    {
      "id": "ahist_mEs8D2aCSaoSgtex0gzWx",
      "status": "AUTHENTICATION_PENDING",
      "createdAt": "2025-04-15T16:20:13.951Z"
    }
  ],
  "createdAt": "2025-04-15T16:20:13.951Z",
  "updatedAt": "2025-04-15T16:20:13.951Z"
}
{
  "id": "agr_gFCDp991mUCjWVypLEvfZ",
  "status": "AUTHENTICATION_PENDING",
  "paymentMethod": "BLIK",
  "instrumentId": "instr_hLOqf7bZvyo98kqT4Spio",
  "consumer": {
    "name": "John Smith",
    "country": "PL"
  },
  "authenticationMethods": [
    {
      "type": "MULTI_FACTOR"
    }
  ],
  "history": [
    {
      "id": "ahist_8WvsAUIuUR9lYCajdkPsv",
      "status": "AUTHENTICATION_PENDING",
      "createdAt": "2025-04-10T13:31:39.222Z"
    }
  ],
  "initialPaymentChargeId": "charge_QQu5vY0HQYKIvsa7OO6Hx",
  "createdAt": "2025-04-10T13:31:39.222Z",
  "updatedAt": "2025-04-10T13:31:39.222Z"
}

Handling the result

MULTI_FACTOR

  1. Check the response from the POST /v1/payment-agreements/{agreementId}/authorizations and use the Status that you received to display the agreement and/or payment outcome to the consumer.
  2. Webhooks are also sent to inform you of the payment outcome.
  3. Store the Payment Agreement ID for subsequent payments.

Create a recurring payment

To initiate a subsequent recurring payment, send a request against an active agreement using our payment agreements API.

Request

POST /v1/payment-agreements/{agreement-id}/payment-charges

{
  "amount": {
    "value": 1000,
    "currency": "PLN"
  }
}

Response

{
    "id": "charge_WLnk5R2RKwzAinkEoAMm0",
    "paymentMethod": "BLIK",
    "currency": "PLN",
    "country": "PL",
    "instrumentId": "instr_86xMmxSjrVafelQgtAXxr",
    "status": "CAPTURED",
    "consumer": {
        "name": "John Smith",
        "country": "PL"
    },
    "authorizations": [
        {
            "id": "authz_nx4VgDiibOTPoYgXxQbrL",
            "amount": 1000,
            "status": "AUTHORIZED",
            "createdAt": "2025-04-10T16:28:40.150Z",
            "updatedAt": "2025-04-10T16:28:40.150Z"
        }
    ],
    "captures": [
        {
            "id": "capture_aJh1kGwLdwK8S3aFCeWFV",
            "amount": 1000,
            "status": "CAPTURED",
            "createdAt": "2025-04-10T16:28:40.150Z",
            "updatedAt": "2025-04-10T16:28:40.150Z"
        }
    ],
    "refunds": [],
    "discards": [],
    "voids": [],
    "createdAt": "2025-04-10T16:28:38.716Z",
    "updatedAt": "2025-04-10T16:28:40.150Z"
}