Century Developer API

Build on Century

Every server function and public HTTP endpoint that powers the Century web and mobile apps. All server functions live under /_serverFn/<name> and accept a JSON body of the shape { "data": { ...inputs } }.

Base URLs

  • prod
    https://centuryvtu.com
  • preview
    https://project--<id>-dev.lovable.app

Authentication

Protected endpoints require a Supabase bearer access token:

Authorization: Bearer <access_token>
Content-Type: application/json

Calling a server function

POST /_serverFn/buyAirtime
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "data": {
    "network": "MTN",
    "phone": "080XXXXXXXX",
    "amount": 500,
    "pin": "1234"
  }
}
101 endpoints
POST
/_serverFn/sendLoginOtpPublicAuth

sendLoginOtp

Send a login one-time code to an email address.

Request body (JSON)
FieldTypeRequired
emailstringyes
Response
{ ok: true }
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/getOtpCooldownPublicAuth

getOtpCooldown

Check cooldown before another OTP can be requested.

Request body (JSON)
FieldTypeRequired
emailstringyes
Response
{ secondsRemaining: number }
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/sendPhoneOtpPublicAuth

sendPhoneOtp

Send an SMS OTP to a phone number.

Request body (JSON)
FieldTypeRequired
phonestringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/verifyPhoneOtpPublicAuth

verifyPhoneOtp

Verify a phone OTP.

Request body (JSON)
FieldTypeRequired
phonestringyes
codestringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/isPhoneVerifiedBearerAuth

isPhoneVerified

Whether the caller's phone has been verified.

Request body (JSON)
FieldTypeRequired
phonestringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/resolveLoginIdentifierPublicAuth

resolveLoginIdentifier

Resolve an @username or email to an account for PIN login.

Request body (JSON)
FieldTypeRequired
identifierstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/startPinLoginPublicAuth

startPinLogin

Log in with 6-digit login PIN.

Request body (JSON)
FieldTypeRequired
identifierstringyes
pinstringyes
Response
{ session: SupabaseSession }
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/getLoginPinStatusBearerAuth

getLoginPinStatus

Whether the caller has a login PIN enrolled.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/setLoginPinBearerAuth

setLoginPin

Enrol/update the 6-digit login PIN.

Request body (JSON)
FieldTypeRequired
pinstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/disableLoginPinBearerAuth

disableLoginPin

Turn off PIN login.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/claimSessionBearerAuth

claimSession

Claim exclusive single-device session.

Request body (JSON)
FieldTypeRequired
deviceIdstringyes
userAgentstringno
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/heartbeatSessionBearerAuth

heartbeatSession

Refresh session heartbeat.

Request body (JSON)
FieldTypeRequired
deviceIdstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/releaseSessionBearerAuth

releaseSession

Release the current session.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/notifyLoginBearerAuth

notifyLogin

Record a login event and email an alert.

Request body (JSON)
FieldTypeRequired
devicestringno
methodstringno
sessionIdstringno
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/getMyTwoFactorBearer2FA

getMyTwoFactor

Return 2FA enrollment / challenge state.

Request body (JSON)
FieldTypeRequired
grantTokenstringno
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/beginTotpEnrollmentBearer2FA

beginTotpEnrollment

Start TOTP enrollment (returns provisioning URI).

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/confirmTotpEnrollmentBearer2FA

confirmTotpEnrollment

Confirm TOTP setup by supplying a code.

Request body (JSON)
FieldTypeRequired
codestringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/sendStepupEmailCodeBearer2FA

sendStepupEmailCode

Send an email step-up code.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/verifyStepupChallengeBearer2FA

verifyStepupChallenge

Verify a step-up TOTP or email code.

Request body (JSON)
FieldTypeRequired
totpCodestringyes
Response
{ grantToken: string }
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/revokeGrantBearer2FA

revokeGrant

Revoke a step-up grant.

Request body (JSON)
FieldTypeRequired
grantTokenstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/getWalletStateBearerWallet

getWalletState

Balance, locked bonuses, recent ledger.

Response
{ balance, lockedBonus, referralLockedBonus, log: WalletLedgerRow[] }
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/createTopupIntentBearerWallet

createTopupIntent

Create a server-side top-up intent with an immutable reference.

Request body (JSON)
FieldTypeRequired
amountnumber (₦100–₦1,000,000)yes
processorstringyes
Response
{ id, reference, amount }
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/getTopupIntentBearerWallet

getTopupIntent

Poll the status of your top-up intent.

Request body (JSON)
FieldTypeRequired
referencestringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/debitWalletFnBearerWallet

debitWalletFn

Debit the caller's wallet (requires transaction PIN).

Request body (JSON)
FieldTypeRequired
amountnumber (min ₦50)yes
notestringyes
pinstring (4 digits)yes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/transferWalletFnBearerWallet

transferWalletFn

Send funds to another Century user (KYC Tier 2 required).

Request body (JSON)
FieldTypeRequired
usernamestringyes
amountnumberyes
notestringno
pinstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/lookupProfileByUsernameBearerWallet

