Skip to main content
Version: 1.0.0

Specification for the interaction of the merchant

Payment on the payment processing page

To pay on the payment processing page, you need to redirect to the page of the processing center, with POST data.

Production url: https://****.procard-ltd.com/api/

POST params:

ParameterTypeRequiredDescriptionValue
operationString+Type of transactionPurchase
merchant_idString+ID merchant, issued by processing
amountFloat+The amount of the transaction. Example: 500.00
signatureString+In order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string to be HMAC_SHA512 is generated by concatenating the parameters merchant_id, order_id, amount, currency_iso, description separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!
order_idString+Unique transaction number on the merchant side. If the operation is duplicated, the merchant receives an error.
currency_isoString+Currency of paymentUAH
descriptionString+Purpose of payment. It is displayed on the payment page when entering payment details. Displayed in the account statement and registries
add_paramsArray+An array of additional parameters. Additional parameters are then turned to the merchant in the callback call
approve_urlString+Redirect URL in case payment is successful
decline_urlString+Redirect URL in case payment is unsuccessful
cancel_urlString+Redirect URL in case the user refuses to make a payment
callback_urlString+URL to which information about the result of the payment will come
redirectInteger1 / 0 - defaults to 1, if the parameter is 0, then the client will not receive redirects, but will receive the url of the payment page
auth_typeIntegerDefault 1 - purchase, 2 - Pre-authorization
secure_typeIntegerTransaction Security Pass Type. The list of possible values see in Dictionary. secure_type parameter values
languageStringPayment page language
Default ua - Ukrainian, ru - Russian, en - English
client_first_nameStringClient's first name
client_last_nameStringClient's last name
client_idStringClient's ID in merchant system
phoneStringClient's phone
emailStringClient's email address

A description of additional request parameters add_params can be found in following section.

Request example:

{
"operation": "Purchase",
"merchant_id": "jnmx9smJQmSejKoR3rIgm5Pj7QG",
"order_id": "1685444702348",
"amount": 100,
"currency_iso": "UAH",
"description": "Оплата замовлення",
"auth_type": 1,
"signature": "113d991b5c3b9d0be6c4a589b9d154d8",
"language": "ua",
"add_params": {
"data": "123",
"SenderName": "Петренко Петро Петрович"
},
"approve_url": "http://merchant.site/1/approved",
"decline_url": "http://merchant.site/1/declined",
"cancel_url": "http://merchant.site/1/canceled",
"callback_url": "http://merchant.site/callback",
"client_first_name": "Olga",
"client_last_name": "Petrenko",
"email": "[email protected]",
"phone": "+380112223344"
}

Success response example if "redirect": 0:

{
"result": 0,
"url": "https://procard-ltd.com/payment/pay?payment=3a95bdaae73a7388b3a3750023a817a897b43f2295315f2b6e0e12e3db0ced2e6475c2b080dec&lang=ukr"
}

Request failure response example:

{
"code": -4,
"message": "Неверная подпись"
}

Other error codes see Dictionary. System Error Codes

Callback call to send notification of payment status

Data is sent to the URL specified in the payment parameters in the field callback_url.

Data is sent to the merchant's server in JSON format

Parameters:

ParameterTypeDescriptionValues
merchantAccountStringMerchant ID
orderReferenceStringMerchant system transaction ID
amountFloatTransaction amount
currencyStringTransaction currency
phoneStringThe customer's phone number (if received from the merchant in the payment request)
createdDateStringPayment Date in format YYYY-MM-DD HH:II:SS
Example: 2018-12-14 12:01:26
cardPanStringMasked PAN Card
Example: 535277******0298
cardTypeStringCard typeVisa
MasterCard
feeFloatTransaction fee
transactionIdStringTransaction ID on the PC side
typeStringEvent type. Example: payment
add_paramsArrayAn array of additional parameters received from the merchant in the payment request
recTokenStringToken for recurring payment.
transactionStatusStringTransaction StatusApproved - Successfully

Declined - Renouncement

NEEDS-CLARIFICATION - Requires clarification of the payment status. You need to check the payment status (Operation Check) or contact technical support
reasonStringResult code description
reasonCodeStringOperation result code. The list of codes can be found in Dictionary. Answer Codes
merchantSignatureStringIn order to confirm the validity of the data, a control signature using the merchant's SecretKey is generated and transmitted in the HMAC_SHA512 request.
The string to be HMAC_SHA512 is generated by concatenating the parameters merchant_id, orderReference, amount, currency separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!

Example of a successful purchase callback:

