New · Pay Identity

Send money to @amara,
not to 0244123456789012345

AfriLink Pay Identity gives every person and business a universal payment handle — one username that resolves to any wallet, bank, or payment method across 54 countries. No account numbers. No bank codes. No errors.

How it works

Three steps. Thirty seconds. Payment infrastructure that works for every African.

Create your handle

Pick a username and claim your AfriLink Pay Identity. It's free and takes less than 30 seconds. Your handle becomes a permanent short link.

afrilinkpay.com/pay/amara

Link any account

Connect your preferred payment method — MTN MoMo, M-Pesa, Ecobank, GTB, KCB, or any of the 200+ rails on the AfriLink network. Change it at any time.

Share your link

Send anyone your handle link or QR code. Anyone on AfriLink can pay you instantly — even cross-border, even if they're on a different network.

Why Pay Identity?

One handle. Every network. Always private.

🌍

Cross-border by default

Your handle works in all 54 supported countries. A sender in Lagos can pay an Amara in Nairobi with the same link they'd use domestically.

🔒

Always private

Payers never see your account number, wallet ID, or bank details. Your handle resolves to a payment instruction — your underlying account stays hidden.

Instant resolution

Handle-to-account resolution happens in under 100ms globally. The payment initiation screen appears before your sender has finished looking at their phone.

🔄

Redirect anytime

Switched banks? Changed mobile money networks? Update your underlying account without changing your handle. Your contacts always reach you.

What your pay page looks like

A clean, branded page. One amount field. Every sender instantly knows they're in the right place.

A
Amara Diallo
afrilinkpay.com/pay/amara
Accepts payments via
MTN MoMo M-Pesa GTB Ecobank +196 more
FX preview
You send (NGN)₦50,000
Amara receives (GHS)≈ GHS 218.40
Amount to send
₦ 50,000
Send to Amara →

Everything the sender needs,
nothing they don't

  • The page loads in under 200ms from any African network
  • Accepted rails detected automatically from the sender's account
  • Live FX preview — the rate locks on confirm, no surprises
  • Works in any browser, no app install required for the sender
  • Amara's account number never appears anywhere on this page
  • QR code available for in-person payments

Built for businesses too

Merchants get a branded pay page, automatic QR codes, and tools that turn Pay Identity into a complete checkout solution.

Your business Pay Identity can be hosted on your own domain — pay.yourbusiness.com/checkout — styled with your brand colours and logo. AfriLink handles the payment rail complexity behind the scenes.

Payment links
Generate one-time or reusable payment links for invoices, products, or services in seconds.
QR codes
Auto-generated QR codes for every handle. Print them, display them on screen, or embed in receipts.
Split payments
Define split rules so a single payment is automatically distributed across multiple recipients or accounts.
Recurring billing
Schedule recurring payment links for subscriptions, rent collection, or savings groups.
Invoice links
Generate invoice-linked payment pages with reference numbers and automatic reconciliation.
Webhooks
Real-time payment notifications to your backend. Retry logic and replay built in.
Free forever for individuals

Get your handle today

Claim afrilinkpay.com/pay/yourname before someone else does. Free for individuals, scalable for businesses.

Under the hood

Pay Identity is a first-class API. Integrate it into any app or workflow in minutes.

Handle resolution: <100ms globally

Resolve any AfriLink Pay Identity handle to available payment options for a given sender — including supported rails, current FX rates, and fee estimates. Then initiate the payment with a single POST.

GET Resolve a handle
// GET /api/pay-identity/:handle?sender_currency=NGN

{
  "handle": "amara",
  "display_name": "Amara Diallo",
  "verified": true,
  "rails": [
    { "id": "mtn_momo_gh", "name": "MTN MoMo Ghana", "currency": "GHS" },
    { "id": "ecobank_gh",  "name": "Ecobank Ghana",  "currency": "GHS" }
  ],
  "fx": {
    "sender_currency": "NGN",
    "recipient_currency": "GHS",
    "rate": 0.004368,
    "rate_expires_at": "2026-06-01T14:32:00Z"
  },
  "resolved_in_ms": 74
}
POST Initiate a payment to a handle
// POST /api/pay/:handle

{
  "amount": 50000,
  "sender_currency": "NGN",
  "rail_id": "mtn_momo_gh",
  "idempotency_key": "txn_20260601_9f8a3b",
  "reference": "Invoice #1042"   // optional
}

// → 202 Accepted
{
  "payment_id": "pay_7Xk2mQ...",
  "status": "pending",
  "webhook_url": "https://yourdomain.com/webhook"
}

A webhook fires to your registered URL when the payment settles. The webhook payload includes the payment ID, final amount, FX rate applied, rail used, and settlement timestamp. Retry logic handles network failures automatically — your endpoint receives the event at least once, and the payload includes an idempotency key for safe deduplication.