find or create by scope.contact
scope.total×scope.deposit_pct÷ 100
"Deposit, scope.title (scope.deposit_pct%)"
today + scope.net_days days
Safety
Idempotency key per runa retry can never create a second invoice
Retry on 5xx and timeouts3 attempts · 0.5s, 2s, 8s backoff · then pause run
If paused, tell #opsmessage includes the run link and the failing request
Test this step
Acme Studio proposal · Oct 7$2,400 · due Oct 22
Halden & Co. proposal · Oct 7blocked by check
History
v7Added approval branch for deposits over $10kSam · Oct 2
v6Due date uses net_days from the proposalSam · Sep 18
v5Kickoff channel named after clientAva · Sep 3