01 / Case Study

CrossPay

A cross-border payments platform that removes the cost and delay of traditional banking intermediaries for UK to Africa transfers.

View Live App ↗
Live2024Personal Project

Type

Full Stack

Stack

Next.js · Node.js · PostgreSQL

Payments

Stripe · Flutterwave

Status

Live

mycrosspay.vercel.app
💸

Send Money Home

UK to Africa · Near-instant · Low fees

Get Started
SendReceiveExchangeHistory

The Problem

International transfers are slow, expensive, and opaque.

Traditional cross-border transfers between the UK and Africa pass through a chain of correspondent banks. Each hop adds cost and delay. A transfer that should take seconds takes 3 to 5 business days, and fees compound at every stage, typically consuming 5 to 8% of the amount sent.

The recipient has no visibility into where their money is. The sender has no guarantee of the rate they'll receive. And banks profit from the opacity at every step.

For families sending money home, or businesses paying suppliers across borders, this is a broken experience. The infrastructure was never designed for speed or fairness. It was designed for intermediary profit.

The Approach

Money doesn't cross borders. Settlement does.

CrossPay uses a liquidity pool model. Instead of routing money through correspondent banks, the platform holds locally denominated funds in the UK (via Stripe) and in Africa (via Flutterwave). When a user sends money, the platform deducts from the UK pool and simultaneously disburses the equivalent from the African pool, after applying a live exchange rate with a transparent margin.

01

User initiates a transfer

Sender enters the amount and recipient details. Live exchange rate is displayed with full fee breakdown before confirmation.

02

UK pool deducted via Stripe

Funds are debited from the sender's account through Stripe's payment infrastructure, reducing the UK liquidity balance.

03

African pool disbursed via Flutterwave

The equivalent local-currency amount is immediately released from the Flutterwave-managed African pool.

04

Reconciliation on the backend

The system logs the transaction, updates both pool balances, and flags any drift for automated rebalancing.

Screens

Built for clarity at every step.

Dashboard

mycrosspay.vercel.app

Balance

£2,450.00

Available to send

Send

Receive

Exchange

Recent

Lagos, NG₦85,000
Accra, GHGH₵320

Send Money

mycrosspay.vercel.app

Send to

recipient@email.com

You send

100.00

GBP

Rate: 1 GBP = 1,620 NGN

They receive

162,000 NGN

Confirm Transfer

Exchange Rates

mycrosspay.vercel.app

Live Rates

GBP / NGN1,620.50+0.8%
GBP / GHS16.42+1.2%
GBP / KES168.30-0.3%
GBP / ZAR23.85+0.5%

Key Features

Everything needed to move money simply.

Wallet Management

Multi-currency wallet with real-time balance tracking and transaction history across all supported corridors.

Live Exchange Engine

Real-time exchange rate calculation with transparent fee breakdown shown before every transaction confirmation.

Liquidity Settlement

Pool-based architecture using Stripe (UK) and Flutterwave (Africa) for near-instant local disbursement without correspondent banking.

Transaction Ledger

Full audit trail for every transfer including timestamps, rates applied, pool movements, and reconciliation status.

KYC Verification

Identity verification flow integrated into the onboarding process to meet regulatory requirements for money transmission.

Recipient Management

Save and manage recipient details for frequent transfers, with bank account validation for each supported country.

Conclusion

A payments infrastructure I'd use myself.

CrossPay was built to solve a real problem I've observed directly: sending money from the UK to family and friends in Nigeria is still harder, slower, and more expensive than it should be in 2024. The technology to fix this exists. It just hadn't been assembled in the right way.

The liquidity pool approach was the key architectural decision. By pre-funding both ends and handling reconciliation asynchronously, the user experience becomes near-instant even though the underlying settlement is complex. That tradeoff, hiding backend complexity to deliver a simple frontend experience, is something I care deeply about.

This project also gave me hands-on experience building financial systems end to end: designing the transaction ledger, handling exchange rate drift, integrating two payment providers with different APIs and edge cases, and making the whole thing reliable enough to trust with real money.

View Live App ↗← Back to Portfolio