Creating wallets

Enable your Embedded Partner Merchant (EPM) to create fiat and crypto wallets on the BVNK platform

The first step to building an embedded experience is to create a wallet for your EPM. Using the API call listed below, you can enable your EPM to create a wallet per asset. This allows you to give your EPM a permanent address to send crypto or fiat to when moving funds from other platforms.

For this step, we will be using the Create wallet endpoint on the API

❗️

Executing API calls on behalf of your Merchant

Make sure to set x-account-reference header with a value corresponding to the EPM account received using the webhook when account is opened.

curl --request POST \
     --url https://api.sandbox.bvnk.com/api/wallet \
     --header 'Accept: application/json' \
     --header 'Authorization: Hawk id="B9jnE1U8eLblzHtNeJZRxfcq03CQKcmcP9FOrACMzXb1HfrxrePWsTfuP70JNns9", ts="1633010032", nonce="guGXrD", mac="uKeg+w1qXqzaF/8mOQGv8Y9IlRxyxTT+iINLe03EQ60="' \
     --header 'Content-Type: application/json' \
     --header 'x-account-reference: 558f2eb7-3395-44d8-a489-2d0c6cf62e98' \
		 --data '
{
     "currency": "ETH",
     "description": "ETH wallet"
}
'

Let's look at what data you need to input to create a wallet for your EPM.

ParameterTypeDescription
currencystringCurrency code of the crypto currency you want to create the wallet for. List of crypto currencies supported today
descriptionstringA unique name for this wallet to reconcile on your system

Once you've sent the request for creating the wallet, you should receive a response like this:

{
  "id": 313675,
  "description": "ETH wallet",
  "currency": {
    "id": 1773,
    "code": "ETH",
    "fiat": true,
    "icon": null,
    "name": "Ethereum",
    "withdrawalParameters": [],
    "options": {},
    "withdrawalFee": 0.4,
    "depositFee": 0,
    "supportsDeposits": true,
    "supportsWithdrawals": true,
    "quantityPrecision": 2,
    "pricePrecision": 2,
    "protocols": []
  },
  "supportsWithdrawals": true,
  "supportsDeposits": true,
  "custodianWallet": false,
  "protocol": ETH,
  "address": "0xEa61651823dEc1027565AFB908A0c5C06662cdBf",
  "lookup": null,
  "balance": 0,
  "available": 0,
  "withdrawalFee": 0,
  "depositFee": 0,
  "alternatives": null,
  "approxAvailable": "0",
  "approxBalance": "0"
}

You'll find in this response the address that you could choose to expose to your EPM, allowing them to transfer their crypto from another venue in to the newly created wallet. The response also contains the wallet id which needs to be used when converting between fiat to crypto and vice versa.