Referrals

Next payout run: 5 Sep 2026
See the learner viewTATobi Adeyemi · Admin

Programme healthLast 30 days

₦412,000Owed this run
31 referrers
19%Of new enrolments
+6 pts
₦8,900Cost per enrolment
vs ₦21,400 paid ads
7Voided for fraud
of 168 credited

Cost per enrolment is the number that decides the budget. At ₦8,900 against ₦21,400 on paid social, every naira moved from ads into referral payouts buys more than twice as many learners, and the learner arrives already trusting somebody.

September payout runCredited on or before 31 Aug

ReferrerFriendsOwedBankStatus
Chidera Okonkwo9₦148,000GTBank ···4471Ready
Ibrahim Sule6₦82,000Kuda ···9038Ready
Blessing Etim4₦64,000Moniepoint ···2210Ready
Amina Yusuf1₦20,000Not providedAwaiting bank details
Kelechi Nwodo3₦24,000Access ···7712Name mismatch

A name mismatch between the bank account and the learner record holds the payout rather than failing it. Most are a middle name, a few are somebody paying into an account that is not theirs.

Where referrals come fromClicks to enrolment

ChannelClicksConv
WhatsApp2,14011.4%
Copied link8807.2%
Telegram4956.8%
X3022.1%
Instagram bio1883.6%

WhatsApp converts at five times the rate of X, because it is a message from someone you know rather than a post to strangers. Put the WhatsApp button first everywhere, and do not spend effort optimising the others.

Fraud checksRun nightly, before any payout is calculated

Self-referralMatched on WhatsApp number, email domain, device and payment instrument. Voided, not merely unpaid, so the account is flagged if it happens twice.
4 voided
Circular pairsTwo accounts referring each other, usually created minutes apart. Both sides voided.
2 voided
Brand biddingReferral traffic arriving from a paid ad on our own brand terms. It raises our acquisition cost and adds nothing, so it earns nothing.
1 voided
Refund reversalA refund inside the policy window reverses the referral payment. Stated on the learner page so it is never a surprise.
Automatic
First-touch attributionThe first code a friend used wins, permanently. No last-click stealing and no disputes to arbitrate by hand.
Enforced
Payouts require a verified bank accountName on the account must match the learner record. Mismatches hold rather than fail, and go to a human.
Enforced

For the developerWhat the backend owns

The code is captured at first touch and stored, not read at checkout?ref=CODE writes to a first-party cookie and to the profile on registration. Reading it at checkout would lose everyone who arrives, leaves and returns.
Required
Payouts are computed server-side from the payment recordNever from a client figure, for the same reason as the promo discount and VAT.
Required
Tablesreferral_codes, referrals (referrer, friend, first_touch_at, enrolment, state, amount_kobo), payouts. RLS: a learner reads only their own rows.
Required
Bank details never touch the browser after entryWritten once through an Edge Function, returned only as a masked last four.
Required