Skip to content

P2P API

Info

PCI DSS certificate is required to use this API and process non-encrypted card data.

Check the capability of the P2P transfer

The requests described below are used:

  • to check the capability of the P2P transfer between the source card and the receiver card;
  • to get information on the commission of the P2P transfer and additional card data required to make a transfer.

Send one of the POST requests depending on your integration.

Request authorized by the secret key

Send a POST request with Basic authorization by Shop ID and Shop Secret key to https://gateway.bepaid.by/p2p-restrictions. Use the parameters described here.

Request authorized by the public key in synchronous mode

In synchronous mode, you receive a response to your request with all parameters after the system processes your request.

Send a POST request with the Bearer authorization by the public key and the X-Api-Version: 2 header to https://checkout.bepaid.by/ctp/api/verify-p2p. Use the parameters described here.

Request authorized by the public key in asynchronous mode

In asynchronous mode, you send a request with the same parameters as for a synchronous request, but you receive a response with the new task status and the job_id that the system assigned to your request. Further on, you should check the relevant task status.

Send an HTTP POST request with the Bearer authorization by the Public key and the X-Api-Version: 2 header to https://checkout.bepaid.by/ctp/api/async/verify-p2p. Use the parameters described here.

Response example with the task status new and job_id
{
  "status": "new",
  "job_id": "62c5b51a1d69bde6e5afaa70"
}

To get a task status, send a GET request with job_id to https://checkout.bepaid.by/ctp/api/async/jobs/{job_id}.

Response example for the task with new status
{
  "status": "new",
  "job_id": "62c5b51a1d69bde6e5afaa70"
}
Response example for the task with failed status
{
    "job_id": "62c5b51a1d69bde6e5afaa70",
    "status": "failed",
    "response": {
        "status": "error",
        "errors": [
            "error"
        ],
        "message": "Request processing error. Please try again later",
        "finished": false
    }
}
Response example for the task with done status
{
  "status": "done",
  "job_id": "62c5b51a1d69bde6e5afaa70",
  "response": {
    //Standard response parameters
  }
}

Request parameters

Parameter Type Description
request object
amount * required
integer A P2P transfer amount to be credited to the receiver card. Submit in the minimal currency units. For example, 32.45 USD should be sent as 3245.
currency * required
string A P2P transfer currency in ISO-4217 format, for example USD.
credit_card object A section of the source card details. Use client side encryption, if needed.
number * required
string A source card number.
exp_month * conditionally required
string (2) The expiration month of the sender's card. Must be one or two digits (for example, 01).
exp_year * conditionally required
string (4) The expiration year of the sender's card. Must be 4 digits (for example, 2026).
holder * conditionally required
string (35) The cardholder name as it appears on the sender's card. The parameter is optional in the bePaid system but can be required by the acquirer.
token * conditionally required
string A source card token or an encrypted payment token in the required format Apple Pay, Google Pay, Samsung Pay, Yandex Pay.
The token can be sent instead of the number, exp_year and exp_month parameters.
recipient_card object A section of the recipient card details. Use client side encryption, if needed.
number * required
string A recipient card number or a primary account number (PAN or DPAN) of the decrypted token provided by Apple Pay, Google Pay, Samsung Pay, Yandex Pay.
exp_month * conditionally required
string (2) The expiration month of the recipient's card. Must be one or two digits (for example, 01).
exp_year * conditionally required
string (4) The expiration year of the recipient's card. Must be 4 digits (for example, 2026).
holder * conditionally required
string (35) The cardholder name as it appears on the recipient's card. The parameter is optional in the bePaid system but can be required by the acquirer.
token * conditionally required
string A recipient card token instead of the recipient card number.
test boolean Set to true for testing the capability of the P2P transfer between test cards. Otherwise, false.
additional_data object A section of additional data.
p2p object A section of additional transfer data.
type * conditionally required
string (3) A transfer operation type in the alphanumeric format which is issued by the processing center.
Contact the Tech Support Team to check if you should submit this parameter.
Request example
{
  "request": {
    "amount": 100,
    "currency": "USD",
    "credit_card": {
      "number": "4012001037141112"
    },
    "recipient_card": {
      "number": "4200000000000000"
    },
    "test": true
  }
}

Response parameters

If the transfer is possible, the response contains the following parameters:

