A void is not deletion; it is a recorded decision that must block future collection.
What the public implementation shows
GovPayments exposes a dedicated bill-void endpoint that requires authority access and a description, rejects incompatible states and paid bills, updates the status projection, and appends a BillVoided event to the hash chain.
The command changes the collectible state of an existing obligation while retaining the bill and its event history. This is the implementation fact behind the note; the architectural reading begins from that visible boundary rather than from an assumed production story.
Operating principleA void is not deletion; it is a recorded decision that must block future collection.
The decision behind the mechanism
The endpoint models voiding as a constrained transition with explicit business evidence instead of removing the record or overwriting its history silently.
Deleting a mistaken bill destroys reconciliation evidence; allowing a paid bill to be voided can contradict an already accepted financial event. The mechanism matters because it gives that failure a named boundary, durable evidence, and a controlled response instead of leaving the outcome to timing or operator guesswork.
- Require authority-scoped authentication.
- Reject missing or empty void descriptions.
- Allow transition only from documented bill states.
- Append a tamper-evident event with the decision context.
How the control should be operated
Operations should require a meaningful reason, record the actor and authority context, alert on unusual volume, and keep voided bills visible in audit views.
Citizen payment is blocked for the invalid obligation while reviewers can still reconstruct why and when the decision occurred. The reusable lesson is not to copy a class or endpoint in isolation, but to preserve the relationship between identity, state, authority, evidence, and operational ownership.
Invalidate obligations through a durable, reasoned state transition—never by erasing the bill.
Inspect the basis for this note.
These links point to public implementation evidence or authoritative documentation used for the claims above. The interpretation is mine; institutional code and ownership remain with their respective owners.
- 01Bill void endpoint
The endpoint enforces description, state, payment, and hash-chain controls.
Open source evidence - 02Bill lifecycle model
The domain model defines Voided state and the BillVoided event type.
Open source evidence