Retainer Payments
Written By Timothy Murenzi
Last updated 6 days ago
If your contract includes a retainer, your client can pay it right on the signing page. The payment flows through your connected Stripe account and lands as a credit on the client's Workroom record — automatically applied to their next invoice.
Setup (one-time)
Settings → Integrations → connect Stripe Connect
Approve Workroom in the Stripe OAuth flow
Wait for the "Connected" badge
You only need to do this once per studio. After that, every contract you send can collect a retainer.
On a contract
In the editor's details rail:
Set Retainer amount (e.g. 1500)
Pick Currency (USD default; CAD also supported)
Save
The signer sees a "Pay Retainer" panel next to the signature. They can pay before or after signing.
What the client experiences
Clicks Pay Retainer on the signing page
Stripe's embedded checkout renders inline — card form, billing address, ZIP
They submit; the page polls for confirmation
On success, the panel flips to Paid ✓; an invoice receipt is emailed automatically
What lands in Workroom
A new Invoice named "Retainer for [Contract Name]" with
RET-prefix on the invoice numberA Payment recorded against that invoice
A Credit of the same amount on the client's record, ready to apply to a future invoice
The invoice surfaces in Finances → Invoices with status Paid
When the retainer applies to an invoice
When you draft a regular invoice for that client, you'll see a Credits available card showing the retainer balance. Click Apply credit to deduct it from the new invoice.
Troubleshooting
"Pay link not ready yet — refresh in a moment." The Stripe invoice + share token didn't mint at send time (usually a Stripe Connect hiccup). Refreshing the signing page now triggers a backfill — the link should work on the next try.
The client paid but Workroom shows "Pending." Stripe's webhook may have been delayed. Open the contract's audit log; you should see
retainer_paidwithin a minute. If not, go to Finances → Invoices → find the retainer invoice → click Refresh from Stripe."This contract is missing a client." Retainers require a linked client (so the credit has somewhere to land). Open the contract, link a client via the details rail, and try sending again.
The retainer invoice shows Discount, Markup, Freight rows. It shouldn't — those are hidden automatically on
RET-invoices. If you see them, hard-refresh the page; some older browser caches need clearing.