{
"merchantAccount": "vZmxaalkjdsfGWt5ApLojM8ENzCz",
"orderReference": "1685453241304",
"amount": "2.23",
"operation": "Purchase",
"currency": "UAH",
"phone": "+38 (011) 222-33-44",
"createdDate": "2023-05-30 16:27:21",
"cardPan": "403021******9287",
"cardType": "Visa",
"fee": "0.02",
"transactionId": 195660162,
"type": "payment",
"recToken": "b8e61cd175c51237cf58342377592ff8d465f25ed50288a5f3ef9a01517c3bc1",
"add_params": {
"secure_type": "1",
"lifetime": "1685539641",
"AReqDetails.browserAcceptHeader": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"AReqDetails.browserColorDepth": "24",
"AReqDetails.browserIP": "10.253.2.159",
"AReqDetails.browserLanguage": "ru",
"AReqDetails.browserScreenHeight": "1080",
"AReqDetails.browserScreenWidth": "1920",
"AReqDetails.browserTZ": "-120",
"AReqDetails.browserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
"AReqDetails.browserJavaEnabled": "true",
"AReqDetails.notificationUrl": "https://procard-ltd.com/payment/check3ds?payment=0cc44844b30ae8a0273e6c7b010ce34f86e8729fea2b6f7b628c92232ed33eb06475f9b999c03",
"AReqDetails.deviceChannel": "02",
"AReqDetails.threeRIInd": "",
"CReqDetails.WindowWidth": "1024",
"CReqDetails.WindowHeight": "768",
"merchantName": "merchant",
"RRN": "001206018623"
},
"transactionStatus": "Approved",
"reason": "ОПЕРАЦИЯ РАЗРЕШЕНА",
"reasonCode": "1",
"pcTransactionID": "1206018623",
"pcApprovalCode": "7E06C0 A",
"merchantSignature": "fc55cd12476b1a67de74d42dfc3625f1"
}

Example of a purchase rejection callback:

{
"merchantAccount": "vZmxaalkjdsfGWt5ApLojM8ENzCz",
"orderReference": "1685454851406",
"amount": "202.23",
"operation": "Purchase",
"currency": "UAH",
"phone": "+38 (011) 222-33-44",
"createdDate": "2023-05-30 16:54:11",
"cardPan": "403021******9287",
"cardType": "Visa",
"fee": "1.82",
"transactionId": 195662868,
"type": "verify",
"recToken": "",
"transactionStatus": "Declined",
"reason": "НА СЧЕТЕ НЕ ХВАТАЕТ ДЕНЕГ",
"reasonCode": "76",
"pcTransactionID": "1206054482",
"pcApprovalCode": "145036 A",
"merchantSignature": "34b4d87da1828419ca79ab909b443eb9"
}

Verify Operation

To check the card, it is necessary to redirect the user to the page of the payment gateway using the POST method at the url https://****.procard-ltd.com/api/ with the following parameters:

ParameterTypeDescription
operationStringoperation type "Verify"
merchant_idStringmerchant identifier
amountfloatAmount of operation. Example: 500.00. Allowed 0
currency_isoStringPayment currency. Example: UAH
order_idStringThis is a unique transaction number. It is generated on the side of the merchant. It must be unique throughout the work.
approve_urlStringURL to which the user will be redirected in case of a successful operation
decline_urlStringURL to which the user will be redirected in case of unsuccessful operation
cancel_urlStringURL to which the user will be redirected if the operation is canceled
callback_urlStringURL to which information about the payment result and the generated token for further recurring payment will be received
redirectInteger1 / 0 - defaults to 1, if the parameter is 0, then the client will not receive redirects, but will receive the url of the payment page
languageStringPayment page language
Default ua - Ukrainian, ru - Russian, en - English
secure_typeIntegerTransaction Security Pass Type. The list of possible values see in Dictionary. secure_type parameter values
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string subject to HMAC_SHA512 is generated by concatenating merchant_id, order_id, amount, currency_iso parameters separated by ";" (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!

A description of additional request parameters add_params can be found in following section.

According to the results of the operation, the merchant receives a Callback call to the specified callback_url, in which the recToken parameter is returned - a token for further recurring payments.

Request example:

{
"operation": "Verify",
"merchant_id": "BO_671a8709e74a7c9",
"amount": 0,
"currency_iso": "UAH",
"order_id": "9ba9990f-fea5-495d-a20a-ae4e7ffb68e3",
"approve_url": "http://merchant.site/1/approved",
"decline_url": "http://merchant.site/1/declined",
"cancel_url": "http://merchant.site/1/canceled",
"callback_url": "http://merchant.site/callback",
"redirect": 0,
"language": "ua",
"signature": "9f882fdd69c7ddfa992d89c5493a61fc",
"add_params": {
"SenderName": "Петренко Петро Петрович"
}
}

Success response example if "redirect": 0:

{
"result": 0,
"url": "https://procard-ltd.com/payment/pay?payment=3a95bdaae73a7388b3a3750023a817a897b43f2295315f2b6e0e12e3db0ced2e6475c2b080dec&lang=ukr"
}

Request failure response example:

{
"code": -4,
"message": "Неверная подпись"
}

Recurrent payments RecPayment (payment by token)

Production url: https://****.procard-ltd.com/api/

To make a recurring payment send a POST request with the following parameters:

ParameterTypeRequiredDescription
operationString+Required value for this operation RecPayment
merchant_idString+Merchant ID
amountFloat+The amount of the transaction. Example: 500.00
recurring_tokenString+Token received from PC
order_idString+Unique order number in the merchant system
descriptionString+Purpose of payment
currency_isoString+Currency. Currently only "UAH"
callback_urlStringURL to which information about the payment result and the generated token for further recurring payment will be received
auth_typeInteger1 - purchase, 2 - pre-authorization. The default is 1.
signatureString+In order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string subject to HMAC_SHA512 is generated by concatenating the parameters merchant_id, order_id, amount, recurring_token, currency_iso, description separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!

To support the possibility of performing authorization according to the 3DS2 protocol, the following parameters must be additionally transferred to add_params:

ParameterTypeRequiredDescription
AReqDetails.OrderID+ID of the order
AReqDetails.browserAcceptHeader+The content of the payer's browser HTTP headers. The maximum value is 2048 characters
AReqDetails.browserColorDepth+A value representing the bit depth of the color palette for displaying images, in bits per pixel. The maximum value is 2 characters. Possible values:
1 - 1 bit;
4 - 4 bits;
8 - 8 bits;
15 - 15 bits;
16 - 16 bits;
24 - 24 bits ;
32 - 32 bits;
48 - 48 bits
AReqDetails.browserIP+Browser IP address. Possible value formats:
An IPv4 address is specified as four groups of numbers in decimal notation, separated by the character "." For example: 100.12.123.255.
An IPv6 address is specified as eight groups of numbers in hexadecimal notation separated by ":". For example: 2011:0db8:85a3:0101:0101:8a2e:0370:7334
AReqDetails.browserLanguage+Browser language as specified in IETF BCP47. The maximum value is 8 characters
AReqDetails.browserScreenHeight+The total height (in pixels) of the screen displayed to the payer. The maximum value is 6 characters
AReqDetails.browserScreenWidth+The total width (in pixels) of the screen displayed to the payer. The maximum value is 6 characters
AReqDetails.browserTZ+The time difference between UTC and the local time of the payer's browser . Maximum value - 5 characters
AReqDetails.browserUserAgent+The content of the User-Agent HTTP header. The maximum value is 2048 characters
AReqDetails.browserJavaEnabled+Ability to execute JavaScript in the payer's browser . Possible values: true false
AReqDetails.threeRIInd+The type of request that the merchant performs without the participation of the cardholder (recurring payments). Possible values:
01 (recurring payment/transfer);
02 (partial payment);
03 (adding a card);
04 (saving card information);
05 (account identification) records);
80-99 (values reserved for DS use)
AReqDetails.notificationUrlThe URL of the service provider to send CRes.
AReqDetails.deviceChannel+The type of device from which the transaction was initiated. Possible values:
01 - merchant's mobile application (App-based);
02 - user's browser (Browser);
03 - online store (3DS Requestor)
Currently, only the value is available: 02 - user's browser (Browser).
CReqDetails.WindowWidth+The width of the browser window (in pixels) in which pages of the merchant site are displayed
CReqDetails.WindowHeight+The height of the browser window (in pixels) in which pages of the merchant site are displayed

