Skip to main content
Every billing period produces one invoice per subscription. An invoice starts as a draft, gets finalized when amounts are locked, transitions to paid when the charge succeeds, and can be voided if something goes wrong. This guide covers each state and the transitions between them.

Status overview


Draft

A draft invoice is created automatically at the end of each billing period, or manually via the API. In draft state:
  • Line items reflect the latest aggregated usage
  • The invoice can be regenerated (if usage was updated)
  • No charge has been attempted
Generate a draft invoice manually:
Inspect a draft invoice:
The response includes line_items — one entry per metric/price pair — so you can verify each charge before finalizing.

Finalized

Finalizing locks the invoice amounts. Once finalized:
  • Line item amounts cannot be changed
  • Payment collection is triggered automatically
  • The invoice.finalized webhook fires
Finalize an invoice:
In the automatic billing cycle, Monigo finalizes invoices for you. You only need to call finalize manually if you generated a draft invoice yourself and want to trigger collection.

When Monigo successfully collects payment from your configured provider, the invoice moves to paid. The invoice.paid webhook fires and paid_at is set. If collection fails (insufficient funds, expired card, etc.), the invoice remains finalized and the invoice.payment_failed webhook fires. Monigo does not automatically retry — you should listen for this webhook and take action (notify the customer, pause the subscription, retry after they update their payment method). List paid invoices for a customer:

Void

Voiding cancels an invoice without collecting payment. Void a draft or finalized invoice when:
  • The invoice was generated in error
  • The customer should not be charged for that period
  • You need to issue a corrected invoice (void → regenerate)
A paid invoice cannot be voided. If you need to reverse a collected payment, issue a refund directly through your payment provider (Paystack, Flutterwave, or Monnify).
Void and regenerate (correcting an invoice):

Webhook events