Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.usebila.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Initiate a Transfer

POST /api/v1/bila/transfers/mobile-money
ParameterTypeRequiredDescription
amountnumberYesMinimum 0.01
referencestringYesUnique — pattern ^[a-zA-Z0-9._-]+$
phonestringYesRecipient’s mobile money number
operatorstringYesmtn, airtel, or zamtel
countrystringYeszm
walletIdstringNoDefaults to Main Wallet if omitted
narrationstringNoMax 100 characters
recipientNamestringNoMax 100 characters
Example:
curl --request POST \
  --url https://sandbox.usebila.com/api/v1/bila/transfers/mobile-money \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: sk_test_your_api_key_here' \
  --data '{
    "amount": 250.00,
    "reference": "PAY-2026-001",
    "phone": "0977433571",
    "operator": "airtel",
    "country": "zm",
    "narration": "Supplier payment May",
    "recipientName": "Jane Mwale"
  }'
Response:
{
  "status": true,
  "message": "Operation completed successfully",
  "data": {
    "id": "txn-uuid",
    "reference": "PAY-2026-001",
    "status": "successful",
    "amount": 250.00,
    "currency": "ZMW",
    "recipient": {
      "phone": "0977433571",
      "operator": "airtel"
    },
    "createdAt": "2026-05-05T10:30:00Z"
  }
}

Check Transfer Status

curl --request GET \
  --url https://sandbox.usebila.com/api/v1/bila/transfers/status/PAY-2026-001 \
  --header 'x-api-key: sk_test_your_api_key_here'
StatusMeaning
pendingAwaiting final outcome
successfulFunds delivered to recipient
failedTransaction failed

Pre-Launch Checklist

  • Successful transfer returns "status": "successful"
  • Reference with fail returns "status": "failed"
  • Amount exceeding balance returns 400 INSUFFICIENT_BALANCE
  • Status polling transitions correctly from pending