67even

EcoCash EIP Developer Guide

Integrate EcoCash Instant Payment step by step: charge a wallet, check the result, refund it and go live.

GitHub stars Tests MIT licence Last commit

Where to start

   
Installing the skill Install the Claude skill and let Claude write and review your EcoCash integration.
Get sandbox access Register, get sandbox credentials from the Inbox, verify a test number.
Authentication The Basic auth header, and where to keep credentials.
Your first payment Charge, approve, look up and refund with cURL, start to finish.
API reference Every endpoint, field, response and HTTP status.
Statuses & errors Transaction statuses and error codes E001-E015, and which to retry.
Sandbox testing PIN test matrix, test numbers, merchant values and the test checklist.
SDKs & code examples Tested clients for PHP/Laravel, Node.js, Python, Java and C#.
Going live Merchant validation, test evidence and the production request.
Troubleshooting Something is broken right now. Symptom-to-cause table.
Known portal issues Where the portal contradicts itself, and what to do.
About this guide Repository layout, sources and licence.
Portal reference The portal’s own Documentation and SDK tabs, verbatim.

Overview

EcoCash Instant Payment (EIP) is EcoCash’s online payment gateway. Your server asks EcoCash to charge a customer’s EcoCash wallet. EcoCash sends the customer a USSD PIN prompt on their phone, the customer approves with their EcoCash PIN, and you get the result by callback or by looking the transaction up.

1.1 What you can do

Operation Endpoint Use it to
Charge POST /transactions/amount/ Request a payment from a customer’s EcoCash wallet
Look up GET /{endUserId}/transactions/amount/{clientCorrelator} Get the current status of a charge
Refund / reverse POST /transactions/refund/ Return money for a completed payment

1.2 How a payment works

 Your server                     EcoCash EIP                     Customer's phone
     │  1. POST /transactions/amount/  │                                 │
     │ ──────────────────────────────▶ │  2. USSD PIN prompt             │
     │  ◀── 200 OK, status: PENDING ── │ ──────────────────────────────▶ │
     │                                 │  3. Customer enters PIN         │
     │                                 │ ◀────────────────────────────── │
     │  4a. Callback to your notifyUrl │                                 │
     │ ◀────────────────────────────── │  5. SMS with the outcome        │
     │  4b. …or poll GET lookup        │ ──────────────────────────────▶ │
     │ ──────────────────────────────▶ │                                 │
     │  ◀── status: SUCCESS / FAILED ─ │                                 │

A charge is asynchronous. The first response only means accepted. The payment succeeds or fails later, when the customer responds to the PIN prompt.

1.3 Quick facts

   
Sandbox base URL https://developers.ecocash.co.zw/sandbox/payment/v1
Authentication HTTP Basic: Authorization: Basic base64(username:password)
Format HTTPS / REST, Content-Type: application/json
Transaction types (tranType) MER merchant charge · REF refund · REV reversal
Currencies USD, ZWG
Rate limit 500 requests per minute
Version v1.0.0 (Stable)
Developer portal https://developers.ecocash.co.zw/portal

The sandbox simulates every transaction. No real money moves.

1.4 The integration path

  1. Get sandbox access. Register, request credentials, and verify a test number.
  2. Set up authentication with the credentials from your portal Inbox.
  3. Make your first payment: charge, check the status, refund.
  4. Build it into your app using the language examples.
  5. Test every scenario with the sandbox PIN matrix.
  6. Go live: submit your test evidence and get production credentials.

This page is generated from section 1 of the README in README.md. Spotted something wrong? Open an issue.


Back to top

MIT licensed. Written and maintained by John Mugabe under 67even. Independent and community-maintained - not affiliated with or endorsed by EcoCash Holdings Zimbabwe. "EcoCash" and the EcoCash logo belong to their owner.