Disbursements

Mobile Money Disbursements

Send funds to Airtel, M-Pesa, Mixx, and Halotel mobile wallets

Send money directly to mobile money accounts across all major Tanzanian networks.

Supported Networks

NetworkCode
Airtel MoneyAirtel
Mixx by YasTigo
HaloPesaHalopesa

Create Payout

POST /v1/payouts/send
Authorization: Bearer <api_key>
Content-Type: application/json
Idempotency-Key: <unique_key>

Request

{
  "amount": 5000,
  "channel": "mobile",
  "recipient_phone": "255781000000",
  "recipient_name": "Recipient Name",
  "narration": "Salary payment January 2026",
  "webhook_url": "https://yoursite.com/webhooks/snippe",
  "metadata": {
    "employee_id": "EMP-001",
    "payroll_id": "PAY-2026-01"
  }
}

Response

{
  "status": "success",
  "code": 201,
  "data": {
    "amount": {
      "currency": "TZS",
      "value": 5000
    },
    "api_version": "2026-01-25",
    "channel": {
      "provider": "airtel",
      "type": "mobile_money"
    },
    "created_at": "2026-01-25T01:06:39.601310354Z",
    "external_reference": "fVJQRPGYbtN3",
    "fees": {
      "currency": "TZS",
      "value": 1500
    },
    "id": "29faef0f-765f-4325-a674-6196f1d9232d",
    "object": "payout",
    "recipient": {
      "name": "Recipient Name",
      "phone": "255781000000"
    },
    "reference": "667c9279-846f-4001-b046-fdecab204f4f",
    "status": "pending",
    "total": {
      "currency": "TZS",
      "value": 6500
    }
  }
}

Request Parameters

Required Fields

FieldTypeDescription
amountintegerAmount in smallest currency unit
channelstringMust be mobile
recipient_phonestringPhone number (format: 255XXXXXXXXX)
recipient_namestringFull name of recipient

Optional Fields

FieldTypeDescription
narrationstringDescription/reason for payout
webhook_urlstringURL for webhook notifications
metadataobjectCustom key-value data

Response Fields

FieldDescription
referenceUnique payout reference
external_referenceProvider's reference number
statusPayout status (pending, completed, failed)
amountPayout amount
feesTransaction fees
totalTotal amount deducted (amount + fees)
channel.providerMobile money provider detected

Get Payout Status

GET /v1/payouts/{reference}
Authorization: Bearer <api_key>

Response

{
  "status": "success",
  "code": 200,
  "data": {
    "amount": {
      "currency": "TZS",
      "value": 5000
    },
    "api_version": "2026-01-25",
    "channel": {
      "provider": "airtel",
      "type": "mobile_money"
    },
    "completed_at": "2026-01-25T01:06:52.322977Z",
    "created_at": "2026-01-25T01:06:39.60131Z",
    "external_reference": "fVJQRPGYbtN3",
    "fees": {
      "currency": "TZS",
      "value": 1500
    },
    "id": "29faef0f-765f-4325-a674-6196f1d9232d",
    "metadata": {
      "employee_id": "EMP-001",
      "payroll_id": "PAY-2026-01"
    },
    "narration": "Salary payment January 2026",
    "object": "payout",
    "recipient": {
      "name": "Recipient Name",
      "phone": "255781000000"
    },
    "reference": "667c9279-846f-4001-b046-fdecab204f4f",
    "source": "api",
    "status": "completed",
    "total": {
      "currency": "TZS",
      "value": 6500
    }
  }
}

Error Responses

Insufficient Balance (500)

{
  "status": "error",
  "code": 500,
  "error_code": "payment_failed",
  "message": "insufficient balance: available 5000, required 6500"
}

Not Found (404)

{
  "status": "error",
  "code": 404,
  "error_code": "not_found",
  "message": "payout not found"
}

On this page