Skip to content

Universal Invoice Builder — implementation status ​

Last updated: 2026-09-29. v1 scope: standard invoices in custom mode; quotes/recurring/import stay inventory-style.

Done ​

AreaNotes
Schema & migrationinvoice_mode, layout_config, InvoiceBuilderTemplate
APICreate/update validation, builder templates, list includes invoice_mode
Admin create/editInventory / Custom toggle, builder panel, templates
TotalsCustom subtotal from currency column + shipping − advance
Detail & duplicatePreview table, duplicate with full fetch
PDFServer template + invoicePdfFetch.js; client fallback in lazy InvoiceDetailClientPdf.jsx (~880 lines split from detail page)
Email, portal, payCustom HTML/tables via invoiceCustomerSummary / pay page
Export / import / ledgerMode + line summary; import notice
List UXFolder hints, Custom layouts chip, customer ledger badge + chip
Testsnpm run test:invoice-builder (9 tests)
QA matrixdocs/plans/universal-invoice-builder-qa.md
Handoffdocs/plans/universal-invoice-builder-v1-handoff.md
Hindi guidedocs/hi/guide/invoice.md (builder + list UX + PDF)

Optional / follow-up ​

ItemPriority
Playwright E2E depth (publish custom invoice end-to-end)Low — INVOICE_BUILDER_DEEP=1 smoke + manual Flow A in e2e doc

v1 complete ​

See universal-invoice-builder-v1-handoff.md for sign-off steps. Further “next” work is new scope (quotes/recurring custom, full Playwright publish flow). | Custom mode on quotes/recurring | Out of v1 |

Verify locally ​

  1. Run migration + restart Backend.
  2. cd Backend && npm run test:invoice-builder
  3. Walk docs/plans/universal-invoice-builder-qa.md
  4. Optional: npm run invoice-builder:smoke --prefix qa-tests

Beentara — Business management made simple.