04 / escrow
No one can say yes until the brand has paid
If creators can accept before the brand’s money has landed, they’re putting their name on a promise. My first version did exactly that. Offers went out as soon as the team was picked. That was the second shortcut I had to rip out.
Now a new campaign waits for funding. Offers are written, but nobody can accept yet. The brand pays the full budget through Stripe Checkout. Dozen then asks Stripe directly: is it paid, is it this brand and this campaign, and is it at least the full budget? One cent short and the campaign stays locked. With no Stripe key, a checkout never opens.
Only then can creators accept. Payment has its own check on top of “everyone posted” and “the numbers look normal”: the money has to already be in escrow. If a post’s engagement is more than 3.2× the creator’s usual, or under 0.15×, that creator’s payment is held. The campaign isn’t marked paid just so it looks finished.
When everything is clean, payment writes a ledger entry: who is owed what. Actually sending money to creators’ banks needs Stripe Connect, and that isn’t set up yet. Recording a payment I can’t send yet is honest. Telling a creator they’ve been paid would not be.