Lifecycle · Article 2.6
Status: Deposit paid — work can start
The deposit landed (Stripe webhook or manual confirmation). Clozo flips the status, queues the deposit receipt PDF, and starts a behind-the-scenes job to pre-render the final invoice. You can begin the work.

Where this fits in the lifecycle
Draft
Only you can see this. Edit anything.

Sent
Email landed in the client's inbox.

Viewed
Client opened the link — awaiting decision.

Signed
Legally binding. Audit trail captured.

Deposit paid
Money in escrow. You can start work.

In work
Project running. Final invoice ready when you're done.

Paid
Final invoice settled. Just one click left.

Completed
Closed. Archived. You did the thing.

For most freelancers, this is the moment the project officially starts. You have signed paper, deposit money in the bank, and your client is committed. Clozo's UI shifts subtly: the dashboard banner now says "Deposit paid — work in progress", the action panel surfaces buttons relevant to the work phase (mark milestones, issue final invoice, mark complete), and reminder schedules are paused.
Step by step
Deposit confirmed.
Either Stripe webhook lands (automatic, ~2 sec after card success) or you click
Mark deposit as paid manuallyfor SEPA / cash / out-of-band (you'll be asked for a reference note and date).Status flips to
Deposit paid.Timeline event recorded with payment method and amount. Receipt (REC-) generated and emailed automatically.
Background: final invoice pre-renders.
No UI indication needed; you'll see the result when you next click
Issue final invoice.Status auto-advances to
In work.Once
prepare_final_invoicesucceeds, the status moves on. If it fails 5 times, status stays atDeposit paidand a recovery button appears.Begin the work.
Track time, hit milestones, communicate with the client. Clozo doesn't track work-in-progress (we're not a project management tool); when you're done, click
Mark as complete and issue final invoice.
Amber Deposit paid badge transitions to amber In work automatically. Timeline shows: deposit payment event, receipt generated event, final invoice pre-rendered event, status changed event. Action panel transforms: deposit-related buttons disappear, work-phase buttons appear (Issue final invoice, Mark as completed, Track time on this project).
Why this works this way
There's an asynchronous flow that kicks in here that most users don't notice. The instant the deposit-paid event fires, Clozo enqueues a Celery task prepare_final_invoice.delay() which renders the final invoice PDF (Schlussrechnung) in the background and stores it in R2. Why pre-render? Because when you later click Issue final invoice and the email needs to go out, the heavy PDF generation is already done — the email task just attaches the pre-rendered file. This avoids a 30-60 second delay (and possible Gotenberg failures) at the moment the client is waiting for the email.
If prepare_final_invoice fails (e.g., Gotenberg flake), it retries 5 times with exponential backoff. If all five fail, the proposal stays at Deposit paid (rather than auto-transitioning to In work), and a Retry final invoice button appears in the Actions menu. Sentry also fires an alert to ops.
Troubleshooting
Keep reading
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.
Lifecycle
Status: In work — deposit settled, project running, final invoice ready
You're between the deposit and the final payment. The final invoice is pre-rendered and ready to issue when you finish. Clozo doesn't track project progress here — you do — but it's listening for you to say `done`.
Proposals & Invoices
Marking a payment as paid manually — for SEPA, cash, wire, anything outside Stripe
When a payment lands outside the auto-detected channels (SEPA bank transfer, cash, foreign wire), use `Mark as paid manually` to record it. Clozo creates the receipt, fires confirmation emails, and preserves the audit trail.