Recent collections
How money moves tonight
Completed collections settle to your merchant account automatically at 02:00 AM. You do not request a payout. Minimum TZS 10,000.
Collections go through Selcom. Merchants never talk to the gateway directly.
Initiate mobile money (STK / USSD)
Minimum mobile collection: TZS 500. Idempotency key = reference.
Customer phone (STK simulation)
Sandbox PIN is 1234. After a correct PIN, TZS is deducted from the customer wallet and credited to Unustore.
Create payment link
Catalog links include your products. Uncheck any you do not want on this checkout.
Your links
Create API key and secret here
This is the only screen that generates credentials. After KYC is approved, click Generate. You get an API key (pk_…) and a secret. Send them as X-Api-Key and X-Api-Secret.
Create key pair
Creates a new pk_… key and a 48-character secret for this business only.
Use in requests
POST /api/v1/payments X-Api-Key: pk_… X-Api-Secret: your_secret Idempotency-Key: ORDER-12345
Active keys
Add product
Catalog
Collections ledger
Automatic settlement
Available: . Every night at 02:00 AM this balance is sent to your destination. No withdrawal request.
Minimum automatic payout is TZS 10,000. Smaller balances wait until the next 02:00 AM run.
Automatic payout history
Register a new business
One phone account can own several shops. After you create a business, open KYC upload and attach NIDA, TIN, tax clearance, and the licence.
Your businesses
Switch the active workspace, then upload KYC for that business. API keys are issued per verified business.
Upload KYC for the active business
| Field | Value |
|---|---|
| Legal name | |
| NIDA | |
| TIN | |
| Address | |
| Documents |
Verification is done. API key and secret are not on this page — generate them under API keys & secret.
Documents are with a platform administrator. You cannot approve your own KYC from this merchant workspace. After approval you can generate API keys.
Sandbox demo: sign out, then open Superadmin to approve the queue.
Same documents as live SwahiliPay: NIDA, TIN, tax clearance, business licence. Max 5 MB each in production.
Platform desk
This is the superadmin console. Merchants never see these screens. Use KYC queue to approve businesses, then they can generate API keys from their own workspace.
KYC review queue
Open the uploaded documents, then approve or reject. Live keys stay locked until you approve.
KYC documents
| Field | Value |
|---|---|
| Trading name | |
| Legal name | |
| Phone | |
| NIDA | |
| TIN | |
| Address |
Uploaded files
Businesses
Every merchant workspace. Open KYC to inspect uploaded documents.
Selcom provider
Upstream rail for mobile money STK and hosted Visa / Mastercard. Merchants never hold Selcom keys.
Sandbox controls
- No real customer funds
- OTP fixed at 123456
- Webhooks signed but delivered in-app only
- Daily collection cap demo: TZS 5,000,000
Developer docs
Merchant REST API. Auth: X-Api-Key + X-Api-Secret.
POST /api/v1/payments
GET /api/v1/payments/{reference}
Webhook to merchant: payment.collected
Header: X-SwahiliPay-Signature (HMAC-SHA256)
Timeout 15s · 3 retries
Users
| Name | Phone | Role |
|---|---|---|
| Platform admin | 0718660882 | superadmin |
| Paulo Mushi | 0717331293 | merchant |
| Asha Juma | 0718000111 | merchant |
| John Komba | 0718222333 | admin |
| Neema Ally | 0754001221 | merchant |
| Hassan Omary | 0784555666 | merchant |
| Grace Mwakyusa | 0767111222 | admin |
Roles & permissions
| Role | Can do |
|---|---|
| superadmin | KYC, users, Selcom keys, commission, backups, sanctions |
| admin | KYC queue, merchant directory, payouts, transactions |
| merchant | Own workspace only: links, collections, KYC upload, API keys |
| support | Read merchants, collections, and audit log |
| finance | Payouts, statements, reconciliation, commission |
| compliance | KYC queue, sanctions, audit log |
Gateway logs
| When | Direction | Event | Status |
|---|---|---|---|
| Today 09:31 | Out → Selcom | STK push ORDER-001 | 200 |
| Today 09:31 | In ← Selcom | Webhook completed | ok |
| Today 09:32 | Out → merchant | payment.collected HMAC | delivered |
| Today 10:04 | Out → Selcom | STK push ORDER-004 | 200 |
| Today 10:05 | In ← Selcom | Webhook failed | failed |
| Yesterday 16:02 | Out → Selcom | STK push ORDER-002 | 200 |
| Yesterday 16:03 | In ← Selcom | Webhook completed | ok |
| Yesterday 02:00 | Out → Selcom | Disburse AUTO-0200 | 200 |
Database backups
Scheduled .sql.gz dumps emailed to ops. Sandbox list only.
| File | When | Size |
|---|---|---|
| swahilipay-2026-08-19.sql.gz | Today 02:15 | 4.2 MB |
| swahilipay-2026-08-18.sql.gz | 18 Aug 02:15 | 4.1 MB |
| swahilipay-2026-08-17.sql.gz | 17 Aug 02:15 | 4.0 MB |
| swahilipay-2026-08-16.sql.gz | 16 Aug 02:15 | 3.9 MB |
| swahilipay-2026-08-15.sql.gz | 15 Aug 02:15 | 3.8 MB |
| swahilipay-2026-08-14.sql.gz | 14 Aug 02:15 | 3.8 MB |
Sanctions screening
Names and phones are checked before a collection is forwarded to Selcom. A match blocks the payment.
| Type | Value | Source |
|---|---|---|
| Blocked name | SANCTIONED | Sandbox list |
| Blocked MSISDN | 255700000000 | Sandbox list |
| Blocked name | TEST BLOCKED ENTITY | UN list |
| Blocked MSISDN | 255799999999 | OFAC demo |
| Blocked name | FROZEN ACCOUNT LTD | BOT watchlist |
| Blocked MSISDN | 255711000000 | Sandbox list |
Audit log
| When | Actor | Action |
|---|---|---|
| Today 08:12 | Platform admin | Opened KYC for Mama Mboga Shop |
| Today 07:40 | Paulo Mushi | Generated API key for Unustore |
| Yesterday 16:02 | System | Selcom webhook completed ORDER-002 |
| Yesterday 11:18 | System | Collection FEE-INV completed |
| Yesterday 02:00 | Scheduler | Auto-payout AUTO-0200 |
| 18 Aug 14:22 | Platform admin | Approved KYC for Unustore |
| 18 Aug 09:01 | Asha Juma | Submitted KYC documents |
| 17 Aug 02:15 | System | Database backup emailed to ops |
All merchant transactions
Merchant statements
| Business | Period | Gross | Fee | Net |
|---|---|---|---|---|
| Unustore | August 2026 | TZS 50,000 | TZS 1,500 | TZS 48,500 |
| Unustore | July 2026 | TZS 210,000 | TZS 6,300 | TZS 203,700 |
| Mama Mboga Shop | August 2026 | TZS 0 | TZS 0 | TZS 0 |
| Unustore | June 2026 | TZS 180,000 | TZS 5,400 | TZS 174,600 |
| Unustore | May 2026 | TZS 95,000 | TZS 2,850 | TZS 92,150 |
| Unustore | April 2026 | TZS 72,000 | TZS 2,160 | TZS 69,840 |
Daily reconciliation
| Date | Collections | Selcom | Ledger | Status |
|---|---|---|---|---|
| 19 Aug 2026 | 1 | TZS 15,000 | TZS 15,000 | matched |
| 18 Aug 2026 | 3 | TZS 50,000 | TZS 50,000 | matched |
| 17 Aug 2026 | 2 | TZS 22,000 | TZS 22,000 | matched |
| 16 Aug 2026 | 4 | TZS 81,000 | TZS 80,500 | pending |
| 15 Aug 2026 | 1 | TZS 8,000 | TZS 8,000 | matched |
| 14 Aug 2026 | 0 | TZS 0 | TZS 0 | matched |
| 13 Aug 2026 | 2 | TZS 40,000 | TZS 39,000 | mismatch |
Payouts & settlements
Automatic 02:00 AM runs. No merchant withdrawal request in this model.
Platform commission
Applied to every completed collection before the merchant wallet is credited.
Sandbox rate is fixed. Live console lets superadmin change this for all merchants.
Automatic payouts
Balances below the minimum roll to the next night. Destination is the merchant’s saved mobile money or bank account.