lookupProfileByUsername

Resolve a @username to a recipient profile.

Request body (JSON)
FieldTypeRequired
usernamestringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/startPaystackTopupBearerPayments

startPaystackTopup

Initialize a Paystack transaction and return an authorization URL.

Request body (JSON)
FieldTypeRequired
amountnumberyes
emailstringyes
callbackUrlstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/verifyPaystackTopupBearerPayments

verifyPaystackTopup

Verify a Paystack reference and credit the wallet if unsettled.

Request body (JSON)
FieldTypeRequired
referencestringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/getTopupReceiptBearerPayments

getTopupReceipt

Fetch a shareable top-up receipt.

Request body (JSON)
FieldTypeRequired
referencestringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listPaymentHistoryBearerPayments

listPaymentHistory

List the caller's payment intents/settlements.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listAirtimeNetworksBearerVTU

listAirtimeNetworks

Available airtime networks.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listDataNetworksBearerVTU

listDataNetworks

Available data networks.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listDataPlanTypesBearerVTU

listDataPlanTypes

Plan categories (SME/CG/GIFTING…) for a network.

Request body (JSON)
FieldTypeRequired
networkstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listDataPlansBearerVTU

listDataPlans

All data plans for a network.

Request body (JSON)
FieldTypeRequired
networkstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listDataPlansForCategoryBearerVTU

listDataPlansForCategory

Plans in one category.

Request body (JSON)
FieldTypeRequired
networkstringyes
planTypestringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listCableProvidersBearerVTU

listCableProviders

Cable TV providers.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listCablePlansBearerVTU

listCablePlans

Cable plans for a provider.

Request body (JSON)
FieldTypeRequired
identifierstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listElectricityPlansBearerVTU

listElectricityPlans

Available discos.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listBetCompaniesBearerVTU

listBetCompanies

Supported betting companies.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/quotePriceBearerVTU

quotePrice

Return retail price after markup.

Request body (JSON)
FieldTypeRequired
servicestringyes
providerstringno
wholesalenumberyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/verifyCableIUCBearerVTU

verifyCableIUC

Lookup cable subscriber name.

Request body (JSON)
FieldTypeRequired
iucstringyes
identifierstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/verifyMeterBearerVTU

verifyMeter

Lookup meter/customer name.

Request body (JSON)
FieldTypeRequired
meterstringyes
planstringyes
type'prepaid'|'postpaid'yes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/verifyBetAccountBearerVTU

verifyBetAccount

Lookup betting customer.

Request body (JSON)
FieldTypeRequired
betting_companystringyes
customer_idstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/buyAirtimeBearerVTU

buyAirtime

Purchase airtime (requires PIN).

Request body (JSON)
FieldTypeRequired
networkstringyes
phonestringyes
amountnumberyes
pinstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/buyDataBearerVTU

buyData

Purchase a data bundle (requires PIN).

Request body (JSON)
FieldTypeRequired
networkstringyes
plan_idstringyes
phonestringyes
amountnumberyes
pinstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/subscribeCableBearerVTU

subscribeCable

Pay a cable subscription (requires PIN).

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/buyElectricityBearerVTU

buyElectricity

Buy electricity token (requires PIN, min ₦1,000).

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/fundBetBearerVTU

fundBet

Fund a betting wallet (requires PIN).

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/buyEducationPinBearerVTU

buyEducationPin

Buy an exam pin (requires PIN).

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listMyVtuTransactionsBearerVTU

listMyVtuTransactions

Recent VTU transactions.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/getMyVtuTransactionBearerVTU

getMyVtuTransaction

Fetch one VTU transaction by id.

Request body (JSON)
FieldTypeRequired
iduuidyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/submitNinKycBearerKYC

submitNinKyc

Submit Tier 1 (NIN).

Request body (JSON)
FieldTypeRequired
ninstringyes
slipPathstringyes
fullNamestringno
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/submitBankKycBearerKYC

submitBankKyc

Submit Tier 2 (bank + ID).

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/submitTier3KycBearerKYC

submitTier3Kyc

Submit Tier 3 (liveness frames).

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/getKycFileUrlBearerKYC

getKycFileUrl

Signed URL for a KYC upload.

Request body (JSON)
FieldTypeRequired
pathstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/lookupNinBearerKYC

lookupNin

Server-side NIN lookup.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/verifyBankAccountBearerKYC

verifyBankAccount

NUBAN name enquiry.

Request body (JSON)
FieldTypeRequired
accountNumberstringyes
bankCodestringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listBanksBearerKYC

listBanks

List Nigerian banks.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listNotificationsBearerNotifications

listNotifications

Caller's inbox.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/markAllNotificationsReadBearerNotifications

markAllNotificationsRead

Mark all as read.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/markNotificationReadBearerNotifications

markNotificationRead

Mark one as read.

Request body (JSON)
FieldTypeRequired
iduuidyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listBroadcastsBearerNotifications

listBroadcasts

List active broadcasts.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/votePollBearerNotifications

votePoll

Vote in a broadcast poll.

