A cabinet shop can show a healthy profit for the quarter and still sweat the payroll run in week three. The two facts don't contradict each other: on a custom job, the money leaves in week one and comes back in week eight, and until it does, you're the bank. Here's a payment structure to put in your next contract, plus the timing moves that bring cash home sooner on every job.
Walk through the money on a typical kitchen. Lumber, sheet goods, hardware, and components get paid for in the first two weeks. Labor gets paid every Friday for the whole build. The customer's balance arrives after install, and if a GC sits in the middle, 30 days after that. On an eight-week job, you can be out of pocket for two months on the biggest project in the shop.
Lumpy revenue makes it worse. When one install is a month's income, one slow payer can move payroll for the whole shop.
None of this is a pricing problem. Raising your margin changes how much comes back; it does nothing about when.
The biggest single fix is splitting payment into milestones tied to events the customer can see. A structure that works for most shops:
Adjust the percentages to your jobs, but keep the shape. Front-loaded, tied to visible events, with a tail too small to be worth withholding.
The fear is that firmer terms cost work. In practice, milestone billing is how the rest of the trades already operate; GCs bill this way, and so does every builder your customer has hired. A customer who bristles at paying for materials sitting in your shop in week two is showing you, cheaply and early, what week eight was going to look like.
Put the schedule in the quote and the contract, printed, before anyone signs. Terms in writing read as how the shop works. The same terms raised over the phone mid-job sound like a favor you're asking.
Milestones pull money in earlier. The other half of the fix is holding money back until it's covered. Order materials when the deposit that pays for them clears, not the week you're feeling confident about the pipeline, and let the payment schedule set when you buy.
Above all, never buy this job's materials with the last job's money. The treadmill where each new deposit quietly backfills the previous job feels workable for months, right up until one signing slips and two jobs' worth of bills land on zero deposits.
Here at Eagle, the pattern we notice with our longest-running trade customers is that they quote us before they quote their own customer. A component quote comes back within a couple of hours and holds for 30 days, so by the time they're sizing a deposit, the doors and drawer boxes are a known number instead of an estimate — and the deposit gets sized to actually cover it. Newer shops tend to work the other way around: sign the job, size the deposit by feel, then find out the component cost afterward and hope the two line up.
The other habit worth copying is how those same shops handle changes. On our end, once an order reaches the production floor, any change carries associated costs — that's not a penalty, it's what the change actually costs by that point. The shops that stay out of cash trouble run the same rule with their own customers: specs lock at signing, and anything the homeowner rethinks in week four comes back as a written, priced change order before any material moves. The ones that struggle are the ones we hear it from — a mid-production call asking to resize an order because their customer changed their mind, with nobody downstream paying for it. A change your customer requests but doesn't pay for isn't a change order; it's a discount you didn't plan to give.
Every week a job sits in the shop is a week your material money sits in it too, along with every milestone you can't invoice yet. Cycle time works directly on cash: the same margin collected two weeks earlier means two fewer weeks of floating payroll out of your own pocket.
Components are the easiest weeks to find. Built in-house, doors and drawer boxes stretch the middle of every job and turn into an open-ended stretch of paid bench hours. Ordered out, they arrive while casework proceeds, and they swap that labor spend for a fixed number you had at quote time. Buying custom cabinet doors against a firm quote from a supplier like Eagle Woodworking means the cost was already known when you sized the deposit, quotes come back within a couple of hours, and the one-to-two week turnaround keeps the job moving toward its next payment instead of parking between milestones.
GC work puts a formal layer between you and the money. Net-30 means you're financing the GC's schedule, so take those terms only when the volume earns them, price the wait into your number, and get a materials payment released up front, in writing, before the job starts. A GC who won't do either has just told you the job's real margin.
Retainage brings the classic trap: a $200 touch-up holding a $4,000 final payment. Write the fix into your terms. At completion you invoice everything except the value of the open punch items, so a scratched door holds back the cost of that door, never the whole check.
And bill fast, everywhere. Invoice at delivery, the same day, every time. Slow-paying customers get a head start from slow-billing shops, and net-30 that starts three weeks late is net-51.
Don't renegotiate jobs already in the shop. Write the four milestones into the next quote, and hold the line on ordering only against cleared deposits. Two or three jobs in, deposits stop backfilling old bills and start funding the work they belong to. On the buying side, Eagle Woodworking builds custom cabinet doors and dovetail drawers to spec, with quotes back in hours and turnaround fast enough to keep your milestones moving.
Most shops land between 30 and 50 percent, and custom work justifies the high end because the product can't be resold if the customer walks. The better question is coverage: size the deposit so it pays for every material and component on the job plus a share of early labor. If 40 percent doesn't cover your materials, the answer is a bigger deposit, never your own cash.
Apply the new terms to new quotes only and leave current jobs alone. Print the schedule on the quote as standard payment terms rather than raising it in conversation, and tie each payment to something visible: signing, materials in the shop, delivery, completion. Presented that way, most customers sign without comment, because every builder and GC they've dealt with already bills on milestones.
Put a modest monthly late fee in the contract, mostly for the signal it sends that invoices carry dates that matter. Your real protection sits elsewhere: a final payment small enough that withholding it gains the customer nothing, and a firm rule that delivery and install don't happen while an earlier milestone sits unpaid. A fee clause you rarely enforce still changes behavior; an unprotected final payment does not.
Accept net-30 only with a materials payment released before work starts and the cost of waiting built into your price, both confirmed in writing. Then track what each GC actually does, because some pay at 30 days and some pay at 60 with apologies. Weight your future bids accordingly, and treat a GC who reliably pays on time as worth a sharper number than one who doesn't.
The spending moves earlier, but into the window your deposit was sized to cover, which is exactly where you want it. In exchange, an unpredictable stretch of paid bench hours becomes a fixed cost known at quote time, and the job reaches its delivery milestone weeks sooner. Money out is planned instead of discovered, and money in arrives earlier.