API Reference
Complete API reference for Bando's Fulfiller endpoints. Detailed documentation for the integrating the first fully integrated web3 spending use-case for your wallet or Dapp.
Download Open API Specification
Brand to filter
2 letter ISO code for the destination country to filter
Product type to filter
Offer subtype to filter
Product category name to filter. Supports multiple categories with comma-separated values: category=Mobile Data,Gaming Cards
OK
Bad Request
Unauthorized - API Token Missing or Unrecognized
Forbidden - IP Not Allowed
Internal Server Error
GET /api/v1/products/grouped/ HTTP/1.1
Host: api.bando.cool
Accept: */*
{
"products": [
{
"productType": "text",
"brands": [
{
"brandName": "text",
"brandSlug": "text",
"imageUrl": "text",
"order": 1,
"variants": [
{
"id": "text",
"fupId": "text",
"brand": "text",
"country": "text",
"notes": "text",
"sku": "text",
"price": {
"fiatCurrency": "text",
"fiatValue": "text",
"stableCoinCurrency": "text",
"stableCoinValue": "text"
},
"productType": "text",
"referenceType": {
"name": "text",
"valueType": "text",
"regex": "text"
},
"requiredFields": [
{
"name": "text",
"valueType": "text",
"regex": "text"
}
],
"shortNotes": "text",
"subTypes": [
"text"
],
"categories": [
"text"
],
"supportedCountries": [
"text"
],
"imageUrl": "text",
"evmServiceId": 1,
"svmServiceId": 1,
"dataGB": "text",
"dataSpeeds": [
"text"
],
"dataUnlimited": true,
"durationDays": "text",
"smsNumber": "text",
"smsUnlimited": true,
"voiceMinutes": "text",
"voiceUnlimited": true,
"roamingCountryIso2": "text",
"roamingDataSpeeds": [
"text"
]
}
]
}
]
}
]
}Fiat currency for request.
Requested stable coin used for pricing (e.g., USDC)
Product identifier
Network identifier
Integrator name
Sender address for the transaction
Quote retrieved successfully
Bad Request - Invalid or missing parameters
POST /api/v1/quotes/ HTTP/1.1
Host: api.bando.cool
Content-Type: application/json
Accept: */*
Content-Length: 106
{
"fiatCurrency": "text",
"digitalAsset": "text",
"sku": "text",
"chainId": 1,
"integrator": "text",
"sender": "text"
}{
"id": 1,
"fiatCurrency": "text",
"fiatAmount": "text",
"digitalAsset": "text",
"digitalAssetAmount": "text",
"totalAmount": "text",
"feeAmount": "text",
"sku": "text",
"transactionRequest": {
"chainId": 1,
"type": 2,
"to": "text",
"data": "text",
"value": "text",
"gas": "text",
"gasLimit": "text",
"maxFeePerGas": "text",
"maxPriorityFeePerGas": "text"
}
}User's wallet address
Integrator slug unique identifier
bandoWallet state
Wrong parameters
Wallet not found
Too Many Requests
Internal Server Error
GET /api/v1/wallets/{address}/?integrator=bando HTTP/1.1
Host: api.bando.cool
Accept: */*
{
"wallet": {
"walletAddress": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"hasAcceptedTerms": true
}
}Creates a new spending transaction in the Bando Spending Protocol.
User's wallet address
Integrator slug unique identifier
bandoQuote Unique key that makes this request idempotent.
Created spend transaction
Bad Request
Unauthorized - API Token Missing or Unrecognized
Forbidden - IP Not Allowed
Transactions not found
Duplicate request detected for this Idempotency-Key.
Too Many Requests
Internal Server Error
Indicates the client should retry the spending transaction due to an on-chain failure caused by network congestion.
POST /api/v1/wallets/{address}/transactions/?integrator=bando HTTP/1.1
Host: api.bando.cool
Idempotency-Key: text
Content-Type: application/json
Accept: */*
Content-Length: 463
{
"reference": "[email protected]",
"requiredFields": [
{
"key": "Name",
"value": "Linus"
}
],
"transactionIntent": {
"sku": "SOME_SKU",
"quantity": 1,
"amount": 125.5,
"chain": "42161",
"token": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
"wallet": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"integrator": "bando",
"hasAcceptedTerms": true,
"quoteId": 1
},
"transactionReceipt": {
"hash": "0x6fd1f2b0c8cc2d63df046de3f3479a819efc954ed1ed363c1dbb43111488ea05",
"virtualMachineType": "EVM"
}
}{
"integrator": "text",
"transactionId": "text",
"status": "PENDING",
"countryIsoAlpha2": "text",
"productType": "not_set",
"productSubType": "not_set",
"sku": "not_set",
"fiatUnitPrice": 0,
"fiatCurrency": "text",
"quantity": 1,
"product": {
"name": "Amazon PrePaid code",
"logoUrl": "..."
},
"userWalletAddress": "text",
"chainId": 1,
"tokenUsed": "text",
"tokenAmountPaid": 1,
"created": "2025-11-04T16:58:41.053Z",
"updated": "2025-11-04T16:58:41.053Z",
"isDeleted": false,
"givenReference": "text",
"recordId": 1
}User's wallet address
Integrator slug unique identifier
bandoBlockchain network identifier
nullPage number (starts from 1)
1Page size (number of items per page)
100List of transactions
Wrong parameters
Transactions not found
Too Many Requests
Internal Server Error
GET /api/v1/wallets/{address}/transactions/?integrator=bando HTTP/1.1
Host: api.bando.cool
Accept: */*
{
"totalItems": 1,
"totalPages": 1,
"currentPage": 1,
"transactions": [
{
"id": "b3d7ac95-ca57-45a0-8b15-5c6e1d1f2966",
"status": "COMPLETED",
"price": {
"fiatCurrency": "text",
"fiatValue": "text",
"stableCoinCurrency": "text",
"stableCoinValue": "text"
},
"productType": "topup",
"productSku": "fc4f8917-b239-43e5-935b-88af43ee9da7",
"quantity": "1",
"chainId": 1,
"tokenUsed": "text",
"tokenAmountPaid": 1,
"imageUrl": "text",
"created": "2025-11-04T16:58:41.053Z",
"brandName": "text",
"walletAddress": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"blockchainTransactionHash": "0x6fd1f2b0c8cc2d63df046de3f3479a819efc954ed1ed363c1dbb43111488ea05",
"serviceId": 1,
"recordId": 1
}
]
}User's wallet address
Transaction ID to retrieve
Integrator slug unique identifier
bandoTransaction retrieved successfully
Bad request
Transaction not found
Wrong transaction query parameters
Too Many Requests
Internal Server Error
GET /api/v1/wallets/{address}/transactions/{transactionId}/?integrator=bando HTTP/1.1
Host: api.bando.cool
Accept: */*
{
"integrator": "text",
"transactionId": "text",
"status": "PENDING",
"countryIsoAlpha2": "text",
"productType": "not_set",
"productSubType": "not_set",
"sku": "not_set",
"fiatUnitPrice": 0,
"fiatCurrency": "text",
"quantity": 1,
"product": {
"name": "Amazon PrePaid code",
"logoUrl": "..."
},
"userWalletAddress": "text",
"chainId": 1,
"tokenUsed": "text",
"tokenAmountPaid": 1,
"created": "2025-11-04T16:58:41.053Z",
"updated": "2025-11-04T16:58:41.053Z",
"isDeleted": false,
"givenReference": "text",
"recordId": 1
}Filter countries by region
Filter countries by subregion
Filter countries by fiat currency
Search in country name and capital
OK
Bad Request
Unauthorized - API Token Missing or Unrecognized
Forbidden - IP Not Allowed
Internal Server Error
GET /api/v1/countries/ HTTP/1.1
Host: api.bando.cool
Accept: */*
{
"message": "Countries retrieved successfully",
"data": {
"count": 250,
"results": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "United States",
"isoAlpha2": "US",
"isoAlpha3": "USA",
"isCurrent": "true",
"capital": "Washington, D.C.",
"fiatCurrency": "USD",
"region": "North America",
"subregion": "Northern America",
"languages": {
"eng": "English"
},
"flagUrl": "https://example.com/flags/us.png",
"timezone": "UTC-05:00",
"latitude": 38.8951,
"longitude": -77.0364,
"callingCode": "+1",
"status": "active",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
]
}
}User's wallet address
List of supported networks
API error responses
Internal Server Error
GET /api/v1/networks/ HTTP/1.1
Host: api.bando.cool
Accept: */*
{
"success": true,
"data": [
{
"name": "Arbitrum",
"key": "arb",
"logoUrl": "https://example.com",
"chainId": 42161,
"rpcUrl": "https://example.com",
"explorerUrl": "https://example.com",
"isTestnet": true,
"networkType": "EVM",
"isActive": true,
"rank": 1,
"protocolContracts": {},
"nativeToken": {
"name": "text",
"symbol": "text",
"coinKey": "text",
"address": "text",
"decimals": 1,
"logoURI": "https://example.com"
}
}
]
}Network key identifier (e.g., arb, sol)
User's wallet address
List of supported tokens
API error responses
GET /api/v1/tokens/{networkKey}/ HTTP/1.1
Host: api.bando.cool
Accept: */*
{
"success": true,
"data": [
{
"id": 1,
"name": "text",
"symbol": "text",
"key": "text",
"address": "text",
"decimals": 1,
"friendlyDecimals": 1,
"imageUrl": "https://example.com",
"minAllowance": "text",
"maxAllowance": "text"
}
]
}Last updated
Was this helpful?