BLIK via Skrill Quick Checkout
BLIK is a mobile payment method in Poland that allows consumers to pay online or transfer money using their bank’s mobile app. Consumers register for BLIK through a participating Polish bank and authenticate payments via their mobile banking app. Consumers can then make payments by entering a one-time BLIK code or by confirming the transaction directly in their banking app, without needing to use a debit or credit card.
BLIK at a glance
| Payment type | Bank transfer |
|---|---|
| Consumer markets | Poland |
| Currencies |
|
| Transaction types |
|
| Limits | 2000 PLN per transaction |
| Guarantee | YES (optional) |
| Reporting | You can review your transactions in the Skrill Merchant Portal. |
| Funding | For all payments, Paysafe settles the net amount (payments - fees) directly to your bank account. |
| Supported languages | EN, PL |
| Dynamic descriptor | NO |
Prerequisites
To create accounts in both the sandbox and production environments, we need the following details:
-
Your Skrill Pay to email address.
-
Your Skrill account API/MQI password.
NOTE: To offer BLIK, you must be onboarded with Skrill.
Payments API: YES
Paysafe Checkout: NO
Paysafe JS: NO
Skrill Quick Checkout: YES
Best practice
We recommend that you follow this best practice:
- Use a webhook or query so that you always know the latest status - for example, you cannot rely on the consumer returning to your website as some consumers may close their browser.
Use case 1: Payments
This use case enables your consumer to choose BLIK as a payment option on your webstore and to make a payment.
Implementation
Call the following endpoints in sequence:
-
/paymenthub/v1/paymenthandles
Initializes the payment process and provides you with a URL to redirect the consumer.
Redirect the consumer to the provided URL so that they can complete the payment using a one-time BLIK code or by confirming the transaction directly in their banking app.
-
/paymenthub/v1/payments
Call the payments endpoint to complete the payment within 15 minutes - after this, the payment handle expires.
NOTE: For code examples and detailed explanations of the parameters, refer to the Payments API Reference.
-
Call endpoint /paymenthub/v1/paymenthandles
- transactionType: PAYMENT
- paymentType: BLIK
-
Pass the required parameters in the profile object.
-
Paysafe creates a payment handle and returns our standard gateway response, indicating either a positive or negative outcome.
Happy path: consumer initiates payment
Outcome Paysafe
HTTP
Status CodeLPM Error
Code/ MessageCan be
simulated?How to
simulate?Payment
handle
statusNext
actionThe consumer
initiates a payment
request.201
YES
Pass INTERNAL
as the simulator
field value in your
request header.INITIATED
Go to step 2 to
redirect and
complete the
payment. -
The payment handle status depends on the outcome of the request:
- For positive scenarios, the payment handle is created with status INITIATED.
- For negative scenarios, the payment handle is created with status FAILED.
STEP 2: Redirect consumer
-
Redirect the consumer to the URL provided in the payment handle response.
- The payment handle status changes to PROCESSING.
-
The consumer completes the transaction using a one-time BLIK code or by confirming it directly in their banking app.
- The payment handle status changes to PAYABLE.
-
Paysafe returns our standard gateway response, indicating either a positive or negative outcome:
Happy path: the payment was successful
Outcome Paysafe
HTTP
Status CodeLPM Error
Code/ MessageCan be
simulated?How to
simulate?Payment
handle
statusNext
actionThe payment
is authorized.YES
Pass INTERNAL
as the simulator
field value in your
request header.Select COMPLETED
in the payment
status dropdown.PAYABLE
Go to step 3 to
process the
payment.Unhappy path: the payment was declined by Skrill's provider/ internal fraud engine
Outcome Paysafe
HTTP
Status CodeLPM Error
Code/ MessageCan be
simulated?How to
simulate?Payment
handle
statusNext
actionThe payment
is declined
i.e. it fails.YES
Pass INTERNAL
as the simulator
field value in your
request header.Select FAILED
in the payment
status
dropdown.FAILED
-
The payment handle status depends on the outcome:
- For positive scenarios, the status changes to PAYABLE.
- For negative scenarios, the status changes to FAILED.
-
Call endpoint /paymenthub/v1/payments using the paymentHandleToken.
-
Paysafe returns our standard gateway response, indicating either a positive or negative outcome:
Happy path: the payment is successfully submitted
Outcome Paysafe
HTTP
Status CodeLPM Error
Code/ MessageCan be
simulated?How to
simulate?Payment
handle
statusNext
actionThe payment
is completed.201
YES
Pass INTERNAL
as the simulator
field value in your
request header.Select COMPLETED
in the payment
status dropdown.COMPLETED
-
The payment status depends on the outcome of the request:
- For positive scenarios, the status changes to COMPLETED.
- For negative scenarios, the status changes to FAILED.
- For negative scenarios where the token expires after 15 minutes, the status changes to EXPIRED.
Webhooks
You receive a webhook when the payment handle status or payment status changes. You can also look up the status by executing a GET payment handle or GET payment call.
| Payment handle status | Payment status | Event |
|---|---|---|
PROCESSING | - | The consumer has been redirected to the redirection link. |
PAYABLE | - | The consumer successfully authorized the transaction using a one-time BLIK code or by confirming it directly in their banking app. |
COMPLETED | COMPLETED | You initiated the payments call and the transaction was successful. |
COMPLETED | FAILED | You initiated the payments call and the transaction failed. NOTE: Regardless of the payments call response status, the payment handle status always changes to COMPLETED when a payments call is made. |
FAILED | - | The payment handle was created, and the consumer was redirected to BLIK. However, the consumer either abandoned the transaction or failed to authorize it. |
EXPIRED | - | The payment handle has expired because it was not used in the payments call within 15 minutes (TTL). |
GET calls
Use the following GET calls to look up the payment handle or payment status:
- GET payment handle using the payment handle ID returned in the response to your original /paymenthandles call.
Test: https://api.test.paysafe.com:443/paymenthub/v1/paymenthandles/<paymentHandleId>
Production: https://api.paysafe.com:443/paymenthub/v1/paymenthandles/<paymentHandleId>
- GET payment handle using the merchant reference number returned in the response to your original /paymenthandles call.
Test: https://api.test.paysafe.com:443/paymenthub/v1/paymenthandles?merchantRefNum=<merchantrefNum>
Production: https://api.paysafe.com:443/paymenthub/v1/paymenthandles?merchantRefNum=<merchantrefNum>
- GET payment using the payment ID returned in the response to your original /payments call.
Test: https://api.test.paysafe.com:443/paymenthub/v1/payments/<paymentId>
Production: https://api.paysafe.com:443/paymenthub/v1/payments/<paymentId>
- GET payment using the merchant reference number returned in the response to your original /payments call.
Test: https://api.test.paysafe.com:443/paymenthub/v1/payments?merchantRefNum=<merchantrefNum>
Production: https://api.paysafe.com:443/paymenthub/v1/payments?merchantRefNum=<merchantrefNum>
Example webhook packets for payments
{
"payload": {
"accountId": "1027035260",
"id": "30d2a5ef-4c29-467b-8e48-17b48f120691",
"merchantRefNum": "7d8b449d-0e03-486a-9049-cbe31750c837",
"paymentHandleToken": "PHIaQN3i5WkUBe3V",
"transactionType": "PAYMENT",
"amount": 300,
"currencyCode": "PLN",
"status": "PROCESSING",
"paymentType": "BLIK",
"billingDetails": {
"street1": "100 Queen",
"street2": "Unit 201",
"zip": "123456",
"city": "Toronto",
"country": "US"
},
"statusTime": "2026-04-23T09:35:12Z",
"updatedTime": "2026-04-23T09:35:12Z",
"gatewayReconciliationId": "30d2a5ef-4c29-467b-8e48-17b48f120691",
"customerIp": "172.0.0.1",
"profile": {
"firstName": "kranthi",
"lastName": "kumar",
"email": "test@paysafe.com",
"dateOfBirth": {
"day": 1,
"month": 1,
"year": 1901
},
"phone": "1234567890"
},
"usage": "SINGLE_USE",
"executionMode": "SYNCHRONOUS",
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore",
"phone": "12345678"
},
"gatewayResponse": {
"processor": "SKRILL_QCO",
"sid": "45b02c9f5951365ae1e017d346703f30"
},
"txnTime": "2026-04-23T09:34:54Z"
},
"eventType": "PAYMENT_HANDLE_PROCESSING",
"attemptNumber": "1",
"resourceId": "30d2a5ef-4c29-467b-8e48-17b48f120691",
"eventDate": "2026-04-23T09:34:54Z",
"links": [
{
"href": "https://api.qa.paysafe.com/alternatepayments/v1/accounts/1027035260/paymenthandles/30d2a5ef-4c29-467b-8e48-17b48f120691",
"rel": "payment_handle"
}
],
"mode": "live",
"eventName": "PAYMENT_HANDLE_PROCESSING"
}
{
"payload": {
"accountId": "1027035260",
"id": "30d2a5ef-4c29-467b-8e48-17b48f120691",
"merchantRefNum": "7d8b449d-0e03-486a-9049-cbe31750c837",
"paymentHandleToken": "PHIaQN3i5WkUBe3V",
"transactionType": "PAYMENT",
"amount": 300,
"currencyCode": "PLN",
"status": "PAYABLE",
"paymentType": "BLIK",
"billingDetails": {
"street1": "100 Queen",
"street2": "Unit 201",
"zip": "123456",
"city": "Toronto",
"country": "US"
},
"statusTime": "2026-04-23T09:35:27Z",
"updatedTime": "2026-04-23T09:35:27Z",
"gatewayReconciliationId": "30d2a5ef-4c29-467b-8e48-17b48f120691",
"customerIp": "172.0.0.1",
"profile": {
"firstName": "kranthi",
"lastName": "kumar",
"email": "test@paysafe.com",
"dateOfBirth": {
"day": 1,
"month": 1,
"year": 1901
},
"phone": "1234567890"
},
"usage": "SINGLE_USE",
"executionMode": "SYNCHRONOUS",
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore",
"phone": "12345678"
},
"gatewayResponse": {
"transaction_id": "30d2a5ef-4c29-467b-8e48-17b48f120691",
"amount": "3.00",
"mb_transaction_id": "5111444547",
"pay_from_email": "test@paysafe.com",
"pay_to_email": "georgizgeorgiev.ger.m@sun-fish.com",
"currency": "PLN",
"merchant_id": "500008084345",
"id": "5111444547",
"processor": "SKRILL_QCO",
"status": "2",
"sid": "45b02c9f5951365ae1e017d346703f30"
},
"txnTime": "2026-04-23T09:34:54Z"
},
"eventType": "PAYMENT_HANDLE_PAYABLE",
"attemptNumber": "1",
"resourceId": "30d2a5ef-4c29-467b-8e48-17b48f120691",
"eventDate": "2026-04-23T09:34:54Z",
"links": [
{
"href": "https://api.qa.paysafe.com/alternatepayments/v1/accounts/1027035260/paymenthandles/30d2a5ef-4c29-467b-8e48-17b48f120691",
"rel": "payment_handle"
}
],
"mode": "live",
"eventName": "PAYMENT_HANDLE_PAYABLE"
}
{
"id": "30d2a5ef-4c29-467b-8e48-17b48f120691",
"paymentType": "BLIK",
"paymentHandleToken": "PHIaQN3i5WkUBe3V",
"merchantRefNum": "7d8b449d-0e03-486a-9049-cbe31750c837",
"currencyCode": "PLN",
"txnTime": "2026-04-23T09:34:54Z",
"billingDetails": {
"street": "100 Queen",
"street2": "Unit 201",
"city": "Toronto",
"zip": "123456",
"country": "US"
},
"customerIp": "172.0.0.1",
"status": "COMPLETED",
"links": [
{
"rel": "redirect_payment",
"href": "https://api.qa.paysafe.com/alternatepayments/v1/redirect?accountId=1027035260&paymentHandleId=30d2a5ef-4c29-467b-8e48-17b48f120691&token=eyJhbGciOiJIUzI1NiJ9.eyJhY2QiOiIxMDI3MDM1MjYwIiwicHlkIjoiMzBkMmE1ZWYtNGMyOS00NjdiLThlNDgtMTdiNDhmMTIwNjkxIiwiZXhwIjoxNzc2OTM4Njk1fQ.WMsjmvHaggvsvRB2cf5eyRh2JQu9-f2LgP7CRya2vJY"
}
],
"liveMode": false,
"simulator": "EXTERNAL",
"usage": "SINGLE_USE",
"action": "REDIRECT",
"executionMode": "SYNCHRONOUS",
"amount": 300,
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore",
"phone": "12345678"
},
"timeToLiveSeconds": 0,
"gatewayResponse": {
"transaction_id": "30d2a5ef-4c29-467b-8e48-17b48f120691",
"amount": "3.00",
"mb_transaction_id": "5111444547",
"pay_from_email": "test@paysafe.com",
"pay_to_email": "georgizgeorgiev.ger.m@sun-fish.com",
"currency": "PLN",
"merchant_id": "500008084345",
"id": "5111444547",
"processor": "SKRILL_QCO",
"status": "2",
"sid": "45b02c9f5951365ae1e017d346703f30"
},
"returnLinks": [
{
"rel": "on_cancelled",
"href": "https://www.amazon.ca/"
},
{
"rel": "default",
"href": "https://www.google.com/"
},
{
"rel": "on_failed",
"href": "https://www.facebook.com/"
}
],
"transactionType": "PAYMENT",
"gatewayReconciliationId": "30d2a5ef-4c29-467b-8e48-17b48f120691",
"updatedTime": "2026-04-23T09:36:52Z",
"statusTime": "2026-04-23T09:36:52Z",
"profile": {
"firstName": "kranthi",
"lastName": "kumar",
"email": "test@paysafe.com",
"dateOfBirth": {
"day": 1,
"month": 1,
"year": 1901
},
"phone": "1234567890"
}
}
{
"payload": {
"accountId": "1027035260",
"id": "dd0ff4ef-b382-40a7-864c-7dbbc16032dc",
"merchantRefNum": "b6b51b65-5114-46ac-923c-3c375c813652",
"paymentHandleToken": "PHYRAGiAi3BOGuOn",
"transactionType": "PAYMENT",
"amount": 300,
"currencyCode": "PLN",
"status": "EXPIRED",
"statusReason": "AUTH_EXPIRED",
"paymentType": "BLIK",
"billingDetails": {
"street1": "100 Queen",
"street2": "Unit 201",
"zip": "123456",
"city": "Toronto",
"country": "US"
},
"statusTime": "2026-04-23T09:53:38Z",
"updatedTime": "2026-04-23T09:53:38Z",
"gatewayReconciliationId": "dd0ff4ef-b382-40a7-864c-7dbbc16032dc",
"customerIp": "172.0.0.1",
"profile": {
"firstName": "kranthi",
"lastName": "kumar",
"email": "test@paysafe.com",
"dateOfBirth": {
"day": 1,
"month": 1,
"year": 1901
},
"phone": "1234567890"
},
"usage": "SINGLE_USE",
"executionMode": "SYNCHRONOUS",
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore",
"phone": "12345678"
},
"gatewayResponse": {
"transaction_id": "dd0ff4ef-b382-40a7-864c-7dbbc16032dc",
"amount": "3.00",
"mb_transaction_id": "5111444541",
"pay_from_email": "test@paysafe.com",
"pay_to_email": "georgizgeorgiev.ger.m@sun-fish.com",
"currency": "PLN",
"merchant_id": "500008084345",
"id": "5111444541",
"processor": "SKRILL_QCO",
"status": "2",
"sid": "250b1f945006e8ae7b037900c6fd4d65"
},
"txnTime": "2026-04-23T09:32:17Z"
},
"eventType": "PAYMENT_HANDLE_EXPIRED",
"attemptNumber": "1",
"resourceId": "dd0ff4ef-b382-40a7-864c-7dbbc16032dc",
"eventDate": "2026-04-23T09:32:17Z",
"links": [
{
"href": "https://api.qa.paysafe.com/alternatepayments/v1/accounts/1027035260/paymenthandles/dd0ff4ef-b382-40a7-864c-7dbbc16032dc",
"rel": "payment_handle"
}
],
"mode": "live",
"eventName": "PAYMENT_HANDLE_EXPIRED"
}
{
"payload": {
"accountId": "1027035260",
"id": "865023e1-27f1-44fd-bd9e-703a8673da0b",
"merchantRefNum": "09843e30-183b-4685-a362-fb47c832f81d",
"paymentHandleToken": "PHIaQN3i5WkUBe3V",
"amount": 300,
"currencyCode": "PLN",
"status": "COMPLETED",
"gatewayResponse": {
"transaction_id": "30d2a5ef-4c29-467b-8e48-17b48f120691",
"amount": "3.00",
"mb_transaction_id": "5111444547",
"pay_from_email": "test@paysafe.com",
"pay_to_email": "georgizgeorgiev.ger.m@sun-fish.com",
"currency": "PLN",
"merchant_id": "500008084345",
"id": "5111444547",
"processor": "SKRILL_QCO",
"status": "2",
"sid": "45b02c9f5951365ae1e017d346703f30"
},
"paymentType": "BLIK",
"source": "SingleAPI",
"availableToSettle": 0,
"txnTime": "2026-04-23T09:34:54Z",
"billingDetails": {
"street1": "100 Queen",
"street2": "Unit 201",
"zip": "123456",
"city": "Toronto",
"country": "US"
},
"customerIp": "172.0.0.1",
"profile": {
"firstName": "kranthi",
"lastName": "kumar",
"email": "test@paysafe.com",
"dateOfBirth": {
"day": 1,
"month": 1,
"year": 1901
},
"phone": "1234567890"
},
"settleWithAuth": true,
"statusTime": "2026-04-23T09:36:52Z",
"updatedTime": "2026-04-23T09:36:52Z",
"gatewayReconciliationId": "30d2a5ef-4c29-467b-8e48-17b48f120691"
},
"eventType": "PAYMENT_COMPLETED",
"attemptNumber": "1",
"resourceId": "865023e1-27f1-44fd-bd9e-703a8673da0b",
"eventDate": "2026-04-23T09:34:54Z",
"links": [
{
"href": "https://api.qa.paysafe.com/alternatepayments/v1/accounts/1027035260/payments/865023e1-27f1-44fd-bd9e-703a8673da0b",
"rel": "payment"
}
],
"mode": "live",
"eventName": "PAYMENT_COMPLETED"
}