A deposit that blocks the spend and nothing else
An unpaid deposit stops the agent runs. It does not stop the customer being set up, their evidence being filed, or a question list being confirmed — because what a deposit protects is the money, not the relationship.
Bid support is sold as a fee, and the fee usually has a deposit in front of it. The software question is what an unpaid deposit should stop.
The easy answer is everything, and it is wrong in a way that costs the provider the engagement. Block everything and the first thing you block is the customer uploading the evidence the work depends on — so the deposit becomes a barrier to getting started, and the provider ends up waiving it in order to make any progress at all.
So the gate is narrow and deliberate: an outstanding deposit blocks agent runs. A person can still open the customer’s workspace, file their policies and certificates, confirm the declarations only they can confirm, and have a question list confirmed. What is blocked is the spend, because an agent run costs the provider real money the moment it runs, and running one against an unpaid deposit is lending money nobody agreed to lend.
The deposit raises itself when the engagement is activated. Not when it is opened, because a draft engagement’s terms are not agreed and billing against terms nobody agreed is how a dispute starts. And not on the first agent run either, because the point of a deposit is that it is paid before the work rather than discovered when somebody presses draft.
A waiver is treated as settled. A provider who knows their customer will sometimes start on a handshake, and a platform that made that impossible is one they would work around. The reason is mandatory and that is the point: a waiver with no reason is indistinguishable from a deposit nobody chased, and the difference matters three months later when somebody asks why this customer never paid one.
The rest of the billing follows the same principle of charging at the moment the thing happened. A stage fee is raised on sign-off, which is when the work is agreed delivered — raising it when a stage opens charges for work not done, and raising it when the next one opens makes the last stage free. A balance is raised on completion only, because a cancelled engagement has not delivered and what is owed on a cancellation is a commercial conversation somebody has, not an invoice software decides to send.
And pausing is a status rather than a type, so any engagement can stop and start. While it is paused nothing is billed, no agent runs, and every bid stays exactly where it was.
See the record being made rather than described.
Launch the demo environment