One payment flow, seven regulatory regimes, and a user base where opening the app is itself a decision point.
End-to-end: research, flow architecture, high-fidelity UI, design system contribution.
Operator-Aware Selection
↓: Transaction abandonment dropped
Scope, Constraints & Reality
Seven markets, one UI, one shipping team. Per-market forks were explicitly ruled out. Anything that couldn't be solved with configuration instead of a rebuild wasn't viable, because the org couldn't support seven codebases long-term.
Designing for interface literacy that can't be assumed. A meaningful share of users have limited exposure to smartphone banking conventions: no shared assumption that a spinner means wait, a checkmark means done, or that fees get disclosed before you commit rather than after. Every pattern had to work for a first-time digital-banking user, not just be forgiving of one.
Not an edge case, the baseline. Screens had to hold up on low-end Android hardware and inconsistent connectivity, which ruled out anything assuming a fast connection or a high-end display, and pushed the team toward lightweight, low-motion, text-forward UI over anything decorative.
Fee disclosure, KYC, and confirmation language weren't uniform across the seven markets. The flow was built with those differences as parameters the config layer handles, not exceptions the design has to special-case.
Nine weeks, seven markets, and a budget that got cut before the work even started. There wasn't room to run fresh field research in every market, so it went into three (Uganda, Ghana, Lesotho) and the other four were designed off those findings plus a lighter remote validation pass. The operator-aware, configuration-first model wasn't just good practice here. On that runway, it was the only way seven markets were shipping at all.
Standard Bank serves customers across Uganda, Ghana, Lesotho, Zimbabwe and other African markets, each with its own mobile money ecosystem, regulator, and operator network.
Three decisions that shaped the flow: operator-aware selection, fee transparency before commit, and beneficiary save as an in-flow step.
Dashboard to completed transfer in eight screens. Every screen resolves exactly one unknown: which service, which recipient, which account, how much.
Fees land on review before OTP, verification has a real failure path, and saving a beneficiary closes the loop for every future transfer.
Colour system, typography, and design principles built for a user base where opening the app is itself a decision point.
Design Decisions
Operator-Aware Selection
Users think in amounts and recipients, not which telco they're on. Operator branding surfaces only when a market genuinely has more than one option. In single-operator markets, the decision disappears rather than being shown and immediately made irrelevant.
Fee Transparency Before Commit
Research across three markets identified fee surprise at confirmation as the number one reason transactions were abandoned mid-flow. Moving the breakdown, in plain language rather than banking jargon, to the review screen and ahead of the OTP step turned a moment of suspicion into a moment of confirmation.
Beneficiary Save as a Flow Step
First-time sends prompt to save for next time right after confirmation, when the value is obvious, instead of sitting buried in a settings menu a less digitally-fluent user would likely never find.
Impact
Fee transparency at the review step removed the single largest identified drop-off point in the original design.
Beneficiary-save adoption cleared pilot targets, a direct result of meeting first-time users where their comfort actually was.
The operator-aware model is why engineering never had to maintain forked codebases per country.







