Skip to content

Blik

General Integration option

Payment

Payment Flow

  1. The customer initiates the payment on the merchant's website.
  2. The merchant sends a payment request to PaySage.io.
  3. PaySage.io responds with a link to the payment page.
  4. The merchant redirects the customer to the payment page.
  5. The customer completes the payment.
  6. PaySage.io sends a webhook notification with the payment status to the merchant.

Info

This integration option supports only PLN currency.

Request

Send a payment request with the following additional data:

object
amount
required
bigInteger
Transaction amount in minimal currency units, for example, 5000 (50 PLN).
description
required
string(255)
A short description of the order.
currency
required
string
PLN
return_url
required

string
A URL to return the customer to when a transaction is completed.
language
required
string
The language of the payment page. Possible values: en (English), pl (Polish), ua (Ukrainian), pt (Portuguese).
ip
required
string
The customer's IP address.
object
A section of the payment method.
type
required
string
blik
object
A section of information about the customer.
first_name
required
string
The customer's first name.
last_name
required
string
The customer's last name.
middle_name
string
The customer's middle name.
external_id
string
The customer's identifier in the merchant's system.
country
required
string (2)
The customer's country in the ISO 3166-1 Alpha-2 format. For example, PL.
email
required
string
The customer's email address.
phone
required
string
The customer's phone number.
city
string
The customer's billing city.
address
string
The customer's billing address.
zip
string
The customer's billing ZIP or postal code.
birth_date
string
The customer's date of birth in the ISO 8601 format (YYYY-MM-DD).
Request example
{
    "request": {
        "test": true,
        "amount": 1500,
        "currency": "PLN",
        "language": "en",
        "ip": "127.0.0.1",
        "description": "description",
        "return_url": "https://return.com",
        "method": {
            "type": "blik"            
        },
        "customer": {            
          "first_name": "John",
          "last_name": "Kohl",
          "middle_name": "James",
          "external_id": "123abc",
          "phone": "0123456789",
          "email": "email@example.com",
          "country": "GB",
          "city": "City",
          "address": "First street, 8",
          "zip": "10115",
          "birth-date": "1990-01-01"                     
        }
    }
}
Response

Redirect your customer to the URL received as the value of the form.action parameter.

Response example
{
  "transaction": {
    "uid": "193d6738-76de-4895-8ba7-bae9f445125d",
    "type": "payment",
    "status": "pending",
    "amount": 1500,
    "currency": "PLN",
    "description": "description",
    "created_at": "2025-01-23T14:01:09Z",
    "updated_at": "2025-01-23T14:01:09Z",
    "method_type": "blik",
    "receipt_url": "https://backoffice.paysage.io/customer/transactions/193d6738-76de-4895-8ba7-bae9f445125d/d7f9bf41df62deb99ce1bc97792e99e7d23fa72f4fef9270525a3a4a793d1e29?language=en",
    "payment": {
      "status": "pending",
      "gateway_id": 4879,
      "message": "Transaction was initialized."
    },
    "blik": {
      "type": "blik"
    },
    "customer": {
      "email": "test@example.com",
      "ip": null
    },
    "manually_corrected_at": null,
    "version": 0,
    "message": "Transaction was initialized.",
    "test": true,
    "language": "en",
    "billing_address": {
      "email": "test@example.com"
    },
    "additional_data": {
      "payment_method": {
        "type": "alternative"
      }
    },    
    "gateway": {
      "iframe": false
    },
    "form": {
      "action": "https://example/en/checkout?address=TGmEwV1RrNiF9f1Dk7By1Xk8F63P5jcbT1",
      "method": "GET",
      "fields": []
    }
  }
}

Refund

Refunds are supported by PG and DC integration options.

Request

Send a standard refund request. The amount value must not exceed the amount of the parent transaction. It is possible to make multiple refunds for the same payment transaction, in this case the sum of refund amounts must not exceed the amount of the corresponding payment transaction.

MH Integration option

Payment

