You open your books to answer the simplest question in business — did that project actually make money? — and find a chart of accounts with 300 lines in it. There is "Travel," "Travel - Client A," "Travel Sydney Launch (old)," and a "Misc Expense 2" that somehow became one of your largest lines. The answer is in there somewhere, buried under three days of spreadsheet surgery and a footnote nobody believes.
The data is not dirty. It is designed badly. Every time you needed a new slice of the business — a project, a client, a location — you created a new account for it, and the account list grew into a maze. There is a better design, and it is simpler than what you have now: keep the chart of accounts lean, and track projects, customers, and cost centers with tags on each transaction instead.
This guide explains the one rule that keeps books analyzable, how tagging works in practice across common accounting tools, and how to allocate shared costs to projects without losing the plot.
Why Your Chart of Accounts Keeps Exploding
Account-list bloat follows a predictable pattern. It starts innocently: you land a big client and create "Consulting Revenue - Client A" so you can see what they bring in. Then "Travel - Client A" to match the costs. Then a second client, a grant, a trade show, an office move — each gets its own accounts. Five years later you have hundreds of accounts with three transactions each, and nobody remembers what "Event Costs 2023B" was.
Watch for these warning signs that the design has failed:
- Dimensions hiding in account names. "Travel, Sydney, Project Falcon" is three facts crammed into one label. You cannot total travel across projects, or Project Falcon across expense types, without string parsing and prayer. Location, project, and department are dimensions — they do not belong in the account name.
- One-off accounts for one-off events. A new account for every trade show, every grant, every office move. Cardinality explodes, reports sprawl, and comparability dies.
- A "Miscellaneous" account that became a landfill. Every ledger has a miscellaneous account. When it becomes one of the largest lines in the business, it is not a category anymore — it is where analysis goes to die.
- Accounts that quietly change meaning. An account called "Marketing" that held only advertising until last year, then absorbed agency fees and events, produces a beautiful trend line that means nothing. Time series only work when the definition holds still.
Experienced startup CPAs aim for roughly 80 to 150 accounts for an early-stage company. The difference between that clean list and an unmanageable 400-line chart nobody can close on time is almost always the same: the bloated one encodes projects, clients, and departments as accounts instead of tags.
The One Rule: Accounts Answer "What," Tags Answer "Who" and "Where"
This single rule fixes most of the damage: the account answers what kind of money moved — rent, salaries, product sales. Everything else — which branch, which product line, which project, which client — belongs in separate tags on each transaction line.
One "Travel" account tagged with a project dimension replaces dozens of "Travel, Project X" accounts, and every project can suddenly be analyzed across every expense type. The tags are metadata attached to the transaction, not branches of the account tree. Because the account list stays stable, your trend lines keep their meaning year after year, while the tags give you every cross-cutting view you need.
In accounting textbooks this idea has a formal name: responsibility centers. A cost center is a reporting unit — a department, a branch, a project — whose manager is accountable for the costs assigned to it. The accounting department, the maintenance crew, and a client engagement can all be cost centers. Tagging is simply how small businesses implement that idea without an enterprise ERP: the tag on each line says which responsibility center the cost belongs to.
The payoff shows up at report time. Instead of maintaining a separate set of accounts per project, you run one profit-and-loss statement filtered by tag and get a project P&L straight from the same books that produce your tax return. No parallel spreadsheet, no reconciliation between two systems, no footnote.
What Tagging Looks Like in Practice
Nearly every accounting tool has a tagging mechanism — the names differ, but the concept is identical:
- QuickBooks Online has classes (and, on higher tiers, tags plus customer and project tracking). You assign a class such as "Engineering" or "Product A" to each transaction line, then filter any report by class. Customer and job tracking goes one level deeper for project-level profit and loss.
- Xero has tracking categories — typically two active ones, such as region and department — plus project tracking on higher plans for time-and-cost capture per engagement.
- Plain-text accounting (Beancount, Ledger) uses tags and links written directly on transaction lines, plus metadata key-value pairs and open, flexible account structures. A
#client-acmetag or aproject: falconmetadata field travels with the posting and can be queried in any combination, with no sub-account proliferation at all. - Spreadsheets and custom systems often implement the same pattern as extra columns: one column for the account, one for the project, one for the customer. If that is where you are today, you already understand the model — the goal is to carry it into your real books.
Whichever tool you use, the discipline is the same: tag consistently at transaction entry, when the context is fresh. Tags reconstructed months later from memory are guesses, and a project P&L built on guesses is worse than none because it looks authoritative.
Designing Your Dimensions: Fewer Than You Think
The most common tagging mistake is creating too many dimensions. Start with at most two or three, chosen by the questions you actually ask:
- Project or engagement. The work you price, deliver, and want to judge profitable or not. Agencies tag client engagements, contractors tag jobs, software teams tag product lines or epics.
- Customer. Often the same as project for project businesses, but distinct when one customer brings repeat work you want to evaluate as a relationship. A customer that generates three individually profitable projects can still be unprofitable overall once support and rework are counted.
- Cost center or department. Engineering, sales, operations — the internal units whose spending you budget and review. This is the dimension that answers "where is the burn going?" without touching the account list.
A fourth dimension tempts everyone — location, funding source, campaign — but each new dimension multiplies the tagging burden on every transaction. Add one only when a decision genuinely depends on it. One retail business runs its entire analysis on a single "store" tag plus the customer dimension; one agency runs on project tags alone. Match the machinery to the questions, not the other way around.
Within each dimension, keep the tag list short and stable. Archive finished projects rather than deleting them (deletion rewrites history), and resist one-off tags for unusual items — a tag used three times is the same disease as a one-off account, in a new location.
Allocating Shared Costs Without Double-Counting
Direct costs are easy to tag: the contractor invoice for Project Falcon gets the Falcon tag. The hard part is shared costs — rent, software subscriptions, your own salary — that serve every project at once. Ignoring them flatters every project; dumping them all on one project punishes it unfairly.
Pick one allocation method per cost type and apply it consistently:
- Time-based allocation. Divide shared labor and overhead by hours worked on each project. If you spent 60 percent of billable hours on Falcon this month, Falcon absorbs 60 percent of the shared costs. This is the fairest method for service businesses and the one auditors find most defensible.
- Revenue-based allocation. Split shared costs in proportion to each project's revenue. Simple and stable, but it punishes your most successful projects and hides struggling ones — use it for truly general costs like accounting fees, not for costs driven by effort.
- Headcount or usage-based allocation. Split software seats by user, rent by square footage, vehicle costs by mileage. Match the driver to the cost: allocate what actually consumes the resource.
Two rules keep allocations honest. First, allocated totals must reconcile to the books — the sum of project-tagged costs plus untagged shared costs must equal the general ledger total, or your project P&Ls are fiction. Second, keep the allocation visible: record allocated amounts as their own lines or memos rather than silently editing the original transaction, so anyone can see what was directly tagged versus apportioned. A project P&L should be reproducible, not a magic trick.
Resist the urge to allocate everything. Costs with no meaningful driver — the annual accounting fee, bank charges — are legitimately untagged overhead. A project P&L that shows direct margin plus a clearly labeled overhead share is more honest than one that buries the difference.
Mistakes That Defeat the Whole System
Tagging fails in predictable ways. Guard against these five:
- Untagged transactions. Every untagged line is invisible to project reporting. Make the project tag required on expense, revenue, and purchase transactions — but not on bank fees or transfers where it would be meaningless. Review an "untagged" report weekly and drive it toward zero.
- Tag sprawl. "Acme," "ACME Corp," and "Acme - new" are three tags for one customer. Lock the tag list so only one person can add values, and merge duplicates before they fossilize into history.
- Tagging everything. Not every transaction needs every dimension. A tag applied thoughtlessly becomes noise; a tag applied where it matters becomes insight. Tag the lines that answer real questions.
- Retroactive reinterpretation. Changing what a tag means midstream — absorbing a sub-project into its parent, renaming a department — corrupts every trend. When the structure genuinely changes, keep the old tag for history and start the new one cleanly.
- Two systems of record. The moment project costs live partly in the books and partly in a side spreadsheet, neither is trustworthy. Pick the tagged ledger as the single source of truth and retire the shadow system.
None of these requires sophisticated software. They require agreement — with yourself, your bookkeeper, and anyone else who touches the books — that tags are part of the transaction, not optional decoration.
Clean Tags Make Every Other Report Better
Once tagging discipline is in place, benefits compound beyond project profitability. Budgeting gets easier because each cost center has its own history to budget against. Tax preparation gets faster because deductible categories stay clean instead of tangled with client names. Loan applications get stronger because you can show a lender exactly which parts of the business generate cash. And month-end close gets shorter: a lean account list with consistent tags reconciles in hours, not weeks.
The deeper win is decision quality. When you can trust a project P&L, you can price the next engagement from evidence instead of instinct, fire the customer whose support load eats the margin, and double down on the work that actually pays. Businesses that know their numbers make these moves early; businesses guessing from a 300-account maze make them late, if at all.
Keep Your Project Books Organized from Day One
As you take on more clients and projects, keeping each one's costs visible without tangling your chart of accounts is what separates books you can analyze from books you merely file. Plain-text accounting fits this model naturally: tags, links, and metadata live right on the transaction lines, version-controlled and queryable in any combination. Beancount.io provides plain-text accounting that gives you complete transparency and control over your financial data — no black boxes, no vendor lock-in. Get started for free and see why developers and finance professionals are switching to plain-text accounting.





