Creating a payment

To create a payment, you will need to use the Create payment endpoint.

curl -X "POST" "https://api.sandbox.bvnk.com/api/v1/pay/summary" \
     -H 'Authorization: Hawk id="RucpDbCK06k9YxwyLzxJ7x0XgrYpdk6D3tIKDRtEKPwjvdmxCJYbffAD5T9E3M", ts="1636616294", nonce="LZ7rJs", mac="wTVRho+Ayh6rIB3OAjAGJNuF7PuDaiTA5HhlR0tx7O4="' \
     -H 'Content-Type: application/json; charset=utf-8' \
     -d $'{
  "amount": "10000",
  "reference": "4a393f21-1164-4b70-b82f-9611eab23b74",
  "merchantId": "0a12a214-1619-43fa-9be1-0029f6a440a0",
  "returnUrl": "https://yourwebsitename.com",
  "type": "IN",
  "currency": "JPY",
  "payInDetails": {
    "currency": "BTC"
  },
  "expiryMinutes": "60"
}'

Let's go through the details you'll need to supply in the create payment request

ParameterTypeDescription
merchantIdstringYour Merchant ID. You can find it on the Merchant Details page in your account.

See this guide for creating one
referencestringA reference you and your customer will see relating to the payment. This can be anything you like.
amountlongThe amount required to complete the payment.
currencystringThe currency code that you want to display the price to the end-user in.
returnUrlstringA URL that will be used to redirect the user if they click "back to merchant" in the payment flow.
typestringDictates whether you are creating a Pay IN or a Pay OUT - in this case, we are using IN to create a Pay IN.
expiryMinutesintegerThe amount of time you are giving the end-user to pay in.
payInDetails.currencystringUse this to skip the cryptocurrency selection screen if you already know which currency your end-user is paying in. Don't send this variable if you want to give your customer the choice.

After submitting this successfully, you'll receive the following response

{
 {
  "uuid": "9a34142a-9760-4add-84be-811589f3a784",
  "merchantId": "0a12a214-1619-43fa-9be1-0029f6a440a0",
  "dateCreated": 1636616283493,
  "expiryDate": 1636619880451,
  "reference": "9ccfe7b3-6b51-4fb8-98c9-eafdf37bb6c6",
  "type": "IN",
  "status": "PENDING",
  "displayCurrency": {
    "currency": "JPY",
    "amount": 1E+4,
    "actual": 0
  },
  "walletCurrency": {
    "currency": "EUR",
    "amount": 76.45,
    "actual": 0
  },
  "paidCurrency": {
    "currency": "BTC",
    "amount": 0.00137295,
    "actual": 0
  },
  "feeCurrency": {
    "currency": "EUR",
    "amount": 0.76,
    "actual": 0
  },
  "displayRate": {
    "base": "BTC",
    "counter": "JPY",
    "rate": 7283586.437962052514658218
  },
  "exchangeRate": {
    "base": "BTC",
    "counter": "EUR",
    "rate": 55683.007773347885159365
  },
  "address": {
    "protocol": null,
    "address": "mnJoHg45whcRjiu42kZcF3xCUyx9kHg6Nz",
    "tag": null,
    "uri": "bitcoin:mnJoHg45whcRjiu42kZcF3xCUyx9kHg6Nz",
    "alternatives": []
  },
  "redirectUrl": "https://pay.sandbox.bvnk.com/payin?uuid=9a34142a-9760-4add-84be-811589f3a784&flow=direct",
  "returnUrl": "https://yourwebsitename.com",
  "transactions": []
}

Take note at this step of the redirectURL variable as we will be using this in the next step to redirect the end-user to the payment page.