Payment Flow

  1. The customer selects Blik as a payment method on the merchant's website.
  2. The merchant sends a payment request to the PaySage.io.
  3. PaySage.io responds with a link to the payment page.
  4. The merchant redirects the customer to the payment page.
  5. The customer completes the payment.
  6. PaySage.io sends a webhook notification with the payment status to the merchant.
  7. The merchant displays the payment status to the customer.

Info

This integration option supports only PLN and EUR currencies.

Request

Send a payment request with the following additional data:

object
return_url
required
string
URL to return the customer to when the transaction is completed.
ip
string
The customer's IP address.
object
A section of the payment method.
type
required
string
blik
user_id
required
string
Unique customer identifier in the merchant's system.
object
A section of information about the customer.
first_name
required
string
The customer's first name.
last_name
required
string
The customer's last name.
email
required
string
The customer's email address.
phone
required
string
The customer's phone number including the country code and without special characters.
country
required
string (2)
The customer's country in the ISO 3166-1 Alpha-2 format. For example, PL.
Request example
{
  "request": {
    "amount": 500,
    "currency": "PLN",
    "description": "description",
    "test": true,
    "return_url": "https://return.com",          
    "language": "en",
    "customer": {
      "first_name": "John",
      "last_name": "Doe",
      "phone": "17777777777",
      "email": "example@example.com",
      "country": "PL"
    },
    "method": {
      "type": "blik",
      "user_id": "fdsaf345"
    }
  }
}
Response

The blik response object will have the parameters from the request as well as the form object with a link to which you need to redirect the customer to finalize the payment.

Response example
{
  "transaction": {
    "uid": "0c317a6e-6484-4d3f-9880-362e44a177b3",
    "type": "payment",
    "status": "pending",
    "amount": 500,
    "currency": "PLN",
    "description": "description",
    "created_at": "2024-03-14T12:52:34Z",
    "updated_at": "2024-03-14T12:52:34Z",
    "method_type": "blik",
    "receipt_url": "https://backoffice.paysage.io/customer/transactions/0c317a6e-6484-4d3f-9880-362e44a177b3/c464dc235b72b3cdf5cc5eee22493e13020bf89b1311aca6b9102a1f406a6d1d?language=en",
    "payment": {
      "status": "pending",
      "gateway_id": 3806,
      "ref_id": "1710420754629",
      "message": "Transaction was initialized",
      "rrn": 33761341
    },
    "blik": {
      "user_id": "fdsaf345",
      "type": "blik"
    },
    "customer": {
      "first_name": "John",
      "last_name": "Doe",
      "email": "example@example.com",
      "country": "PL",
      "phone": "17777777777",
      "ip": "null"
    },
    "manually_corrected_at": null,
    "message": "Transaction was initialized",
    "test": true,
    "language": "en",
    "billing_address": {
      "first_name": "John",
      "last_name": "Doe",
      "email": "example@example.com",
      "country": "PL",
      "phone": "17777777777"
    },
    "additional_data": {
      "payment_method": {
        "type": "alternative"
      }
    },
    "gateway": {
      "iframe": false
    },
    "form": {
      "action": "https://mh/v1/paymentpage/1298/1710420754629",
      "method": "GET",
      "fields": []
    }
  }
}

CA Integration option

Payment

Payment Flow

  1. The customer initiates the payment on the merchant's website.
  2. The merchant sends a payment request to PaySage.io.
  3. PaySage.io responds with a link to the payment page.
  4. The merchant redirects the customer to the payment page.
  5. The customer completes the payment.
  6. PaySage.io sends a webhook notification with the payment status to the merchant.

Info

This integration option supports only PLN currency.

Request

Send a payment request with the following additional data:

object
return_url
required