Parameter Type Description
status string successful
message string A message from the bank system.
commission object A section of the commission details.
minimum float A minimal commission amount charged from the source card.
percent float A percentage of the commission charged from the source card.
bank_fee float An absolute commission value calculated by the processing center.
currency string A currency of the commission in the ISO-4217 format, for example USD.
test boolean true for testing the capability of the P2P transfer between test cards. Otherwise, false.
Example of the response
{
  "status": "successful",
  "message": "p2p is allowed",
  "commission": {
    "minimum": 0.7,
    "percent": 1.5,
    "bank_fee": 7.35,
    "currency": "USD"
  }
}

If the transfer is not possible, the response contains the following parameters:

Parameter Type Description
status string failed
message string A message from the bank system.
required_fields object A section of the parameters required for the transfer. If this section is returned, the commission is not calculated.
credit_card array An array of the parameters that should be requested about the source card. Possible array elements: holder, verification_value, exp_month, exp_year.
recipient_card array An array of the parameters that should be requested about the recipient card. Possible array elements: holder, exp_month, exp_year.
Example of the response
{
  "status": "failed",
  "message": "Missed credit card fields: holder.Missed recipient card fields: holder.",
  "required_fields": {
    "credit_card": [
      "holder"
    ],
    "recipient_card": [
      "holder"
    ]
  }
}

In case of an error the response contains the following parameters:

Parameter Type Description
error_code string An error code.
message string An error text description.
errors object A section of the parameters with errors.
Example of the response
{
  "error_code": "invalid_params",
  "message": "Unprocessable entity",
  "errors": {
    "amount": [
      "must be an integer"
    ],
    "currency": [
      "is unknown ISO 4217 Alpha-3 code"
    ],
    "credit_card": {
      "number": [
        "is not a card number"
      ]
    },
    "recipient_card": {
      "number": [
        "is not a card number"
      ]
    }
  }
}

Make the P2P transfer

To make a P2P transfer via the bePaid API, send one of the POST requests described below depending on your integration.

Requests authorized by the secret key

Send a POST request with Basic authorization by Shop ID and Shop Secret key to https://gateway.bepaid.by/transactions/p2ps. Use the parameters described here.

Requests authorized by the public key in synchronous mode

In synchronous mode, you send a request and receive a response with the parameters only after the system processes the request.

Send a POST request with the Bearer authorization by the public key and the X-Api-Version: 2 header to https://checkout.bepaid.by/ctp/api/p2p. Use the parameters described here.

Requests authorized by the public key in asynchronous mode

In asynchronous mode, you send a request with the same parameters as for a synchronous request, but you receive a response with the new task status and the job_id that the system assigned to your request. Further on, you should check the relevant task status.

Send a POST request with the Bearer authorization by the public key and the X-Api-Version: 2 header to https://checkout.bepaid.by/ctp/api/async/p2p. Use the parameters described here.

Example of the response with task status new and job_id
{
  "status": "new",
  "job_id": "62c5b51a1d69bde6e5afaa70"
}

To get the task status, send a GET request specifying the received job_id to https://checkout.bepaid.by/ctp/api/async/jobs/{job_id}.

The response schemes for the new, failed, done task statuses are the same as described for requests checking the capability of the P2P transfer.

Request parameters

