Design demo. Every screen here is a static mockup — nothing is connected to a payment system, and no control does anything. Names, balances, account numbers and references are invented for review. The rate shown (¥1 ≈ ₵1.76) is illustrative, not quoted.
Internal console · 13 screens · Browser
Behind four corridors sits one operations team: they verify a Ghana Card, explain why ₵400 is held, approve the release of a cocoa settlement and answer the question “where is my money” with a reference rather than a guess. These are the screens they work in. None of them moves money.
Flow A
Who the account holder is, what their wallet holds, and how much of it they can actually spend. Nearly every support conversation starts in one of these four screens.
The console opens on work rather than on totals, then narrows: all users, one user, and finally the wallet level where held and available diverge.
| Item | Corridor | Why it stopped | Waiting |
|---|---|---|---|
| EC-GH-51907724 | Wallet | Frozen on a compliance hold — ₵3,900.00 salary returned to the employer | 3d |
| GHA-773028441-5 | KYC | Name check — wallet reads A. Darko, Ghana Card reads Akosua Darko | 2d |
| TS-4471 | Trade | Release requested — all three documents matched, awaiting approval | 14h |
| FS-2609-8842-GH | Family support | Rejected for name mismatch on Bank of China account ····8871 | 9h |
| SB-2610-0043 | Salary | 37 paid, 1 failed — retry not yet actioned by the employer | 6h |
An operator console opens on the work, not on the score. Needing-review is the first tile and the queue takes the rest of the screen, while the transaction count — the figure that looks best in a board pack — sits third and does nothing for the person about to start their shift. Every row names what stopped and how long it has been waiting, because age is what decides the order.
| Name | Ghana Card | Tier | Wallet | Joined | Actions |
|---|---|---|---|---|---|
| Ama Boateng | GHA-731284095-6 | Tier 2 | Active | 12 Mar 2026 | Raise tier · Suspend user |
| Kwame Mensah | GHA-442190834-1 | Tier 2 | Active | 04 Mar 2026 | Raise tier · Suspend user |
| Akosua Darko | GHA-773028441-5 | Tier 1 | Name check | 22 Jun 2026 | Raise tier · Suspend user |
| Yaw Owusu | GHA-118840227-3 | Tier 2 | Active | 09 Jan 2026 | Raise tier · Suspend user |
| Abena Asante | GHA-509127730-8 | Tier 2 | Frozen | 17 Feb 2026 | View hold · Suspend user |
| Kofi Anane | Not linked | — | No wallet | 02 Sep 2026 | Invite to verify |
Search accepts whatever the caller has to hand — a name, a Ghana Card number, the phone they dialled from, or the wallet ID off an SMS — because a support agent should not have to ask for a different identifier than the one the person is reading out. Suspending is red and named in full; raising a tier is plain text. The two are not the same kind of decision and are not dressed alike.
| Date | Movement | Amount ₵ | Outcome |
|---|---|---|---|
| 21 Sep | Family support to Li Wei FS-2609-8841-GH | 858.50 | Sent |
| 21 Sep | Family support to Li Wei FS-2609-8842-GH | 858.50 | Name mismatch · not debited |
One person on one screen: who they are, what the wallet holds, which rails it can reach and what they last did. The held ₵400.00 names the escrow that caused it rather than sitting there as an unexplained deduction — that single line answers the most common support call on this product. The five actions sit at the bottom, graded, and none of them sends money.
| Wallet | Holder | Balance ₵ | Held ₵ | Available ₵ | Tier ceiling | Status |
|---|---|---|---|---|---|---|
| EC-GH-40218865 | Ama Boateng | 12,480.50 | 400.00 Escrow TS-4471 | 12,080.50 | ₵20,000/day | Active |
| EC-GH-88214470 | Kwame Mensah | 9,240.00 | 0.00 | 9,240.00 | ₵20,000/day | Active |
| EC-GH-77510338 | Yaw Owusu | 9,250.00 | 1,200.00 MoMo top-up clearing | 8,050.00 | ₵20,000/day | Active |
| EC-GH-33471902 | Akosua Darko | 420.00 | 0.00 | 420.00 | ₵2,000/day | Name check |
| EC-GH-51907724 | Abena Asante | 2,140.00 | 2,140.00 Compliance hold | 0.00 | ₵20,000/day | Frozen |
Held and available are separate columns and every held figure carries the thing that is holding it. A wallet showing ₵12,480.50 with ₵12,080.50 spendable is not a bug, and a frozen wallet with its whole balance held is not a balance error — but both read as one until the reason is on the same line. This is the table an agent opens while the caller is still talking.
Flow B
Four corridors settle four different ways, so the ledger is one list with honest filters rather than four systems pretending to agree. Then each rail gets the monitor its failure modes deserve.
From 1,284 transactions today down to a single USSD transfer traced across two banking systems — and back out to the rails, where a failure rate is the only thing that shows a problem before the calls start.
| Reference | Corridor | From → to | Amount | Status | Time |
|---|---|---|---|---|---|
| FS-2609-8842-GH | Family support | Ama Boateng → Li Wei · 李伟 | ₵858.50 | Rejected · name mismatch | 09:43 |
| FS-2609-8841-GH | Family support | Ama Boateng → Li Wei · 李伟 | ₵858.50 | Sent · ¥482.95 | 09:41 |
| SB-2610-0043 | Salary | Shenzhen Hongtai → 38 staff | ₵176,400.00 | 37 of 38 paid | 09:02 |
| WD-2609-5512 | eCedi wallet | Ama Boateng → GCB Bank ••••4417 | ₵3,000.00 | Returned R04 · refunded | 08:55 |
| TU-2609-3318 | eCedi wallet | MTN MoMo → Ama Boateng | ₵2,000.00 | Credited | 08:31 |
| TS-4471 | Trade | Qingdao Foods → Accra Cocoa Traders | ₵400,000.00 | In escrow · release requested | 08:12 |
One ledger across all four corridors, because an operator searching a reference does not know in advance which rail carried it. The chips carry their own counts so filtering is a decision rather than a guess, and the status column stays specific — “returned R04”, “37 of 38 paid”, “release requested” are three different problems that a single word like “failed” would flatten.
The same reference the sender heard on a USSD screen, read in an SMS and can see in the app now traces leg by leg in the console — five named places rather than one status word, so “it is still processing” can be replaced with which institution is holding it. The actions are deliberately thin: an operator can explain, re-send and escalate, but the reversal button does not exist because the reversal does not exist.
| Rail | Direction | Today | Value ₵ | Failed | Rate | Rail status |
|---|---|---|---|---|---|---|
| MTN MoMo | Top-up · withdrawal | 412 | 318,400 | 3 | 0.7% | Normal |
| Telecel Cash | Top-up · withdrawal | 121 | 86,200 | 7 | 5.8% | Degraded |
| AirtelTigo Money | Top-up · withdrawal | 64 | 41,900 | 1 | 1.6% | Normal |
| GCB Bank · GhIPSS | Withdrawal | 138 | 402,100 | 0 | 0.0% | Normal |
| Ecobank Ghana · GhIPSS | Withdrawal | 68 | 214,700 | 9 | 13.2% | Failing |
A count of failures means nothing without the count of attempts beside it: nine failed withdrawals is a bad afternoon on one rail and a rounding error on another. Rate per rail is what turns a support pattern into an operational decision, and the note says which of the two failure modes needs a human — timeouts fix themselves, name mismatches never do.
| Rejection reason | Today | Share | What fixes it |
|---|---|---|---|
| Beneficiary name mismatch Reported by the Chinese bank | 11 | 61% | Sender corrects the beneficiary name to the one the bank holds — the wallet was never debited |
| Beneficiary account closed AC04 | 3 | 17% | A new account number is needed before the transfer can be reissued |
| Daily ceiling reached Tier 1 senders | 3 | 17% | Raise to Tier 2 with a Ghana Card check, or send tomorrow |
| Session dropped before confirm 2G coverage | 1 | 5% | Nothing was debited — redial *714*88# and repeat the session |
On this rail the interesting number is not volume, it is the name-mismatch rate — a sender types 李伟 from memory on a feature phone keypad and the Chinese bank rejects anything that is not exactly what it holds. Each reason carries the remedy and, crucially, whether the wallet was debited, because that is what the next phone call will be about.
Flow C
Three screens where an operator makes a judgement rather than reads a number: releasing escrow against documents, and confirming that a salary batch of thirty-eight really did pay thirty-eight people.
Escrow only moves when a person agrees the conditions were met, so the queue is ordered by age and the detail screen shows both parties, the goods and the documents on the same page as the approve and reject controls.
| Request | Counterparties | Amount ₵ | Escrow | What it is waiting on | Age |
|---|---|---|---|---|---|
| TS-4459 | Accra Cocoa Traders → Ningbo Cocoa Processing | 93,000.00 | Returned | Rejected AC04 · reissue or close | 6d |
| TS-4468 | Accra Cocoa Traders → Ningbo Cocoa Processing | 292,000.00 | ESC-4468-GH | 1 of 3 documents received | 2d |
| TS-4471 | Accra Cocoa Traders → Qingdao Foods Import | 400,000.00 | ESC-4471-GH | Release requested · 3 of 3 matched | 14h |
| TS-4462 | Accra Cocoa Traders → Qingdao Foods Import | 150,000.00 | Released | CIPS in flight · no action | 4h |
Ordered by age rather than by amount, because the thing that damages a corridor is a settlement sitting unanswered for six days, not a large one answered this morning. Escrow state is its own column: whether the money is held, returned or already on the rail decides what a decision here can still change.
The decision and the evidence for it are on one screen, with each document checked against the condition agreed on 17 September rather than against a list assembled now. The note spells out what each of the three buttons actually does to the money, because “reject” here is not a form validation — it sends ¥227,272.73 back across the world and ends the trade.
| Employer | Batch | Period | Staff | Payout ₵ | CIPS reference | Result |
|---|---|---|---|---|---|---|
| Shenzhen Hongtai Construction Ltd USCC 91440300MA5EX8K27P | SB-2610-0043 | September 2026 | 38 | 176,400.00 | CIPS20261015004471 | 37 paid · 1 failed |
| Shenzhen Hongtai Construction Ltd | SB-2609-0042 | August 2026 | 42 | 181,300.00 | CIPS20260915004388 | 42 paid |
| Shenzhen Hongtai Construction Ltd | SB-2608-0041 | July 2026 | 41 | 174,950.00 | CIPS20260815004301 | 41 paid |
A batch is thirty-eight independent credits, so the result column counts them — “37 paid · 1 failed” rather than a red batch or a green one. The failed credit is expanded underneath with the reason, where the ₵3,900.00 went and who has to act, because the employer’s next move is either one retry or thirty-eight duplicate salaries.
Flow D
The figures that leave the building — for a monthly board pack, a reconciliation, or a regulator asking what moved through the corridor in September.
Named report types rather than a query builder, and output that states what it covers and when it was frozen — a number quoted from a report nobody can reproduce is worse than no number.
| Type | What it contains |
|---|---|
| Corridor settlement summary | Volume, value and failures per corridor |
| Wallet balances and holds | Balance, held, available and the hold reason |
| Family support rejections | Every rejection by reason and by rail |
| Salary batch outcomes | Per employer, per batch, with failed credits |
| Escrow movements | Deposits, releases and the trade behind each |
| KYC and tier changes | Tier moves, name checks, frozen wallets |
Six named reports instead of a query builder, each one written down beside what it contains, because an operator asked for “September’s numbers” should not have to design a query to answer it. The cut-off rule sits on the same screen as the date range — two people running the same report on different days must get the same figures, or the report is not evidence of anything.
| Corridor | Transactions | Value ₵ | Failed | Rate | Typical settlement |
|---|---|---|---|---|---|
| eCedi wallet · top-up and withdrawal | 14,908 | 9,840,200 | 162 | 1.09% | Instant · GhIPSS and MoMo |
| Family support · GH → CN | 3,144 | 2,710,400 | 48 | 1.53% | Within 2 hours |
| Salary · CN → GH | 121 | 4,320,600 | 1 | 0.83% | Same working day |
| Trade & CIPS | 239 | 24,728,800 | 3 | 1.26% | 1.4 days after release |
Four headline figures, then the breakdown that explains them: trade is 1.3% of the transactions and 59% of the value, which is the single fact anyone reading this report needs. The report ID and the freeze timestamp are part of the output rather than metadata, because this figure will be quoted in a meeting and someone will need to produce the identical one again.