← All Work

Cardtonic · P2P Money Transfer

Sending Money To People, Not Accounts

Cardtonic is a fintech product people rely on every day, and it was exploring Peer-to-Peer money transfers — letting users send directly to other Cardtonic users. The open question: how do you build enough confidence for that to work at scale (1,000,000+ users), when the money moves instantly and can't be recalled?

I designed an end-to-end P2P transfer flow where verifying the recipient comes before entering the amount — addressing three anxieties research kept surfacing: trust, simplicity, and speed.

  • Fintech, 2026
  • Senior Product Designer
  • Cardtonic
  • Mobile App · Figma

Introduction · Background

Cardtonic builds financial products people rely on every day, and was exploring the introduction of Peer-to-Peer money transfers — letting users send money directly to other Cardtonic users. Users needed a way to do that with enough confidence and trust for transactions at scale (1,000,000+).

“How do users find the right recipient? How do we prevent sending to the wrong person? How do we make it feel fast without cutting corners on security?”

Design Task: design an end-to-end peer-to-peer mobile money transfer experience. Research showed the solution needed to address three core anxieties.

  1. 01 Trust Am I sending this to the right person?
  2. 02 Simplicity Every reassurance is another screen, another decision.
  3. 03 Speed The fiftieth send should take three taps, not nine.

Discovery · The Challenge

Three tensions every peer transfer has to resolve, and how I approached solving them.

Speed vs Security

A million naira deserves friction. Two thousand does not. One flow has to carry both.

Verify The Person

Identity is confirmed before an amount is entered — settlement is instant within the Cardtonic ledger, with no pending state.

Confidence vs Simplicity

Every reassurance is another screen. Too many, and the reassurance itself reads as risk.

Confirm Instantly

The recipient is confirmed before a number is typed; because both parties are on Cardtonic, verification is fast.

First-Time Trust vs Repeat Trust

The first send needs explaining. The fiftieth needs to be three taps.

Error States & Review

One question per screen. Errors explain the ceiling and offer a way past it; review highlights the recipient so a typo is seen, not overlooked.

Discovery · Non-Negotiables

Assumptions that affect security, safety, and where the design could fail — and what breaks if they turn out wrong.

Only Cardtonic Users Can Receive Funds

Why: keeps both legs in one ledger and avoids external KYC.

If wrong: external rails would reintroduce a pending state and change the architecture.

Tier Limits Are For Risk Management

Why: caps daily exposure per account.

If wrong: must be explained, not enforced silently — why the explainer sheet exists.

Settlement Is Instant

Why: uses the internal ledger, not a bank rail.

If wrong: success would need a pending state, changing the final screen.

Contacts Permission Can Be Granted

Why: speeds discovery for first-time sends.

If wrong: fallback is username and phone search only.

PIN Or Biometric Is Enough

Why: matches the current Cardtonic standard.

If wrong: a 1,000,000 transfer may need step-up authentication, which isn't designed here.

Repeat Sends Make Up Most Volume

Why: recent recipients lead the search.

If wrong: recent becomes wasted space above the fold.

Recommendation

Cardtonic must be safe, secure, and compliant with regulations as a fintech solution.

Discovery · Market Research

How Kuda, GTBank, Access Bank, Pocket App, and PalmPay handle peer-to-peer transfers.

Key Insight

Most competitors optimise for speed through saved beneficiaries and contact sync. Few address recipient-verification anxiety, and limits are enforced silently rather than explained — exactly where this design differentiates.

Kuda P2P transfer flow with PIN review
Kuda · P2P flow, review with PIN
GTBank transfer flow
GTBank · Transfer flow
Access Bank review and tier limits
Access Bank · Review & tier limits
Pocket App send money flow
Pocket App · Send money
PalmPay recipient verification
PalmPay · Recipient verification

Discovery · Design System

All UI values use Figma variables or shared styles. 25+ components, built with Auto Layout, variants, and bound variables — shared across both flow options.

Colour

navy

#002444

navy-light

#092443

cyan

#00CDDE

cyan-light

#BFF3F7