string
A URL to return the customer to when a transaction is completed.
ip
required
string
The customer's IP address.
object
A section of the payment method.
type
required
string
blik
object
A section of information about the customer.
external_id
string (64)
The customer's identifier in the merchant's system.
first_name
required
string (50)
The customer's first name.
last_name
required
string (50)
The customer's last name.
email
required
string
The customer's email address.
phone
required
string
The customer's phone number.
country
required
string (2)
The customer's country in the ISO 3166-1 Alpha-2 format. For example, PL.
city
string (50)
The customer's city.
address
string (255)
The customer's address.
zip
string (10)
The customer's postal code.
Request example
{
  "request": {
    "amount": 1010,
    "currency": "PLN",
    "description": "description",
    "skip_duplicate_check": true,
    "test": false,
    "tracking_id": "189",
    "notification_url": "https://notification-url",
    "return_url": "https://return-url",
    "ip": "127.0.0.1",
    "language": "en",
    "customer": {
      "first_name": "John",
      "last_name": "Doe",      
      "country": "PL",
      "city": "Warsaw",
      "zip": "00-669",
      "email": "john@example.com",
      "address": "1st Street",
      "phone": "17777777777",     
      "external_id": "123bh7"      
    },
    "method": {
      "type": "blik"
    }
  }
}
Response

Redirect the customer to the URL received as the value of the form.action parameter.

Response example
{
  "transaction": {
    "uid": "b9265cbb-1a18-4276-ba32-7508a93eec4d",
    "type": "payment",
    "status": "pending",
    "amount": 1010,
    "currency": "PLN",
    "description": "description",
    "created_at": "2026-04-23T13:57:16Z",
    "updated_at": "2026-04-23T13:57:16Z",
    "method_type": "blik",
    "receipt_url": "https://backoffice.paysage.io/customer/transactions/b9265cbb-1a18-4276-ba32-7508a93eec4d/3d8e6b0e0d2a8ef787d70cc3d150496681e7a1b388f4602c36e41e77cb37c673?language=en",
    "payment": {
      "status": "pending",
      "gateway_id": 6539,
      "ref_id": "ca096dc9-4924-4b67-869f-2ed3ace1c579",
      "message": "Transaction was initialized."
    },
    "blik": {
      "type": "blik",
      "use_pending_page": true
    },
    "customer": {
      "zip": "00-669",
      "city": "Warsaw",
      "email": "john@example.com",
      "phone": "17777777777",
      "address": "1st Street",
      "country": "PL",      
      "last_name": "Doe",
      "first_name": "John",
      "external_id": "123bh7",     
      "ip": "127.0.0.1"
    },
    "manually_corrected_at": null,
    "version": 2,
    "message": "Transaction was initialized.",
    "tracking_id": "189",
    "test": false,
    "language": "en",
    "billing_address": {
      "zip": "00-669",
      "city": "Warsaw",
      "email": "john@example.com",
      "phone": "17777777777",
      "address": "1st Street",
      "country": "PL",      
      "last_name": "Doe",
      "first_name": "John"
    },
    "additional_data": {
      "payment_method": {
        "type": "alternative"
      }
    },
    "smart_routing_verification": {
      "status": "successful"
    },
    "gateway": {
      "iframe": false
    },
    "form": {
      "action": "link-to-payment-page",
      "fields": [],
      "method": "GET"
    }
  }
} 

PFN Integration option

Payment

This integration option supports two payment flows. In the first flow, the customer enters a BLIK code on the merchant’s website, and the code is sent in the payment request. In the second flow, the customer is redirected to the provider’s page to complete the payment. Contact your manager or the Tech Support Team to confirm which flow is available for your shop.

Payment with BLIK code entry on the merchant’s website

  1. The customer initiates the payment on the merchant's website and submits the 6-digit BLIK code.
  2. The merchant sends a payment request to PaySage.io.
  3. PaySage.io sends a response with the pending status.
  4. The customer confirms the payment in their banking app.
  5. PaySage.io sends a webhook notification with the final payment status to the merchant.

Payment with a redirect to the provider’s page

  1. The customer initiates the payment on the merchant's website.
  2. The merchant sends a payment request to PaySage.io.
  3. PaySage.io responds with a link to the payment page.
  4. The merchant redirects the customer to the payment page.
  5. The customer completes the payment.
  6. PaySage.io sends a webhook notification with the payment status to the merchant.

