Type DELETE to remove a draft

A draft invoice can be removed outright, but only after typing the word DELETE — and only while it is still a draft.

What it is

A typed-confirmation gate in the editor. Drafts can be hard-removed along with their line items and payment rows; anything that has been sent uses void or soft delete instead so the audit trail survives.

Also called: delete draft invoice · confirm delete · accidental delete

See it
Type DELETE to remove a draft
Prepared for
Ivy Brubaker
1140 Ridge Line Rd · Fair Play
Shell package$28,954
Concrete & site$8,406
Doors & windows$5,604
Trim & finish$3,736
Total
$46,700
Signature
The delete confirmation with an input where DELETE must be typed before the red button enables. src/components/invoices/InvoiceEditor.tsx. Sample data — no customer information appears here.
How it works
  1. 1The action is only offered when status === 'draft'.
  2. 2deleteInvoice re-checks the status server-side and refuses anything else.
  3. 3Children (line items, payments) are removed first so a partial failure leaves no orphan rows, and failures are logged rather than swallowed.
Why we built it

An invoice that has been sent is a document the customer already holds, so quietly removing it is not a correction — it is a hole in the record. Only drafts can be deleted; anything sent or beyond is voided instead and keeps its audit trail. Even a draft deletion asks for the word to be typed out in full, so a mistap cannot wipe an invoice somebody spent twenty minutes building.

The problem
  • One stray click destroying an invoice.
  • Abandoned drafts cluttering the list with no way to remove them.
Sound familiar?
What you get
Drafts can be cleaned up without leaving void records everywhere.
Sent invoices are structurally protected from hard deletion.

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →