A server-side block. If paid_amount is above zero, delete returns a 409 with a plain-English explanation: void it instead, or reverse the payment first if it was never really received — then the delete is allowed. The delete action is also disabled in the row menu when money is attached.
Also called: can't delete invoice with payments · orphan payment · money attached to nothing
- 1The correct route loads the invoice, reads paid_amount, and refuses if it is above zero.
- 2The refusal text names both alternatives rather than just saying no.
- 3Reversing every payment on the invoice clears the block.
Deleting an invoice that has already taken money leaves the payment attached to nothing and the books unable to reconcile — and it is the one mistake here whose consequence is invisible at the moment it is made. A paid invoice cannot be deleted. The payment has to be reversed first, with a reason, which puts the correction on the record rather than hiding it.
- Orphaned payment rows created by deleting the invoice they were received against.
- Books that silently stop reconciling.
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 →