Skip to content

Cryptocurrency transactions

WD Integration option

This integration option lets the customer top up their balance in the merchant's system using cryptocurrency as well as withdraw money from their balance to their cryptocurrency wallet.

Info

This integration option supports only BYN currency. The cryptocurrencies accepted by the provider are listed in the table.

Payment

Parameters of the payment widget and the payment token

Widget payment flow with KYC data submission:

  1. The customer initiates the balance top-up on the merchant's website and specifies the top-up amount in BYN.
  2. The merchant initiates the widget or creates a payment token specifying the customer's identifier (customer.external_id). If there hasn't yet been a successful payment transaction in the bePaid system with the specified identifier, it is necessary to send the following additional parameters:
    • customer data in the customer object;
    • customer ID document data (additional_data.customer_id_data);
    • KYC data (additional_data.kyc_answers). If there has already been a successful payment transaction in the bePaid with the specified customer.external_id and the customer's personal data and identity document information have not changed, only customer.external_id parameter needs to be sent.
  3. bePaid sends a response with the payment token and the link to the payment page.
  4. The merchant redirects the customer to the received URL or initiates a widget using the received token.
  5. The widget redirects the customer to the page with the field for choosing the cryptocurrency.
  6. The customer selects the cryptocurrency and confirms the payment. The customer submits their email if the email hasn't been sent in the payment token request or when initializing the widget.
  7. bePaid sends the obtained information to the provider
  8. [ KYC verification ] Depending on the customer country specified in the request, the widget can redirect the customer to the page with the test with the questions about the cryptocurrency.
  9. [ KYC verification ] The customer submits the responses to the test and clicks Continue.
  10. [ KYC verification ] The provider verifies the customer data.
  11. After the successful verification, the widget displays a message to the customer with the wallet ID to which the transfer needs to be made and the top-up amount equivalent in the selected cryptocurrency.
  12. The customer makes the transfer to the specified wallet.
  13. bePaid sends a webhook notification with the payment status to the merchant. The merchant may also request the payment status from bePaid with the status query.

Info

Following the successful KYC verification and a successful payment transaction, the merchant must save the customer.external_id. If there has already been a successful payment transaction for the specified customer.external_id, it is not required to submit the parameters in the additional_data object in the subsequent transaction requests. In the customer object it is only required to send the customer.external_id parameter. For the subsequent payment transactions, steps 8–10 are skipped.

Request

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.