Parameter Type Description
request object
amount * required
integer A transfer amount credited to the recipient card. Submit it in the minimal currency units. For example, 32.45 USD should be sent as 3245.
currency * required
string A transfer currency in ISO-4217 format, for example USD.
description * required
string A transfer description.
expired_at string Time in the ISO 8601 format (YYYY-MM-DDThh:mm:ssTZD) until which the transfer should be confirmed.
tracking_id string A transfer id in your system. Use a unique value to get up-to-date information, when you send a status query request about the transaction status. Otherwise, you will receive the first transaction found by the tracking_id.
duplicate_check boolean The parameter controls the process of checking the incoming request for uniqueness. If during the 30 seconds a payment requests with the same amount and number or token are received, the request will be rejected. Set to true to enable the check (set by default). Otherwise, false.
language string A language of your checkout page. If the option of transaction notification emails to customers are enabled, bePaid dispatches those emails in the language locale. English (en) is set by default. Possible values of language parameter.
notification_url string A URL where transaction notifications will be posted to. The notification request format matches the transaction response format.
return_url string A URL on your side where bePaid will redirect the customer after the 3-D Secure verification.
test boolean Set to true for making the P2P transfer between test cards.
credit_card object A section of the source card details. Use client side encryption, if needed.
number * required
string A source card number.
verification_value * required
string 3- or 4-digit security code (called CVC2, CVV2 or CID depending on the credit card brand). It can be sent along with token parameter and in this case, bePaid will submit to acquiring bank card details with the given CVC2/CVV2/CID.
exp_month * conditionally required
string (2) The expiration month of the sender's card. Must be one or two digits (for example, 01).
exp_year * conditionally required
string (4) The expiration year of the sender's card. Must be 4 digits (for example, 2026).
holder * conditionally required
string (35) The cardholder name as it appears on the sender's card. The parameter is optional in the bePaid system but can be required by the acquirer.
token * conditionally required
string A source card token received in the response to the first transfer, or an encrypted payment token in the required format Apple Pay, Google Pay, Samsung Pay, Yandex Pay.
The token can be sent instead of the number, exp_year and exp_month parameters.
recipient_card object A section of the recipient card details. Use client side encryption, if needed.
number * required
string A recipient card number or a primary account number (PAN or DPAN) of the decrypted token provided by Apple Pay, Google Pay, Samsung Pay, Yandex Pay.
exp_month * conditionally required
string (2) The expiration month of the recipient's card. Must be one or two digits (for example, 01).
exp_year * conditionally required
string (4) The expiration year of the recipient's card. Must be 4 digits (for example, 2026).
holder * conditionally required
string (35) The cardholder name as it appears on the recipient's card. The parameter is optional in the bePaid system but can be required by the acquirer.
token * conditionally required
string A recipient card token that you got in the response to the first transfer. It can be used instead of the number, holder, exp_month and exp_year specified above.
additional_data object A section of additional data.
receipt_text array Text to be added to the email to the customer. Submit it as an array of strings, for example ["First line", "Second line"].
contract array An array of elements:

oneclick - bePaid returns a card token to use it in the oneclick payment scheme. Under this scheme, bePaid opens a payment page with the pre-filled card data. The customer should enter the CVC/CVV code only and pass the 3-D Secure verification to complete a payment.
p2p object A section of additional transfer data.
type * conditionally required
string(3) A transfer operation type in the alphanumeric format, issued by the processing center.
Contact the Tech Support Team to check if you should submit this parameter.
customer object A section of the customer information.
ip string An IP address of the sender of the transfer.
email string An email of the sender of the transfer.
device_id string A device ID of the sender of the transfer.
sender_billing_address object
first_name string The first name of the sender of the transfer.
last_name string The last name of the sender of the transfer.
country string A billing country of the sender of the transfer in the ISO 3166-1 alpha-2 format.
city string A billing city of the sender of the transfer.
state string A two-letter billing state of the sender of the transfer only if the billing address country is US or CA.
zip string A billing zip or a postal code of the sender of the transfer. If country=US, zip format must be NNNNN or NNNNN-NNNN.
address string A billing address of the sender of the transfer.
phone string A phone number of the sender of the transfer.
recipient_billing_address object
first_name string The first name of the recipient of the transfer.
last_name string The last name of the recipient of the transfer.
country string A billing country of the recipient of the transfer in the ISO 3166-1 alpha-2 format.
city string A billing city of the recipient of the transfer.
state string A two-letter billing state of the recipient of the transfer only if the billing address country is US or CA.
zip string A billing zip or a postal code of the recipient of the transfer. If country=US, zip format must be NNNNN or NNNNN-NNNN.
address string A billing address of the recipient of the transfer.
phone string A phone number of the recipient of the transfer.
billing_address object The section billing_address has been left to maintain compatibility with the previous API version. If a new integration is developed, use the sections sender_billing_address and recipient_billing_address.
first_name string The first name of the sender of the transfer.
last_name string The last name of the sender of the transfer.
country string A billing country of the sender of the transfer in the ISO 3166-1 alpha-2 format.
city string A billing city of the sender of the transfer.
state string A two-letter billing state of the sender of the transfer only if the billing address country is US or CA.
zip string A billing zip or a postal code of the sender of the transfer. If country=US, zip format must be NNNNN or NNNNN-NNNN.
address string A billing address of the sender of the transfer.
phone string A phone number of the sender of the transfer.
Request example
{
  "request": {
    "test": false,
    "amount": 100,
    "currency": "EUR",
    "description": "Test transaction ütf",
    "tracking_id": "tracking_id_000",
    "billing_address": {
      "phone": "123"
    },
    "credit_card": {
      "number": "4012001037141112",
      "verification_value": "123",
      "exp_month": "01",
      "exp_year": "2026",
      "holder": "John Doe"
    },
    "recipient_card": {
      "number": "4200000000000000",
      "holder": "Mary Doe"
    },
    "customer": {
      "ip": "127.0.0.1",
      "device_id": "12312312321fff67",
      "email": "jahn_test@mial.com"
    },
    "sender_billing_address": {
      "first_name": "John",
      "last_name": "Doe",
      "country": "PL",
      "city": "Warsaw",
      "address": "Gilbert 104"
    },
    "recipient_billing_address": {
      "first_name": "Mary",
      "last_name": "Doe",
      "country": "PL",
      "city": "Warsaw",
      "address": "Gilbert 104"
    }
  }
}