Info

This integration option supports only PLN currency.

Request

Send a payment request with the following additional data:

object
ip
required
string
The customer's IP address.
return_url
required

string
A URL to return the customer to when a transaction is completed.
object
A section of the payment method.
type
required
string
blik
password
conditionally required
string (6)
6-digit BLIK code. This parameter is required if your shop uses the flow in which the customer enters the code on the merchant’s website. Please ask your manager or the Tech Support Team whether this flow is supported by your shop.
object
A section of information about the customer.
external_id
required
string
The customer's identifier in the merchant's system.
first_name
required
string
The customer's first name.
last_name
required
string
The customer's last name.
birth_date
required
string
The customer's date of birth in the ISO 8601 format (YYYY-MM-DD).
email
required
string
The customer's email address.
phone
required
string
The customer's phone number with the country code and without spaces and +. For example, 48500111222.
city
required
string
The customer's city.
address
required
string
The customer's address.
zip
required
string
The customer's postal code.
Request example
{
  "request": {
    "amount": 100,
    "currency": "PLN",
    "description": "Order description",    
    "test": false,
    "tracking_id": "Tracking-123",
    "notification_url": "https://example.com/notification",
    "return_url": "https://example.com/return",
    "ip": "127.0.0.1",
    "language": "en",
    "customer": {
      "first_name": "John",
      "last_name": "Doe",
      "birth_date": "1990-01-25",
      "email": "john@example.com",
      "phone": "48500111222",          
      "city": "Warsaw",
      "address": "Main Str. 1",
      "zip": "00669",
      "external_id": "123bh7"
    },
    "method": {
      "type": "blik",
      "password": "123456"
    }
  }
}
Response
Response example
{
    "transaction": {
        "uid": "0fa0eb13-d58b-4cac-b39a-0fb9604410e6",
        "type": "payment",
        "status": "pending",
        "amount": 100,
        "currency": "PLN",
        "description": "Order description",
        "created_at": "2026-09-30T08:18:04Z",
        "updated_at": "2026-09-30T08:18:04Z",
        "method_type": "blik",
        "receipt_url": "https://backoffice.paysage.io/customer/transactions/0fa0eb13-d58b-4cac-b39a-0fb9604410e6/ba9a1640045b7feca38c200475eb1cf2f16e2f779e0ecaa0111b1b2d2d8d0262?language=en",
        "payment": {
            "status": "pending",
            "gateway_id": 7371,
            "ref_id": "665735860496205854",
            "message": "Transaction was initialized."
        },
        "blik": {
            "type": "blik"
        },
        "customer": {
            "zip": "00669",
            "city": "Warsaw",
            "email": "john@example.com",
            "phone": "48500111222",
            "address": "Main Str. 1",                
            "last_name": "Doe",
            "birth_date": "1990-01-25",
            "first_name": "John",
            "external_id": "123bh7",
            "ip": "127.0.0.1"
        },
        "manually_corrected_at": null,
        "version": 1,
        "message": "Transaction was initialized.",
        "tracking_id": "Tracking-123",
        "test": false,
        "language": "en",
        "billing_address": {
            "zip": "00669",
            "city": "Warsaw",
            "email": "john@example.com",
            "phone": "48500111222",
            "address": "Main Str. 1",               
            "last_name": "Doe",
            "birth_date": "1990-01-25",
            "first_name": "John"
        },
        "additional_data": {
            "payment_method": {
                "type": "alternative"
            }
        },
        "smart_routing_verification": {
            "status": "skipped"
        },
        "gateway": {
            "iframe": false
        }
    }
}

APR Integration option

Payment

Payment Flow

  1. The customer initiates the payment on the merchant's website and submits a 6-digit BLIK code.
  2. The merchant sends a payment request to PaySage.io.
  3. PaySage.io responds with the pending status.
  4. The customer confirms the payment in their banking app.
  5. PaySage.io sends a webhook notification with the final payment status to the merchant.

