Make a Payment
To create a payment, send the POST /api/v1/pay/summary
request with a similar body:
{
"merchantId": "86955f40-8f4e-464c-be2b-583635bf1c62",
"type": "IN",
"amount": 10,
"currency": "USD",
"expiryMinutes": 30,
"reference": "test_reference_in_Qa4wy9",
"returnUrl": "https://your-url-here.com/status",
"payInDetails": {
"currency": "USDT"
},
"customerId": "ba388054-4512-441e-a9c4-cbe9b0fe0332",
"complianceDetails": {
"requesterIpAddress": "77.71.188.87",
"partyDetails": [
{
"type": "ORIGINATOR",
"entityType": "INDIVIDUAL",
"firstName": "John",
"lastName": "Doe",
"dateOfBirth": "1984-06-30",
"relationshipType": "THIRD_PARTY",
"countryCode": "DE"
}
]
}
}
In the request, you need to specify at least the following parameters:
Parameter | Type | Required | Description |
---|---|---|---|
| string | Yes | Your Merchant ID. You can find it on the Merchant Details page in your account. To learn how to create a Merchant, refer to theCreate Your First Merchant guide. |
| string | Yes | Reference relating to the payment that you and your customer will see. You can place any string here. |
| long | Yes | Amount required to complete the payment. Minimum deposit: €5. |
| string | Yes | Currency code you want to display the price in for the end-user. |
| string | No | URL to redirect a user to the merchant's site when they click "back to merchant" in the payment flow. |
| string | Yes | Transaction type.
|
| integer | No | Time limit granted to end-users for completing incoming payments. If the parameter is left blank in your request, BVNK will default it to 20 minutes. |
| string | No | Currency for incoming payments. Set the value if you already know the currency your end-user uses for pay-ins, to skip the cryptocurrency selection screen. Leave the value blank to allow your customers to specify the desired currency. |
| string | No | Protocol is strictly required when supplying |
You can also include custom metadata in your payment request. This metadata will be associated with the transaction and will be included in webhook events related to it.
To add metadata, include a top-level JSON object with the key metadata
. The value of this key is another JSON object containing your desired key-value pairs.
{
"metadata": {
"orderId": "PO-2025-001",
"internalUserId": "user-456",
"reason": "Customer withdrawal"
}
}
Upon successfully submitting the request, you receive the following response:
{
"uuid": "3332388b-43cd-45a1-ad1b-7df5e5f4dc6e",
"merchantDisplayName": "Euro Company",
"merchantId": "86955f40-8f4e-464c-be2b-583635bf1c62",
"dateCreated": 1728647621633,
"expiryDate": 1728649421633,
"quoteExpiryDate": 1728649422000,
"acceptanceExpiryDate": 1728647652000,
"quoteStatus": "ACCEPTED",
"reference": "test_reference_in_Qa4wy9",
"type": "IN",
"subType": "merchantPayIn",
"status": "PENDING",
"displayCurrency": {
"currency": "USD",
"amount": 10,
"actual": 0
},
"walletCurrency": {
"currency": "EUR",
"amount": 9.15,
"actual": 0
},
"paidCurrency": {
"currency": "USDT",
"amount": 10.008422,
"actual": 0
},
"feeCurrency": {
"currency": "EUR",
"amount": 0.09,
"actual": 0
},
"networkFeeCurrency": null,
"displayRate": {
"base": "USDT",
"counter": "USD",
"rate": 0.999158508704
},
"exchangeRate": {
"base": "USDT",
"counter": "EUR",
"rate": 0.91423
},
"address": {
"address": "0x7b686317f8ed2c2bc3bbd060464f1939359a00e3",
"tag": null,
"protocol": "ERC20",
"uri": "ethereum:0xdac17f958d2ee523a2206206994597c13d831ec7/transfer?address=0x7b686317f8ed2c2bc3bbd060464f1939359a00e3&uint256=10008422",
"alternatives": [
{
"address": "0xab12ec2f0e47c45ac8ff0c3914fb426d5ef9541a",
"tag": null,
"protocol": "BEP20",
"uri": "0xab12ec2f0e47c45ac8ff0c3914fb426d5ef9541a",
"alternatives": []
},
{
"address": "0x3f2b71f5cbca1e4cda0948208f67706a1a519c8e",
"tag": null,
"protocol": "POLYGON",
"uri": "0x3f2b71f5cbca1e4cda0948208f67706a1a519c8e",
"alternatives": []
},
{
"address": "TYbVJodUGrkWJSWSVnHjXHU6g8RC7AvPE6",
"tag": null,
"protocol": "TRC20",
"uri": "TYbVJodUGrkWJSWSVnHjXHU6g8RC7AvPE6",
"alternatives": []
}
]
},
"returnUrl": "https://your-url-here.com/status",
"redirectUrl": "https://pay.sandbox.bvnk.com/payin?uuid=3332388b-43cd-45a1-ad1b-7df5e5f4dc6e",
"transactions": [],
"refund": null,
"refunds": [],
"currencyOptions": [],
"flow": "DEFAULT",
"twoStep": false,
"metadata": {
"deviceType": "desktop",
"sessionId": "abcdef123456",
"userSegment": "premium",
"campaignId": "promo-spring-2025"
},
"customerId": "ba388054-4512-441e-a9c4-cbe9b0fe0332"
}
Here, take note of the redirectURL
variable, which is used to direct customers to the Hosted Payments Page for digital asset selection.
Updated 3 days ago
In the following guide, you'll learn how to redirect your customers to a Hosted Payments Page, allowing them to complete a payment. Before that, you can also configure specific cryptocurrencies to be used in payments.