Initiate Payout
Use this endpoint to initiate a payout to either a bank account or a mobile money wallet in Tanzania. The beneficiary receives funds based on the selected channel and processing system.
Endpoint
POST /payment/wallet-to-mobileRequest
Headers
Content-Type* — Must beapplication/jsonx-account-id* — Your unique TemboPlus account identifierx-secret-key* — Your TemboPlus API secret keyx-request-id* — Unique UUID per request for tracing
Body Parameters
serviceCode* (string) — The channel to be used for the payout. Supported values include:TZ-AIRTEL-B2C,TZ-TIGO-B2C,TZ-HALOTEL-B2C,TZ-VODACOM-B2C,TZ-BANK-B2C.msisdn* (string) — The recipient identifier. For mobile money: recipient's mobile number in format255XXXXXXXXX. For banks: formatSWIFT_CODE:ACCOUNT_NUMBER(e.g.,CORUTZTZ:0150123456789).accountNo* (string) — Your disbursement wallet account number. Retrieve this using the Get Disbursement Wallet Balance endpoint.amount* (number) — The payout amount in Tanzanian Shillings (TZS). The value must be a positive integer.countryCode* (string) — Country code. AlwaysTZfor Tanzania.currencyCode* (string) — Currency code. AlwaysTZSfor Tanzania.narration* (string) — A short description of the payout. This will appear in your statement.recipientNames* (string) — Recipient's full name or company name.transactionRef* (string) — Your unique transaction reference for reconciliation.transactionDate* (string) — The timestamp of the request in ISO 8601 format, e.g.2025-09-11T10:30:00Z.callbackUrl* (string) — Your HTTPS endpoint where TemboPlus will send a POST notification once the payout status changes.
Matching msisdn to serviceCode
msisdn to serviceCodeFor Mobile Money Payouts:
The msisdn must belong to the same Mobile Network Operator (MNO) specified in the serviceCode field.
Examples:
Use
TZ-AIRTEL-B2Cfor numbers starting with Airtel prefixes (e.g. 068x, 078x).Use
TZ-TIGO-B2Cfor Tigo prefixes (e.g. 065x, 071x).Use
TZ-HALOTEL-B2Cfor Halotel prefixes (e.g. 062x).
Tanzania does not implement Mobile Number Portability (MNP), so mobile numbers remain tied to their original operator prefixes.
For precise validation, request the MNO Prefix Reference Document from TemboPlus Support for the current mapping of prefixes to channels.
For Bank Payouts:
Use serviceCode: TZ-BANK-B2C
The msisdn must follow the format: SWIFT_CODE:ACCOUNT_NUMBER where SWIFT_CODE is the bank's BIC code and ACCOUNT_NUMBER is the recipient's account number.
Example: CORUTZTZ:0150123456789
For a complete list of supported banks and their BIC/SWIFT codes, reference the Payout Page in the section "Supported Payout Channels"
Payout Limits
Mobile Money: Minimum TZS 1,000, maximum TZS 5,000,000.
Bank Payouts: Minimum TZS 1,000, no fixed maximum. Note: Some banks may not process transactions below TZS 5,000.
Example Request Payload
Mobile Money Payout
{
"countryCode": "TZ",
"accountNo": "9000123456",
"serviceCode": "TZ-TIGO-B2C",
"amount": 50000,
"msisdn": "255712345678",
"narration": "Salary Payment - September 2025",
"currencyCode": "TZS",
"recipientNames": "John Doe",
"transactionRef": "SAL-2025-09-001",
"transactionDate": "2025-09-11T10:30:00Z",
"callbackUrl": "https://yourdomain.com/webhooks/payout"
}Bank Payout
{
"countryCode": "TZ",
"accountNo": "9000123456",
"serviceCode": "TZ-BANK-B2C",
"amount": 150000,
"msisdn": "CORUTZTZ:0150987654321",
"narration": "Vendor Payment - Invoice #2025-123",
"currencyCode": "TZS",
"recipientNames": "ABC Supplies Ltd",
"transactionRef": "VEN-2025-09-001",
"transactionDate": "2025-09-11T10:30:00Z",
"callbackUrl": "https://yourdomain.com/webhooks/payout"
}Responses
Webhook Notification
After the payout is processed, TemboPlus sends a POST request to your configured callbackUrl with the final transaction outcome.
The webhook body contains the same identifiers returned in the initial response, along with an updated statusCode value. Possible values for statusCode include PAYMENT_ACCEPTED, PAYMENT_REJECTED and GENERIC_FAILURE.
Example:
{
"statusCode": "PAYMENT_ACCEPTED",
"transactionId": "ddZFz7rWkIvU",
"transactionRef": "SAL-2025-09-001",
"meta": {}
}Values above are examples only; actual transactionId and transactionRef will vary per request.
Webhook Delivery Notes
TemboPlus will make a POST request to your
callbackUrlafter receiving the final response from the provider.Each webhook contains a JSON payload with
statusCode,transactionId,transactionRef, and optionalmetaobject.Webhook delivery is asynchronous; the callback may arrive seconds to hours after the initial API response, depending on the channel.
Always validate both
transactionIdandtransactionRefbefore updating your internal records.Your endpoint should return an HTTP 200 OK response upon successful receipt to acknowledge the notification.
Status Code Behavior
The statusCode returned in the initial response can vary significantly depending on the Mobile Network Operator or bank processing the transaction.
Observed Behaviors:
Immediate Acceptance: Some providers return
PAYMENT_ACCEPTEDimmediately upon successful validation.Pending Processing: Other providers may return
PENDINGor similar status codes initially, with final confirmation coming later via callback.
Recommendation: Always implement webhook callback handling and use the Check Transaction Status endpoint to verify final transaction outcomes.
Last updated