Skip to content
Documentation menu

By EcoCash

Enterprise Cash-In

Disburse funds into customers' EcoCash wallets in bulk.

POSThttps://developers.ecocash.co.zw/api/serviceRequest

serviceType: ENTERPRISECASHINV2

Overview

Enterprise Cash-In moves money out of your channel and into a customer's EcoCash wallet. It is built for volume: paying growers, beneficiaries, contractors or salaries in a run rather than one at a time.

How it works

  1. Your system sends a request with the customer number, the amount and your channel code.
  2. EcoCash validates your client credentials, then your channel API user.
  3. EcoCash validates the request body, then the channel code, then the customer number against your whitelist.
  4. On success the funds are credited to the customer wallet and the response is returned on the same call.
  5. A simulated SMS is sent to the customer number.
  6. The transaction is stored so Transaction Lookup can retrieve it later.

Getting started

Prerequisites

  • A developer account with sandbox credentials.
  • The customer number whitelisted and OTP-verified on the Test Numbers page.
  • Your channel API user password encrypted against your encryption key.

Good to know

  • The API is synchronous. The outcome comes back on the same call. There is no callback URL.
  • senderPostBalance is a fixed sandbox value, not a calculated balance.
  • receiverName is the name held against the whitelisted number, so it differs per developer.
  • externalReference must be unique. Reusing one returns the original transaction.

Use cases

  • Paying agricultural growers on delivery.
  • Running a payroll or a stipend cycle.
  • Paying out insurance claims or social grants.

Request body

REQUEST JSON BODY
{
  "serviceType": "ENTERPRISECASHINV2",
  "externalReference": "1786088141",
  "beneficiaryReference": "Grower203",
  "amount": "1",
  "currency": "USD",
  "transferReference": "ENTERPRISECASHIN",
  "msisdn": "263777000000",
  "username": "epg-sandbox-user-v1",
  "password": "<encrypted>",
  "channelCode": "700002",
  "walletId": "12"
}

Request parameter definition

Request parameters for Enterprise Cash-In
NameDescriptionTypeSample value
serviceTypeSelects the service. Must be ENTERPRISECASHINV2.StringENTERPRISECASHINV2
externalReferenceUnique reference generated by your system for this transaction. Used to look it up later.String1786088141
beneficiaryReferenceYour own reference for the beneficiary. Free text, echoed back in the response.StringGrower203
amountAmount to disburse.String1
currencyISO 4217 currency code. USD or ZWG.StringUSD
transferReferenceDescription of the transfer. Free text.StringENTERPRISECASHIN
msisdnThe customer receiving the funds. Must be whitelisted in sandbox.String263777000000
usernameYour channel API user.Stringepg-sandbox-user-v1
passwordYour API user password, encrypted against your encryption key.String<encrypted>
channelCodeThe code identifying your sending channel. Must be 700002.String700002
walletIdWallet type. 12 is the primary EcoCash wallet.String12

Response body

RESPONSE JSON BODY
{
  "serviceType": "ENTERPRISECASHINV2",
  "transactionId": "CI260807.0934.T6335049",
  "requestId": "3f2a91c4-7e5b-4a2d-9c11-8b6d0e4f7a23",
  "status": "200",
  "responseCode": "00",
  "statusMessage": "SUCCEEDED",
  "responseMessage": "Cash In transaction of USD 1 has been successfully completed between the sender: 263789000000 and receiver: 263777000000. Txn ID: CI260807.0934.T6335049. New balance: USD 44917873.90",
  "senderNumber": "263789000000",
  "senderPostBalance": "44917873.90",
  "receiverName": "Test Beneficiary",
  "receiverNumber": "263777000000",
  "timeStamp": "2026-08-26T12:48:40.107Z",
  "amount": "1",
  "currency": "USD",
  "transferReference": "ENTERPRISECASHIN",
  "beneficiaryReference": "Grower203",
  "externalReference": "1786088141"
}

Response parameter definition

Response parameters for Enterprise Cash-In
NameDescriptionTypeSample value
serviceTypeThe service that ran. Echoed from the request.StringENTERPRISECASHINV2
transactionIdEcoCash's identifier for the transaction. Quote this in any support query.StringCI260807.0934.T6335049
requestIdUnique identifier for this API call.UUID3f2a91c4-7e5b-…
statusHTTP status of the request.String200
responseCodeOutcome code. 00 is success.String00
statusMessageOutcome in one word.StringSUCCEEDED
responseMessageOutcome in full, in the wording EcoCash uses.StringCash In transaction of USD 1 …
senderNumberThe channel number the funds came from. Taken from your API user, not the request.String263789000000
senderPostBalanceChannel balance after the transaction. Fixed value in sandbox.String44917873.90
receiverNameName registered against the whitelisted number.StringTest Beneficiary
receiverNumberThe customer who received the funds. Echoed from msisdn.String263777000000
timeStampWhen the transaction completed.String2026-08-26T12:48:40.107Z
amountAmount disbursed. Echoed from the request.String1
currencyCurrency. Echoed from the request.StringUSD
transferReferenceEchoed from the request.StringENTERPRISECASHIN
beneficiaryReferenceEchoed from the request.StringGrower203
externalReferenceEchoed from the request. Use it with Transaction Lookup.String1786088141

Error codes

Error codes this service returns
HTTPCodeCauseWhat to do
401SBX40100Client Id or Client Secret missing or wrong.Check both headers.
401TP40101Username or decrypted password does not match.Check the username and the encryption key.
400SBX40000Something is wrong with the request body. A missing field, an unrecognised serviceType, a malformed number, a non-positive amount or an unsupported currency.Read the message. It names the field.
400TP40288channelCode is not 700002.Use the channel code for this service.
400IC50103msisdn is not on your whitelist.Add and verify the number on the Test Numbers page.

Match on responseCode, not on the message text. Every code, with an example body, is on the Errors page.

Next steps

Testing

  • Run a successful transaction with a whitelisted number.
  • Run it again with a channel code other than 700002 and confirm TP40288.
  • Run it with a number that is not whitelisted and confirm IC50103.

Go live

Complete the cases above, then follow the steps on the Go Live page.