Disbursements

Mobile Money Disbursements

Send money to mobile money accounts

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