Request body (JSON)
FieldTypeRequired
pollIduuidyes
optionIduuidyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/getPushPublicKeyPublicPush

getPushPublicKey

VAPID public key for Web Push.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/savePushSubscriptionBearerPush

savePushSubscription

Register a push endpoint.

Request body (JSON)
FieldTypeRequired
endpointstringyes
p256dhstringyes
authstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/deletePushSubscriptionBearerPush

deletePushSubscription

Delete a push endpoint.

Request body (JSON)
FieldTypeRequired
endpointstringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/hasTransactionPinBearerSettings

hasTransactionPin

Whether transaction PIN is set.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/setTransactionPinFnBearerSettings

setTransactionPinFn

Set/change 4-digit transaction PIN.

Request body (JSON)
FieldTypeRequired
pinstring (4 digits)yes
currentPinstringno
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/getPreferencesBearerSettings

getPreferences

User preferences.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/updatePreferencesBearerSettings

updatePreferences

Update user preferences.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/closeAccountBearerSettings

closeAccount

Close the account.

Request body (JSON)
FieldTypeRequired
confirmstring ("DELETE")yes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/getMyReferralStatusBearerGrowth

getMyReferralStatus

Referral code, invitees and locked bonus.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/getPendingMilestonesBearerGrowth

getPendingMilestones

Milestones awaiting acknowledgement.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/ackMilestoneBearerGrowth

ackMilestone

Acknowledge a milestone.

Request body (JSON)
FieldTypeRequired
thresholdnumberyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/getCheckinStatusBearerGrowth

getCheckinStatus

Daily check-in status.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/claimCheckinBearerGrowth

claimCheckin

Claim today's check-in.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/withdrawCheckinBearerGrowth

withdrawCheckin

Withdraw accrued check-in bonus.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listSavingsLocksBearerSavings

listSavingsLocks

List savings locks.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/createSavingsLockBearerSavings

createSavingsLock

Lock funds for N days.

Request body (JSON)
FieldTypeRequired
amountnumberyes
daysnumberyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/breakSavingsLockBearerSavings

breakSavingsLock

Break a savings lock early.

Request body (JSON)
FieldTypeRequired
lockIduuidyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/getLoanOverviewBearerLoans

getLoanOverview

Loan eligibility and outstanding balance.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/takeLoanBearerLoans

takeLoan

Take a loan.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listMyMarketplaceOrdersBearerMarketplace

listMyMarketplaceOrders

Caller's marketplace orders.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/createMarketplaceOrderBearerMarketplace

createMarketplaceOrder

Create a marketplace order.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/getMarketplaceOrderBearerMarketplace

getMarketplaceOrder

Fetch one order.

Request body (JSON)
FieldTypeRequired
iduuidyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listMySubscriptionOrdersBearerSubscriptions

listMySubscriptionOrders

Caller's subscription orders.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/submitSubscriptionOrderBearerSubscriptions

submitSubscriptionOrder

Submit a subscription order (requires PIN).

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/getOrCreateThreadBearerSupport

getOrCreateThread

Get or create the caller's support thread.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listThreadMessagesBearerSupport

listThreadMessages

List messages in a support thread.

Request body (JSON)
FieldTypeRequired
threadIduuidyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/sendSupportMessageBearerSupport

sendSupportMessage

Post a support message.

Request body (JSON)
FieldTypeRequired
threadIduuidyes
bodystringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listSchedulesBearerSchedules

listSchedules

List scheduled purchases.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/upsertScheduleBearerSchedules

upsertSchedule

Create or update a schedule.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/toggleScheduleBearerSchedules

toggleSchedule

Pause/resume a schedule.

Request body (JSON)
FieldTypeRequired
iduuidyes
activebooleanyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/deleteScheduleBearerSchedules

deleteSchedule

Delete a schedule.

Request body (JSON)
FieldTypeRequired
iduuidyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/createTransactionReportBearerReports

createTransactionReport

Report a failed/disputed transaction.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/listMyReportsBearerReports

listMyReports

Caller's issue reports.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/_serverFn/signReceiptBearerReceipts

signReceipt

Sign a receipt payload.

Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
GET
/_serverFn/verifyReceiptPublicReceipts

verifyReceipt

Public receipt verification lookup.

Request body (JSON)
FieldTypeRequired
needlestringyes
Errors
  • 401Unauthorized – missing or invalid bearer token.
  • 400Validation failed – input did not match the schema.
  • 429Rate limited – slow down and retry.
  • 500Server error – reported and logged with an error ID.
POST
/api/public/payments/webhook/paystackSigned webhookWebhooks

Paystack webhook

Signed Paystack webhook. Verifies x-paystack-signature (HMAC-SHA512) before crediting wallets.

Errors
  • 401Invalid signature.
  • 200Event accepted.
POST
/api/public/report-issuePublicWebhooks

Public issue reporter

Post a client-side error/issue report (used by the ErrorScreen fallback).

POST
/api/public/login-failedPublicWebhooks

Login failure telemetry

Record failed login attempts for rate limiting and alerts.