green

#25CE7B

green-text

#177F4C

red

#EF4D27

orange

#FF8058

purple

#7580EF

grey-border

#C2E6ED

grey-surface

#F2F3F5

grey-text

#646B78

Typography · Eina01

DisplayBold 32/38Send money
H1Bold 24/30Is this the right person?
H2SemiBold 20/26Check this before you send
Body LRegular 16/24Transfers between Cardtonic users
BodyRegular 14/20Your money is safe. The transfer did not go.
LabelSemiBold 12/16AVAILABLE BALANCE
Amount LBold 40/481,000,000
ButtonSemiBold 16/24Send 1,000,000

Components

25+

Built with Auto Layout, variants, and bound variables — shared across both options.

Button

3 styles, 4 states each.

Button component, 3 styles across 4 states

Input Field

5 states, from empty to error.

Input field component, 5 states

Recipient Row

4 states, including invite.

Recipient row component, 4 states

Error Box

4 types, colour-coded by severity.

Error box component, 4 types

Key Decision · Where Does P2P Live?

Same flow, two entry points — which one serves trust, simplicity, and speed best.

Option A · Service Tile

P2P lives as a Home tile, sharing the Buy Gift Card mental model. Navigation stays unchanged; history reuses Transactions, no new surface added.

Strengths: discoverable in a familiar place, consistent with existing architecture, fast entry for new users.

Trade-offs: no dedicated space for history, repeat users lose optimisation.

Option B · Dedicated Nav Tab

Home | Wallet | P2P | Transactions | Settings. P2P becomes a visible ecosystem with room for history, groups, requests, and invites.

Strengths: treated as a first-class feature, room for repeat-user optimisation, dedicated transaction history.

Trade-offs: nav bar gets busier (5 tabs), slightly higher interaction cost.

Option A, P2P as a Home service tile
Option A · Service tile on Home
Option B, P2P as a dedicated nav tab
Option B · Dedicated nav tab

The Decision

Option A is preferred — it requires fewer steps and focuses solely on sending money.

Solution · Option A: P2P Service Tile

Fast entry from Home into recipient search, balancing trust, safety, and speed.

The Flow · Seven Steps

Entry point is the Home tile instead of a hub — optimised for first-time and casual users, and for the fast path when the destination is already known.

Home dashboard with P2P service tile
01 · Home — one tap in
Recipient search by username, phone, or contacts
02 · Search — recent recipients lead
Recipient verification, is this the right person
03 · Verify — before any amount
Amount entry with balance in header
04 · Amount — balance in the header
Review screen before sending
05 · Review — recipient, fee, note
PIN authentication screen
06 · PIN — unique transaction PIN
Instant success confirmation
07 · Done — instant, with a reference

Solution · Trust Moments

The two screens that decide whether 1,000,000 is sent. This speaks directly to trust and speed.

Verify

Avatar at 80 and full legal name as the largest element — the failure mode is a correct username on the wrong person. Masked phone and account age provide two independent recognition cues. No recipient tier is shown: limits are sender-side, so showing the receiver's tier would imply it affects the outcome.

Final Sanity Check

The recipient sits in a highlighted container so a wrong name is seen, not read past. Balance-after-transfer answers the last question before confirming. Nothing on the screen is tappable except back, edit, and confirm.

Verify the right person, avatar and full legal name
Verify the right person
Final review with highlighted recipient and balance after transfer
Final sanity check

Key takeaway: helping users notice the transaction is irreversible, and having them confirm details before entering an amount and again after.

Solution · Amount Entry

Normal and over-limit states differ only by the error box. This speaks to simplicity and speed.

Amount entry within limit
Within limit — Review enabled
Amount entry over the tier ceiling
Over the ceiling — upgrade path shown

Balance lives in the header, matching Add Bank Account, so the amount field stays clean. Quick chips cover common amounts; the tier limit is visible with an info icon. Review enables as soon as the amount is valid. Over the ceiling, the amount stays editable and keeps its value — only Review is disabled, and the chevron opens the tier sheet so the limit can be reviewed, not just accepted.

