Proposals & Invoices ยท Article 5.10
What you can change after `Send` โ withdraw, resend, edit, amend
After clicking `Send`, the proposal becomes a legal artefact and many fields lock. The right action depends on whether the client has signed yet: withdraw before signing, amend after.
The lifecycle has two clean states for editing: Draft (everything editable, no audit obligation) and post-signed (Amendments only). The thin slice in between โ Sent and Viewed โ is where most "I made a typo" questions arise. The available actions depend on the exact status.
Step by step
Identify the current status.
Check the badge on the dashboard or the proposal detail banner.
If Draft
: just edit the wizard freely. Nothing has been sent.
If Sent or Viewed
: pick withdraw or resend. - Typo or scope change โ
Withdraw and edit. Old link 404s; new draft pre-filled. - Email didn't arrive โResend. Same content, fresh PIN.If Signed onward
: open Amendment wizard at
/proposals/{id}/amend. See article 7.3.
the Actions menu changes per status. On Sent/Viewed, you see Resend and Withdraw and edit. On Signed+, those are replaced with Issue final invoice, Mark as paid manually, and Create amendment. The Timeline records every action with timestamp and user.
Why this works this way
The locking model. When you click Send, several things happen in one transaction:
1. The proposal PDF is rendered and uploaded to R2 with legal_hold enabled.
2. A sequential proposal number (PRO-2026-NNNN) is reserved against your year counter (atomic per apps/proposals/models.py:DocumentCounter).
3. The proposal status flips to Sent and sent_at is set.
4. Several fields are flagged read-only in the model layer: number, language, currency, vat_breakdown, line_items_snapshot, client_address_snapshot. These are the fields the law requires to be immutable on a sent invoice/proposal under EU VAT Directive Art. 226 and ยง14 UStG.
Withdraw and edit (status: Sent or Viewed). Available before signing. Click Actions โ Withdraw and edit on the proposal detail page. Effect:
1. The original public link is invalidated immediately. Anyone visiting it (with the old PIN or without) sees: "This proposal has been withdrawn by the sender". The original PDF stays in your Documents (legal_hold), but the link goes 404.
2. A new draft is created with all current values pre-filled. The original proposal moves to status Withdrawn (terminal) on the Timeline.
3. The new draft gets a fresh proposal number when you next click Send. Both numbers are preserved in your records โ the audit trail shows the chain (PRO-2026-0042 โ withdrawn โ PRO-2026-0043 sent).
Resend (status: Sent or Viewed). Available before signing. Click Actions โ Resend. Effect:
1. A fresh email goes out with a new 4-digit PIN. The old PIN is invalidated. 2. The proposal itself is unchanged โ same number, same content, same PDF. 3. Useful when the client says "didn't get the email" โ the second copy often lands even if the first hit spam.
After signing (status: Signed onward). No edits to the proposal. The only legitimate path to change scope, price, or timeline is an Amendment โ a formal change-order that the client signs separately. See Section 7. Amendments produce their own document chain (addendum + storno + new final invoice or credit note depending on the delta), preserving the original signed Service Agreement intact.
Why no "edit and re-sign" shortcut? Because under EU contract law and eIDAS Art. 25(1) (legal effect of an electronic signature), modifying a signed agreement post-signature would invalidate the audit chain. The IP, User-Agent, server timestamp, and signer's typed name captured at signing all reference the document state at that moment; rewriting the document silently would orphan that evidence. It would also fail Art. 226 immutability for the corresponding invoice. Amendments are the EU-compliant way: they preserve the original AND record the change AND get a fresh signature on the change.
The full action availability matrix:
| Status | Withdraw | Resend | Edit fields | Amend | Delete |
|---|---|---|---|---|---|
| Draft | n/a | n/a | All fields | n/a | Yes (hard delete) |
| Sent | Yes (โ Withdrawn) | Yes (new PIN) | No | No | No |
| Viewed | Yes (โ Withdrawn) | Yes (new PIN) | No | No | No |
| Signed | No | No | No | Yes | No |
| Deposit paid | No | No | No | Yes | No (soft-delete blocked anyway by no-pending-money rule, but legal) |
| In work | No | No | No | Yes (use ฮ_REFUND for refund) | No โ HTTP 409 `in_work_requires_amendment` (per [D-125]) |
| Awaiting final payment / Paid / Completed | No | No | No | Yes | No |
| Declined / Expired / Withdrawn | No | No | No (terminal) | No | No |
Troubleshooting
Keep reading
Lifecycle
Status: Sent โ the proposal is in your client's inbox
You've clicked `Send`. The PDF is rendered, the email is on its way, the proposal number is assigned, and the audit trail starts here. Now you wait โ until the client opens it (`Viewed`) or signs (`Signed`).
Lifecycle
Status: Viewed โ your client has opened the link
The client clicked the email button, entered the PIN correctly, and saw the proposal. Status flips from `Sent` to `Viewed` automatically. From here, the next state is `Signed` (or `Declined`).
Lifecycle
Status: Signed โ legally binding, audit trail captured
The client clicked Sign. Clozo collects an eIDAS-compliant evidence stack, generates the signed Service Agreement PDF, fires confirmation emails to both parties, and queues the deposit invoice. The proposal is now a contract.
Proposals & Invoices
Creating an amendment (the 4-step wizard)
The amendment wizard at `/proposals/{id}/amend` walks you through line items, reason, preview, and email โ in that order. Five minutes for a simple change, ten minutes for a complex one. The client doesn't see anything until you click Send on Step 4.
Proposals & Invoices
When to use an amendment (vs a new proposal vs withdraw)
Three paths exist to change a deal: amend it, withdraw and resend, or start a new proposal. Pick the wrong one and you'll either break the audit trail or scare the client. Here's the decision tree.