Issuing takes the next number in this business's own sequence and locks it. Sequences never share across businesses and never skip.
| Number | Customer | Due | Total | Status |
|---|
Click a row to open that invoice in the preview — exactly as it was sent, not as your prices are today. Cancelling an invoice voids it; the number stays used, because a gap in the sequence is what tax rules forbid.
| SKU | Item | Unit | Unit price | Stock |
|---|
Edit any cell directly. Item codes are generated once and stay fixed — they're what a re-import matches on, so changing them would create duplicates. Changing a price here does not change invoices already issued; each line keeps the price it was sold at.
The PDF is built here in your browser, which is why it costs nothing to produce.
Every decision below is load-bearing. Click through the app above and you're testing each one.
Switch the business in the top bar. Products, branding, template and invoice sequence all change; nothing leaks across. Your own business is just tenant #1 — you sign up through the same door your customers will.
Import CSV asks which of their columns is the price. Nobody's spreadsheet will ever match your schema. Re-importing updates by SKU instead of duplicating.
Adding an item copies its name and price onto the line. Raise a price in Inventory and last month's invoice still shows last month's price — because it has to.
Everything is held in pesewas/cents and only formatted at the edge. Floats eventually hand you a total that's off by one unit and you never find it.
Issuing takes the next number from that business's own counter. In production this happens inside a database transaction — two people clicking Save at once must not collide.
Four looks, one data object. The real renderer feeds the same object to a headless-Chrome HTML→PDF pass, so a new template is a CSS file, not a feature.
The green button opens WhatsApp with a written message and a link to the invoice. Free, no approvals, works today. Attaching the actual PDF needs the Meta Cloud API, an approved template and per-message fees — that's a paid add-on later.
State lives in your browser, not a database; the PDF is a browser print; the invoice link is a placeholder. Everything else is the real shape of the thing.