The following parameters come in response:

ParameterTypeDescriptionValue
codeIntegerResponse code0 - success
messageString/IntegerResponse messagePay attention that the message can be string or number!
statusStringOperation resultAPPROVED - successfully
DECLINED - operation failed

A description of additional request parameters add_params can be found in following section.

Request example:

{
"operation": "RecPayment",
"merchant_id": "TEST_TRADER_2",
"amount": 3,
"recurring_token": "052e03dfaab55b6ac1511fee0c552d43ca0818a5ea081b9d06d7df3a1d4e7b8b",
"order_id": "1686217047097325",
"description": "Recurrent payment",
"currency_iso": "UAH",
"auth_type": 1,
"signature": "0cf3324fd88d7fe880012c9892ecab1b",
"add_params": {
"SenderName": "Петренко Петро Петрович"
}
}

Success response example:

{
"code": 0,
"message": "OK",
"status": "APPROVED"
}

"status":"APPROVED" - means that the operation was completed successfully

3DS2 response example:

{
"code": 2002,
"message": "Need 3DS",
"status": "INPROCESSING",
"3ds":true,
"version":2,
"d3AcsUrl":"https://acs2-test.procard-ltd.com/",
"d3CReq":"eyJhY3NUcmFuc0lEIjoiMWZhNTE2N2EtMjQ2My00NWY2LWE2N2MtNDdmZDg2NTI3ZTQ0IiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiIzNDIzNjdmNi1hZWVjLTRjOWYtYTYyNi0wNjFlMWEyMzQyZGMiLCJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDMiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIn0",
"converted_status":9,
"reasonCode":5100
}

"status":"INPROCESSING" - means that the operation needs 3DS autorization

To verify 3ds, you need to post the form with the d3_creq parameter to d3_acs_url:

<form name="MPIform" action='${d3AcsUrl}' method="POST">
<input type="hidden" name="creq" value='${d3CReq}'>
</form>

To complete the payment process, if parameter notificationUrl was sent, you must perform "Confirm 3DS Verification".

Request failure response example:

{
"code": -4,
"message": "Неверная подпись"
}

Operation failure response example:

{
"code": 58,
"message": 58,
"status": "DECLINED"
}

58 - operation failure code. The list of codes can be found in Dictionary. Answer Codes

Operation Reverse

To reverse payment send a POST request to url https://****.procard-ltd.com/api/reverse with the following parameters:

ParameterTypeDescription
merchant_idStringMerchant identifier
order_idStringThe unique number of the operation, which was sent in the payment request
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string to be HMAC_SHA512 is generated by concatenating the parameters merchant_id, order_id separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!

JSON is returned in response with the following parameters:

ParameterTypeDescription
codeIntegerResponse code (1 - success)
If the request fails, it contains code from the Dictionary. System Error Codes
If the operation fails, it contains code from the Dictionary. Answer Codes
messageStringText message with query result

