# Building Billing as a Lifecycle, Not Just an Invoice Screen
An invoice page is the visible part of billing, but most of the difficult work happens underneath it.
While building billing for Humzio, we treated an invoice as a lifecycle rather than a static document.
The lifecycle matters
Invoices move through states such as draft, open, partially paid, paid, overdue and void. Generation needs to be repeatable without accidentally creating duplicates. Pricing changes can require proration. Finalized invoices need stable snapshots so historical documents do not change when current product data changes.
Delivery is part of the lifecycle too. Email delivery, PDF generation, resend history and customer access all need to agree on what the invoice represents.
The lesson
Financial workflows benefit from explicit states, idempotent operations, immutable historical snapshots and strong audit trails. Designing those concepts first makes the user interface much easier to build correctly.