Overview
Bulk payments support mass disbursements via:- Mobile money payments
- Bank transfers
- CSV-based bulk upload
- Multi-currency support (one batch per currency)
- Automatic validation and duplicate detection
- Wallet balance verification
- Progress tracking with detailed status
- Automatic retry on failures
- Webhook notifications per batch
- Transaction grouping and reporting
- Upload CSV with recipient details
- Validate CSV format and data
- Select wallet for each currency
- Create batches (one per currency)
- Process payments asynchronously
- Track progress and receive webhooks
CSV Upload and Validation Flow
Upload and validate recipient data via CSV file.Flow Diagram
CSV Format
Required Columns:recipient_name: Full name of recipientrecipient_email: Email addressrecipient_phone: Phone number with country codeamount: Payment amount (numeric)currency: Currency code (KES, UGX, TZS, etc.)reference: Unique reference per payment
description: Payment description/notemetadata: Additional data (JSON string)
Validation Response
- File hash prevents duplicate uploads
- Each row validated individually
- Errors include row numbers for easy correction
- Currency automatically detected and grouped
- Totals calculated per currency (never mixed)
- Duplicate references within CSV detected
Batch Creation and Processing Flow
Create payment batches and process disbursements.Flow Diagram
Details
Batch Processing:- One batch created per currency
- Batches linked to parent transaction
- Each batch processes independently
- Asynchronous processing via queue
- Progress tracked at batch and payment level
- Immediate debit when payment initiated
- Automatic reversal on failure
- Balance verification before batch creation
- Separate wallet required per currency
PENDING: Awaiting processingPROCESSING: Payment being sentSUCCESS: Payment deliveredFAILED: Payment failed (wallet reversed)RETRY: Queued for retry
pending: Batch created, awaiting processingprocessing: Payments being sentcompleted: All payments processed successfullycompleted_with_errors: Some payments failedfailed: All payments failedcancelled: Batch cancelled by user
- Payments processed sequentially within batch
- Failed payments automatically reversed
- Up to 3 automatic retries per payment
- Detailed progress tracking per payment
- Webhooks sent per batch completion
- Transaction groups multiple batches
Progress Tracking Flow
Monitor batch processing progress in real-time.Flow Diagram
Progress Response
- Transaction groups multiple currency batches
- Each batch tracks independently
- Progress steps: validation → creation → customer_creation → payment_processing → completion
- Real-time payment counts
- Failed payment details available
- Export results as CSV
Mobile Money Bulk Disbursement
Bulk payments via mobile money networks.Payment Details
Supported Networks: M-PESA, Airtel Money, MTN Mobile Money, Tigo Pesa, Vodafone Supported Countries: Kenya, Uganda, Tanzania, Ghana, Nigeria, Zambia Processing:- Automatic network detection from phone number
- Currency validation per country
- Direct disbursement to mobile wallets
- SMS confirmation sent to recipient
- Real-time status updates
- No recipient registration required
- Works with any mobile money number
- Automatic currency conversion if needed
- Recipient receives SMS notification
- Failed payments reversed automatically
Bank Transfer Bulk Disbursement
Bulk payments via bank transfers.Payment Details
Supported Countries: Kenya, South Africa Required Information:- Account holder name
- Account number
- Bank code
- Phone number (for verification)
- Bank account validation
- Direct transfer to bank account
- Reference number provided per payment
- Email notification to recipient (if provided)
- Requires valid bank account details
- Inter-bank transfers may take longer
- Reference number for tracking
- Failed transfers reversed automatically
- Bank holidays may affect processing
Webhook Notifications
Webhooks sent for batch status changes and completion.Webhook Events
Batch Started:- Webhooks sent per batch and per transaction
- Include failed payment details
- HMAC signature for verification
- Automatic retry on webhook failure
- Detailed breakdown by currency
Best Practices
CSV Preparation
- Use UTF-8 encoding
- Include all required columns
- Use E.164 phone format (+254…)
- Ensure unique references
- Validate data before upload
- Keep file size under 10MB
- Maximum 1000 recipients per upload
Wallet Management
- Ensure sufficient balance before upload
- Use separate wallets per currency
- Monitor wallet balance during processing
- Set up low balance alerts
- Top up wallets during business hours
Error Handling
- Review validation errors before submission
- Monitor failed payments
- Retry failed payments manually if needed
- Keep audit trail of all uploads
- Export results for reconciliation
Performance
- Process during off-peak hours for faster completion
- Split very large batches (>500 payments)
- Use transaction grouping for related batches
- Monitor progress via API or webhooks
- Cache batch status to reduce API calls
Security
- Verify webhook signatures
- Store sensitive recipient data securely
- Use HTTPS for all callbacks
- Implement idempotency in webhook handlers
- Rotate API keys regularly
Error Handling
CSV Validation Errors
Insufficient Balance
Batch Processing Errors
Testing
Sandbox mode test data: Test CSV Upload: Use sample CSV with test data Test Phone Numbers:- Success:
+254700000000(Kenya) - Failure:
+254799999999(Invalid number) - Timeout:
+254788888888(Network timeout)
- Amounts ending in
00trigger success - Amounts ending in
99trigger failure - Amounts ending in
50trigger retry
- Upload 10 recipients: All succeed
- Upload 20 recipients: 18 succeed, 2 fail
- Upload 5 recipients with same currency: Test wallet selection
- Upload 15 recipients with 3 currencies: Test multi-batch creation