Request example:

{
"merchant_id": "TEST_TRADER_2",
"signature": "52903ab3f2e17e90990131873d508a4d",
"order_id": "1686299645210695"
}

Success response example:

{
"code": 1,
"message": "ОПЕРАЦИЯ РАЗРЕШЕНА"
}

"code": 1 - means that the operation was successfully

Request failure response example:

{
"code": -4,
"message": "Неверная подпись"
}

Operation Complete

To complete payment send a POST request to url https://****.procard-ltd.com/api with the following parameters:

ParameterTypeDescription
operationStringComplete
merchant_idStringMerchant identifier
order_idStringThis is the unique transaction number that was sent in the purchase request.
amountFloatCharged Amount
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string to be HMAC_SHA512 is generated by concatenating the parameters merchant_id, order_id, amount separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!

JSON is returned in response with the following parameters:

ParameterTypeDescription
codeIntegerResponse code (0 - success). (see Dictionary. System Error Codes)
messageStringText message with query result

Request example:

{
"operation": "Complete",
"merchant_id": "vZmxaajdkbOGWt5ApLojM8ENzCz",
"signature": "ccfeb05f64643c84beca2e0b179d5c81",
"order_id": "1686657185399",
"amount": 2.23
}

Success response example:

{
"code": 0,
"message": "Платеж успешно подтвержден"
}

Request failure response example:

{
"code": -4,
"message": "Неверная подпись"
}

Operation Check

To check the payment status send a POST request to url https://****.procard-ltd.com/api/check with the following parameters:

ParameterTypeDescription
merchant_idStringMerchant identifier
order_idStringThis is a unique transaction number that was sent in a payment request
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string to be HMAC_SHA512 is generated by concatenating the parameters merchant_id, order_id separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!

JSON is returned in response.

Success response with the following parameters:

ParameterTypeDescription
codeInteger0 - successful
messageStringText message with query result
reasonCodeStringOperation response code. (see Dictionary. Answer Codes)
reasonStringAnswer Description
merchantAccountStringMerchant ID
orderReferenceStringMerchant system transaction ID
amountStringAmount
currencyStringPayment currency
phoneStringPhone number
createdDateStringPayment date
cardPanStringMasked card number
cardTypeStringCard type
feeStringPayment commission
transactionIdBigIntegerTransaction ID
transactionStatusStringOperation Status (see Dictionary. Payment Statuses)

If the status is NEEDS-CLARIFICATION, please repeat this request after a while or contact technical support
pcTransactionIDStringTransaction ID in the processing center. The parameter is optional!
pcApprovalCodeStringAuthorization code. The parameter is optional!
rrnStringReference Retrieval Number

Unsuccessful response with the following parameters:

ParameterTypeDescription
codeIntegerResponse code (Dictionary. System Error Codes)
messageStringText message with query result

Request example:

{
"merchant_id": "vZmxaajdkbOGWt5ApLojM8ENzCz",
"order_id": "1686657185399",
"signature": "c0cf536eb79bf25793bb7996d3839088"
}

Success response for success operation example:

{
"code": 0,
"merchantAccount": "vZmxaajdkbOGWt5ApLojM8ENzCz",
"orderReference": "1686662094017",
"amount": "2.50",
"currency": "UAH",
"phone": "+38 (011) 222-33-44",
"createdDate": "2023-06-13 16:14:55",
"cardPan": "403021******9287",
"cardType": "Visa",
"fee": "0.02",
"transactionId": 197387938,
"transactionStatus": "APPROVED",
"reason": "ОПЕРАЦИЯ РАЗРЕШЕНА",
"reasonCode": "1",
"rrn": "1234567890",
"pcTransactionID": "1226920964",
"pcApprovalCode": "88509F A"
}

Success response for unsuccessful operation example:

{
"code": 0,
"merchantAccount": "vZmxaajdkbOGWt5ApLojM8ENzCz",
"orderReference": "5018440306",
"amount": "16.00",
"currency": "UAH",
"phone": "+38 (011) 222-33-44",
"createdDate": "2023-06-13 10:17:41",
"cardPan": "537541******4408",
"cardType": "MasterCard",
"fee": "0.14",
"transactionId": 197355512,
"transactionStatus": "DECLINED",
"reason": "АВТОРИЗАЦИЯ ОТКЛОНЕНА",
"reasonCode": "5"
}

Request failure response example:

{
"code": -4,
"message": "Неверная подпись"
}

Operation P2PCredit

To replenish the card send a POST request to url https://****.procard-ltd.com/api with the following parameters:

ParameterTypeDescription
operationStringtransaction type “P2PCredit”
merchant_idStringmerchant identifier
order_idStringThis is a unique transaction number. It is generated on the side of the merchant. It must be unique throughout the work.
amountFloatThe sum of the operation must be a fractional number, with two decimal places. Example: 100.50
currency_isoStringTransaction currency. Currently only “UAH” is available
card_numberStringRecipient card number.
tokenStringToken, can be used instead of the recipient card
visa_aliasStringInstead of a card or token, VisaAlias can be specified
If a phone number is used as an alias, it must be provided according to the ITU-T E.164 (2010)
Example (phone number): 380670000000
visa_alias_typeStringAlias type. Required if visa_alias is specified
add_paramsStringAn array with additional parameters for identifying the sender and recipient of transfers. See Dictionary. List of additional fields to identify sender and recipient of transfers
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string subject to HMAC_SHA512 is generated by concatenating the parameters merchant_id, order_id, amount, card_number/token, currency_iso separated by “;” (semicolon) in UTF-8 encoding
If visa_alias specified parameter card_number need to be empty string
The order of parameters during concatenation is important!