Key takeaway: a tier ceiling the user can review reads as a choice, not a block — that's why the error offers an upgrade path instead of a dead end.

Solution · Secure & Success

Safe, secure, and instant confirmation. This speaks to trust and security.

PIN or biometric authentication
Secure — PIN or biometric
Instant confirmation with reference number
Success — instant, no pending state

Payment can only be initiated with the user's transaction PIN, with biometrics available once enabled in settings. There's no pending state — both parties are on Cardtonic, so there's nothing to settle. The reference number sits on screen, not buried in a receipt: it's what users quote for support. Send again is offered because repeat transfers are common.

Key takeaway: a secure, decisive success screen is what builds trust with users.

Solution · Edge Cases & Error Handling

Failure states were designed to build trust, not erode it.

Low Balance & Limit

An indicator of the user's limit and a CTA to help them upgrade to their max.

Low balance and limit indicator with upgrade CTA

Unlock Tier

Lets the user know which tier they're on and which one is next.

Unlock tier sheet showing tier progress

Account Restricted

Tells the user the recipient is on a watchlist or being restricted, without exposing why.

Account restricted, cannot receive money

Invite Contact

Users can invite others to Cardtonic, with an incentive attached to encourage it.

Invite contact to earn

No Search Results

Turns a dead end into network growth with an invite.

No Cardtonic user found with that phone number

Contact Sync

Contacts are matched against Cardtonic accounts; nothing is uploaded, and the flow keeps working if permission is declined.

Contact sync, matched versus unmatched contacts

Error Principle

Reassure first, explain second, direct third — and never leave the user wondering where their money is.

Solution · Micro-Interactions & Feedback

76 wired connections. Motion clarifies state; it never decorates.

Review Button

Enabled when the amount is valid; the label explains why when disabled.

Review button, disabled versus enabled state

PIN Entry

Dots fill on each keypress; errors shake the field and show remaining attempts.

PIN entry dots filling on keypress

Skeletons

Match the real row and card shape so content lands without shifting.

Skeleton loading state matching the real row shape

Toast

Reserved for reversible events; a 1,000,000 transfer gets a full screen, not a toast.

Toast variants for reversible events

Key takeaway: user delight is always worth it — micro-interactions were introduced to give users delight, not to slow them down.

Outcome · Usability Insight

Usability testing showed that separating Review from PIN authorisation was less risky than combining them.

What Went Wrong

Users still had doubts when PIN was the final step. There was no review before authorising, so irreversibility anxiety lasted until the very end.

What It Fixed

Review became a final sanity check before the point of no return — recipient, amount, fee, and remaining balance all visible. PIN turned into lightweight auth, not a decision moment.

Before, review and PIN combined on one screen
Before — review and PIN, one screen
After, review separated from PIN with full breakdown
After — review separated from PIN

Separating Review and PIN was not in the original design. Validation showed it was the single change most responsible for user confidence.

Conclusion

The P2P design trades a single transfer screen for a verification-first flow: confirm the recipient, enter the amount, review, then authorise — one extra step, but zero ambiguity at the point of no return, which matters for users sending up to 1,000,000.

Tier limits stay consistent across both entry points — soft errors with an upgrade path, not hard blocks. The verification card and tier explainer exist for the same reason: users should always see who's receiving the money, and always have a way to understand their limits.

Wallet-Centric Hub

Embed P2P sending within a unified balance, people, and history view so it feels like part of managing money, not a separate detour.

Verification First

Identity is confirmed before the amount is entered, so the irreversible decision is made while the stakes are still abstract.

Limits As Progress

When a user hits a limit, name the specific cap and surface the upgrade path in the same moment — turning the barrier into a conversion opportunity.

Repeat Users Rewarded

Recent recipients lead search and history, so frequent senders complete a transfer in three taps instead of nine.

What Would Prove This Wrong

The soft tier limits and optional note field are informed assumptions, not confirmed data — both need validating against real usage before this ships. I'd measure time-to-transfer, confidence at review, tier-limit recovery rate, and drop-off at the review screen.