Customer Address Widget via API
Overview
Use this flow when you want to keep your own UI while letting inabit Terminal handle the crypto backend. This guide covers only the Customer Address widget end-to-end backend flow: your backend will 1) identify the customer, 2) request a one-time address token, 3) (optionally) fetch allowed assets/blockchains, and 4) generate a deposit address for the chosen blockchain + asset.
Scope
Widget type: Customer Address only (not Purchase or other widgets).
Side: Backend/server only (no client-side API calls here).
Security (important):
All API calls on this page must be made from your server
Never expose your Widget API Key to the browser or mobile client.
Prerequisites
A Customer Address widget configured in the inabit UI (copy the Widget API Key from the code/snippet panel).
The list of blockchains you want to support in the widget (configure in the UI).
Base URL : https://api.inabit.biz
Step 1 - Create or Get the Customer UUID
Each customer is identified by a customerUuid. Use your own stable identifier (email, user ID) as the customerIdentifier.
1.1 Create (if the customer does not exist)
curl --location 'https://api.inabit.biz/v1/customer' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {widget api key}' \
--data-raw '{
"customerIdentifier": "[email protected]"
}'Response
{
"data": {
"id": "f8a68b70-657d-4bfb-b343-52e733f4e78b",
"widgetId": "85b8e3d5-1030-4a7c-8e64-5269462ec811",
"customerIdentifier": "[email protected]"
}
}1.2 Get existing customer id
curl --location 'https://api.inabit.biz/v1/[email protected]' \
--header 'Authorization: Bearer {widget api key}' \
--data ''Response
{
"data": {
"id": "54c18bc5-70d3-45bd-81c2-e2bbaba27464",
"widgetId": "85b8e3d5-1030-4a7c-8e64-5269462ec811",
"customerIdentifier": "[email protected]"
}
}Step 2 - Create an Address Token for the Customer
The address token authorizes address creation for this specific customer.
curl --location 'https://api.inabit.biz/v1/customer/address-token' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {widget api key}' \
--data '{
"customerUuid": "54c18bc5-70d3-45bd-81c2-e2bbaba27464"
}'Response
{
"data": {
"customerUuid": "54c18bc5-70d3-45bd-81c2-e2bbaba27464",
"addressGenerationToken": "b92605cb-ed0d-4d7e-89d4-a03f3ec26a6a"
}
}Store the
addressGenerationTokentemporarily (it’s one-time/short-lived).
From this point on, the Authorization header must use the address token, not the API key.
Step 3 - (Optional) Fetch Allowed Assets/Blockchains
If needed fetch the widget asset list
curl --location 'https://api.inabit.biz/v1/customer/asset' \
--header 'Authorization: Bearer b92605cb-ed0d-4d7e-89d4-a03f3ec26a6a' \
--data ''Response
{
"data": {
"assets": [
{ "asset": "TRX", "blockchains": ["tron"] },
{ "asset": "USDT", "blockchains": ["tron"] },
{ "asset": "BUSD", "blockchains": ["ethereum"] }
],
"total": 3
}
}This is the list of all supported asset for the widget.
Step 4 - Generate the Deposit Address (per Blockchain & Asset)
Request the address for the chosen blockchain and asset.
curl --location 'https://api.inabit.biz/v1/customer/deposit-address' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer b92605cb-ed0d-4d7e-89d4-a03f3ec26a6a' \
--data '{
"blockchain": "tron",
"asset": "TRX"
}'Response
{
"data": {
"id": 273,
"address": "TTf28GEr2eGKAB5YnhnE1x38b9QB6CArSe",
"walletIdInabit": "cmcf6ko51000l6701ho72vqgw",
"blockchainCode": "tron",
"customerId": "54c18bc5-70d3-45bd-81c2-e2bbaba27464",
"widgetId": "85b8e3d5-1030-4a7c-8e64-5269462ec811"
}
}Use data.address as the customer’s deposit address for that blockchain/asset and save it for further use of the customer (this will be the customer’s address moving forward for this given blockchain and Asset)
Last updated
Was this helpful?