Possible values for the visa_alias_type parameter:

  • 01 - phone number,
  • 02 - email address,
  • 03 - national identifier,
  • 04 - IBAN (international bank account number)

List of additional parameters for clients with external anti-fraud systems:

ParameterDescriptionValue
BrowserIPClient browser IP addressIPv4 address only: * 220.38.220.38
UserAccountIDIdentity number of user account
FingerprintFingerprint

Example of additional parameters:

{
"add_params": {
"BrowserIP": "127.0.0.1",
"UserAccountID": "123315483215",
"Fingerprint": "asdwsascaw2s1d5ww5a"
}
}

A description of additional request parameters add_params can be found in following section.

JSON is returned in response with the following parameters:

ParameterTypeDescriptionValue
codeIntegerRequest result code
0 - successful
12 - operation fail
Other codes see Dictionary. System Error Codes
messageString/IntegerMessage with query result
Pay attention that the message can be string or number!
statusStringTransaction StatusesAPPROVED - translation successful
DECLINED - Translation failed
ON-PAYMENT - An application for transfer is being processed, it is necessary to request an additional status
transactionIDIntegerTransaction ID in the payment system
approvalCodeIntegerAuthorization code
rrnStringReference Retrieval Number

Success response example:

{
"code":0,
"message":"OK",
"status":"APPROVED",
"transactionID":"2814211",
"approvalCode":"371623 A",
"rrn":"1234567890"
}

"status":"APPROVED" - means that the operation was completed successfully

Request failure response example:

{
"code":-4,
"message":"Неверная подпись"
}

Operation failure response example:

{
"code":12,
"message":58,
"status":"DECLINED"
}

58 - operation failure code. The list of codes can be found in Dictionary. Answer Codes

Get Aliаs Information

To get alias information you need to send POST request to url https://procard-ltd.com/alias/getinfo with the following parameters:

ParameterTypeDescription
merchantIdStringmerchant identifier
aliasStringVisaAlias.
If a phone number is used as an alias, it must be provided according to the ITU-T E.164 (2010).
Example (phone number): 380670000000
aliasTypeStringAlias type
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string subject to HMAC_SHA512 is generated by concatenating the parameters merchant_id, alias, aliasType separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!

Possible values for the aliasType parameter:

  • 01 - phone number,
  • 02 - email address,
  • 03 - national identifier,
  • 04 - IBAN (international bank account number)

JSON is returned in response with the following parameters:

ParameterTypeDescription
codeIntegerResponse code (0 - alias found, 1 - not found). Other codes see Dictionary. System Error Codes
recipientNameStringRecipient name
recipientPrimaryAccountNumberStringMasked card number
issuerNameStringBank issuer name

Request example:

{
"merchantId": "BO_54141bee2e62426",
"alias": "380670000000",
"aliasType": "01",
"signature": "299544b24eb5c623301c83fc1c30b953"
}

Success response example - alias found:

{
"code": 0,
"recipientName": "Perto Pertrenko",
"recipientPrimaryAccountNumber": "516911******8886",
"issuerName": "UA Bank 1"
}

Success response example - alias not found:

{
"code": 1,
"recipientName": "",
"recipientPrimaryAccountNumber": "",
"issuerName": ""
}

Request failure response example:

{
"code": -4,
"message": "Неверная подпись"
}

Get Balance Operation

To get operation balance send a POST to the url https://****.procard-ltd.com/api/balance request with the following parameters:

ParameterTypeDescription
merchant_idStringmerchant identifier
dateStringDate and time of request in any format
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string to be HMAC_SHA512 is generated by concatenating the parameters merchant_id, date separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!

JSON is returned in response.

Success response with the following parameters:

ParameterTypeDescription
mk_depositFloatMastercard Limit
visa_depositFloatVisa Limit
mk_availableFloatAvailable Balance Mastercard
visa_availableFloatAvailable Visa Balance

Unsuccess response with the following parameters:

ParameterTypeDescription
codeIntegerResponse code (Dictionary. System Error Codes)
messageStringText message with query result

Request example:

{
"merchant_id": "TEST_TRADER_2",
"date": "2023-05-19 15:44:16",
"signature": "5270d398dd09866a90b9131b447d8684"
}

Success response example:

{
"mk_deposit": 9999999,
"visa_deposit": 9999999,
"mk_available": 9999999,
"visa_available": 9999999
}

Request failure response example:

{
"code": -4,
"message": "Неверная подпись"
}

Operation P2PDebit

To debit funds from the card you should redirect the user to the payment gateway page using the POST method with the following parameters:

