REST API Reference Overview
The rafiqPay API is organized around REST. All requests use HTTPS, expect JSON request bodies, and return JSON responses. Authentication uses Bearer tokens, and resources support idempotent operations.
Status Badging & Plan 035 Legend
Standard HTTP Headers
Your secret API key. Test keys begin with rp_test_sk_; live keys begin with rp_live_sk_.
Every response carries one. Send your own to follow a request through, and quote it when you ask for support. There is no version header: the API has one version, /v1.
8 to 120 letters, digits or - _ : . on routes that create money movements. A retry with the same key and request returns the first answer instead of doing it twice.
Required on all request payloads containing POST, PATCH, or PUT body data.
All 28 API Resources
Click any resource below to inspect its schema fields, object representations, and endpoint methods.
Payments
Hosted checkout sessions (checkout.rafiqpay.net/c/{id}). The customer pays by card, by bank transfer to a one-time account, or from their rafiqPay wallet, and your balance is credited when the payment is confirmed.
The canonical record of every payment attempt across Checkout, Direct Debit Mandates, and Virtual Account inflows.
Full or partial refunds of succeeded charges.
Bank transfers to a checkout’s one-time account that were the wrong amount, or arrived after it closed. Each is held out of your available balance until you accept it as a payment or return it to the customer.
Customer profiles linked to charges, subscriptions, wallets, and mandates.
Cards customers saved with your business at checkout, with their consent. Charge one without the customer present. The card number and the token used to charge it are never returned.
No-code shareable payment links (/pl/{slug}).
Invoices with line items, an optional VAT amount you set, and optional part payments.
Billing
Reusable catalog products and flat, per-seat, tiered, or metered prices.
Recurring customer subscriptions on flat or per-seat plans, with zero-penalty dunning.
Usage metering for pay-as-you-go billing. Not working yet: events are not recorded and usage is not billed.
Feature flags and quota entitlements computed from active subscriptions.
Wallets & accounts
Direct-debit mandates on a customer’s GTBank account. The customer approves on a rafiqPay page with a code from their bank; you then debit it, up to a total and between two dates.
Proposed embedded NGN wallets for your customers. Not built.
Permanent account numbers for your customers. Every transfer into one is credited to you as a charge from that customer, with the usual fee.
Connect
Proposed multi-party payment splits across connected accounts. Not built: no payment is split today.
Sub-merchant records for platforms and marketplaces. Records only for now: no invitation is emailed and no money is settled to them.
Cards
Proposed pre-funded virtual and physical debit cards with blocked merchant categories. Not live: no card processor is connected, so no real card is issued.
Verified individuals or employees eligible to hold issued rafiqPay cards.
Proposed card authorization holds and synchronous JIT decisions. Not built.
Platform
Your available balance, and the double-entry journal lines behind it.
HTTPS webhook listeners, signing secrets and deliveries. Today these are managed in the dashboard (Developers, Webhooks), where you can also send a test event and replay a delivery.
Proposed log of the events sent to your webhooks. Not built: there is no events API yet.
Test-mode-only routes to simulate payments and bank transfers in. The card, delivery and clock helpers are proposed. In test mode, a saved-card charge or mandate debit for an amount ending in 99 kobo is declined, and the mandate code is 123456.
Security & ownership
Configure approval thresholds, hold durations, and solo caps within your KYB tier bounds (ACCESS_RULES).
Read-only, append-only security and activity log entries (ACCESS_RULES §1).
Two-step ownership transfer initiation, acceptance, and cancellation. (Owner recovery has no API endpoint by design.)