1. Find the product
Three reads, top down.amount is set for a fixed-price product — a data bundle — and null when the customer chooses.
Catalog
ids are Sakawave ULIDs and are the only accepted addresses. Read them from the catalog and store them; a slug is display text.2. Validate the customer
This is the step that matters.- Show
customer.customerNameto the payer. A wrong meter number is a valid meter number belonging to someone else. - Show
totalDebit, notamount. The charge is on top. - Move quickly.
expiresAtis ten minutes out.
"5000.00", a decimal string. Not "500000". Bill payments are the one service in this API that does not use minor units.
3. Pay
submitted or pending is just as normal as confirmed — the biller may take a moment.
4. Deliver the token
Where a biller issues a credential — a prepaid electricity token, most often — it arrives intokenData once the payment is confirmed.
Four things to know
- Amounts are decimals here.
"5000.00", not"500000". - The success state is
confirmed, notcompleted. - A failure refunds itself. Sakawave reverses the debit; you do not claim it back.
- An enquiry lasts ten minutes and is spent by one payment.
If it failed
Next
- Airtime, data, and utilities — the families behave differently
- Use cases — retries, reconciliation, token delivery