Billing periods
When you create a plan, you set abilling_period:
| Period | Description |
|---|---|
daily | Resets every calendar day at midnight UTC |
weekly | Resets every 7 days from the subscription start date |
monthly | Resets on the same day of month as the subscription start |
quarterly | Resets every 3 months |
annually | Resets every 12 months |
The billing cycle timeline
What Monigo does at period end
When a billing period closes, Monigo executes the following steps automatically:- Aggregates usage — All events ingested during the period are rolled up per metric.
- Applies pricing — Each price rule is evaluated against its metric’s aggregated value.
- Generates a draft invoice — Line items are created for each metric/price pair.
- Finalizes the invoice — The amounts are locked and the invoice moves to
finalizedstatus. - Triggers a charge — Monigo calls your connected payment provider (Paystack, Flutterwave, or Monnify) to collect payment.
- Delivers webhooks —
invoice.finalized,invoice.paid(orinvoice.payment_failed) events are sent to your webhook endpoint.
In test mode, invoices are generated and finalized but no real charge is submitted to your payment provider. This lets you inspect the full billing cycle without affecting real customers.
Trial periods
Plans can include a trial period. During a trial:- The subscription is
activeand events are ingested normally - No invoice is generated until the trial ends
- When the trial period expires, the first regular billing period begins
trial_period_days) and apply to all new subscriptions created on that plan.
Manually generating invoices
You can generate a draft invoice at any time without waiting for the period to end — useful for previewing what a customer would be charged based on their current usage.draft and does not automatically trigger a charge. You must call POST /v1/invoices/{id}/finalize explicitly to lock amounts and initiate collection.
Event attribution
Events are attributed to the billing period in which theirtimestamp falls — not when they were ingested. This means you can ingest events late (up to 90 days backdated) and they will be attributed to the correct period.
Related
- Subscription Lifecycle — how subscriptions start, pause, and end
- Invoice Lifecycle — the full invoice state machine
- Pricing Models — how usage is priced within a period

