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:

ParameterTypeRequiredDescription
merchantIdstringYesIdentifies the Merchant ID, indicating which wallet the payment should settle in. Found on the Merchant Details page.
amountlongYesThe total amount needed to complete the payment.
expiryMinutesintegerNoDefines the time frame for the end-user to complete the payment. Defaults to 1440 minutes if not specified.
currencystringYesThe 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.
returnUrlstringNoThe URL for redirecting the user back to the merchant's site from the payment flow.
referencestringYesA unique reference for the payment, visible to both you and your customer.
typestringYesSpecifies the transaction type, using IN for incoming payments.
payInDetails.currencystringNoSpecify the cryptocurrency the end-user will use.
payInDetails.protocolstringNoRequired 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 .

  1. address.address is the address that needs to be shown to the end user so that they can make a deposit.
  2. paidCurrency.amountis 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.
  3. 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.