Billing & subscriptions
Recurring revenue on every rail.
Subscriptions on direct debit, wallet autodebit, and transfer invoices for feature phones, with card on file and USSD coming. When a charge fails, PediWave retries on the days your customers get paid and falls back to their backup method.
Test keys in five minutes. Billing runs in the sandbox with test clocks ↗ (opens docs site).
Every recurring rail
One subscription. A backup method behind it.
Take consent once, on the rail your customer prefers: a direct debit mandate authorised with their bank, or a wallet autodebit approved with their PIN. Each cycle is charged without asking again. Add a backup method and a soft decline on one moves to the other. Customers who refuse mandates get an invoice every cycle, paid by transfer. Card on file, saved with 3D Secure, and USSD invoices are coming.
Smart Dunning Coming
Retries on the day your customer gets paid.
Today, every failed cycle is retried by its decline reason on a schedule tuned to Nigerian salary days, inside a grace period, with a pay-now link the customer can use on any rail. Smart Dunning goes further for each customer: it decides when to retry, on which rail, through which channel, with what message, and when to stop or hand over to a person. It can warn a customer three days before a charge that is likely to fail, so the failure never happens.
Smart Dunning never retries a payment whose result is unknown, never exceeds your attempt limits, keeps quiet hours from 22:00 to 07:00 by default, and respects opt-outs. Every decision shows the signals behind it.
Plans and changes
Customers change plans. The invoice keeps up.
Upgrade or downgrade mid-cycle and PediWave prorates the difference, on the next invoice or straight away. Schedule a downgrade for the end of the period, pause collection and resume, or cancel at period end with access until then. Trials, coupons and promotion codes are built in, and you can preview the next invoice before it is charged.
- Proration
- Pause and resume
- Cancel at period end
- Trials
- Coupons
- Customer portal Coming
- Quotes Coming
{
"object": "list",
"customer": "cus_01J9ZK…",
"features": [
{ "key": "api_calls", "limit": 100000, "used": 64120 },
{ "key": "sso", "enabled": true }
]
} Metering and entitlements Coming
Bill for usage and gate features from one place.
Send usage events as they happen and PediWave adds them up per customer at the end of the cycle. Ask one endpoint what a customer may use, with limits and current usage, and get an event when a limit is reached so your app can block or offer an upgrade.
Instalments and repayments
Fixed payments on fixed dates, with late fees you set.
A payment schedule is a set of dated charges: school fees in three parts, a phone on instalments, a loan repaid monthly. Set the grace days and a late fee with a cap. Customers can pay an instalment early or clear the balance on a hosted page, and you get an event for every paid and overdue instalment.
Feature phones
Bill customers who have only a phone number.
For customers without a smartphone or a card, each cycle becomes an SMS invoice with a bank account to transfer to and a link to pay. Reminders go out on the due date and two days later. When the invoice is paid, the subscription stays active; when it is not, you decide what happens.
USSD codesComing Pay at an agentComing
Invoices by SMS ↗ (opens docs site)Automatic tax Coming
VAT on every invoice, at the right rate.
Register your tax numbers and PediWave adds the right VAT line to invoices and Checkout: Nigeria at 7.5 %, with other countries' rates as they launch, inclusive or exclusive of your prices. Export every tax transaction for your return. PediWave computes the tax; it does not file it for you.
What recovery looks like.
Three ways billing keeps revenue that would otherwise be lost.
Failures that never happen. Coming
A customer whose card expires this month, or whose wallet is short, hears from you before the charge, with a one-tap fix.
Recovered on another rail.
When the default method declines, the charge moves to the backup mandate or becomes a transfer invoice, instead of failing again on the same method.
Customers who stay.
A grace period keeps the subscription active while retries run, and a customer who pays late on the hosted invoice page is reactivated, not cancelled.
Build billing
A plan, a subscription, one webhook.
- Every cycle is an invoice and a payment intent, so refunds and receipts work as usual.
- Send an
Idempotency-Keyand a retried request never creates a second subscription. invoice.payment_failedtells you the reason and the next attempt.- Test clocks run a year of cycles in minutes in the sandbox.
import PediWave from "@pediwave/node";
const pediwave = new PediWave(process.env.PEDIWAVE_SECRET_KEY);
// ₦15,000.00 a month, in kobo, with a 14-day trial
const plan = await pediwave.plans.create({
amount: 1500000,
currency: "NGN",
interval: "month",
interval_count: 1,
trial_days: 14,
});
console.log(plan.id); // plan_01J9ZK… const subscription = await pediwave.subscriptions.create(
{
customer: "cus_01J9ZK3M7Q8R",
items: [{ price: plan.id, quantity: 1 }],
default_payment_method: "mdt_debit_01J9ZK", // direct debit mandate
backup_payment_method: "mdt_wallet_01J9ZK", // wallet mandate
collection_method: "charge_automatically",
grace_days: 3,
},
{ idempotencyKey: "sub-cus_01J9ZK3M7Q8R-commuter" }
);
// subscription.status === "trialing" POST /webhooks/pediwave
PediWave-Event-Type: invoice.payment_failed
PediWave-Signature: t=1761984000,v1=5257a869e7…
{
"type": "invoice.payment_failed",
"data": { "object": {
"id": "inv_01J9ZM…",
"subscription": "sub_01J9ZK…",
"amount_due": 1500000,
"attempt_count": 1,
"decline_code": "insufficient_funds",
"next_payment_attempt": "2026-11-04T08:00:00Z"
} }
} Questions about billing
Can customers pay by transfer each month instead of a mandate?
Can customers pay with a saved card?
How do you decide when to retry a failed payment?
Do you support NIBSS e-mandates? (Coming)
Can I test a year of billing before going live?
Can I bill a fixed number of payments, like a loan or school fees?
What does billing cost?
Related products
Bill on the rails your customers actually use.
Start in test mode today. Live billing follows verification.