Custom-order money is a liability with a schedule
A shop gets paid in the wrong order: a deposit at signing, a draw at templating or production release, the balance at delivery. None of it is earned when it lands. Book it as revenue on receipt and the ledger throws a party every time the sales pipeline is hot, then starves through the months the benches are actually full. We post customer money to a deposit liability by job and release it to revenue as each milestone is earned, so the profit line describes production, not signatures.
The by-job schedule matters as much as the treatment. It is the number that says how much of this month's bank balance still belongs to undelivered kitchens, and it is the first thing we reconcile at every close.
Margin is decided at the saw
Material comes into the shop as sheets and leaves as parts, and the difference is yield. A job costed at the parts that shipped, rather than the sheets it consumed, flatters every order: the waste has to land somewhere, and when it lands in overhead you can never see which jobs created it. So the job card gets charged for sheets consumed, offcuts included, plus edge banding, hardware drawn from stores and finishing consumables, all against the material budget the estimate promised.
The shop already owns half the data. Cabinet Vision, Mozaik or CutList Plus can say what a job should have consumed; supplier invoices coded through Dext into QuickBooks Online say what the shop actually bought. Our work is making those two numbers meet on one job card, month after month, until yield variance is a figure you review instead of a suspicion you carry.
What the job card has to carry
Materials are the loudest cost, but they are rarely the whole story of a kitchen that missed its number. The card also holds bench hours, machine time and everything that happens after the truck leaves, including the hours nobody ever invoices.
| Cost line | What the job card must show |
|---|---|
| Sheet goods | Sheets consumed including offcut, not parts shipped |
| Hardware & banding | Drawn per job from stores, not buried in a monthly pile |
| Finishing | Booth time and consumables charged to the piece that used them |
| Shop drawings | Design and engineering hours logged, whether billed or absorbed |
| Installation | Crew days, travel and the second trip the site made necessary |
| Rework | Remakes and callbacks charged to the job that caused them |
Shop-drawing hours get their own line because they are the cost most shops absorb without measuring. Whether to bill them is a pricing decision; tracking them is an accounting one, and it starts on this card.
Builders pay differently than homeowners do
Channel shapes the bookkeeping too. A builder account pays on its own terms, from its own statements, sometimes issuing slips on what it paid you; a designer buys at trade pricing across a long drawing loop; a retail client funds the job by draw. The receivable ledger has to age each of them honestly, and builder remittances have to be matched against specific invoices rather than dumped into the account balance, or a short-paid delivery hides for months inside a busy ledger.
A close that matches the order book
At month-end the books answer four questions: what sits in the deposit liability and for which jobs; what is in work-in-progress on the floor; what revenue was earned; and what the delivered jobs actually returned after installation. Payroll for the bench and the install crew, HST filings built from clean data and the year-end file all run inside End-to-End Accounting — bookkeeping, payroll, financial reporting and tax filing under one roof, quoted in writing after a free 15-minute discovery call.
Those statements do double duty. The same close that tells you a job's true margin is what an equipment lender reads when the CNC financing application goes in, and clean deposit-liability reporting is the first thing they check. We work with cabinet and millwork shops across Mississauga and the GTA, from one-bench operations to shops supplying builders by the subdivision. Start at contact before the next close.
