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.
ImportantThe maximum amount of a single recurring payment charge is 2,000 PLN.
Recurring is only available through the
MULTI_FACTORpayment flow.
Create the payment agreement
To create a BLIK payment agreement, provide the following information when calling our payment agreements endpoint:
Data Field | Description |
|---|---|
|
|
| The amount to be paid in the smallest units of the currency used. |
|
|
| Full name of the consumer. |
| The country of residence of the consumer. |
| The IP of the consumers browser or HTTP client. |
| The user agent of the consumer or HTTP client. |
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.valueandamount.currencyof 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"
}Pick the desired authentication method
MULTI_FACTOR
- Ask your consumer for the OTP required to authenticate the payment.
- Issue the following request to
POST /v1/payment-agreements/{agreementId}/authorizations
{
"authenticationResult": {
"type": "MULTI_FACTOR",
"details": {
"verificationCode": "777123"
}
}
}Handling the result
MULTI_FACTOR
- Check the response from the
POST /v1/payment-agreements/{agreementId}/authorizationsand use theStatusthat you received to display the agreement and/or payment outcome to the consumer. - Webhooks are also sent to inform you of the payment outcome.
- 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"
}Updated about 3 hours ago