- METHOD TYPEReal-Time Bank Transfer
- PAYMENTS
- PAYOUTS
- REFUNDS
- RECURRING
Introduction
BLIK is a mobile payment system in Poland that allows users to make payments using their mobile phone. It can be used to make purchases in stores, online and to transfer money to other users.
It is a secure, fast, and convenient way to make payments and it is widely accepted by retailers and businesses in Poland.
Supported Countries
- Poland
Supported Currencies
- PLN
UX Requirements
- Use the most up-to-date logo.
- The method name is BLIK and the input field is blik_code.
- BLIK code validation: only 6 digits are allowed.
- When entering the 6-digit code, the cashier should display it to the user as [3digits][space][3digits].
- The 6-digit code should prompt the numeric keyboard on a mobile device.
- Once a One-Click account is created (after a successful transaction), the cashier should display two BLIK options:
- The “original method” is renamed to “BLIK with code”.
- The saved account appears as “BLIK without code” (press here for details).
- After initiating a deposit, the user needs to see this message:
- PL: “Potwierdź płatność w aplikacji swojego banku.”
- ENG: “Confirm the payment in your bank’s app.”
Payment (Deposit) Flow
Follow these steps to perform a payment using Nuvei REST API integration:
1. Generate a sessionToken
Press here for details.
2. Send a /payment
Request
Perform the payment by sending a /payment
request with its mandatory parameters including:
userTokenId
amount
currency
paymentOption.alternativePaymentMethod
class containing:paymentMethod
: “apmgw_BLIK“blik_code
deviceDetails
class containing:ipAddress
billingAddress
class containing:firstName
,lastName
,country
,email
userDetails
class containing:firstName
,lastName
,country
,email
Example /payment
Request
{ "sessionToken":"<sessionToken from /getSessionToken>", "merchantId":"<your merchantId>", "merchantSiteId":"<your merchantSiteId>", "clientRequestId":"<unique request ID in merchant system>", "amount":"200", "currency":"PLN", "userTokenId":"<unique customer identifier in merchant system>", "clientUniqueId":"<unique transaction ID in merchant system>", "paymentOption":{ "alternativePaymentMethod":{ "paymentMethod":"apmgw_BLIK" "blik_code":"<blik_code>" } }, "deviceDetails":{ "ipAddress":"<customer's IP address>" }, "billingAddress": { "firstName": "John", "lastName": "Smith", "country": "PL", "email": "[email protected]" }, "userDetails":{ "firstName": "John", "lastName": "Smith", "country": "PL", "email": "[email protected]" }, "timeStamp":"<YYYYMMDDHHmmss>", "checksum":"<calculated checksum>" }
BLIK processes the transaction and returns a transaction notification and status.
Example /payment
Response
{ "internalRequestId": 913985339, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "4273555827014385119", "merchantSiteId": "222058", "version": "1.0", "clientRequestId": "20240212132854", "sessionToken": "103fe11e-06b2-4af7-b494-724b44bc4e8b", "clientUniqueId": "20180327175242", "orderId": "420274599", "userTokenId": "TestToken2", "paymentOption": { "userPaymentOptionId": "104082698", "card": {} }, "transactionStatus": "PENDING", "transactionId": "711000000032057913" }
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to the URL provided in urlDetails.notificationUrl
, which Nuvei recommends including in the /payment
request.
Example /payment
DMN with status
=APPROVED
...'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=49999999999&userid=7129999999990408448&merchant_unique_id=P991115001029224930BPG&customData=&productId=&first_name=John&last_name=Smith&email=john.smith%40email.com¤cy=PLN&clientUniqueId=P231111111111111111&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=&address2=&country=Poland&state=&city=&zip=&phone1=48-500038756&phone2=&phone3=&client_ip=188.123.211.13&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&acquirerBank=BLIK-PI&expMonth=&expYear=&Token=&tokenId=&AuthCode=&AvsCode=&Cvv2Reply=&shippingCountry=&shippingState=&shippingCity=&shippingAddress=&shippingZip=&shippingFirstName=&shippingLastName=&shippingPhone=&shippingCell=&shippingMail=&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=253318&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_BLIK&ID=&merchant_id=5855689376797576890&responseTimeStamp=2023-11-15.22%3A50%3A09&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=7124648678530408448&userPaymentOptionId=3343678286&TransactionID=2130000003751688921&ExternalaccountID=009040&externalTransactionId=77335772831&APMReferenceID=641AEA29FD681BD156CC5F798C539FA3&orderTransactionId=49934074126&totalAmount=303.99&dynamicDescriptor=NuveiDescriptor&item_name_1=NA&item_number_1=&item_amount_1=100.00&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&upoRegistrationDate=20231116&type=DEPOSIT&clientRequestId=P231115001029224930BPG&relatedTransactionId=&sessionId=52d54fb30876dabfd3248ac87402&responsechecksum=5cc71c96c150f2ddeaad0112f9be686e073a26809caa36f45a685f2179633c1b&advanceResponseChecksum=db1fb6d1256d5b230756c8f80e413b040f93e8e558b582ad295c772e4d4d9e77',
User Experience (Direct)
- The user selects the BLIK payment option on the Merchant’s payment page.
- The user logs in to their bank application to get their 6-digit BLIK code.
- The user enters the 6-digit code in the Cashier.
- The user must confirm the transaction on their bank application.
Testing
Testing payments using the BLIK channel requires an authorization code. For test payments, a valid authorization code starts with 777 (such as 777654). A code that does not start with 777 (such as 332885) is considered invalid and the payment is declined.
To test one-click, use amount *.04 PLN
Appendix – BLIK One-Click
The one-click payment method is an extension of the regular BLIK payment, with the ability to remember the device that the customer most often uses to finalize the transaction. The user interface is extended by the option to pay with a one-click flow. In the one-click flow, the user only needs to enter their 6-digit code once. For future deposits, the code is not required.
To select the one-click flow, the user needs to select the payment option in the cashier (there is also a mode when one-click is preselected and the checkbox is hidden):
The saved UPO shows the user’s registered bank (for the direct integration) or the BLIK token (for the other providers):
REST API
To initiate one-click, include subMethod.subMethod
: “oneClick” in a /payment
request.
Example One-Click /payment
Request
{ "sessionToken": "<sessionToken from /getSessionToken>", "merchantId": "<your merchantId>", "merchantSiteId": "<your merchantSiteId>", "clientRequestId": "<unique request ID in merchant system>", "amount": "200", "currency": "PLN", "userTokenId": "<unique customer identifier in merchant system>", "clientUniqueId": "<unique transaction ID in merchant system>", "paymentOption": { "alternativePaymentMethod": { "paymentMethod": "apmgw_BLIK", "blik_code": "<blik_code>" }, "subMethod": { "subMethod": "oneClick" }, "deviceDetails": { "ipAddress": "<customer's IP address>" }, "billingAddress": { "firstName": "John", "lastName": "Smith", "country": "PL", "email": "[email protected]" }, "userDetails": { "firstName": "John", "lastName": "Smith", "country": "PL", "email": "[email protected]" }, "timeStamp": "<YYYYMMDDHHmmss>", "checksum": "<calculated checksum>" } }
The response and the DMN include the userPaymentOptionId
to use in subsequent BLIK one-click transaction requests. Include subMethod.subMethod
: “oneClick” in those requests. However, do not include the alternativePaymentMethod
class.
Example Subsequent /payment
Request with UPO
{ "sessionToken": "<sessionToken from /getSessionToken>", "merchantId": "<your merchantId>", "merchantSiteId": "<your merchantSiteId>", "clientRequestId": "<unique request ID in merchant system>", "amount": "200", "currency": "PLN", "userTokenId": "<unique customer identifier in merchant system>", "clientUniqueId": "<unique transaction ID in merchant system>", "paymentOption": { "subMethod": { "subMethod": "oneClick" }, "userPaymentOptionId": "2153496261" }, "deviceDetails": { "ipAddress": "<customer's IP address>" }, "billingAddress": { "firstName": "John", "lastName": "Smith", "country": "PL", "email": "[email protected]" }, "userDetails": { "firstName": "John", "lastName": "Smith", "country": "PL", "email": "[email protected]" }, "timeStamp": "<YYYYMMDDHHmmss>", "checksum": "<calculated checksum>" }