Jobs, classes and billable time — on every document, on every line
A ledger with one dimension tells you the business made money; it cannot tell you which job, which store, which line of work. SeroBooks carries three: location, project and class. A project can have sub-jobs (Smith : Kitchen : Electrical) that roll up. A class can sit on the whole document or on each line, with revenue and cost of goods split to the penny. Hours and costs are logged against a job and land on its invoice once, never twice.
What you get
Job costing has two halves
Cost is the half everyone builds: tag a bill with the job and the job shows cost. Revenue is the half most small-business products forget: the sale also has to name the job, or the job's profit is a cost with no income against it. In SeroBooks a sale can name the job — the revenue half — and a purchase order names it too, so the receipt inherits it. Both halves post to the same journal row dimension, and the project P&L reads them straight off the ledger.
Line-level classes, split to the penny
A document-level class is easy. A line-level class means one invoice can carry revenue for two classes and the cost of goods sold for each line has to follow its own class — which needs an allocator that splits cost to the cent without a rounding remainder landing somewhere random. SeroBooks has one, and the class P&L balances because of it.
Frequently asked questions
Is this what QuickBooks calls Classes and Customer:Job?
Yes, deliberately — the same two ideas, so an accountant who set them up there can set them up here without relearning the vocabulary.
Can I run a P&L by class?
Yes, and by project and by location; the Report Centre filters honour whichever dimension you pick.