BLIK for API only
Last updated: May 13, 2026
To accept BLIK payments, the customer enters the BLIK code in your checkout page, and you send it to Checkout.com when you request a payment.
Your customer then confirms the payment using their online banking app.
When integrating with BLIK, you must follow their UX guidelines. This compliance is a requirement for onboarding. If you do not follow these guidelines, we cannot approve you for production.
Call the Request a payment endpoint.
Information
Your base URL's {prefix} value is unique to your account and environment. To learn how to retrieve your base URLs for the sandbox and production environments, see API endpoints.
post
https://{prefix}.api.checkout.com/payments
1{2"source": {3"type": "blik"4},5"amount": 1099,6"currency": "PLN",7"payment_type": "Regular",8"reference": "ORD-5023-4E89",9"processing": {10"partner_code": "333994"11},12"risk": {13"device": {14"network": {15"ipv4": "192.0.2.1",16"ipv6": "2001:db8:1:2:3:4:5:6"17}18}19}20}
In the request body, provide the BLIK code in the processing.partner_code field.
To improve your acceptance rate, include a reference to your payment in the reference field.
If you receive a 202 Accepted response with a payment id value and the status field set to Pending, your request was successful.
1{2"id": "pay_jwvjl5tin54ubn7x2stvmunske",3"status": "Pending",4"reference": "ORD-5023-4E89",5"payment_type": "Regular",6"processing": {7"partner_payment_id": "88294496710"8}9}
Before you can request a recurring payment, you must be onboarded by BLIK to accept recurring payments. For more details, see Onboarding.
Call the Request a payment endpoint.
Information
Your base URL's {prefix} value is unique to your account and environment. To learn how to retrieve your base URLs for the sandbox and production environments, see API endpoints.
post
https://{prefix}.api.checkout.com/payments
Set the following fields, depending on the recurring model and when you want to set up the agreement. For more information about each model, see Recurring models.
Use Model O when the amount or frequency of future merchant-initiated transactions (MITs) is variable or unknown at agreement creation. For example, usage-based billing or marketplace top-ups.
source.type– Set toblik.payment_type– Set toRecurring.merchant_initiated– Set tofalse.amount– Set to0.payment_plan.amount_variability– Set toVariable.payment_plan.name– The display name shown in the customer's banking app.payment_plan.expiry– The expiry date of the agreement, inYYYYMMDDformat.payment_plan.start_date– The date of the first scheduled payment, inYYYYMMDDformat.
Information
When setting up the agreement before the initial payment, payment_plan.start_date is mandatory.
1{2"source": {3"type": "blik"4},5"amount": 0,6"currency": "PLN",7"payment_type": "Recurring",8"payment_plan": {9"amount_variability": "Variable",10"expiry": "20251231",11"start_date": "20251114",12"name": "Internet Subscription 123456"13},14"reference": "ORD-5023-4E89",15"merchant_initiated": false,16"processing": {17"partner_code": "333994"18}19}
If you receive a 202 Accepted response, your request was successful.
A successful response contains the following fields:
id– The payment ID.source.id– The payment instrument ID. You can use this ID to process subsequent payments, or retrieve the BLIK PayID from thesource.partner_agreement_idfield.source.partner_agreement_id– Your BLIK PayID, which you can also use to process subsequent payments.status– Set toPending.
1{2"id": "pay_kiexvrgdqwzedjr4zwkkkukwwu",3"status": "Pending",4"reference": "ORD-5023-4E89",5"payment_type": "Recurring",6"processing": {7"partner_payment_id": "90231815793"8},9"source": {10"id": "src_1233457",11"partner_agreement_id": "777001"12},13"_links": {14"self": {15"href": "https://{prefix}.api.sandbox.checkout.com/payments/pay_kiexvrgdqwzedjr4zwkkkukwwu"16}17}18}
The agreement finalizes after the payment or agreement successfully authorizes in your customer's banking app.
You can retrieve the status of the payment or agreement via webhook or by calling the Get instrument details endpoint, and setting the source.id value from the payment response as the {id} path parameter:
Information
Your base URL's {prefix} value is unique to your account and environment. To learn how to retrieve your base URLs for the sandbox and production environments, see API endpoints.
get
https://{prefix}.api.checkout.com/instruments/{id}
1{2"type": "blik",3"instrument_data": {4"agreement_id": "9d45c3f7-7bce-4f03-85a8-d2464a826fce",5"status": "VALID",6"reason": "",7"amount_variability": "Variable",8"currency": "PLN",9"partner_agreement_id": "src_kjhuc4ejrpreplip5tj2rljlty",10"name": "test subscription",11"expiry": "20270101",12"start_date": "20250101"13},14"metadata": {15"merchant_id": "memowvltf7aulpb"16},17"account": {18"entity_id": "ent_kjhuc4ejrpreplip5tj2rljlty",19"client_id": "cli_kjhuc4ejrpreplip5tj2rljlty"20}21}
You can request a recurring payment using either:
- A Checkout.com managed payment instrument
- The BLIK PayID stored on your side
Call the Request a payment endpoint. In the request body, provide the following:
source.type– Set toidsource.id– The payment instrument ID you received in the initial payment response, or the ID of the instrument created to store the agreement.
1{2"source": {3"id": "src_jwvjl5tin54ubn7x2stvmunske",4"type": "id"5},6"amount": 999,7"currency": "PLN",8"payment_type": "Recurring",9"reference": "ORD-5023-4E89",10"merchant_initiated": true11}
To retrieve details about the payment, call the Get payment details endpoint, setting the payment_id value from the payment response as the {id} path parameter:
get
https://{prefix}.api.checkout.com/payments/{id}
BLIK supports both partial and full refunds.
You can refund the payment in the Dashboard or by calling the Refund a payment endpoint, setting the payment_id value from the payment response as the {id} path parameter:
post
https://{prefix}.api.checkout.com/payments/{id}/refunds
In the request body, provide the original payment's reference ID in the reference field.
1{2"amount": 20,3"reference": "ORD-5023-4E89"4}
1{2"action_id": "act_c4x2vjvnx4uelb4io72fa4e57a",3"_links": {4"payment": {5"href": "https://{prefix}.api.checkout.com/payments/pay_fzzdurog3squjj2ityho7x3o64"6}7}8}
If the customer does not complete the payment, it expires and you receive a payment_expired webhook within five minutes.
If the customer cancels their payment, you also receive a payment_expired webhook.
For more information, see Void a payment.
You can simulate different outcomes by sending a payment request to your sandbox environment. You can test regular and recurring payments by setting the processing.partner_code field to specific values.
To test a regular payment, send a payment request setting the processing.partner_code field to any of the following values, depending on the outcome you want to test:
| Outcome | Payment status | Webhook event | Partner code |
|---|---|---|---|
| Captured |
|
|
| Declined |
|
|
| Declined |
|
|
| Canceled |
|
|
| Declined |
|
|
| Declined |
|
|
| Declined |
|
|
| Declined |
|
|
| Declined |
|
|
| Declined |
|
|
| Expired |
|
|
| Declined |
|
|
| Sync error. No payment created |
|
To test recurring payments, you must first simulate a BLIK Recurring instrument creation:
In the payment request, set:
amountto49500referencetomock
Then, send a an initial payment request using one of the following partner_code values, and a subsequent payment request using the corresponding amount value.
| Outcome | Payment status | Webhook event | Partner code for initial payment | Subsequent payment amount |
|---|---|---|---|---|
| Captured |
|
|
|
| Declined |
|
|
|
| Declined |
|
|
|
| Canceled |
|
|
|
| Declined |
|
|
|
| Declined |
|
|
|
| Declined |
|
|
|
| Declined |
|
|
|
| Declined |
|
|
|
| Declined |
|
|
|
| Expired |
|
|
|
| Declined |
|
|
|
| Sync error. No payment created |
|