object
test
boolean
test if the transaction is a test one.
transaction_type
string
payment
object
return_url
string
URL to return the customer after transaction was complete. If set, then success_url is ignored.
success_url
string
URL to return the customer to if a transaction was successful.
notification_url
string
URL where notification about a transaction will be posted to. A notification request format is similar to a transaction response format.
object
A section of payment parameters.
amount
required
integer
The payment amount in BYN. It needs to be specified in minimal currency units.
currency
required
string
A fiat currency in the ISO-4217 alpha-3 code format. BYN in this integration option.
expired_at
string
Time in the ISO-8601 format until which the transaction must be made. Recommended value: 72 hours after the payment token is created. Format: YYYY-MM-DDThh:mm:ssTZD, where YYYY – year (for example, 2026), MM – month (for example, 02), DD – day (for example, 09), hh – hours (for example, 18), mm – minutes (for example, 20), ss – seconds (for example, 45), TZD – time zone (+hh:mm or –hh:mm indicating an offset from UTC or Z for UTC).
object
A section of parameters of the required payment methods.
types
array
An array of the available and enabled payment methods displayed to the customer. Add crypto_currency as an array element.
object
A section of the customer details.
external_id
required
string (255)
The unique customer's identifier in the merchant's system.
gender
required
string
The customer's gender. Possible values: male or female.
birth_date
string
The customer's date of birth in the ISO 8601 YYYY-MM-DD format.
phone
string (30)
The customer's phone number.
email
string (255)
The customer's email. If not specified, the customer will be asked to submit their email on the widget.
address
required
string (255)
The customer's registration address. House number and apartment number.
country
string
The customer's country in ISO 3166-1 alpha-2 format.
state
required
string (100)
The customer's region.
city
required
string (100)
The customer's city.
street
required
string (255)
The street name of the customer's address.
zip
string (20)
The customer's ZIP or postal code.
object
Section of additional information about the payment.
object
Information about the customer's personal identity document.
document_type
conditionally required
string (50)
Type of the ID document. Required for the first payment transaction, optional for the subsequent payment transactions.
document_series
conditionally required
string (20)
Series of the ID document. Required for the first payment transaction, optional for the subsequent payment transactions.
document_number
string (50)
Number of the ID document. Required for the first payment transaction, optional for the subsequent payment transactions.
document_country
conditionally required
string (2)
Country that issued the ID document in ISO 3166-1 alpha-2 format. Required for the first payment transaction, optional for the subsequent payment transactions.
personal_number
conditionally required
string (50)
Personal number specified in the ID document. Required for the first payment transaction if the ID document was issued in Belarus, optional for the subsequent payment transactions.
issuer
conditionally required
string (255)
Entity that issued the ID document. Required for the first payment transaction, optional for the subsequent payment transactions.
issue_date
conditionally required
string
Date when the ID document was issued in the ISO 8601 YYYY-MM-DD format. Required for the first payment transaction, optional for the subsequent payment transactions.
expiry_date
conditionally required
Date when the ID document expires in the ISO 8601 YYYY-MM-DD format. Required for the first payment transaction, optional for the subsequent payment transactions.
object
Section of the customer's KYC (Know Your Customer) data.
source
required
string
The name of the merchant's company or shop responsible for the KYC data collection. Ask your manager which value you need to submit in this field.
object
A section of the KYC data.
countries_citizenship
required
array [string(2)]
The customer's citizenship. Submitted as an array with one country code in the ISO 3166-1 alpha-2 format.
not_usa_tax_payer
required
boolean
true, if the customer is not a USA tax resident.
using_on_behalf
required
boolean
Parameter indicating whether the customer is conducting the transaction on behalf of third parties. Possible values:
true - yes;
false - no.
agreed
required
boolean
true, if the customer consents to the processing of personal data.
first_name
required
string (100)
The customer's first name in latin letters.
last_name
required
string (100)
The customer's last name in latin letters.
middle_name
required
string (100)
The customer's middle name in latin letters.
first_name_ru
conditionally required
string (100)
Customer's first name in Cyrillic. The parameter is required if first_name is not sent.
last_name_ru
conditionally required
string (100)
Customer's last name in Cyrillic. The parameter is required if last_name is not sent.
middle_name_ru
conditionally required
string (100)
Customer's middle name. The parameter is required if middle_name is not sent.
birth_address
required
string (255)
Place of birth.
registration_district
required
string (255)
Region where the customer is registered.

Info

Request example with the parameters for KYC verification
{
    "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",
            "gender": "male",
            "birth_date": "1990-01-01",
            "phone": "+375291234567",
            "email": "ivan.petrov@example.com",
            "address": "h.22 room 45",
            "country": "BY",
            "state": "Minsk Region",
            "city": "Minsk",
            "street": "Street",
            "zip": "220000"
        },
        "additional_data": {
            "customer_id_data": {
                "document_type": "passport",
                "document_series": "MP",
                "document_number": "12345678",
                "document_country": "BY",
                "personal_number": "1234134513451451",
                "issuer": "MVD RB",
                "issue_date": "2016-05-25",
                "expiry_date": "2026-05-24"                            
            },
            "kyc_answers": {
                "source": "fb",
                "answers": {
                    "countries_citizenship": [
                        "BY"
                    ],
                    "not_usa_tax_payer": true,
                    "using_on_behalf": false,
                    "agreed": true,
                    "first_name": "Ivan",
                    "last_name": "Ivanov",
                    "middle_name": "Ivanovich",
                    "first_name_ru": "Иван",
                    "last_name_ru": "Иванов",
                    "middle_name_ru": "Иванович",
                    "birth_address": "BY, Minsk, Ylica, 1",
                    "registration_district": "Smolevichi District"
                }
            }
        }
    }
}
Request example for the verified customer
{
    "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"                    
        }               
    }
}
Response

Info

{
    "checkout": {
        "token": "cfa8755fff438ff1f16c2e63006a479c89d4827c12a0d93d6743f3c31f6d519e",
        "redirect_url": "https://checkout-staging.begateway.com/widget/hpp.html?token=cfa8755fff438ff1f16c2e63006a479c89d4827c12a0d93d6743f3c31f6d519e"
    }
}
{
    "response": {
        "status": "error",
        "message": "Access denied"
    }
}
{
    "errors": {
        "checkout": {
            "transaction_type": [
                "is missing"
            ]
        }
    },
    "message": "transaction_type is missing, transaction_type must be one of: authorization, payment, tokenization, recipient_tokenization, charge"
}

Payment request parameters

H2H payment flow with KYC data submission:

  1. The customer initiates the balance top-up on the merchant's website and specifies the top-up amount in BYN.
  2. The merchant sends payment request specifying method.currency and method.token_standard that the customer will use for the balance top-up. customer.external_id must be specified in the request. If there hasn't yet been a successful payment transaction in the bePaid system with the specified identifier, it is necessary to send the following additional parameters:
    • customer data in the customer object;
    • customer ID document data (additional_data.customer_id_data);
    • KYC data (additional_data.kyc_answers). If there has already been a successful payment transaction in the bePaid with the specified customer.external_id and the customer's personal data and identity document information have not changed, only customer.external_id parameter needs to be sent.
  3. bePaid sends a response. Depending on the country, the response can contain the link to the test in the form.action parameter.
  4. If the link to the test has been sent in the response, the merchant redirects the customer to it.
  5. The customer submits the responses to the test and clicks Continue.
  6. The provider verifies the customer data.
  7. After the successful verification, bePaid sends a webhook notification to the customer with the wallet ID to which the transfer needs to be made and the top-up amount equivalent in the selected currency.
  8. The merchant displays the transfer information to the customer
  9. The customer makes the transfer to the specified wallet in the timeframe of 30 minutes.
  10. bePaid sends a webhook notification with the payment status to the merchant. The merchant may also request the payment status from bePaid with the status query.

The payment request needs to contain the following additional parameters:

Request
amount
required
integer
The payment amount in BYN in minimal currency units.
currency
required
string
A fiat currency in the ISO-4217 alpha-3 code format. Must be BYN.
expired_at
string
Time in the ISO-8601 format until which the transaction must be made. Recommended value: 72 hours after the payment token is created. Format: YYYY-MM-DDThh:mm:ssTZD, where YYYY – year (for example, 2026), MM – month (for example, 02), DD – day (for example, 09), hh – hours (for example, 18), mm – minutes (for example, 20), ss – seconds (for example, 45), TZD – time zone (+hh:mm or –hh:mm indicating an offset from UTC or Z for UTC).
object
A section of the payment method parameters.
type
required
string
crypto_currency
token_standard
required
string
Network name, corresponding to the selected cryptocurrency.
currency
required
string
Cryptocurrency, corresponding to the cryptocurrency of the customer's wallet.
object
A section of the customer details.
external_id
required
string (255)
The unique customer's identifier in the merchant's system.
gender
required
string
The customer's gender. Possible values: male or female.
birth_date
required
string
The customer's date of birth in the ISO 8601 YYYY-MM-DD format.
phone
required
string (30)
The customer's phone number.
email
required
string (255)
The customer's email.
address
required
string (255)
The customer's registration address. House number and apartment number.
country
required
string
The customer's country in ISO 3166-1 alpha-2 format.
state
required
string (100)
The customer's region.
city
required
string (100)
The customer's city.
street
required
string (255)
The street name of the customer's address.
zip
required
string (20)
The customer's ZIP or postal code.
object
Section of additional information about the payment.
object
Information about the customer's personal identity document.
document_type
conditionally required
string (50)
Type of the ID document. Required for the first payment transaction, optional for the subsequent payment transactions.
document_series
conditionally required
string (20)
Series of the ID document. Required for the first payment transaction, optional for the subsequent payment transactions.
document_number
string (50)
Number of the ID document. Required for the first payment transaction, optional for the subsequent payment transactions.
document_country
conditionally required
string (2)
Country that issued the ID document in ISO 3166-1 alpha-2 format. Required for the first payment transaction, optional for the subsequent payment transactions.
personal_number
conditionally required
string (50)
Personal number specified in the ID document. Required for the first payment transaction if the ID document was issued in Belarus, optional for the subsequent payment transactions.
issuer
conditionally required
string (255)
Entity that issued the ID document. Required for the first payment transaction, optional for the subsequent payment transactions.
issue_date
conditionally required
string
Date when the ID document was issued in the ISO 8601 YYYY-MM-DD format. Required for the first payment transaction, optional for the subsequent payment transactions.
expiry_date
conditionally required
Date when the ID document expires in the ISO 8601 YYYY-MM-DD format. Required for the first payment transaction, optional for the subsequent payment transactions.
object
Section of the customer's KYC (Know Your Customer) data.
source
required
string
The name of the merchant's company or shop responsible for the KYC data collection. Ask your manager which value you need to submit in this field.
object
A section of the KYC data.
countries_citizenship
required
array [string(2)]
The customer's citizenship. Submitted as an array with one country code in the ISO 3166-1 alpha-2 format.
not_usa_tax_payer
required
boolean
true, if the customer is not a USA tax resident.
using_on_behalf
required
boolean
Parameter indicating whether the customer is conducting the transaction on behalf of third parties. Possible values:
true - yes;
false - no.
agreed
required
boolean
true, if the customer consents to the processing of personal data.
first_name
required
string (100)
The customer's first name in latin letters.
last_name
required
string (100)
The customer's last name in latin letters.
middle_name
required
string (100)
The customer's middle name in latin letters.
first_name_ru
conditionally required
string (100)
Customer's first name in Cyrillic. The parameter is required if first_name is not sent.
last_name_ru
conditionally required
string (100)
Customer's last name in Cyrillic. The parameter is required if last_name is not sent.
middle_name_ru
conditionally required
string (100)
Customer's middle name. The parameter is required if middle_name is not sent.
birth_address
required
string (255)
Place of birth.
registration_district
required
string (255)
Region where the customer is registered.
Request example
{
    "request": {
        "amount": 3501,
        "currency": "BYN",
        "expired_at": "2025-11-29T05:33:38Z",
        "description": "Cryptocurrency",
        "test": true,       
        "tracking_id": "9379992",
        "ip": "127.0.0.1",
        "language": "en",        
        "return_url": "https://example.com",      
        "method": {
            "type": "crypto_currency",
            "token_standard":"Tron", 
            "currency": "TRX"    
        },
        "customer": {
            "external_id": "user-908743",
            "gender": "male",
            "birth_date": "1990-01-01",
            "phone": "+375291234567",
            "email": "ivan.petrov@example.com",
            "address": "h.22 room 45",
            "country": "BY",
            "state": "Minsk Region",
            "city": "Minsk",
            "street": "1st Street",
            "zip": "220000"
        },
        "additional_data": {
            "customer_id_data": {
                "document_type": "passport",
                "document_series": "MP",
                "document_number": "12345678",
                "document_country": "BY",
                "personal_number": "ww3356768",
                "issuer": "MVD RB",
                "issue_date": "2016-05-25",
                "expiry_date": "2026-05-24"                    
            },
            "kyc_answers": {
                "source": "fb",
                "answers": {
                    "countries_citizenship": [
                        "BY"
                    ],
                    "not_usa_tax_payer": true,
                    "using_on_behalf": false,
                    "agreed": true,
                    "first_name": "Ivan",
                    "last_name": "Petrov",
                    "middle_name": "Sergeevich",
                    "first_name_ru": "Иван",
                    "last_name_ru": "Петров",
                    "middle_name_ru": "Сергеевичич",
                    "birth_address": "BY, Minsk, 1st Street, 1",
                    "registration_district": "Centralny District"
                }
            }
        }
    }
}
Response

Redirect your customer to the URL received as a value of the form.action parameter.

Response example
{
    "transaction": {
        "uid": "b6f14e63-f350-4bfb-9a0e-6f3dba364acf",
        "type": "payment",
        "status": "pending",
        "amount": 3501,
        "currency": "BYN",
        "description": "Cryptocurrency",
        "created_at": "2025-09-23T10:17:54Z",
        "updated_at": "2025-09-23T10:17:55Z",
        "method_type": "crypto_currency",
        "receipt_url": "https://merchant.bepaid.by/customer/transactions/b6f14e63-f350-4bfb-9a0e-6f3dba364acf/fea7dc8e8c07ef759bd35e9756db73fd9c1854ec6697cca835bde43c2e0cdf2d?language=en",
        "payment": {
            "status": "pending",
            "gateway_id": 5740,
            "message": "Transaction was initialized. Customer verification pending."
        },
        "crypto_currency": {
            "type": "crypto_currency",
            "currency": "TRX",
            "token_standard": "Tron"
        },
        "customer": {
            "zip": "220000",
            "city": "Minsk",
            "phone": "+375291234567",
            "state": "Minsk Region",
            "gender": "male",
            "street": "1st Street",
            "address": "h.22 room 45",
            "country": "BY",                
            "birth_date": "1990-01-01",                
            "external_id": "user-908743",
            "email": "ivan.petrov@example.com",
            "ip": "127.0.0.1"
        },
        "manually_corrected_at": null,
        "version": 1,
        "message": "Transaction was initialized. Customer verification pending.",
        "tracking_id": "9379992",
        "test": true,
        "language": "en",
        "billing_address": {
            "zip": "220000",
            "city": "Minsk",
            "phone": "+375291234567",
            "state": "Minsk Region",
            "gender": "male",
            "street": "1st Street",
            "address": "h.22 room 45",
            "country": "BY",                
            "birth_date": "1990-01-01"                
        },
        "additional_data": {
            "kyc_answers": {
                "source": "fb",
                "answers": {
                    "agreed": true,
                    "first_name": "Ivan",
                    "last_name": "Petrov",
                    "middle_name": "Sergeevich",
                    "last_name_ru": "Петров",
                    "birth_address": "BY, Minsk, Ylica, 1",
                    "first_name_ru": "Иван",
                    "middle_name_ru": "Сергеевич",
                    "using_on_behalf": false,
                    "not_usa_tax_payer": true,
                    "countries_citizenship": [
                        "BY"
                    ],
                    "registration_district": "Centralny District"
                }
            },
            "payment_method": {
                "type": "alternative"
            },
            "customer_id_data": {
                "issuer": "MVD RB",                    
                "issue_date": "2016-05-25",
                "expiry_date": "2026-05-24",
                "document_type": "passport",
                "document_number": "12345678",
                "document_series": "MP",
                "personal_number": "ww3356768",
                "document_country": "BY"
            }
        },        
        "gateway": {
            "iframe": true
        },
        "form": {
            "action": "link-to-test",
            "fields": [],
            "method": "GET"
        }
    }
}

Webhook notifications

Webhook notifications are sent in the following cases:

  • when the transaction status changes to pending, expired, failed or successful;
  • when the customer verification status is changed;
  • when the transaction is initialized.
Transaction status Is it a final status? Message text, transaction.message Status description
pending no Transaction was initialized. Customer verification pending. Notification on transaction initialization, possible cases:
1. New customer, verification process has been initiated.
2. Existing customer, verification has not been passed.
pending no Transaction was initialized. Customer action is required to complete the payment. Notification when the customer completed the payment.
pending no Error while sending test answers. An error occurred when sending the data with the test results.
successful yes Transaction successfully processed. The transaction has been successfully processed.
failed yes depends on the error Failed to process the transaction.
expired yes Transaction expired. The allowed transaction completion time has expired.
Notification example: customer action is required
{
  "transaction": {
    "uid": "3209b045-8f40-46a5-b65f-1b9a76e02cea",
    "type": "payment",
    "status": "pending",
    "amount": 3502,
    "currency": "BYN",
    "description": "description",
    "created_at": "2025-10-02T14:09:21Z",
    "updated_at": "2025-10-02T14:10:08Z",
    "method_type": "crypto_currency",
    "receipt_url": "https://merchant.bepaid.by/customer/transactions/3209b045-8f40-46a5-b65f-1b9a76e02cea/e39c14b784468236c619b8a89ed85ea2adc5b6553f3ebb5328965a3c6944be82?language=en",
    "payment": {
      "status": "pending",
      "gateway_id": 5712,
      "ref_id": "18206e7e-dd1b-4dd4-ac43-738e64b1dd71",
      "message": "Transaction was initialized. Customer action is required to complete the payment."
    },
    "crypto_currency": {
      "type": "crypto_currency",
      "amount": "80",
      "currency": "TRX",
      "token_standard": "Tron",
      "recipient_wallet_id": "TZHsaA4bJVvPLkwkeVwo7mtB65QzyumQxu"
    },
    "customer": {
      "zip": "220000",
      "city": "Minsk",
      "email": "example+193@gmail.com",
      "phone": "17777777777",
      "state": "Minsk Region",
      "gender": "male",
      "street": "Ylica 10",
      "address": "1st Street",
      "country": "BY",
      "device_id": "12312312321fff67",          
      "birth_date": "1990-01-01",          
      "external_id": "user-12345193",          
      "taxpayer_id": "010200A9618",
      "ip": "127.0.0.1"
    },
    "manually_corrected_at": null,
    "version": 3,
    "message": "Transaction was initialized. Customer action is required to complete the payment.",
    "tracking_id": "your_uniq_number",
    "test": false,
    "language": "en",
    "expired_at": "2025-07-01T11:03:01Z",
    "billing_address": {
      "zip": "220000",
      "city": "Minsk",
      "email": "example+193@gmail.com",
      "phone": "17777777777",
      "state": "Minsk Region",
      "gender": "male",
      "street": "Ylica 10",
      "address": "1st Street",
      "country": "BY",
      "device_id": "12312312321fff67",          
      "birth_date": "1990-01-01",          
      "taxpayer_id": "010200A9618"
    },
    "additional_data": {
      "kyc_answers": {
        "answers": {
          "agreed": true,
          "source": "fb",
          "first_name": "Ivan",
          "last_name": "Ivanov",
          "middle_name": "Ivanovich",
          "last_name_ru": "Иванов",
          "birth_address": "RU, Minsk, Ylica, 1",
          "first_name_ru": "Иван",
          "middle_name_ru": "Иванович",
          "using_on_behalf": true,
          "not_usa_tax_payer": true,
          "countries_citizenship": [
            "RU"
          ],
          "registration_district": "Smolevichi Distr"
        }
      },
      "payment_method": {
        "type": "alternative"
      },
      "customer_id_data": {
        "issuer": "MVD RB",            
        "issue_date": "2016-05-25",
        "expiry_date": "2026-05-24",
        "document_type": "passport",
        "document_number": "12345678",
        "document_series": "MP",
        "personal_number": "Идентификационный номер",
        "document_country": "RU"
      }
    },
    "smart_routing_verification": {      
      "status": "successful"
    },
    "gateway": {
      "iframe": false
    }
  }
}

Payout

Payout flow:

  1. The customer initiates a withdrawal from their balance in the merchant's system, specify the withdrawal amount in BYN and enter the identifier of their wallet for the withdrawal in one of the accepted cryptocurrencies.
  2. The merchant verifies that the customer has already had a successful payment transaction in their system.
  3. If the customer has already had a successful payout transaction in the merchant's system, the merchant sends a a payout request, specifying customer.external_id.
  4. bePaid also verifies that the customer has had a successful payment transaction in their system.
  5. bePaid sends a response with the pending status.
  6. bePaid sends a webhook notification with the final payout status to the merchant. The merchant may also request the payment status from bePaid with the status query.
Request

Send a payout request with the following parameters:

amount
required
integer
An amount in BYN to convert for a payout in minimal currency units.
currency
required
string
BYN, currency in the ISO-4217 alpha-3 code format.
object
A section of the payment method parameters.
type
required
string
crypto_currency.
token_standard
required
string
Network name, corresponding to the selected cryptocurrency.
currency
required
string
Cryptocurrency, corresponding to the cryptocurrency of the customer's wallet.
recipient_wallet_id
required
string
An ID of the customer's wallet to which the payout is made.
object
A section of the customer details.
external_id
required
string (255)
The unique customer's identifier in the merchant's system.
Example of the payout request
{
    "request": {
        "amount": 10000,
        "currency": "BYN",
        "description": "description",
        "test": false,
        "tracking_id": "your_uniq_number",
        "notification_url": "https://your-notification.url",
        "return_url": "https://your-success.url",
        "method": {
            "type": "crypto_currency",
            "token_standard": "Tron",
            "currency": "TRX",
            "recipient_wallet_id": "GHFH123413hJJHHGHF"
        },
        "customer": {
            "external_id": "user-12345"
        }
    }
}
Response
object
uid
string
A UID of the processed transaction.
status
string
A status of the processed transaction.
message
string
A processing result message.
object
type
string
Payment method name, crypto_currency
token_standard
string
Network name, corresponding to the selected cryptocurrency.
currency
string
Cryptocurrency.
recipient_wallet_id
string
An ID of the customer's wallet to which the payout is made.
Response example
{
    "transaction": {
        "uid": "5a050f2a-a491-479f-b96c-4ca9f3c28bec",
        "type": "payout",
        "status": "pending",
        "amount": 10000,
        "currency": "BYN",
        "description": "description",
        "created_at": "2025-08-01T13:39:13Z",
        "updated_at": "2025-08-01T13:39:14Z",
        "manually_corrected_at": null,
        "method_type": "crypto_currency",
        "receipt_url": "https://merchant.bepaid.by/customer/transactions/5a050f2a-a491-479f-b96c-4ca9f3c28bec/9d31abf45028f04cf47f85e39728081e9706f11111111",
        "payout": {
            "status": "pending",
            "gateway_id": 3878,
            "message": "Transaction was initialized.",
            "bank_code": 422
        },
        "crypto_currency": {
            "type": "crypto_currency"
        },
        "customer": {
            "email": null,
            "ip": null
        },
        "version": 1,
        "message": "Transaction was initialized.",
        "test": true,
        "billing_address": {},
        "additional_data": {
            "payment_method": {
                "type": "alternative"
            }
        },
        "smart_routing_verification": {
            "status": "successful"
        }
    }
}
Example of the response to the status query, successful payout
{
  "transaction": {
    "uid": "e92ef070-8593-47dc-ae40-111111",
    "type": "payout",
    "status": "successful",
    "message": "Transaction successfully processed.",
    "amount": 3500,
    "currency": "BYN",
    "description": "description",
    "created_at": "2025-09-16T15:12:18Z",
    "updated_at": "2025-09-16T15:12:47Z",
    "manually_corrected_at": null,
    "method_type": "crypto_currency",
    "receipt_url": "https://merchant.bepaid.by/customer/transactions/e92ef070-8593-47dc-ae40-c884ebd5e6e2/35a126f73e642bba3506c66e863a0ba6c1bb7d93d629c2e248d6d6f6e6cee545?language=en",
    "payout": {
      "status": "successful",
      "gateway_id": 5712,
      "ref_id": "e852c660-b0c2-4856-b333-1111111",
      "message": "Transaction successfully processed."
    },
    "crypto_currency": {
      "type": "crypto_currency",
      "amount": "80",
      "currency": "TRX",
      "token_standard": "Tron",
      "recipient_wallet_id": "TYPAe4v111111111111111111"
    }
    ...
  }
}  

Webhook notifications

Webhook notifications are sent when the transaction status changes to pending, expired, failed or successful.

Transaction status Is it a final status? Message text, transaction.message Status description
pending no Transaction was initialized. The transaction request has been received, but the transaction has not been completed.
successful yes Transaction successfully processed. The transaction has been successfully processed.
failed yes depends on the error Failed to complete the transaction.
expired yes Transaction expired. The allowed transaction completion time has expired.
Notification example: customer didn't pass KYC-verification
{
    "transaction": {
        "uid": "b91f6618-0b36-4d3a-a940-11111",
        "type": "payout",
        "status": "failed",
        "amount": 3501,
        "currency": "BYN",
        "description": "description",
        "created_at": "2025-09-29T12:16:10Z",
        "updated_at": "2025-09-29T12:16:10Z",
        "manually_corrected_at": null,
        "method_type": "crypto_currency",
        "receipt_url": "https://merchant.bepaid.by/customer/transactions/b91f6618-0b36-4d3a-a940-11111/11111?language=en",
        "payout": {
            "status": "failed",
            "gateway_id": 5712,
            "message": "Verified customer not found."
        },
        "crypto_currency": {
            "type": "crypto_currency",
            "currency": "TRX",
            "token_standard": "Tron",
            "recipient_wallet_id": "TYPAe4vUYtUAKgrRt7iUc2fLuVhRHfCiJG"
        },
        "customer": {
            "email": null,
            "ip": "127.0.0.1"
        },
        "version": 1,
        "message": "Verified customer not found.",
        "tracking_id": "your_uniq_number",
        "test": false,
        "language": "en",
        "paid_at": "2025-09-29T12:16:10Z",
        "billing_address": {
            "zip": "220000",
            "city": "Minsk",
            "phone": "17777777777",
            "state": "Minsk Region",
            "gender": "male",
            "street": "10-21",
            "address": "1st Street",
            "country": "RU",
            "device_id": "12312312321fff67",
            "birth_date": "1990-01-01",              
            "taxpayer_id": "010200A9618"
        },
        "additional_data": {
            "payment_method": {
                "type": "alternative"
            }
        },
        "smart_routing_verification": {            
            "status": "successful"
        }
    }
}

The list of available cryptocurrencies

Cryptocurrency name Cryptocurrency code Cryptocurrency network
Bitcoin BTC Bitcoin
Ethereum ETH Ethereum
USD Coin USDC Ethereum
Tether USDT Ethereum
TON TON Ton
Tether USDT TON
Tronix TRX Tron
Tether USDT_TRC Tron

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