Info

This integration option supports only PLN currency.

Request

Send a payment request with the following data:

object
amount
required
bigInteger
Transaction amount in minimal currency units, for example, 5000 (50 PLN).
currency
required
string
PLN.
description
required
string
Short description of the order.
return_url
required
string
URL to return the customer to when a transaction is completed.
object
Section of the payment method.
type
required
string
blik.
password
required
string (6)
6-digit BLIK code.
object
Section of information about the customer.
external_id
required
string (255)
Customer's identifier in the merchant's system.
first_name
required
string (60)
Customer's first name.
last_name
required
string (60)
Customer's last name.
birth_date
required
string
Customer's date of birth in the ISO 8601 format (YYYY-MM-DD).
email
required
string
Customer's email address.
phone
required
string (200)
Customer's phone number with the country code and without spaces and +. For example, 48500111222.
city
required
string (120)
Customer's city.
address
required
string (510)
Customer's address.
zip
required
string (40)
Customer's postal code.
Request example
{
  "request": {
    "amount": 100,
    "currency": "PLN",
    "description": "Order 1234",
    "return_url": "https://example.com/return",
    "customer": {
      "external_id": "customer-1234",
      "first_name": "Anna",
      "last_name": "Nowak",
      "birth_date": "1990-01-25",
      "email": "anna@example.com",
      "phone": "48500111222",
      "city": "Warsaw",
      "address": "Main Street 1",
      "zip": "00669"
    },
    "method": {
      "type": "blik",
      "password": "123456"
    }
  }
}
Response

The payment initially has the pending status. The customer confirms it in their banking app. Use the webhook notification to get the final status.

Response example
{
    "transaction": {
        "uid": "0be95466-c46d-47d8-a1d9-e7570ed65316",
        "type": "payment",
        "status": "pending",
        "amount": 100,
        "currency": "PLN",
        "description": "Order 1234",
        "created_at": "2026-10-02T09:14:27Z",
        "updated_at": "2026-10-02T09:14:27Z",
        "method_type": "blik",
        "receipt_url": "https://backoffice.paysage.io/customer/transactions/0be95466-c46d-47d8-a1d9-e7570ed65316/d5da7a2d71df1bba2fefb78f9bf059a25d42ff8bd14b3cff02fa934c09245342",
        "payment": {
            "status": "pending",
            "gateway_id": 7494,
            "ref_id": "30066568314",
            "message": "Transaction was initialized."
        },
        "blik": {
            "type": "blik"
        },
        "customer": {
            "zip": "00669",
            "city": "Warsaw",
            "email": "anna@example.com",
            "phone": "48500111222",
            "address": "Main Street 1",
            "last_name": "Nowak",
            "birth_date": "1990-01-25",
            "first_name": "Anna",
            "external_id": "customer-1234",
            "ip": null
        },
        "manually_corrected_at": null,
        "version": 1,
        "message": "Transaction was initialized.",
        "test": false,
        "billing_address": {
            "zip": "00669",
            "city": "Warsaw",
            "email": "anna@example.com",
            "phone": "48500111222",
            "address": "Main Street 1",
            "last_name": "Nowak",
            "birth_date": "1990-01-25",
            "first_name": "Anna"
        },
        "additional_data": {
            "payment_method": {
                "type": "alternative"
            }
        },
        "smart_routing_verification": {
            "status": "skipped"
        },
        "gateway": {
            "iframe": true
        }
    }
}

PPZ Integration option

Payment

Payment flow

  1. The customer initiates the payment on the merchant's website and enters a six-digit BLIK code.
  2. The merchant sends a payment request to PaySage.io.
  3. PaySage.io responds with the pending status.
  4. The customer confirms the payment in their banking app.
  5. PaySage.io sends a webhook notification with the final payment status. The merchant may also use the status query.

Info

This integration option supports only PLN. The minimum payment amount is 5 PLN.

Request

Send a payment request with the following data:

