How it works
Four steps from open to paid — the entire flow takes under 3 seconds once the customer taps.
Enter Amount
Open the AfriLink POS app on your Android phone or tablet. Enter the payment amount and select currency.
Customer Taps
The customer taps their AfriLink wearable (ring, card, sticker) to the back of your phone. The NFC chip is read in under a second.
Identity Resolved
The server resolves the wearable's Tag ID to the customer's AfriLink @handle and wallet in real time.
Payment Complete
Funds are instantly debited from the customer's wallet and credited to yours. Both sides get a push notification. Done.
Two flows, one platform
AfriLink POS works the same way whether you're holding the phone or tapping it.
You're the Merchant
Turn your phone into a POS. Open the terminal, enter an amount, and wait for the customer to tap. No extra hardware needed — just the AfriLink POS web app running in Chrome on your Android.
You're the Customer
Link your AfriLink wearable to your account. Tap at any AfriLink POS terminal to pay. Wristband, ring, card — whatever you carry. No app needed on the customer side.
Device requirements
The AfriLink POS terminal is a progressive web app — no installation required. Open it in Chrome and you're ready to accept payments.
(any NFC phone)
Africa-first fallbacks
Connectivity and hardware vary across Africa. AfriLink POS is designed to work everywhere — three input methods, one settlement system.
NFC Tap
Primary method. Chrome 89+ on Android. Customer taps their wearable to the back of your phone. Fastest — under 3 seconds end-to-end.
QR Code
The POS generates a QR. Customer scans with their camera app. Works on all phones including iPhone, any browser.
@Handle Entry
The merchant types the customer's AfriLink handle manually. Works offline-first, ideal for low-connectivity environments.
For merchants & agents
The POS terminal is built into both the Merchant and Agent dashboards — no extra signup required.
Merchant
Access the web POS from your Merchant Dashboard → POS Terminal. Your API key authenticates the session. All payments credit your merchant wallet instantly. View session history, cancellations, and receipts in the dashboard.
Agent
Agents can also launch the POS terminal from their Agent Dashboard → POS Terminal. Ideal for cash-in/cash-out agents who want to accept digital payments from wearable customers.
Hardware developer API
Building a dedicated POS device? Use the merchant REST API:
// 1. Create a payment session (your POS device calls this)
POST /api/pos/sessions
x-merchant-api-key: YOUR_KEY
{
"amount": 25.00,
"currency": "GHS",
"description": "Groceries",
"callbackUrl": "https://your-device.local/webhook"
}
→ { sessionId, tapUrl, ttlSeconds: 90, expiresAt, status: "pending" }
// 2. Customer taps wearable → your device reads the NFC URL → POST the tap
POST /api/pos/sessions/:sessionId/tap
x-merchant-api-key: YOUR_KEY
{ "tagId": "TG3F8A1B2C", "nfcUid": "04:AB:CD:12:34" }
// Or poll for status (the web POS does this every 1 second)
GET /api/pos/sessions/:sessionId
→ { status: "completed", payerHandle: "@kwame", amount: 25.00 }
// 3. Webhook (if callbackUrl set): POST with X-AfriLink-Signature header
{
"event": "pos.session.completed",
"sessionId": "uuid",
"payerHandle": "@kwame",
"amount": 25.00,
"currency": "GHS",
"completedAt": "2026-05-26T13:00:00Z"
}
AfriLink POS vs Traditional POS
| Feature | AfriLink POS | Traditional POS |
|---|---|---|
| Hardware cost | Free (use your phone) | $150–$800 |
| Card scheme fees | None (closed-loop wallet) | 1.5–3.5% per txn |
| Setup time | 2 minutes | Days–weeks |
| NFC required | Optional (QR fallback) | Required |
| Works offline | Partial (QR queue) | No |
| Africa-native | ✓ Mobile money first | ✗ Card-centric |
Web NFC — how the tap works
The POS page uses the Web NFC API (NDEFReader) to read NDEF URL records from wearables. No EMV, no card emulation needed — wearables encode a URL (https://afrilinkpay.com/tap/TGxxxxxxxx) which the POS reads, extracts the Tag ID, and submits to the session API.
// Reading the wearable tap (already built into pos.html)
const reader = new NDEFReader();
await reader.scan();
reader.addEventListener('reading', ({ message }) => {
for (const record of message.records) {
if (record.recordType === 'url') {
const url = new TextDecoder().decode(record.data);
const match = url.match(/\/tap\/(TG[0-9A-F]{8})/i);
if (match) submitTap({ tagId: match[1] }); // → POST /api/pos/sessions/:id/tap
}
}
});
Ready to start accepting NFC payments?
Free to use for all AfriLink merchants and agents. No extra hardware. No card scheme fees.