Mobile Money Withdrawal Flow
Flow Diagram
Details
Available Countries: All supported countries Networks: M-PESA, MTN Money, Airtel Money, Orange Money, and more Speed: Instant to few minutes Key Points:- Funds debited IMMEDIATELY when withdrawal created
- If withdrawal fails, funds automatically reversed
- Hash-based duplicate prevention
Bank Transfer Withdrawal Flow
Disburse funds to bank accounts.Flow Diagram
Details
Available Countries: All supported countries Processing: 1-3 business days Requirements: Bank account number, bank code Key Points:- Funds debited immediately
- Longer settlement time than mobile money
- Automatic reversal on failure
Lipa na M-Pesa Withdrawal Flow
Send payments to merchant till numbers (Kenya only).Flow Diagram
Details
Country: Kenya only Currency: KES Speed: Instant Key Points:- No customer record needed
- Funds debited immediately
- Instant settlement
Paybill Withdrawal Flow
Send payments to paybill numbers with account reference (Kenya only).Flow Diagram
Details
Country: Kenya only Currency: KES Speed: Instant Key Points:- Requires paybill number and account reference
- No customer record needed
- Instant settlement
Transaction Statuses
| Status | Description | Funds Status |
|---|---|---|
INITIATED | Transaction created, being processed | Debited |
PENDING | Submitted to provider | Debited |
IN_PROGRESS | Provider processing | Debited |
SUCCESSFUL | Funds disbursed successfully | Debited (final) |
FAILED | Disbursement failed | Reversed |
EXPIRED | No confirmation within 24h | Reversed |
CANCELLED | Transaction cancelled | Reversed |
DECLINED | Provider declined | Reversed |
REVERSED | Transaction reversed | Reversed |
Common Features
Immediate Wallet Debit
- Funds debited IMMEDIATELY at creation
- NOT reserved - actual debit happens instantly
- If withdrawal fails, funds automatically reversed
- No balance locking - clean debit/reverse flow
Transaction ID
- Can be integrator-provided via
referenceId - Or system-generated if not provided
- Must be unique per integrator
Automatic Reversal
When withdrawal fails or times out:- Status updated to FAILED/EXPIRED/REVERSED
- Amount automatically credited back to wallet
- Transaction recorded for audit
- Webhook sent to notify integrator
Duplicate Prevention
- Hash-based detection within same minute
- Composite: timestamp + integrator + phone
- Prevents accidental duplicates
- Returns error if duplicate detected
Status Monitoring
- Webhook callbacks for instant updates
- Polling every 5 minutes for pending transactions
- 24-hour timeout for unconfirmed transactions
Error Handling
Insufficient Balance
Invalid Recipient
Provider Timeout
Duplicate Transaction
Duplicate Reference
Wrong Currency (Lipa/Paybill)
Best Practices
- Validate Recipients: Use
/customers/validate-mobile-moneybefore withdrawals - Unique References: Always provide unique
referenceIdvalues - Implement Webhooks: Set up webhook endpoint for real-time updates
- Handle Reversals: Monitor for FAILED/EXPIRED statuses - funds auto-reversed
- Idempotency: Safe to retry with same
referenceIdif request fails