object
amount
required
bigInteger
Transaction amount in minimal currency units, for example, 500 (5 PLN).
currency
required
string (3)
PLN.
return_url
required
string
URL to return the customer to when a transaction is completed.
description
required
string
Short description of the order.
ip
required
string
Customer's IP address.
object
Section of the payment method.
type
required
string
blik.
password
required
string (6)
Six-digit BLIK code.
object
Section of information about the customer.
first_name
required
string (60)
Customer's first name.
last_name
required
string (60)
Customer's last name.
email
required
string
Customer's email address.
external_id
string (255)
Customer's identifier in the merchant's system.
phone
string (200)
Customer's phone number including the country code.
address
string (510)
Customer's billing address.
city
string (120)
Customer's city.
state
string (40)
Customer's billing state or region. Required if customer.country is AU, US, or CA.
zip
string (40)
Customer's billing ZIP or postal code.
country
string (2)
Customer's billing country in the ISO 3166-1 alpha-2 format.
object
Section of additional payment data.
object
Section of browser data.
user_agent
required
string
User agent string for the customer's browser. Equals navigator.userAgent in JavaScript.
Request example
{
    "request": {
        "amount": 500,
        "currency": "PLN",
        "return_url": "https://example.com/return",
        "description": "Order 1234",
        "ip": "203.0.113.10",
        "method": {
            "type": "blik",
            "password": "123456"
        },
        "customer": {
            "first_name": "Anna",
            "last_name": "Nowak",
            "email": "anna@example.com",
            "external_id": "customer-1234",
            "phone": "+48500111222",
            "address": "Main Street 1",
            "city": "Warsaw",
            "zip": "00-669",
            "country": "PL"
        },
        "additional_data": {
            "browser": {
                "user_agent": "Mozilla/5.0 (iPhone)"
            }
        }
    }
}
Response

The payment initially has the pending status. The customer confirms it in their banking app. Use the webhook notification or status query to get the final status.

Response example
{
    "transaction": {
        "uid": "68c9b124-8c36-4cfb-bbba-4b6f39efe30f",
        "type": "payment",
        "status": "pending",
        "amount": 500,
        "currency": "PLN",
        "description": "Order 1234",
        "created_at": "2026-10-02T14:59:05Z",
        "updated_at": "2026-10-02T14:59:06Z",
        "method_type": "blik",
        "receipt_url": "https://backoffice.paysage.io/customer/transactions/68c9b124-8c36-4cfb-bbba-4b6f39efe30f/22fd22ec6dedc1d8e83fa0300a749dd4cdfb9bc2d1563b1f502f0f7dc9e6973d",
        "payment": {
            "status": "pending",
            "gateway_id": 7514,
            "ref_id": "248797710577",
            "message": "Transaction was initialized."
        },
        "blik": {
            "type": "blik"
        },
        "customer": {
            "zip": "00-669",
            "city": "Warsaw",
            "email": "anna@example.com",
            "phone": "+48500111222",
            "address": "Main Street 1",
            "country": "PL",
            "last_name": "Nowak",
            "first_name": "Anna",
            "external_id": "customer-1234",
            "ip": "203.0.113.10"
        },
        "manually_corrected_at": null,
        "version": 1,
        "message": "Transaction was initialized.",
        "test": false,
        "billing_address": {
            "zip": "00-669",
            "city": "Warsaw",
            "email": "anna@example.com",
            "phone": "+48500111222",
            "address": "Main Street 1",
            "country": "PL",
            "last_name": "Nowak",
            "first_name": "Anna"
        },
        "additional_data": {
            "browser": {
                "user_agent": "Mozilla/5.0 (iPhone)"
            },
            "payment_method": {
                "type": "alternative"
            }
        },
        "smart_routing_verification": {
            "status": "skipped"
        },
        "gateway": {
            "iframe": false
        }
    }
}

Refund

Request

Send a standard refund request. The amount value must equal the amount of the corresponding payment transaction. Only one full refund is supported for each payment transaction.