ParameterTypeDescription
operationStringOperation type "P2PDebit"
merchant_idStringMerchant identifier
order_idIntegerThis is a unique transaction number. It is generated on the side of the merchant. It must be unique throughout the work.
amountFloatThe sum of the operation must be a fractional number, with two decimal places. Example: 100.50
currency_isoStringTransaction currency. Currently only “UAH” is available
descriptionStringPurpose of payment
approve_urlStringURL to which the user will be redirected in case of a successful operation
decline_urlStringURL to which the user will be redirected in case of unsuccessful operation
cancel_urlStringURL to which the user will be redirected if the operation is canceled
callback_urlStringURL to which information about the result of the payment will come
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string subject to HMAC_SHA512 is generated by concatenating the parameters merchant_id, order_id, amount, currency_iso, description, approve_url, decline_url, cancel_url separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!

Information about additional fields for identifying the sender and recipient of transfer can be found in the corresponding directory.

A description of additional request parameters add_params can be found in following section.

Operation PurchaseOnMerchant

To pay on the merchant’s payment page you should send a POST-request with the following data.

Production url: https://****.procard-ltd.com/api/

POST parameters:

ParameterTypeDescriptionValue
operationStringType of transactionPurchaseOnMerchant
merchant_idStringmerchant identifier
amountFloatThe amount of the transaction. Example: 500.00
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string to be HMAC_SHA512 is generated by concatenating the parameters merchant_id, order_id, amount, currency_iso, description separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!
order_idStringUnique transaction number on the merchant side. If the operation is duplicated, the merchant receives an error.
currency_isoStringCurrency of paymentUAH
descriptionStringPurpose of payment. It is displayed on the payment page when entering payment details. Displayed in the account statement and registries
add_paramsAn array with additional parameters. Additional parameters are then returned to the merchant in a callback call
tokenStringToken for debiting from a card without transferring card details. Either a token or card details must be passed.
card_numStringCard number
card_exp_monthStringValidity of MM card
card_exp_yearStringYY card expiration date
card_cvvStringCVV2 code, in case of operation without CVV specify -1
card_holderStringCard owner. Optional field
phoneStringCustomer Phone Number Optional field
auth_typeIntegerType of payment
1 - Purchase - purchase (by default)
2 - PreAuth - blocking funds on the card
secure_typeStringTransaction Security Pass Type. The list of possible values see in Dictionary. secure_type parameter values
callback_urlStringURL to which information about the result of the payment will come

To support the possibility of performing authorization according to the 3DS2 protocol, the following parameters must be additionally transferred to add_params:

ParameterTypeRequiredDescription
AReqDetails.OrderIDString+ID of the order
AReqDetails.browserAcceptHeaderString+The content of the payer's browser HTTP headers. The maximum value is 2048 characters
AReqDetails.browserColorDepthString+A value representing the bit depth of the color palette for displaying images, in bits per pixel. The maximum value is 2 characters. Possible values:
1 - 1 bit;
4 - 4 bits;
8 - 8 bits;
15 - 15 bits;
16 - 16 bits;
24 - 24 bits ;
32 - 32 bits;
48 - 48 bits
AReqDetails.browserIPString+Browser IP address. Possible value formats:
An IPv4 address is specified as four groups of numbers in decimal notation, separated by the character "." For example: 100.12.123.255.
An IPv6 address is specified as eight groups of numbers in hexadecimal notation separated by ":". For example: 2011:0db8:85a3:0101:0101:8a2e:0370:7334
AReqDetails.browserLanguageString+Browser language as specified in IETF BCP47. The maximum value is 8 characters
AReqDetails.browserScreenHeightString+The total height (in pixels) of the screen displayed to the payer. The maximum value is 6 characters
AReqDetails.browserScreenWidthString+The total width (in pixels) of the screen displayed to the payer. The maximum value is 6 characters
AReqDetails.browserTZString+The time difference between UTC and the local time of the payer's browser . Maximum value - 5 characters
AReqDetails.browserUserAgentString+The content of the User-Agent HTTP header. The maximum value is 2048 characters
AReqDetails.browserJavaEnabledBoolean+Ability to execute JavaScript in the payer's browser . Possible values: true false
AReqDetails.threeRIIndString+The type of request that the merchant performs without the participation of the cardholder (recurring payments). Possible values:
01 (recurring payment/transfer);
02 (partial payment);
03 (adding a card);
04 (saving card information);
05 (account identification) records);
80-99 (values reserved for DS use)
AReqDetails.notificationUrlString+The URL of the service provider to send CRes.
AReqDetails.deviceChannelString+The type of device from which the transaction was initiated. Possible values:
01 - merchant's mobile application (App-based);
02 - user's browser (Browser);
03 - online store (3DS Requestor)
Currently, only the value is available: 02 - user's browser (Browser).
CReqDetails.WindowWidthString+The width of the browser window (in pixels) in which pages of the merchant site are displayed
CReqDetails.WindowHeightString+The height of the browser window (in pixels) in which pages of the merchant site are displayed

To support the possibility of performing antifraud check, the following parameters must be additionally transferred to add_params:

ParameterTypeRequiredDescription
BrowserIPString+Browser IP address. Possible value formats:
An IPv4 address is specified as four groups of numbers in decimal notation, separated by the character "." For example: 100.12.123.255.
An IPv6 address is specified as eight groups of numbers in hexadecimal notation separated by ":". For example: 2011:0db8:85a3:0101:0101:8a2e:0370:7334
UserAccountIDString+Identifier of the transacting user’s Browser Account ID.
FingerprintString+Platform-calculated device fingerprint.

