When invoices are created
- Subscription renewal — at
next_bill_at, a new invoice opens for the next period - Plan change proration — when a customer upgrades or downgrades mid-cycle, a proration invoice records the adjustment
- Manual charge — if you issue a one-time charge via the API
Invoice states
| State | What it means |
|---|---|
open | Created, not yet paid. We’re trying to collect. |
paid | Fully settled — card charged or transfer matched. |
partially_paid | A transfer arrived for less than the full amount. Remaining balance is still owed. |
void | Cancelled before collection. No money moved. |
Advance vs arrears
Advance billing (default): invoice is created at the start of the period. The customer pays for June on June 1st. Arrears billing: invoice is created at the end of the period. The customer uses June’s service and gets invoiced on July 1st. Setbilling_mode: "arrears" when creating a subscription.
| Advance | Arrears | |
|---|---|---|
| Invoice created | June 1 (start of period) | July 1 (end of period) |
| Period covered | June 1 – June 30 | June 1 – June 30 |
| Due date | June 1 | July 1 |
| Common use | SaaS subscriptions | Usage-based, enterprise |
Partial payments
If a customer transfers ₦4,000 on a ₦5,000 invoice (500000 kobo total), the invoice moves topartially_paid. The remaining 100000 kobo (₦1,000) stays outstanding. When another transfer arrives from their virtual account, we apply it and close the invoice.
The transfer.partial webhook fires when a transfer settles an invoice partially. The invoice.paid webhook fires when it’s fully settled.
Retrieve invoices
Response