For service shops
The per-job ledger, the parts receipts, and the seasonal cash flow, retired.
The bookkeeping loop adapted to the independent-trades interior — per-job revenue recognition reconciled the night of completion, per-job past-due chasers scripted to the day-of-late the operator wires up once, parts-versus-labor sales-tax split made on the wire-up, and a per-season margin digest pegged to the shoulder-season calendar each trade carries (HVAC, plumbing, auto repair, cleaning). The full wire-once beat is on /how-it-works. The Pro tier ($243/mo) is where the per-job past-due chaser + parts-versus-labor sales-tax split + per-season margin digest ship; the per-job revenue recognition beat ships below that. The /receivables pillar walks the per-job chaser script one cadence close (Stillpost runs the same day-of-late script against per-customer tone the books already carry), and the /sales-tax pillar walks the parts-versus-labor carve-out one state at a time.
The truck-bay billing tax, named plainly.
There is another tax the independent service-shop owner pays — one the bookkeeping books won’t show on a trial balance, but the operator’s Saturday-morning hours carry all the same. It is paid in per-job invoice-clipboard walks and parts-supplier delivery check-ins and the per-job bay-rope the office manager is reading at six-thirty: the per-job invoice the tech wrote on a clipboard at completion, the per-job materials line the parts manager pulled for the truck before the tech rolled out, the Johnstone delivery the parts counter signed at 7:42am, the change-order the customer signed mid-job the office forgot to upload, the per-job card payment the customer handed the dispatcher before the tech pulled out of the bay, the sub-contracted tech W-9 the owner was chasing on a Wednesday morning because the tech worked a job in California and a job in Massachusetts last quarter, and the shoulder-season margin the HVAC shop was carrying against the cooling-season margin the owner was supposed to be accruing on a spreadsheet they built on a Sunday night.
The number is right about eighty percent of the time. The other twenty percent it’s wrong by enough that the operator finds out which one was right the first time a line of credit review goes sideways — the parts-versus-labor line item the parts manager’s costing ledger was missing so the parts tax booked against the labor rate, the per-job materials cost the parts-supplier rolled a price on and the books weren’t updated for (a refrigerant line item, a brake-pad SKU, a fitting the plumbing supplier rolled the case-pack on), the per-job card payment the customer handed the dispatcher before the tech pulled out of the bay but the processor batch posted the next morning against the wrong per-job invoice, the per-completion homeowner job the dispatcher wrote up the per-job invoice for but the books were accruing the sales tax against the contract rate because the parts-versus-labor split the office manager was tracking by hand booked every per-completion line item as parts.
By the next quarter the operator is reconciling five or six feeds against the per-job invoices, the per-job materials line, the per-job card payments, and the per-state DOR remittance calendars — seven or eight of them now, since the operator picked up a sub-contracted tech who worked a job in California and a job in Massachusetts last quarter and the multi-state 1099 nexus the books were accruing against the home-state rate triggered per-state filing the owner didn’t realize — and re-checking each against the per-source truth that landed in the books earlier in the week, in case a per-supplier price rolled and the books missed it, in case a per-contractor moved and the W-9 was never re-chased. The hours are paid in an unscheduled Saturday, a missed kid’s baseball game, the quiet panic the per-state parts-tax late-notice carries when it lands on a Monday morning with the parts-versus-labor split the office manager was tracking by hand and the books were accruing against a single rate.
That tax — the one a per-job completion invoice publishes a day-old receivable for, the one the bookkeeping books already carry as a per-job line item in the period close, the one the owner hand-reconciles by hand on the Saturday before the first truck rolls out on Monday — is the one Stillpost built the bookkeeping loop to retire for service shops. Same five or six sources. Same per-customer tone. A read-only connect per source, one wire-up at the parts counter. The cash position refreshes every fifteen minutes between the last truck rolling in and the first truck rolling out, the per-job past-due chaser fires on the day-of-late the operator wires up once (Net-15 on day 17, Net-30 on day 33, per-completion homeowner jobs on day 7, commercial property-manager accounts on day 17, general-contractor commercial jobs on day 33), the before-midnight per-job parts reconcile matches each day’s per-job materials line and each parts-supplier delivery and each per-job return against the per-job chart-of-accounts the books already carry, the parts-versus-labor sales-tax split the operator wires up once drives the per-state estimate the books accrue against — and the 1099 subcontractor cadence, the seasonal margin digest, the off-season reserve accrual posts at 23:55 to the calendar each DOR of record publishes — pegged to the per-contractor nexus the operator wires up once and never re-wires again.
Per-job revenue recognition audited nightly, not rolled up at month-end. The per-job chart of accounts the loop carries is the same chart of accounts the books carry Monday morning, with the change-order the customer signed mid-job already threaded to the per-job materials line and the parts-versus-labor split the office manager was tracking by hand already surfaced on the per-job invoice. The sub-contracted tech W-9 the loop chased on the per-contractor nexus change the operator forgot to update is the same W-9 the bookkeeper would have chased by hand on a Wednesday morning — except the loop chases it the day the per-contractor ship-to triggered nexus, not the week before the per-state DOR deadline. The per-season margin digest the loop sends before the shoulder-season starts is the same digest the owner used to build by hand against a per-trade calendar on a Sunday night — the digest carries with it the per-quarter reserve the books should have been accruing against, threaded to the line-of-credit review the bank was running on the wrong number because the off-season margin the owner was tracking on a handwritten note was the off-season margin the OLD per-trade calendar carried, not the off-season margin the calendar FOR this shoulder-season should have carried.
That is the beat. That is the loop. That is what gets handed back.
What it earns its keep on.
Three returns the bookkeeping loop earns against the truck-bay interior — the per-job past-due email the office manager used to hand-script on a Friday afternoon before the first truck rolled out, the parts-versus-labor sales-tax split the parts manager was tracking on a clipboard at the parts counter, the per-season margin digest the owner used to build by hand against the per-trade calendar on a Sunday night — read like the rest of the small-biz pillar cluster, in the operator’s own frame.
Job-based invoicing
The per-job past-due chase, scripted to the day.
The Friday-afternoon ritual of opening the per-job accounts-receivable aging, the per-job contract terms the bookkeeper was tracking on a clipboard at the parts counter, and the per-job invoice notes each tech wrote at completion to hand-script a per-job past-due email is a ritual the loop retired. The per-job chaser the loop fires on the day-of-late the operator wires up once (Net-15 on day 17, Net-30 on day 33, per-completion homeowner jobs on day 7, commercial property-manager accounts on day 17, general-contractor commercial jobs on day 33) is the same email the operator would have written — calibrated to the per-customer tone the books already carry, threaded to the per-job invoice the per-job contract signed — without the operator touching the inbox on a Saturday morning before the first truck rolled out.
Parts receipts
Nightly parts reconciliation, against the per-job materials line.
The Sunday-night ritual of opening the day’s per-job invoices, the day’s parts-supplier deliveries (Johnstone, Ferguson, NAPA, AutoZone, the local pick-up parts shop the owner drove to at 7:42am because the OEM part was back-ordered for the week), and the week’s per-job materials line the parts manager pulled before the tech rolled out to hand-match parts cost against the per-job materials ledger is a ritual the loop retired. The per-job parts match the loop fires the night before completes against the day’s parts invoices each supplier delivered, each per-job delivery fees the supplier billed, each per-job return the parts counter processed and the per-job materials the technician pulled the day before — and the variance the parts manager opens Monday morning against the per-job chart of accounts is a single line the per-job invoice was carrying all along.
Seasonal cash flow
A per-season margin digest, pegged to the trade’s calendar.
The off-season ritual of opening the per-trade calendar (HVAC shoulder seasons, plumbing winter calls, cleaning Q1 contracts renewals, auto repair a year-round steady-state with a holiday-week drop), the per-quarter reserve the owner was supposed to be accruing against on a spreadsheet they built on a Sunday, and the per-quarter line of credit the bank was carrying against last quarter’s shoulder-season burn to hand-forecast next quarter’s per-trade margin is a ritual the loop retired. The per-season margin digest the loop sends before the shoulder-season starts reads every per-job margin against the per-job scope the books carry — the cooling-season HVAC jobs that earned their margin against the shoulder-season jobs the books missed, the winter-call plumbing jobs against the spring-renovation pipeline the operator was quoting against the wrong rate card, the Q1 cleaning contracts renewal against the Q3 holiday-cleaning the per-quarter reserve the operator was tracking by hand — and the digest the owner opens the Sunday before the shoulder-season starts is the digest that drives the per-quarter reserve the bank was using as a margin check.
What the loop runs on a service-shop interior.
Four cadence beats the bookkeeping loop fires after the wire-up — in the order the shop runs them. Per-job revenue, per-job past-due, parts-versus-labor sales tax, sub-contractor 1099 + seasonal reserve. Each beat folds into the next, and the four-line Saturday morning the office manager used to build by hand is the four-line the loop carries unattended.
- Step one01/04
Wire per-job revenue one job at a time.
A read-only connect per source — the bank through Plaid, Mercury, Stripe, Square, and Brex on the direct connectors, the per-job invoicing portal for the per-job invoice the tech wrote on a clipboard at completion, the parts-supplier portal (Johnstone, Ferguson, NAPA, AutoZone, the local pick-up parts shop owner drove to at 7:42am because the OEM part was back-ordered for the week), the inbox for per-job change-order paperwork the customer signed at the bay but the dispatcher forgot to upload, the sub-contracted tech bench for the per-contractor W-9 the operator was chasing on a Wednesday morning because the tech worked a job in California and a job in Massachusetts last quarter, the QuickBooks Online export for the per-job chart of accounts the books already carry. One wire-up at the parts counter, six feeds, none of them written back to.
- Step two02/04
Reconcile per-job revenue recognition nightly.
The day’s per-job invoice trail — the post-job invoice the tech wrote at completion, the per-job materials line the parts manager pulled for the truck before the tech rolled out, the parts-supplier delivery the parts counter signed at 7:42am, the per-job card payment the customer handed the dispatcher before the tech pulled out of the bay, the per-job ACH that landed two business days later — gets matched against the per-job chart-of-accounts the loop already carries. Per-job revenue recognition against per-completion deliverables, per-job materials line against the parts-supplier delivery the parts manager signed, per-job card payment against the day-of-completion batch the processor posted, the change-order the customer signed mid-job the per-job invoice the books missed, and the sub-contracted tech cost the operator was tracking by hand against the per-contractor W-9 the books carried. The match lands on the same row the per-job invoice the tech wrote at completion already carries.
- Step three03/04
Chase the per-job past-due the day it goes past-due.
The week’s per-job past-due walk for every invoice the tech wrote at completion — the Net-15 completion-invoice that landed on day 17 against the per-job terms the contract signed, a Net-30 commercial account that landed on day 33 against the per-job contract the property manager was on, a per-job flat-fee commercial job the general contractor was dragging past day 42, the homeowner who was one reminder away from leaving a one-star review and the commercial property manager who was two reminders past the 90-day holdback the books were waiting on — and the chaser the loop sends on the day-of-late the operator wires up once (no Friday batch of every per-job past-due into one rolled-up email, no Saturday-morning inbox-clear the operator used to hand-script on a clipboard in the parts counter).
- Step four04/04
Post the per-state parts and sub-contractor cadence.
The per-state parts-versus-labor sales-tax estimate and the per-state sub-contracted-tech 1099 cadence post at 23:55 every night — pegged to the calendar each state DOR of record publishes (California’s CDTFA on the last day of the month, Texas Comptroller on the twentieth, NY DTF on the twentieth, Florida on the first), and the per-contractor nexus the operator wires up once (the sub-contracted tech who worked a job in California last week and a job in Massachusetts the week before) drives the per-state rate band the books accrue against — and the per-state remittance row lands Monday morning pre-split, threaded to the IRS 1099-NEC the per-contractor W-9 already produced, the parts inventory accrual the per-quarter reserve the off-season calendar the shop carries, and the seasonal margin digest the per-trade calendar the operator pegs to the books already track.
What service-shop owners say after the wire-up.
Three shapes the bookkeeping loop runs against — a 1-truck HVAC tech, a 2-bay auto shop, and a small cleaning crew — all ran the same wire-once beat the home-page audience describes, and all stopped touching the per-job aging on a Friday afternoon.
One truck · HVAC tech
The per-job past-due chase used to be a Friday-afternoon ritual — open the per-job aging, script the per-job invoice email by hand, send by 4pm before the truck rolled out Saturday. The loop fires the per-job email on the day-of-late the contract carried, calibrated to the per-customer tone the books already track. I stopped touching the per-job aging on a Friday afternoon three quarters ago, and the cooling-season cashflow on a per-job basis is the cleanest it has ever been.
A 1-truck HVAC tech, owner-operator
Two bays · auto shop
The nightly parts reconciliation the loop fires the night of completion reads every per-job materials line against the per-job invoice the tech wrote at completion — a Johnstone delivery the parts counter didn’t update the per-job materials line for surfaces on its own row the next morning, and the per-job invoice the office sends the customer Monday morning already carries the corrected parts cost. The Sunday-night parts-versus-labor walk the parts manager was doing by hand against the per-job materials ledger is gone.
A 2-bay auto shop, owner + 2 techs
Crew of four · cleaning services
The per-season margin digest the loop sends before the shoulder-season starts reads every per-job margin against the per-job scope the books carry — a Q1 deep-cleaning contract renewal the office bid against the wrong rate card surfaces on its own row, and the Q3 holiday-cleaning per-quarter reserve the bank was holding against the margin check is the per-quarter reserve the NEW per-trade calendar should have carried. The Sunday-night per-job margin walk was the price the bank was keeping for the line-of-credit review; the digest carries it for free.
A small cleaning crew, Q1-renewal-heavy
The five questions service-shop owners ask before they wire it up.
Per-job invoicing cadence, parts-versus-labor sales-tax split per state, seasonal cash-flow off-season accrual, sub-contracted tech 1099 across state lines, and monthly close — straight answers the service-shop- side search snippet can carry. The FAQPage-structured-data block above emits the same questions in a machine-readable shape Google reads directly.
When does the per-job invoice post for a service shop, and how is the chase timed?
The per-completion homeowner job: invoice posts the night of completion (Net-7), chaser fires on day 7 if unpaid. The Net-15 commercial property-manager account (a national chain the operator’s office manager books every quarter): invoice posts the day-of-completion, chaser fires on day 17. The Net-30 general-contractor commercial new-build job (a per-job flat-fee the office bid against the per-project scope): invoice posts the day the per-completion hand-off signs, chaser fires on day 33. Each per-job chase reads the per-job invoice the tech wrote at completion and the per-job terms the contract carried — calibrated to the per-customer tone the operator wires up once on the books (one warm reminder, one firmer reminder, one final-notice cadence the landlord and the commercial property manager receive before the books mark the receivable a 90-day holdback). The chaser does NOT bundle a Friday batch of every per-job past-due into a single rolled-up weekly email. The rolled-up weekly is what the office manager used to hand-script on a Friday afternoon before the loop shipped — and the rolled-up weekly the property-manager paying on Net-30 never opens. The per-job email the operator would have written by hand on the day-of-late the per-job contract carried is the same email the loop fires. The vein axes are: per-job invoice the technician wrote, per-job tone the customer carried, day-of-late the calendar the books already track.
How does the parts-versus-labor sales-tax split work for service shops, per state?
Each state handles parts-versus-labor differently. California’s CDTFA treats the parts line item the parts manager pulled for the truck as taxable at the parts rate, while the labor line item the technician billed at completion carries no sales tax — the split is the closest thing to a parsing rule the operator carries on a per-job invoice the tech wrote at completion, and it flips on a per-job basis. Texas treats the parts-versus-labor split the same way (parts taxable, labor exempt) — but layers a per-state sales-tax estimate pegged to the per-job materials line the Johnstone supplier signed. New York aligns to the federal parts-versus-labor carve-out but layers a per-county district surtax that triggers against the per-trade ship-to the operator carried. Florida taxes the parts line item at the regular state rate plus a 0.5%–2% county surtax per ship-to. The operator wires the parts-versus-labor split up once on the per-job chart of accounts — per-job materials line, per-job labor line, per-job sub-contracted tech cost, per-job sales-tax rate band, per-trade calendar each ship-to triggers — and the loop accrues the per-state estimate against the split, not against the single rate the bookkeeping books used to accrue against. A per-job invoice the tech wrote at completion that the office manager hand-coded as labor when it was actually a per-job materials line lands on its own row in the day’s reconcile file, rather than against the per-completion invoice’s default rate; the per-job invoice the office sends the customer Monday morning carries the correct sales-tax split, threaded to the per-job materials line the parts manager already pulled.
How does the seasonal cash-flow off-season accrual work for trades with a shoulder season?
Each trade has its own shoulder-season calendar. HVAC carries two shoulder seasons — spring (March through May, cooling-system start-ups before the cooling-season demand peaks in June) and fall (September through November, heating-system start-ups before the heating-season demand peaks in December). Plumbing carries one shoulder season — winter (December through February, frozen-pipe calls spike) against the spring-renovation pipeline the operator was quoting against the wrong rate card. Auto repair carries a year-round steady-state with a holiday-week drop (the two-week window the office closes between Christmas and New Year) against the per-quarter reserve the owner was supposed to be accruing against. Cleaning carries Q1 contracts renewals (January through March, the deep-cleaning contracts the operator signed in Q4 the year before) against the Q3 holiday-cleaning the per-quarter reserve the operator was tracking by hand was supposed to be carrying. The operator wires the per-trade calendar up once against the books — per-trade shoulder-season window, per-trade cooling-season or winter-call window, per-quarter reserve the bank was holding against the margin check, the per-trade year-round steady-state the owner was running the books against — and the loop accrues the per-season estimate against the calendar, not against the per-quarter reserve the bookkeeping books used to accrue against. The per-season margin digest the loop sends the Sunday before the shoulder-season starts is the digest the owner opens to drive the per-quarter reserve the bank was holding as a margin check — not the per-quarter reserve the office manager was tracking on a handwritten note the day the books went out.
How does sub-contracted tech 1099 payroll work for service shops working across states?
Each state DOR handles sub-contracted-tech payroll on its own cadence. California FTB posts the 1099-NEC thresholds on its own calendar — federal IRS threshold plus the CA $600 threshold for non-employee compensation, layered with the per-contractor nexus the sub-contracted tech’s ship-to triggers. NY DTF aligns to the federal threshold but layers a per-state withholding that triggers when a sub-contracted tech has worked a job in NY across the calendar year. MA DOR aligns to federal plus its own per-contractor schedule — typically January 31 for the previous calendar year’s 1099-NEC, layered against any per-contractor nexus the per-job ship-to triggered mid-engagement. The operator wires the per-contractor nexus up once — per-contractor ship-to, per-contractor home-state, per-contractor mid-engagement state change — and the loop accrues the per-state estimate against the nexus, not against the home-state rate the bookkeeping books used to accrue against. A sub-contracted tech who worked a job in California and a job in Massachusetts last quarter triggers a multi-state nexus update the loop surfaces on its own row, threaded to the new ship-to the contractor W-9 should carry. The per-state filing row the bookkeeper opens in late December is pre-split, threaded to the per-contractor W-9 the loop already chased — the per-job invoice the office manager wrote at completion the one week the tech worked the California job carries the CA nexus rows; the per-job invoice the same tech written at completion the one week the tech worked the Massachusetts job carries the MA nexus rows, not against one single rate.
What does the monthly close actually look like for a service shop on Stillpost?
A single one-page summary the loop posts by the first business day of the next month. Per-job revenue the books carried, per-job past-due the chaser cleared, per-job margin the weekly digest flagged for re-costing, per-contractor 1099 the loop accrued against the per-state cadence, the parts-versus-labor sales-tax estimate the loop accrued against the per-book of accounts split, and the off-season reserve the loop accrued against the per-trade shoulder-season calendar. The bookkeeper carries the P&L the operator would otherwise have built by hand against a per-state DOR calendar and a per-job aging report on a Sunday night — the loop posts the one-page summary, the bookkeeper carries the parts of the period close that need a human reviewer. The P&L the loop posts is NOT a 22-line item-by-item read-out. A 22-line per-line read-out is the Sunday-night ask the owner used to hand-build on a per-source-truth that landed in the books earlier in the week — a per-job margin against a wrong rate card, a per-contractor 1099 against a wrong nexus, a per-job past-due against a wrong day-of-late, a parts-versus-labor split against the wrong sales-tax rate. The loop posts the one-page summary on the first business day of the month, threaded to the per-job chart-of-accounts the books carry, and the per-line detail is one click away in the per-job timeline the books already track.
5 questions answered · the per-state parts-versus-labor sales-tax detail lives on the sales-tax pillar cluster, the per-job chaser script detail lives on /receivables, the per-season margin digest detail lives on /margin-alerts, the per-tier price frame is on the pricing grid.
Next in the vertical landing cluster
The four-person service shop (a 4-person fractional-CFO practice, a 4-person bookkeeping-trained-up-to-consultancy crew the trade-shop owner trained up, a 4-head fractional-CMO) runs the same wire-once beat against a per-engagement ledger instead of a per-job ledger — per-client WIP-to-recognized-revenue reconciled against the four-head capacity ledger, per-client retainer past-due chasers scripted to the day-of-late, the 5th sub-contractor across state lines nexus trigger the partner forgot to update, and a one-page per-month-end digest the partner can read on a Sunday evening before the Tuesday team huddle. See /for-services →
The next step
If the shop is yours, wire it up today.
Pro ($243 / month) ships the bookkeeping loop adapted to the independent-trades interior — per-job revenue recognition reconciled nightly, per-job past-due chasers scripted to the day-of-late, parts-versus-labor sales-tax split made once on the wire-up, and a per-season margin digest pegged to the trade’s shoulder-season calendar. Starter (under $81 / month) carries the first beat (per-job revenue recognition) without the parts-tax layer; Managed ($1,620+ / month) hands the period close to a human. Pick the tier that fits your shop, or waitlist the launch.
Wire it up today.
Cancel any month · switch tiers at the next renewal · reply within one business day on any question.
Pick a tier →See the full approach →Prefer to waitlist? Drop an email — we'll be in touch.
not ready to pick a tier? Send a note →
reply expected within one business day