A description of additional request parameters add_params can be found in following section.

Answer:

ParameterTypeDescriptionValue
statusStringPayment statusDictionary. Payment Statuses
codeIntegerResponse codeDictionary. Answer Codes
order_idStringUnique order number in the merchant system
amountFloatAmount of payment
feeFloatCommission
currencyStringPayment currency
tokenStringToken for subsequent payments. Token will be returned if payment is successful
- If it is necessary to perform authorization according to the 3DS1 protocol, the following parameters will be returned:
d3_acs_urlStringAcs URL of the server to which the user must be sent for verification
d3_mdStringThe unique identifier that must be transmitted to the ACS server
d3_pareqStringRequest to transfer to ACS server
- If it is necessary to perform authorization according to the 3DS2 protocol, the following parameters will be returned:
d3_acs_urlStringAcs URL of the server to which the user must be sent for verification
d3_creqStringRequest to transfer to ACS server

transaction_keyStringTransaction key that must be used to confirm payment
transaction_idStringTransaction ID
rrnStringReference Retrieval Number
signatureStringOperation signature

If the response code returns 2001, a 3DS verification is required.

To verify 3ds, you should use the POST method to send a form with the parameters d3_md, d3_pareq, term_url to d3_acs_url.

term_url - merchant url to return from 3DS verification.

<form name="MPIform" action='${d3_acs_url}' method="POST">
<input type="hidden" name="PaReq" value='${d3_pareq}'>
<input type="hidden" name="MD" value='${d3_md}'>
<input type="hidden" name="TermUrl" value='${term_url}'>
</form>

If the response code returns 2002, a 3DS2 verification is required.

To verify 3ds, you need to post the form with the d3_creq parameter to d3_acs_url.

<form name="MPIform" action='${d3_acs_url}' method="POST">
<input type="hidden" name="creq" value='${d3_сreq}'>
</form>

To complete the payment process, you must perform "Confirm 3DS Verification".

The confirmation of 3DS Verification

To complete the payment on the merchant's payment page after executing 3DS, it is necessary to send a POST request with the following data

Production url: https://****.procard-ltd.com/api/

ParameterTypeDescriptionValue
operationStringType of transactionComplete3DS
transaction_keyStringThe transaction key previously received in response to the payment request
merchant_idStringMerchant identifier
- If authorization was performed using the 3DS1 protocol, transfer the parameters:
d3ds_mdStringID received after redirect from ACS server
d3ds_paresStringMessage received after redirect from ACS server
- If authorization was performed using the 3DS2 protocol, transfer the parameters:
d3ds_cresStringMessage received after redirect from ACS server

signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string to be HMAC_SHA512 is generated by concatenating the parameters merchant_id, transaction_key, d3ds_md, d3ds_pares separated by “;” (semicolon) in UTF-8 encoding.
If d3ds_cres is passed, empty lines should be added as d3ds_md, d3ds_pares in the signature.
The order of parameters during concatenation is important!

Answer:

ParameterTypeDescriptionValue
statusStringPayment statusDictionary. Payment Statuses
codeIntegerResponse codeDictionary. Answer Codes
order_idStringUnique order number in the merchant system
amountFloatAmount of payment
feeFloatCommission
currencyStringPayment currency
card_panStringMasked card number
cardTypeStringCard typeVisa
MasterCard
transaction_idStringTransaction ID
rrnStringReference Retrieval Number

Getting a token for Masterpass

Production url: https://****.procard-ltd.com/api/mptoken

To make a payment with Masterpass, you need to send a POST request with the following data:

ParameterTypeDescription
msisdnStringMasterpass wallet phone number in format 380XXXXXXXXX
client_idStringCustomer ID in MasterPass

The response comes in an object in JSON format with the following parameters:

ParameterTypeDescription
resIntegerQuery result (0 - success)
msgStringError message
tokenStringToken for transferring to the mfs library
reference_noStringUnique Request Number

Making a payment through Masterpass

Production url: https://****.procard-ltd.com/api

To receive a guest token send a POST request with the following data.

ParameterTypeDescriptionValue
operationStringType of transactionPurchaseMasterpass
merchant_idStringmerchant identifier
amountFloatAmount of payment in the format 1.00
order_idStringUnique transaction number on the merchant side. If the operation is duplicated, the merchant receives an error.
currency_isoStringCurrencyUAH
descriptionStringPayment Description
approve_urlStringRedirect URL after successful payment (in case of 3DS confirmation on the ProcardPay page)
decline_urlStringRedirect URL after a failed payment (in case of 3DS confirmation on the ProcardPay page)
cancel_urlStringRedirect URL after cancellation of payment (in case of 3DS confirmation on the ProcardPay page)
callback_urlStringURL to which callback about payment status will be sent
add_params[wallet]StringWallet signmasterpass
add_params[msisdn]StringMasterpass wallet phone number in 380XXXXXXXXX format
add_params[token]StringToken received from MasterPass server
add_params[card_name]StringAlias cards received from MasterPass server
add_params[client_id]StringMerchant ID in MasterPass
add_params[ret_ref_no]StringUnique transaction number received from MasterPass server
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string to be HMAC_SHA512 is generated by concatenating the parameters merchant_id, order_id, amount, currency_iso, description separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!

