[beta version] Personal data verification of cardholders
The system lets you send personal data parameters in the transaction requests if it is required to verify the customer's personal data in the system of the issuing bank with the customer's personal data in the merchant's system.
Widget integration
In the case of the integration with the payment widget or the payment page, initiate the widget or create a payment token with the additional parameters specified in the table:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
Example
Payment token request example
{
"checkout": {
"test": true,
"transaction_type": "payment",
"settings": {
"return_url": "http://127.0.0.1:4567/return",
"success_url": "http://127.0.0.1:4567/success",
"notification_url": "http://your_shop.com/notification"
},
"order": {
"tracking_id": "your_uniq_number",
"currency": "BYN",
"amount": 10000,
"expired_at": "2025-11-29T05:33:38Z",
"description": "description"
},
"customer": {
"external_id": "user-12345",
"birth_date": "1990-01-01"
},
"additional_data": {
"customer_id_data": {
"personal_number": "30101990AB123CD4"
}
}
}
}
Payment token request example
{
"checkout": {
"test": true,
"transaction_type": "payment",
"settings": {
"return_url": "http://127.0.0.1:4567/return",
"success_url": "http://127.0.0.1:4567/success",
"notification_url": "http://your_shop.com/notification"
},
"order": {
"tracking_id": "your_uniq_number",
"currency": "BYN",
"amount": 10000,
"expired_at": "2025-11-29T05:33:38Z",
"description": "description"
},
"customer": {
"external_id": "user-12345"
},
"additional_data": {
"customer_id_data": {
"document_type": "passport",
"document_number": "12345678",
"document_country": "GB"
},
"kyc_answers": {
"answers": {
"first_name": "Ivan",
"last_name": "Ivanov"
}
}
}
}
}
Authorization / Payment
Request
Send an authorization request or a payment request with the following additional parameters:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
Request examples for authorization/payment
Info
Example for residents of Belarus
{
"request": {
"amount": 100,
"currency": "BYN",
"description": "Test transaction",
"tracking_id": "your_uniq_number",
"language": "ru",
"test": true,
"credit_card": {
"number": "4200000000000000",
"verification_value": "123",
"holder": "John Doe",
"exp_month": "05",
"exp_year": "2027"
},
"customer": {
"external_id": "user-12345",
"birth_date": "1990-01-01"
},
"additional_data": {
"customer_id_data": {
"personal_number": "30101990AB123CD4"
}
}
}
}
Example for non-residents of Belarus
{
"request": {
"amount": 100,
"currency": "BYN",
"description": "Test transaction",
"tracking_id": "your_uniq_number",
"language": "ru",
"test": true,
"credit_card": {
"number": "4200000000000000",
"verification_value": "123",
"holder": "John Doe",
"exp_month": "05",
"exp_year": "2027"
},
"customer": {
"external_id": "user-12345"
},
"additional_data": {
"customer_id_data": {
"document_type": "{Document type, passport}",
"document_number": "{Document number, 1234567}",
"document_country": "{Country that issued the document, GB}"
},
"kyc_answers": {
"answers": {
"phone": "1234567",
"first_name": "Ivan",
"last_name": "Petrov"
}
}
}
}
}
Response
The response will include vpd_verification object with the personal data verification results.
|
|||||||||||||||||||||||||||
Payout
Request
Send a payout request with the following additional data:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Example
Payout request example
{
"request": {
"amount": 100,
"currency": "BYN",
"description": "Test transaction",
"tracking_id": "tracking_id_000",
"recipient": {
"birth_date": "1990-01-01",
"phone": "+375291234567",
"email": "ivan.petrov@example.com"
},
"recipient_billing_address": {
"first_name": "John",
"last_name": "Doe",
"country": "US",
"city": "Denver",
"state": "CO",
"zip": "96002",
"address": "1st Street",
"phone": "375444444444"
},
"recipient_credit_card": {
"number": "5555555555554444",
"holder": "John Doe",
"exp_month": "12",
"exp_year": "2027"
},
"additional_data": {
"customer_id_data": {
"personal_number": "30101990AB123CD4"
}
}
}
}
Payout request example
{
"request": {
"amount": 100,
"currency": "BYN",
"description": "Test transaction",
"tracking_id": "tracking_id_000",
"recipient": {
"phone": "+375291234567",
"email": "ivan.petrov@example.com"
},
"recipient_billing_address": {
"first_name": "John",
"last_name": "Doe",
"country": "US",
"city": "Denver",
"state": "CO",
"zip": "96002",
"address": "1st Street",
"phone": "375444444444"
},
"recipient_credit_card": {
"number": "5555555555554444",
"holder": "John Doe",
"exp_month": "12",
"exp_year": "2027"
},
"additional_data": {
"customer_id_data": {
"document_type": "{Document type, passport}",
"document_number": "{Document number, 1234567}",
"document_country": "{Country that issued the document, GB}"
},
"kyc_answers": {
"answers": {
"phone": "1234567890",
"first_name": "Ivan",
"last_name": "Petrov"
}
}
}
}
}
Response
The response will include an additional object vpd_verification with the personal data verification results.
Successful verification
{
"transaction": {
"uid": "26d6f343-b36e-4306-b6a3-013e2b969ec2",
"status": "successful",
"amount": 100,
"currency": "BYN",
"description": "Test transaction",
"type": "payout",
"payment_method_type": "credit_card",
"tracking_id": "your_uniq_number",
"message": "Transaction is successful.",
"test": true,
"created_at": "2025-09-10T13:52:04.428Z",
"updated_at": "2025-09-10T13:52:07.029Z",
"paid_at": "2025-09-10T13:52:06.945Z",
"expired_at": null,
"recurring_type": null,
"closed_at": null,
"settled_at": null,
"manually_corrected_at": null,
"language": "en",
"credit_card": {
"holder": "John Doe",
"stamp": "d1c853d9d6623ad497d6df0f90b92d19ae8393913b17198ac6006bdc2700485a",
"brand": "visa",
"last_4": "0000",
"first_1": "4",
"bin": "420000",
"bin_8": "42000000",
"issuer_country": "US",
"issuer_name": "VISA Demo Bank",
"product": "F",
"exp_month": 5,
"exp_year": 2027,
"token_provider": null,
"token": null
},
"receipt_url": "https://merchant.bepaid.by/customer/transactions/26d6f343-b36e-4306-b6a3-013e2b969ec2/065724d397951ad8fcd066cdb7edd678b78f50fc8866c64cdb198993eb554dcb?language=en",
"status_code": null,
"gateway": {
"iframe": true
},
"mute_notifications": null,
"version": 4,
"psp_settled_at": null,
"registry_id": null,
"three_ds_expired_at": null,
"id": "26d6f343-b36e-4306-b6a3-013e2b969ec2",
"additional_data": {
"customer_id_data": {
"document_type": "passport",
"document_number": "1234567",
"document_country": "GB"
},
"kyc_answers": {
"answers": {
"phone": "1234567890",
"first_name": "Ivan",
"last_name": "Petrov",
"middle_name": "Sergeevich",
"first_name_ru": "Иван",
"last_name_ru": "Петров",
"middle_name_ru": "Сергеевич"
}
}
},
"redirect_url": "https://gateway.bepaid.by/process/26d6f343-b36e-4306-b6a3-013e2b969ec2",
"code": "S.0000",
"friendly_message": "The transaction is successfully processed.",
"vpd_verification": {
"status": "verified"
},
"smart_routing_verification": {
"status": "successful"
},
"payment": {
"auth_code": "654321",
"bank_code": "05",
"rrn": "999",
"ref_id": "777888",
"message": "Payment was approved",
"amount": 100,
"currency": "BYN",
"billing_descriptor": "test descriptor",
"gateway_id": 2505,
"status": "successful"
},
"avs_cvc_verification": {
"avs_verification": {
"result_code": "1"
},
"cvc_verification": {
"result_code": "1"
}
},
"customer": {
"ip": null,
"email": "ivan.petrov@example.com",
"device_id": null,
"birth_date": "1990-01-01",
"external_id": "user-12345"
},
"billing_address": {
"first_name": null,
"last_name": null,
"address": "1st Street",
"country": "US",
"city": "Denver",
"zip": "96002",
"state": "CO",
"phone": null
}
}
}
Possible values for the document_type parameter
document_type parameter value |
Description of the document_type parameter value |
passport |
Passport |
international_passport |
International passport |
foreign_passport |
Foreign citizen’s passport |
id_card |
Identity card (ID card) |
driver_license |
Driver's license |
residence_permit |
Residence permist for a foreign citizen (regular) |
residence_permit_refugee |
Refugee residence permit. (regular) |
residence_permit_bio_refugee |
Refugee residence permit (biometric). |
residence_permit_bio_stateless |
Stateless person’s residence permit (biometric) |
temporary_residence_permit |
Temporary residence permit |
temporary_identity_card |
Temporary identity card |
military_identity_card |
Military service ID card |
military_id |
Military ID |
refugee_certificate |
Refugee certificate |
temporary_asylum_certificate |
Temporary asylum certificate |
resettler_certificate |
Resettler certificate or applicant for status |
travel_document_foreign |
Travel document of a foreign citizen |
migration_card |
Migration card |
seafarer_passport |
Seafarer’s passport / seafarer’s identity card |
diplomatic_certificate |
Diplomatic identity card |
return_certificate |
Return certificate |
other |
Other identity document |
Testing
To test the verification, send one of the requests on this page and add parameter request.test set to true. For successful verification, use the parameter values from the table below:
| Parameter (in brackets – for payouts) | Residents of Belarus | Non-residents of Belarus |
credit_card.number (recipient_credit_card.number) |
9112395040140378 | 9112395040140378 |
credit_card.exp_month (recipient_credit_card.exp_month) |
any | any |
credit_card.exp_year (recipient_credit_card.exp_year) |
later than 2025 | later than 2025 |
additional_data.customer_id_data.personal_number |
30101990AB123CD4 | - |
customer.birth_date (recipient.birth_date) |
1990-01-01 | - |
additional_data.customer_id_data.document_number |
- | AA1234567 |
additional_data.customer_id_data.document_type |
- | passport |
additional_data.customer_id_data.document_country |
- | PL |
additional_data.kyc_answers.answers.first_name |
- | Ivan |
additional_data.kyc_answers.answers.last_name |
- | Ivanov |
Request
Example
Payment request example
{
"request": {
"amount": "100",
"currency": "BYN",
"test": true,
"description": "Test transaction",
"language": "ru",
"notification_url": "https://notification-url",
"credit_card": {
"number": "9112395040140378",
"verification_value": "123",
"holder": "John Doe",
"exp_month": "05",
"exp_year": "2026"
},
"customer": {
"external_id": "user-12345",
"birth_date": "1990-01-01"
},
"additional_data": {
"customer_id_data": {
"personal_number": "30101990AB123CD4"
}
}
}
}
Payment request example
{
"request": {
"amount": "100",
"currency": "BYN",
"test": true,
"description": "Test transaction",
"language": "ru",
"notification_url": "https://notification-url",
"credit_card": {
"number": "9112395040140378",
"verification_value": "123",
"holder": "John Doe",
"exp_month": "05",
"exp_year": "2026"
},
"customer": {
"external_id": "user-12345"
},
"additional_data": {
"customer_id_data": {
"document_number": "AA1234567",
"document_type": "passport",
"document_country": "PL"
},
"kyc_answers": {
"answers": {
"first_name": "Ivan",
"last_name": "Ivanov"
}
}
}
}
}
Response
If verification results in an error, processing code F.0996 will be sent in the transaction.code parameter and the parameter vpd_verification.code will include one of the validation errors by the personal data verification service.
1. Successful verification
Use the parameters from the table for the request.
Response fragment: successful verification
{
"transaction": {
"uid": "26d6f343-b36e-4306-b6a3-013e2b969ec2",
"status": "successful",
...
"message": "Transaction is successful.",
"test": true,
"code": "S.0000",
"friendly_message": "The transaction is successfully processed.",
"vpd_verification": {
"status": "verified"
},
"smart_routing_verification": {
"status": "successful"
}
}
}
2. Verification status rejected: the submitted customer data does not match the data in the issuer's system
To get this result:
- for residents of Belarus, send the
birth_datevalue different from the one provided in the table; - for non-residents of Belarus, send the
document_numbervalue different from the one provided in the table.
Request fragment: wrong value of the birth_date parameter
{
"request": {
"credit_card": {
"number": "9112395040140378"
},
"customer": {
"birth_date": "1991-02-02"
},
"additional_data": {
"customer_id_data": {
"personal_number": "30101990AB123CD4"
}
}
}
}
Response fragment: verification status is rejected, the submitted customer data does not match the data in the issuer's system
{
"transaction": {
"uid": "ab8dd5da-3e28-4f28-8cf7-ac714f8fd2cb",
"code": "F.0996",
"friendly_message": "The transaction was not verified.",
"message": "The transaction was not verified by the verification service VPD.",
"status": "failed",
"vpd_verification": {
"status": "rejected",
"code": "F.0100",
"message": "Customer verification failed.",
"friendly_message": "Customer verification failed.",
"provider_response": {
"is_clientcard": 1,
"is_bdcorrect": 0
}
}
}
}
3. Parameters validation error
To get the validation error:
- for residents of Belarus, send the request without the required parameter
personal_number; - for non-residents of Belarus, send the request without the required parameter
document_country.
Request fragment: the required parameter personal_number is not specified
{
"request": {
"credit_card": {
"number": "9112380131987184"
},
"customer": {
"birth_date": "1991-01-01"
},
"additional_data": {
"customer_id_data": {
"personal_number": ""
}
}
}
}
Response fragment: verification status is rejected, one of the required parameters is missing
{
"uid": "b3c81448-91ef-4d72-af47-c923f796a2fb",
"code": "F.0996",
"friendly_message": "Транзакция не была подтверждена сервисом верификации VPD.",
"status": "failed",
...
"message": "Транзакция не была подтверждена.",
...
"vpd_verification": {
"status": "rejected",
"code": "F.0102",
"message": "Invalid request parameters. Check the transaction parameters or contact the payment service provider for details.",
"friendly_message": "Invalid request parameters. Contact the merchant for details.",
"provider_response": {
"is_clientcard": 1,
"is_bdcorrect": 0
},
"service_code": "vpd_rejected"
},
...
}
4. rejected verification status: the personal data verification service (VPD) was not defined for the submitted card bin
To reproduce this error, use the number of any card issued in Belarus, except for 9112395040140378. For example, 9112380131987184.
Request fragment: wrong card number
{
"request": {
"amount": "100",
"currency": "BYN",
"test": true,
"description": "Test transaction",
"language": "ru",
"notification_url": "https://notification-url",
"credit_card": {
"number": "9112380131987184",
"verification_value": "123",
"holder": "John Doe",
"exp_month": "05",
"exp_year": "2026"
},
"customer": {
"external_id": "user-12345",
"birth_date": "1990-01-01"
},
"additional_data": {
"customer_id_data": {
"personal_number": "30101990AB123CD4"
}
}
}
}
Response fragment: verification status is rejected, the personal data verification service (VPD) was not defined for the submitted card bin
{
"transaction": {
"uid": "ab8dd5da-3e28-4f28-8cf7-ac714f8fd2cb",
"code": "F.0996",
"friendly_message": "The transaction was not verified.",
"message": "The transaction was not verified by the verification service VPD.",
"status": "failed",
"vpd_verification": {
"status": "rejected",
"code": "F.0101",
"message": "Customer verification failed. The verification service VPD for transmitted data is not defined.",
"friendly_message": "Customer verification failed."
}
}
}