Response parameters

Response parameters replicate request parameters, except for the additional ones:

Parameter Type Description
transaction object
uid string A UID of the processed transaction.
status string A status of the processed transfer.
amount integer The transfer amount credited to the receiver card, in the minimal currency units, for example 3245 stands for 32.45 USD.
currency string The transfer currency of the transfer in the ISO-4217 format, for example USD.
description string The transfer description.
type string p2p
payment_method_type string credit_card
tracking_id string The tracking_id parameter value from the request.
message string The request result message.
test boolean true if the transaction is a test operation. Otherwise, false.
created_at string Transfer creation time in the ISO 8601 format (YYYY-MM-DDThh:mm:ssTZD).
updated_at string Time of the last update of the transfer data in the database in the ISO 8601 format (YYYY-MM-DDThh:mm:ssTZD).
paid_at string In case of a successfully completed transfer, this is the completion time of the transfer in the database in the ISO 8601 format (YYYY-MM-DDThh:mm:ssTZD).
redirect_url string A URL of the page to finalize the transaction.

If the status parameter is set to incomplete, redirect your customer to this URL. It runs the 3-D Secure verification of the cardholder.
language string The value of the language parameter from the request or en, if the parameter is not transferred in the request.
credit_card object
holder string The source card holder name.
stamp string The source card stamp.
brand string The source card brand.
last_4 string The last 4 digits of the source card.
first_1 string The first digit of the source card.
bin string The source card BIN.
issuer_country string The source card country.
issuer_name string The issuing bank of the source card.
product string The card product type of the source card.
exp_month string The source card expiration month expressed with two digits (for example, 01).
exp_year string The source card expiration year expressed with four digits (for example, 2027).
token string The source card token, which is returned if the contract parameter is transferred in the request.
recipient_card object
holder string The recipient card holder name.
stamp string The recipient card stamp.
brand string The recipient card brand.
last_4 string The last 4 digits of the recipient card.
first_1 string The first digit of the recipient card.
bin string The recipient card BIN.
issuer_country string The recipient card country.
issuer_name string The issuing bank of the recipient card.
product string The card product type of the recipient card.
exp_month string The recipient card expiration month expressed with two digits (for example, 01).
exp_year string The recipient card expiration year expressed with four digits (for example, 2027).
token string The recipient card token, which is returned if the contract parameter is transferred in the request.
verify_p2p object The result of checking of the request parameters, that are required to complete the P2P transfer.
status string The status of the request parameter check.
message string The request result message.
amount integer The amount of the transfer, which is credited to the receiver card, in the minimal currency units.
currency string The currency of the transfer in ISO-4217 format, for example USD.
bank_fee float The bank fee amount for P2P transfer.
required_fields object
credit_card array The parameters array that should be requested about source card. Possible array elements: holder, verification_value, exp_month, exp_year.
recipient_card array The parameters array that should be additionally requested about source card. Possible array elements: holder, exp_month, exp_year.
p2p object P2P transfer data received from the bank.
receipt_url string The link to the receipt of the processed transaction
ref_id string The number of the operation in the bank that made the P2P transfer
bank_code string The bank response code.
message string A message with request result.
amount integer The amount of the transfer, which is credited to the receiver card, in the minimal currency units.
currency string The currency of the transfer in ISO-4217 format, for example USD.
billing_descriptor string The text to be displayed on the bank statement of the source card.
gateway_id integer The internal bank identification number in the bePaid system.
status string The status of the bank transaction.
customer object A section of the customer information.
ip string The IP address of the sender of the transfer.
email string The email of the sender of the transfer.
device_id string The device ID of the sender of the transfer.
sender_billing_address object
first_name string The first name of the sender of the transfer.
last_name string The last name of the sender of the transfer.
country string The billing country of the sender of the transfer in the ISO 3166-1 alpha-2 format.
city string The billing city of the sender of the transfer.
state string The two-letter billing state of the sender of the transfer only if the billing address country is US or CA.
zip string The billing ZIP or postal code of the sender of the transfer. If country=US, zip format must be NNNNN or NNNNN-NNNN.
address string The billing address of the sender of the transfer.
phone string The phone number of the sender of the transfer.
recipient_billing_address object
first_name string The first name of the recipient of the transfer.
last_name string The last name of the recipient of the transfer.
country string The billing country of the recipient of the transfer in ISO 3166-1 alpha-2 format.
city string The billing city of the recipient of the transfer.
state string Two-letter billing state of the recipient of the transfer only if the billing address country is US or CA.
zip string The billing ZIP or postal code of the recipient of the transfer. If country=US, zip format must be NNNNN or NNNNN-NNNN.
address string The billing address of the recipient of the transfer.
phone string The phone number of the recipient of the transfer.
additional_data object The section with additional transfer data.
receipt_text array The text added to the email sent to the customer, if it was submitted. Represented as an array of strings, for example ["First line", "Second line"].
Example of the response in case P2P transfer requires 3-D Secure verification
{
  "transaction": {
    "uid": "1-82cc07d15d",
    "status": "incomplete",
    "amount": 100,
    "currency": "EUR",
    "description": "Test transaction ütf",
    "type": "p2p",
    "payment_method_type": "credit_card",
    "tracking_id": "tracking_id_000",
    "message": null,
    "test": false,
    "created_at": "2021-06-08T09:28:18.073Z",
    "updated_at": "2021-06-08T09:28:20.280Z",
    "paid_at": null,
    "language": "en",
    "redirect_url": "http://127.0.0.1:9887/process/1-82cc07d15d",
    "credit_card": {
      "holder": "John Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "visa",
      "last_4": "1112",
      "first_1": "4",
      "bin": "401200",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": 1,
      "exp_year": 2026,
      "token_provider": null,
      "token": null
    },
    "recipient_card": {
      "holder": "Mary Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "visa",
      "last_4": "0000",
      "first_1": "4",
      "bin": "420000",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": null,
      "exp_year": null,
      "token_provider": null,
      "token": null
    },
    "receipt_url": "https://merchant.bepaid.by/customer/transactions/1-82cc07d15d/89caa14443680985ce8ac2452fb9f82b4947926ff5bce0f15a7b4c4d0834ea5d",
    "recipient_billing_address": {
      "first_name": "Mary",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "zip": null,
      "state": null,
      "phone": null
    },
    "sender_billing_address": {
      "first_name": "John",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "zip": null,
      "state": null,
      "phone": null
    },
    "status_code": null,
    "id": "1-82cc07d15d",
    "verify_p2p": {
      "status": "successful",
      "message": "3DS",
      "amount": 100,
      "currency": "EUR",
      "bank_fee": null,
      "required_fields": null
    },
    "p2p": {
      "ref_id": null,
      "message": null,
      "amount": 100,
      "currency": "EUR",
      "billing_descriptor": null,
      "gateway_id": 1,
      "status": "incomplete",
      "auth_code": null,
      "rrn": null,
      "bank_code": null
    },
    "customer": {
      "ip": "127.0.0.1",
      "email": "jahn_test@mial.com",
      "device_id": "12312312321fff67",
      "birth_date": null
    }
  }
}
Example of the response in case P2P transfer is successfully completed
{
  "transaction": {
    "uid": "1-4f4db7559d",
    "status": "successful",
    "amount": 100,
    "currency": "EUR",
    "description": "Test transaction ütf",
    "type": "p2p",
    "payment_method_type": "credit_card",
    "tracking_id": "tracking_id_000",
    "message": "Successfully processed",
    "test": false,
    "created_at": "2021-06-08T11:54:11.725Z",
    "updated_at": "2021-06-08T11:54:39.219Z",
    "paid_at": "2021-06-08T11:54:39.203Z",
    "language": "en",
    "redirect_url": "http://127.0.0.1:9887/process/1-4f4db7559d",
    "credit_card": {
      "holder": "John Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "visa",
      "last_4": "1112",
      "first_1": "4",
      "bin": "401200",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": 1,
      "exp_year": 2026,
      "token_provider": null,
      "token": null
    },
    "recipient_card": {
      "holder": "Mary Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "visa",
      "last_4": "0000",
      "first_1": "4",
      "bin": "420000",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": null,
      "exp_year": null,
      "token_provider": null,
      "token": null
    },
    "receipt_url": "https://merchant.bepaid.by/customer/transactions/1-4f4db7559d/1b653d8b2c18f48a17b88435ca51e7b22bb69e5080a400faa40e3918ae6552d7",
    "recipient_billing_address": {
      "first_name": "Mary",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "zip": null,
      "state": null,
      "phone": null
    },
    "sender_billing_address": {
      "first_name": "John",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "zip": null,
      "state": null,
      "phone": null
    },
    "status_code": null,
    "id": "1-4f4db7559d",
    "verify_p2p": {
      "status": "successful",
      "message": "3DS",
      "amount": 100,
      "currency": "EUR",
      "bank_fee": null,
      "required_fields": null
    },
    "p2p": {
      "ref_id": "000005800042000145210608125426&000005800042000146210608125433",
      "message": "Approved",
      "amount": 100,
      "currency": "EUR",
      "billing_descriptor": null,
      "gateway_id": 1,
      "status": "successful",
      "auth_code": null,
      "rrn": null,
      "bank_code": null
    },
    "customer": {
      "ip": "127.0.0.1",
      "email": "jahn_test@mial.com",
      "device_id": "12312312321fff67",
      "birth_date": null
    }
  }
}
Example of the response in case P2P transfer is not successfully completed
{
  "transaction": {
    "uid": "1-d8d4cd2503",
    "status": "failed",
    "amount": 100,
    "currency": "EUR",
    "description": "Test transaction ütf",
    "type": "p2p",
    "payment_method_type": "credit_card",
    "tracking_id": "tracking_id_000",
    "message": "Failed",
    "test": false,
    "created_at": "2021-06-08T11:48:15.002Z",
    "updated_at": "2021-06-08T11:48:15.165Z",
    "paid_at": null,
    "language": "en",
    "redirect_url": "http://127.0.0.1:9887/process/1-d8d4cd2503",
    "credit_card": {
      "holder": "John Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "visa",
      "last_4": "1112",
      "first_1": "4",
      "bin": "401200",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": 1,
      "exp_year": 2026,
      "token_provider": null,
      "token": null
    },
    "recipient_card": {
      "holder": "Mary Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "visa",
      "last_4": "0000",
      "first_1": "4",
      "bin": "420000",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": null,
      "exp_year": null,
      "token_provider": null,
      "token": null
    },
    "receipt_url": "https://merchant.bepaid.by/customer/transactions/1-d8d4cd2503/047da8244b961a41b5ad52e138dd8b866e6e6e773c3510ec1eb1476192b62397",
    "recipient_billing_address": {
      "first_name": "Mary",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "zip": null,
      "state": null,
      "phone": null
    },
    "sender_billing_address": {
      "first_name": "John",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "zip": null,
      "state": null,
      "phone": null
    },
    "status_code": null,
    "id": "1-d8d4cd2503",
    "verify_p2p": {
      "status": "failed",
      "message": "3DS",
      "amount": 100,
      "currency": "EUR",
      "bank_fee": null,
      "required_fields": null
    },
    "p2p": {
      "ref_id": null,
      "message": null,
      "amount": 100,
      "currency": "EUR",
      "billing_descriptor": null,
      "gateway_id": 1,
      "status": "incomplete",
      "auth_code": null,
      "rrn": null,
      "bank_code": null
    },
    "customer": {
      "ip": "127.0.0.1",
      "email": "jahn_test@mial.com",
      "device_id": "12312312321fff67",
      "birth_date": null
    }
  }
}

3-D Secure verification

The source card 3-D Secure verification process is identical with the card verification process for the authorization or payment operations.