The response comes in an object in JSON format with the following parameters:

If a transaction requires 3DS confirmation:

ParameterTypeDescription
codeIntegerResponse code
statusStringTransaction status, if 3DS verification is required, the status will be 3ds
d3AcsUrlStringurl to redirect client to check 3ds
d3MdStringCryptogram for transferring to a 3DS host
d3PareqStringRequest to transfer to 3DS host
transaction_keyString3DS transaction key
TermUrlStringUrl to redirect after entering the verification code on the 3DS page
By default, the url to the ProcardPay page, you can specify your URL to check 3DS, then after passing 3DS you need to call the "Confirm 3DS Verification" method

To complete the payment process, you must perform "Confirm 3DS Verification".

Payment on the payment splitting processing page

To pay on the payment processing page redirect to the page of the processing center, with POST data.

Production url: https://****.procard-ltd.com/api/

POST parameters:

ParameterTypeDescriptionValue
operationStringType of transactionPurchase
merchant_idStringmerchant identifier
amountFloatThe amount of the transaction. Example: 500.00
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string to be HMAC_SHA512 is generated by concatenating the parameters merchant_id, order_id, amount, currency_iso, description separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!
order_idStringUnique transaction number on the merchant side. If the operation is duplicated, the merchant receives an error.
currency_isoStringCurrency of paymentUAH
descriptionStringPurpose of payment. It is displayed on the payment page when entering payment details. Displayed in the account statement and registries
add_paramsArrayAn array with additional parameters. Additional parameters are then returned to the merchant in a callback call
splitStringSign of payment splitting0 - не расщеплять
1 - расщеплять
split_rulesArrayAn array with splitting rules that contains the identifiers of the submerchant and amount.
The amount of splits must match the amount of payment.
Example:
split_rules[0][sub_merchant_id]=test1&split_rules[0][amount]=100.00&split_rules[1][sub_merchant_id]=test2&split_rules[1][amount]=50.00&.......&split_rules[n][sub_merchant_id]=testn&split_rules[n][amount]=10.00
approve_urlStringRedirect URL in case payment is successful
decline_urlStringRedirect URL in case payment is unsuccessful
cancel_urlStringRedirect URL in case the user refuses to make a payment
callback_urlStringURL to which information about the result of the payment will come

Card range information

To get card range information send POST data to url https://****.procard-ltd.com/api/bas

ParameterTypeDescriptionValue
merchant_idStringmerchant identifier
rangeStringFirst 9 digits of card number
signatureStringIn order to confirm the validity of the data, a verification signature must be generated and transmitted in the HMAC_SHA512 request using the SecretKey merchant.
The string to be HMAC_SHA512 is generated by concatenating the parameters merchant_id, range separated by “;” (semicolon) in UTF-8 encoding.
The order of parameters during concatenation is important!

The response comes in an object in JSON format.

Success response with the following parameters (set of parameters depends on service level):

Field NameTypeAttribute DescriptionLevel 1 (Base)Level 2 (Full)
codeIntegerError code. If 0 - successXX
minRangeIntegerAccount Range MinimumXX
maxRangeIntegerAccount Range MaximumXX
brandCdStringBrand IndicatorXX
issuerBinStringIssuer BINXX
binLengthStringBIN LengthXX
sharedBinIndStringShared BIN IndicatorXX
posdomesticOnlyIndStringDomestic-Use-Only FlagXX
onlineGamblBlockIndStringOnline Gambling BlockXX
binRangePaymentAccountTypeStringToken IndicatorXX
issuerBillingCurrCdStringIssuer Billing CurrencyX
accountCtryAlpha2CodeStringIssuer Country CodeX
platformCdStringProduct PlatformX
productIdStringProduct IDX
productIdNameStringProduct NameX
accountFundingSourceCdStringAccount Funding SourceX
accountFundingSourceSubtypeCdStringAccount Funding Source SubtypeX
accountBusNameStringIssuer NameX

Unsuccessful response with the following parameters:

ParameterTypeDescription
codeIntegerError code (Dictionary. System Error Codes)
messageStringError text message

Request example:

{
"merchant_id": "jnmx9smJQmSejKoR3rIgm5Pj7QG",
"range": "473118560",
"signature": "babf4304e88d9a6e000c167cfcdc9e5a"
}

Success response example:

{
"minRange": 473118550,
"maxRange": 473118569,
"brandCd": "VISA",
"issuerBin": 473118,
"binLength": 6,
"sharedBinInd": "N",
"posdomesticOnlyInd": "N",
"onlineGamblBlockInd": "Y",
"binRangePaymentAccountType": "P",
"issuerBillingCurrCd": "USD",
"accountCtryAlpha2Code": "UA",
"platformCd": "CN",
"productId": "F",
"productIdName": "Visa Classic",
"accountFundingSourceCd": "D",
"accountFundingSourceSubtypeCd": null,
"accountBusName": "JSC CB PRIVATBANK",
"code": 0
}

Request failure response example:

{
"code": -4,
"message": "Неверная подпись"
}

Additional request parameters

The request must also pass the following additional parameters to add_params:

ParameterTypeRequiredDescription
SenderName
or
RecipientName (for P2PCredit)
String+Sender's full name in Cyrillic. Example: Петренко Петро Петрович
IdentityNumberString+Tax identity number