Blik
Blik is one of the most popular payment methods in Poland allowing users to make instant payments with their banking application covered by all major Polish banks.
Initiate a Sale transaction
In the first step you POST a transaction request to the Gateway's /payments endpoint including all mandatory elements as per below table.
Element | Description |
---|---|
requestType | The only allowed requestType for Blik is "ApmSaleTransaction" |
paymentMethod.type | "BLIK" is the only value for this payment method |
consumerData | Integration data provided by the payer, e.g. Blik code submitted as item/value pairBLIK_CODE represents the one-time code or Alias indispensable to carry out authorisation of BLIK Transaction or customer authentication |
integrationData | The integration data from the external application, e.g. regularly optional values, which for this payment method are mandatory. Can be used during integration, or to allow generic parameter loading with a data-protected opt-in policy.PAYER_IP represents the IP address of the customer's device that was used during online shoppingUSER_AGENT represents the user agent of customer's internet browser used during online shopping |
The following JSON document represent an example of a "Sale" request with all mandatory elements:
{
"requestType": "ApmSaleTransaction",
"transactionAmount": {
"total": "5555.00",
"currency": "PLN"
},
"transactionOrigin": "ECOM",
"paymentMethod": {
"type": "BLIK"
},
"consumerData": [
{ "item": "BLIK_CODE",
"value": "777777"
}
],
"integrationData": [
{ "item": "PAYER_IP",
"value": "1.1.1.1"
},
{
"item": "USER_AGENT",
"value": "test"
}
]
}
The following JSON document represents an example of a response with "WAITING" status you receive from the Gateway:
{
"clientRequestId": "2838649",
"apiTraceId": "ZMpHBCmxUEQ-RxNiohOIwAAAAyA",
"ipgTransactionId": "84445406339",
"orderId": "R-508ebe24-2859-4abe-a471-01b69e8f6a27",
"paymentToken": {
"reusable": true,
"declineDuplicates": false
},
"transactionTime": 1690978056,
"transactionAmount": {
"total": 5555.00,
"currency": "PLN",
"components": {}
},
"transactionStatus": "WAITING",
"approvalCode": "?:waiting BLIK",
"processor": {
"referenceNumber": "74901428441",
"responseCode": "0",
"responseMessage": "SUCCESS"
}
}
In cases where you omitted to send all mandatory information, the issuer may send a hint what information they missed in the original request, as shown on a JSON example below.
{
"clientRequestId": "2838649",
"apiTraceId": "ZMptRkCmPXET10OgEWePtwAAAZ8",
"ipgTransactionId": "84445447370",
"orderId": "R-dba239b9-6654-4725-9077-94d82ad7863c",
"paymentToken": {
"reusable": true,
"declineDuplicates": false
},
"transactionTime": 1690987846,
"transactionStatus": "WAITING",
"approvalCode": "?:waiting BLIK",
"requiredActions": {
"requiredConsumerData": [
{
"hint": "Your 6-digit Blik Code will be provided in your Android/Iphone Blik application, and allows Blik to later inquire your confirmation on the current payment",
"validationExpression": "^\\d{6}$",
"key": "BLIK_CODE",
"options": []
}
]
}
}
In cases where your account has been configured with "Transaction Notification Feed" service, you will receive a notification once the status of the transaction has been updated.
Please contact your support team to enable your store for the 'Transaction Notification Feed' service.
You can also check the processing status individually by submitting a GET request to the .../payments/ endpoint including referenced "ipgTransactionId", e.g. GET .../payments/84445447370
In case the initial transaction has been approved, you will receive the response as on an example below:
{
"clientRequestId": "2838649",
"apiTraceId": "ZMpbceq0MmItPQFbQT9X5QAAAK0",
"ipgTransactionId": "84445425891",
"orderId": "R-dcfd788a-00c6-42b4-9ac9-d68140dfac46",
"paymentToken": {
"reusable": true,
"declineDuplicates": false
},
"transactionTime": 1690983271,
"approvedAmount": {
"total": 5555,
"currency": "PLN",
"components": {
"subtotal": 5555
}
},
"transactionAmount": {
"total": 5555,
"currency": "PLN",
"components": {
"subtotal": 5555
}
},
"transactionResult": "APPROVED",
"approvalCode": "Y:0:4445425891:PP X:74902486733",
"transactionState": "CAPTURED",
"processor": {
"referenceNumber": "74902486733",
"authorizationCode": "0",
"responseCode": "0",
"responseMessage": "SUCCESS"
}
}
Blik Recurring
Blik offers 2 recurring models:
- Model A - recurring transaction authorized by the issuer automatically (without consumer's confirmation in the app), for a fixed amount and frequency, until the expiration date.
Automatic Authorization is executed after the issuer verifies that the authorization request meets the criteria specified when creating the recurring request. - Model M - recurring transaction where the consumer's confirmation is required through their mobile app. Transactions may vary in amount and frequency. The validity of a recurring schedule may have a specified date or be set as indefinite/until cancelled.
Initial Recurring Payment / Alias Registration
For initiating a recurring payment the following set of elements must be submitted in API request:
Element | Description |
---|---|
requestType | The only allowed requestType for Blik is "ApmSaleTransaction" |
paymentMethod.type | "BLIK" is the only value for this payment method |
paymentMethod.paymentToken | Mandatory parameter for recurring schedule registration; depending on the type, it may be a visible identifier or in the case of sensitive data – an SHA256 abbreviation. |
consumerData | Integration data provided by the payer, e.g. Blik code submitted as item/value pair "BLIK_CODE" represents the one-time code or Alias indispensable to carry out authorisation of BLIK Transaction or customer authentication |
integrationData | The integration data from the external application, e.g. regularly optional values, which for this payment method are mandatory. Can be used during integration, or to allow generic parameter loading with a data-protected opt-in policy.PAYER_IP represents the IP address of the customer's device that was used during online shoppingUSER_AGENT represents the user agent of customer's internet browser used during online shoppingALIAS_TYPE with fixed value = "PAYID"ALIAS_LABEL mandatory parameter represents the label you assign to the recurring plan, e.g. Standard planRECURRING_MANDATORY - defines whether the Issuer should block the possibility for consumer to overwrite suggested criteria of automatic authorisation.Set this parameter to "true" is always required for initiating a recurring schedule for Model A RECURRING_EXPIRATION_DATE - recurring schedule expiry date, in date.time format, e.g.: 2024-02-17T00:00:00.000+01:00RECURRING_LIMIT_AMOUNT - maximum amount of a single recurring transaction; mandatory for Model ARECURRING_TOTAL_LIMIT_AMOUNT - total maximum amount of all recurring transactions; mandatory for Model ARECURRING_LIMIT_IS_FIXED - can be set to 'true' or 'false', depends on which recurring Model is used; mandatory for Model ARECURRING_REFUSE_NO_PAYID - defines whether transaction, that exclusively aim at initiating registration of the PAYID Alias, if setup to 'true' and in case the issuer does not process PAYID aliases, BLIK will decline the transaction with error_code= ER_PAIYD_UNHANDLEDRECURRING_FREQUENCY - represents the frequency and date when the recurring payment is expected to be performed; string, minLength: 4, maxLength: 6, exp: [1-9][DWMQY][ANP]([0-9] {1,2,3}; example: 1MAE; required for Model AFormat description: The first character defines the length of the period in terms of measurement units defined by means of the second field. Permissible characters: [1-9] The second character defines the payment unit: D – daily, W – weekly, M – monthly, Q – quarterly, Y – annually. The third character defines the ’day type’ of the payment: A – the selected day regardless whether that is a day off or not according to the calendar N – the next working day if the selected day of the period is a day off according to the calendar P – the previous working day if the selected day of the period is a day off according to the calendar W – transactions only on working days The fourth (and the fifth, and the sixth) character defines the day on which the first recurring transaction will be initiated, calculated from the day of sending the invitation to create/update the recurring payment (0=the same day, 1= the subsequent day, etc). Permissible characters: [0-9] or E means the end of a given period. |
The following JSON document represents an example of the initial Recurring transaction:
{
"requestType": "ApmSaleTransaction",
"transactionAmount": {
"total": "0.08",
"currency": "PLN"
},
"transactionOrigin": "ECOM",
"paymentMethod": {
"type": "BLIK",
"paymentToken": "3027d7ec-0eee-61ee-be56-0242ac120002"
},
"consumerData": [
{
"item": "BLIK_CODE",
"value": "777155"
}
],
"integrationData": [
{
"item": "PAYER_IP",
"value": "1.1.1.1"
},
{
"item": "USER_AGENT",
"value": "test"
},
{
"item": "RECURRING_EXPIRATION_DATE",
"value": "2024-02-17T00:00:00.000+01:00"
},
{
"item": "ALIAS_TYPE",
"value": "PAYID"
},
{
"item": "ALIAS_LABEL",
"value": "Standard plan"
},
{
"item": "RECURRING_FREQUENCY",
"value": "1MA0"
},
{
"item": "RECURRING_LIMIT_AMOUNT",
"value": "29.90"
},
{
"item": "RECURRING_TOTAL_LIMIT_AMOUNT",
"value": "358.8"
},
{
"item": "RECURRING_LIMIT_IS_FIXED",
"value": "true"
},
{
"item": "RECURRING_MANDATORY",
"value": "false"
},
{
"item": "RECURRING_REFUSE_NO_PAYID",
"value": "true"
}
]
}
The response and further processing is handled in the same way as a standalone BLIK transaction. The following JSON document represents an example of a response in "WAITING" status you will receive after initiating the first recurring transaction:
{
"clientRequestId": "2838649",
"apiTraceId": "ZNTp5N7qFK9N8PXeceiMfgAAAzk",
"ipgTransactionId": "84634090501",
"orderId": "R-d7630dd3-9e0e-4af5-801d-6c0d2e6d0217",
"paymentToken": {
"value": "3027d7ec-0eee-61ee-be56-0242ac120002",
"reusable": true,
"declineDuplicates": false
},
"transactionTime": 1691675108,
"transactionAmount": {
"total": 0.08,
"currency": "PLN",
"components": {}
},
"transactionStatus": "WAITING",
"approvalCode": "?:waiting BLIK",
"processor": {
"referenceNumber": "75064577388",
"responseCode": "0",
"responseMessage": "SUCCESS"
}
}
In cases where your account has been configured with "Transaction Notification Feed" service, you will receive a notification once the status of the transaction has been updated.
Please contact your support team to enable your store for the 'Transaction Notification Feed' service.
You can also check the processing status individually by submitting a GET request to the .../payments/ endpoint including referenced "ipgTransactionId", e.g. GET .../payments/{ipgTransactionId}
Once the transaction has been completed successfully, Alias has been registered.
Recurring Payment
After successful registration you can initiate a recurring payment with including following mandatory parameters.
Element | Description |
---|---|
requestType | The only allowed requestType for Blik is "ApmSaleTransaction" |
paymentMethod.type | "BLIK" is the only value for this payment method |
paymentToken | string, 64max, e.g. 3e9ae06e-26df-11ee-be56-0242ac120002 In order to submit BLIK Alias authorisation request the parameter paymentMethod.paymentToken must be submitted. You will receive this value in the API response from previous step (Alias registration) in paymentToken.value response parameter. |
integrationData | The integration data from the external application, e.g. regularly optional values, which for this payment method are mandatory. Can be used during integration, or to allow generic parameter loading with a data-protected opt-in policy.ALIAS_LABEL represents the label you assign to your AliasRECURRING_NO_DELAY defines whether the issuer should send back the authorisation response without the need to wait until the authorisation's cut off time |
The following JSON document represents an example of a recurring transaction:
{
"requestType": "ApmSaleTransaction",
"transactionAmount": {
"total": "19.90",
"currency": "PLN"
},
"transactionOrigin": "ECOM",
"paymentMethod": {
"type": "BLIK",
"paymentToken": "c2ae59f6-0e90-11ee-be56-0242ac120002"
},
"integrationData": [
{
"item": "ALIAS_LABEL",
"value": "Subscription month 1"
},
{
"item": "RECURRING_NO_DELAY",
"value": "true"
}
]
}
The transaction is processed through "WAITING" status in the same way as in previous steps.
In cases, where the Alias registration has not been successful, you will be advised in the API response about missing information as on example below.
{
"clientRequestId": "2838649",
"apiTraceId": "ZNUKYw7pghrV7cZiK9eqpwAAA9A",
"ipgTransactionId": "84446538810",
"orderId": "R-e47beb62-03a2-423e-9e62-df5ae8677173",
"paymentToken": {
"reusable": true,
"declineDuplicates": false
},
"transactionTime": 1691683428,
"transactionStatus": "WAITING",
"approvalCode": "?:waiting BLIK",
"requiredActions": {
"requiredConsumerData": [
{
"hint": "Your 6-digit Blik Code will be provided in your Android/Iphone Blik application, and allows Blik to later inquire your confirmation on the current payment",
"validationExpression": "^\\d{6}$",
"key": "BLIK_CODE",
"options": []
}
],
"requiredIntegrationData": [
{
"hint": "Alias Type.",
"key": "ALIAS_TYPE"
}
]
}
}
Blik One-Click Payments
Alias Registration
With Blik's One-Click functionality you can skip Blik code authentication step and use an Alias/token for your future payments instead.
In the first step you need to register your customer's information under an Alias (token), so that in the future no further customer authentication with a Blik code is necessary.
It is required to submit the following mandatory parameters in the registration request:
Element | Description |
---|---|
requestType | The only allowed requestType for Blik is "ApmSaleTransaction" |
paymentMethod.type | "BLIK" is the only value for this payment method |
paymentToken | string, 64max, e.g. 3e9ae06e-26df-11ee-be56-0242ac120002 In order to submit BLIK Alias authorisation request the parameter paymentMethod.paymentToken must be submitted. Depending on the type, it may be a visible identifier or in the case of sensitive data – SHA256 abbreviation. |
consumerData | Integration data provided by the payer, e.g. Blik code submitted as item/value pairBLIK_CODE represents the one-time code or Alias indispensable to carry out authorisation of BLIK Transaction or customer authentication |
integrationData | The integration data from the external application, e.g. regularly optional values, which for this payment method are mandatory. Can be used during integration, or to allow generic parameter loading with a data-protected opt-in policy.ALIAS_TYPE The enumeration contains the value "UID"ALIAS_LABEL represents the label you assign to your AliasPAYER_IP represents the IP address of the customer's device that was used during online shoppingUSER_AGENT represents the user agent of customer's internet browser used during online shopping |
The following JSON document represents an example of a Alias/token registration with mandatory set of elements:
{
"requestType": "ApmSaleTransaction",
"transactionAmount": {
"total": "0.04",
"currency": "PLN"
},
"transactionOrigin": "ECOM",
"paymentMethod": {
"type": "BLIK",
"paymentToken": "3e9ae06e-26df-11ee-be56-0242ac120002"
},
"consumerData": [
{
"item": "BLIK_CODE",
"value": "777158"
}
],
"integrationData": [
{
"item": "ALIAS_TYPE",
"value": "UID"
},
{
"item": "ALIAS_LABEL",
"value": "OneCLick Alias 1"
},
{
"item": "PAYER_IP",
"value": "1.1.1.1"
},
{
"item": "USER_AGENT",
"value": "test"
}
]
}
The response is handled as for a standard Blik Sale transaction (described above).
One-Click Payment
Any following payment after successfully completed Alias registration does not require a Blik Code to be submitted in a transaction request.
Please use the following mandatory parameters while making an API request for One-Click payment:
Element | Description |
---|---|
requestType | The only allowed requestType for Blik is "ApmSaleTransaction" |
paymentMethod.type | "BLIK" is the only value for this payment method |
paymentToken | string, 64max, e.g. 3e9ae06e-26df-11ee-be56-0242ac120002 In order to submit BLIK Alias authorisation request the parameter paymentMethod.paymentToken must be submitted. Depending on the type, it may be a visible identifier or in the case of sensitive data – SHA256 abbreviation. |
integrationData | The integration data from the external application, e.g. regularly optional values, which for this payment method are mandatory. Can be used during integration, or to allow generic parameter loading with a data-protected opt-in policy.ALIAS_LABEL represents the label you assign to your Alias |
The following JSON document represents an example of a One-Click payment after previously registered Alias ID:
{
"requestType": "ApmSaleTransaction",
"transactionAmount": {
"total": "2.33",
"currency": "PLN"
},
"transactionOrigin": "ECOM",
"paymentMethod": {
"type": "BLIK",
"paymentToken": "3e9ae06e-26df-11ee-be56-0242ac120002"
},
"integrationData": [
{
"item": "ALIAS_LABEL",
"value": "1-CLICK"
}
]
}
The processing is handled as for a standard Blik Sale transaction (described above).
Delete Alias
You can also unregister or delete Alias if needed by using DELETE endpoint and submitting your Alias/token ID together with storeID: DELETE https://ipg-online.com/ipgrestapi/v2/services/payment-tokens/{TokenID}?payment-method=BLIK&{storeId}
DELETE https://ipg-online.com/ipgrestapi/v2/services/payment-tokens/262c1182-2604-11ee-be56-0242ac120002?payment-method=BLIK&storeId=760995000
Updated 3 months ago