Creating a Payment In
To initiate a payment process, utilize the Create Payment endpoint , incorporating payInDetails
to return the cryptocurrency address needed for the deposit on the correct blockchain.
Below are the details required for the create payment request that bypasses the cryptocurrency selection stage:
Parameter | Type | Required | Description |
---|---|---|---|
merchantId | string | Yes | Identifies the Merchant ID, indicating which wallet the payment should settle in. Found on the Merchant Details page. |
amount | long | Yes | The total amount needed to complete the payment. |
expiryMinutes | integer | No | Defines the time frame for the end-user to complete the payment. Defaults to 1440 minutes if not specified. |
currency | string | Yes | The currency code to present the price in to the end-user. This will for the display currency, which can be in any local currency supported and does not need to be a cryptocurrency. |
returnUrl | string | No | The URL for redirecting the user back to the merchant's site from the payment flow. |
reference | string | Yes | A unique reference for the payment, visible to both you and your customer. |
type | string | Yes | Specifies the transaction type, using IN for incoming payments. |
payInDetails.currency | string | No | Specify the cryptocurrency the end-user will use. |
payInDetails.protocol | string | No | Required when payInDetails.currency is a currency that supports multiple protocols, to specify the exact protocol. |
Example Request
Here is how an example request might look:
{
"merchantId": "00a4af9d-ad4b-42d5-bec4-b7a8c90161fe",
"amount": "100",
"expiryMinutes": "60",
"currency": "USD",
"returnUrl": "https://yourwebsitename.com",
"reference": "6a4013c2-5fa9-4e2f-bef7-88c5570b6501",
"type": "IN",
"payInDetails": {
"currency": "USDT",
"protocol": "TRC20"
},
}'
Example Response
Upon successfully submitting the request, you'll receive a response like the following:
{
"uuid": "fef4e99d-b41d-4efe-89fd-4fdf41f3f33f",
"merchantDisplayName": "Metallica Inc",
"merchantId": "00a4af9d-ad4b-42d5-bec4-b7a8c90161fe",
"dateCreated": 1704807605678,
"expiryDate": 1704808805678,
"quoteExpiryDate": 1704808806000,
"acceptanceExpiryDate": 1704807636000,
"quoteStatus": "ACCEPTED",
"reference": "a003cec4-abf5-42aa-baf0-43a1cc815536",
"type": "IN",
"subType": "merchantPayIn",
"status": "PENDING",
"displayCurrency": {
"currency": "USD",
"amount": 100,
"actual": 0
},
"walletCurrency": {
"currency": "EUR",
"amount": 92.74,
"actual": 0
},
"paidCurrency": {
"currency": "USDT",
"amount": 99.935377,
"actual": 0
},
"feeCurrency": {
"currency": "EUR",
"amount": 0.93,
"actual": 0
},
"displayRate": {
"base": "USDT",
"counter": "USD",
"rate": 0.998867803322
},
"exchangeRate": {
"base": "USDT",
"counter": "EUR",
"rate": 0.92635
},
"address": {
"address": "TTwyxkKzenGBhVX2TsjYLVFfApEQ3hPXGc",
"tag": null,
"protocol": "TRC20",
"uri": "TTwyxkKzenGBhVX2TsjYLVFfApEQ3hPXGc",
"alternatives": []
},
"returnUrl": "https://yourwebsitename.com",
"redirectUrl": "https://pay.sandbox.bvnk.com/payin?uuid=fef4e99d-b41d-4efe-89fd-4fdf41f3f33f",
"transactions": [],
"refund": null,
"refunds": []
}
Key takeaways include the uuid
for payment queries, the address.address
field, and paidCurrency.amount
.
address.address
is the address that needs to be shown to the end user so that they can make a deposit.paidCurrency.amount
is the total amount of the relevant currency that needs to be paid by the end user to complete the payment, and should be shown to the end user.uuid
is used to query the payment as needed.
This setup ensures a tailored payment experience, directly linking to the specified payment address. All Exchange rates are provided given that the payment currency is known at the time the payment is created.
After creating the payment, your next action is to display these details your end-user for them to complete their payment. Once shown, your role is simply to wait for the payment which will fire off a number of webhooks to let you know it has occurred.
Updated about 1 month ago