In this guide, we'll show you how to set up the request, which will give you access to offer Blik as an alternative payment method.

The online payment process with BLIK
At a high level, the majority of APMs work like this:

Typical API integration for an APM
In a BLIK transaction, the first request is a Transactions Create. This is used to advise the payment method the details of a new transaction and to retrieve the necessary information required to facilitate authentication.
In this example, we set up a BLIK transaction.
{
"id": "TRN_1VEU499ZgqmnSwLEjoKFNTK8Uv3xxx_412191212769",
"time_created": "2025-04-11T08:40:39.840Z",
"type": "SALE",
"status": "INITIATED",
"channel": "CNP",
"capture_mode": "AUTO",
"amount": "1000",
"currency": "PLN",
"country": "PL",
"merchant_id": "MER_28c5fce9ebe0495bb1a5125be4fc8fXXxx",
"merchant_name": "UCP_Test_Merchant",
"account_id": "TRA_a5d4ed72eaa24195b1efe857bd75a2xxxx",
"account_name": "APM_Transaction_Processing",
"reference": "202412191212769",
"payment_method": {
"result": "01",
"message": "PENDING",
"entry_mode": "ECOM",
"provider_narrative": "",
"apm": {
"redirect_url": "https://test.apm.gpwebpay.com/payment-flow?pd=eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..pLOUSEsCkXuu_ffy.WhzTv-wxmnjQKpcMm12IoWUNeSNcbmuu-xTGvlUKbaTtZg8-tGsAccTdJPpbC4MuHVrVJY61cPnXsgnhDKZ18gm6A-Dv34ULCI7kONcWFigVH9KPrWH8wD-3FpsyXPdhnnsEqRdXI0wJrBtfEVlMIb6EHsRVBndGMBsCBUDOXo4izYzeqKWaMRyUothTWvllRWwckE0E-bvc2bc5opZcR5w-wy_p37565rbwKWSzKT05KpZxHXBV2Duwik3NuNdzogAS7vnfGz6KeSMwlGTzdAEE6bPhCehCMGiUcsc1Eph7W04sDWuH59g2ul1GI4NakmjL9ZCI8ilKr2aXaLsciBggqX6fabIIUIkrYYbSKB5j70tZdHiv3EFMOtWAOeE_V90HoljpjV8pRS7HaRalqGbWFkkhSAKJj3GrAgbw20yxmgTXTyrqZFLH869nVD69Mogp_r082S1YpCUmUN7pJf5QlFiAKRPFFQq6uJ3XDDrb1jdj2efqHNb42Y85yhP02S8YxwHOkkTnisdTQKC6UXwOl-4GM48c8QWgaH3ZHMy2n8-8rOqH67dvQd7RjuABbh2E4Xxtp-IHRCICQoB4Qgkiqm9RcaTBR1nDhcKo-uN8TgthpuAEn3pY9TOhyeaAfX7Ln0ROx2GiIrMb5_O_YY9FKc--7FcfgIKsVGRAnKbKA26RwE85ZGqDxXTfxx10UpIueK0RL9gXYGHo22FLd5KkeMGyWDho2ZsYPkXYC76klZrgiVkdtfPc3oTC-eqfQ4OotdTcv49k1nDHKpq15x2rsY_ulEimIYS0b2SBs7LKgyipQzb3TYsdPVfpStZGtMVLmNuXh3QdEBSv-pVHPOALlDlgyA.nS2wOVSVxDTNLDDf1bK3Zw&lng=pl",
"provider": "blik",
"provider_payer_name": "NAME NOT PROVIDED",
"wait_notification": "",
"fund_status": "",
"optional_redirect": "",
"bank": {
"account_number": "",
"iban": "",
"identifier_code": "",
"name": "",
"code": ""
},
"mandate": {
"reference": ""
}
}
},
"platforms": [
{
"type": "ECOM",
"transaction_id": "",
"order_id": "TRN_1VEU499ZgqmnSwLEjoKFNTK8Uv3_412191212769",
"authcode": "",
"pasref": "17443608382189257"
}
],
"payer": {
"country": "PL",
"email": ""
},
"batch_id": "",
"action": {
"id": "ACT_1VEU499ZgqmnSwLEjoKFNTK8Uv",
"type": "INITIATE",
"time_created": "2025-04-11T08:40:39.840Z",
"result_code": "SUCCESS",
"app_id": "p2GgW0PntEUiUh4qXhJHPoDqj3G5GFGI",
"app_name": "UCP_Test_App"
}
}Following a successful initiation of the transaction, the next step is to redirect the customer to BLIK to facilitate authentication and authorization. This can be achieved in a couple of ways. For example, you could use a simple JavaScript redirect as shown below, or an HTTP GET (302 redirect).
<!DOCTYPE html>
<html>
<head>
<title>Sample APM Redirect</title>
<meta charset="UTF-8">
</head>
<body>
<script>
window.location = "https://www.paymentMethodUrl.com/pay";
</script>
</body>
</html> Once the customer completes their transaction with the payment method, they are redirected to the Return URL of the initial request. The current status of the transaction will also be returned.
html
https://webhook.site/b628afed-2245-49f2-8a87-39286b26e0ef?X-GP-Signature=9983e0f8349058a8353574df3e5790e27da8bb071eebdd83b961ebca70c821bb4a9abcd412bf01c0bcf9255eb27306e28bd011c6e0e4f9ebde8a4770a72e17d4&id=TRN_GAxizPo0xxxxxYF1WJoBInxzWiAf_41xxxxxx2769&status=PENDING&reference=202412191212769&payment_method.result=01&payment_method.message=PENDING&provider=blik&apm.wait_notification=&apm.optional_redirect=&apm.fund_status=&apm.payment_description=&apm.confirmed_accountholder=&apm.account_number=&country=PL&apm.bank.iban=&apm.bank.identifier_code=&apm.bank.name=&apm.bank.code=&action.id=ACT_cuWxjbLLD8S0ftIUndasYYYsTE9qNK&action.type=RETURN_NOTIFICATION&action.time_created=2025-07-02T11%3A08%3A18.975ZYour application might put the customer on hold for a few seconds while it checks to see if the Status URL was sent a final update. You can then redirect the customer to a final success or failure page.
The URL specified in the Status URL element in the initial request will receive the final status.
Depending on the payment method used, this can happen at the same time as the customer is redirected to your Return URL or within moments. It's also possible that the final status update might come days later.
When you receive the final status update, you may want to send the customer a status notification to indicate that the payment was finally accepted. At this point, you can begin the process of shipping the purchased items to the customer.
{
"id":"TRN_JOGrqvzOvbLy4V2n7cHsusYy8aainM",
"time_created":"2024-01-15T13:17:21.914Z",
"type":"SALE",
"status":"CAPTURED",
"channel":"CNP",
"capture_mode":"AUTO",
"amount":"1999",
"currency":"PLN",
"country":"PL",
"merchant_id":"MER_c4c0df11039c48a9b63701adeaa296c3",
"merchant_name":"Sandbox_merchant_2",
"account_id":"TRA_6716058969854a48b33347043ff8225f",
"account_name":"Transaction_Processing",
"reference":"APM-20200417",
"payment_method":{
"result":"00",
"message":"SUCCEEDED",
"entry_mode":"ECOM",
"apm":{
"provider":"blik",
"wait_notification":"",
"fund_status":"NOT_EXPECTED",
"payment_description":"3K1TRAA",
"confirmed_accountholder":"Former Glory",
"account_number":"93722",
"iban":"DE25700251750322205970",
"bank_identifier_code":"HYVEDEMM643",
"bank_name":"HypoVereinsbank Penzberg",
"bank_address":"",
"optional_redirect":""
}
},
"batch_id":"",
"action":{
"id":"ACT_mkP7xm9u47kLgTwTKhYfQXRvfynwjP",
"type":"STATUS_NOTIFICATION",
"time_created":"2020-04-20T14:36:58.193Z",
"result_code":"SUCCESS",
"app_id":"jrYHwMdYRBDGmFwwAVmi5WufYzxuQIQj",
"app_name":"sample_app"
}
}