/accounting/cost-centers — in the left navigation under Accounting → Cost Centers.
📷 Screenshot: Cost Centers page showing the tree on the left, the Details panel on the right, and the four stat tiles (Total, Postable, Groups, Inactive) — to be added.
Multi-business note
Cost centers are stored per accounting book. If your organisation runs more than one business (book), each book keeps its own, separate cost-center tree — a cost center created in one book is invisible to another. Switch the active business using the business switcher in the top bar before you build or edit your tree, and make sure you are in the right book before tagging a transaction. Budgets, the Cost-Center P&L report, and the org-unit sync described below all operate within a single book.Who can use cost centers
Viewing and managing the cost-center tree requires theaccounting:read scope (the same access that lets you open the rest of the Accounting module). Anyone who can open Accounting can create, edit, move, and delete cost centers; there is no separate “cost-center admin” permission.
The cost-center tree
Cost centers are organised as a hierarchy (a tree), the same way your chart of accounts is. Every book has a single invisible root that the system creates for you the first time you open the page — you never edit or delete it. Underneath the root you build whatever structure mirrors how you think about your organisation, for example:Groups vs. postable leaves
Every node is one of two kinds:
This is the single most important rule to understand: you can only post to leaves, never to groups. When you create a node you decide which it is with the Group node checkbox. A group exists purely to give structure and to provide subtotals; the real tagging always happens on a leaf.
The four stat tiles at the top of the page summarise the tree: Total nodes, Postable (leaves), Groups, and Inactive.
Creating a cost center
- Go to Accounting → Cost Centers (
/accounting/cost-centers). - Click New Cost Center (top-right) to add a node under the root, or hover a node in the tree and use its Add child action to add beneath that specific node.
- Fill in the fields below.
- Click Save — or Save & Add New to immediately create another.
📷 Screenshot: “Add Cost Center” modal showing the Parent selector, Code, Display order, Name, Description, and the Group node / Active toggles — to be added.
Fields
Behind the scenes: the parent you pick must already be a group. If you try to create a child under a leaf, Hitaji refuses with “Parent cost center is a leaf and cannot have children. Convert it to a group first.” Convert the would-be parent to a group via Edit first (see below).
Editing, moving, and deleting
Select a node in the tree to see its Details panel (code, name, type, parent, active status, and — for a leaf — its mapped org unit). Hover a node to reveal its row actions.Edit
Change a cost center’s code, name, description, display order, active flag, or its group/leaf type. Two guardrails apply when you change the type:- You cannot turn a group into a leaf while it still has children — move or delete the children first.
- You cannot turn a leaf into a group while it is still referenced by other records (e.g. an expense-claim type that defaults to it) — reassign those first.
Move (re-parent a subtree)
Moving a node relocates it and everything beneath it under a new parent. The new parent must be a group, you cannot move the root, and you cannot move a node into one of its own descendants (that would create a loop). Hitaji enforces all three and keeps the tree’s internal ordering correct for you.Delete
Deleting is a soft delete — the record is hidden, not erased, so history is preserved. You can only delete a leaf that has no children and is not referenced by any other record. If either is true, Hitaji blocks the delete and tells you what to clean up first. The root can never be deleted.📷 Screenshot: Cost-center row hover actions (Add child, Edit, Delete) and the Details panel — to be added.
Tagging transactions with a cost center
A cost center only becomes useful once your transactions carry it. Across the accounting documents that support it, you pick a cost center from a Cost Center picker — for example, the Cost Center selector on a bill applies that center to the bill’s lines. The picker shows your postable leaves (groups are normally not selectable when tagging actual spend), searchable by name or code. When the transaction posts to the general ledger, the chosen cost center is stamped onto each ledger line as a dimension (cost_center_id). That stamp is what every cost-center report and the budget-vs-actual figures read back later. A transaction with no cost center simply isn’t attributed to any center and won’t appear in a single-center report.
📷 Screenshot: Create-Bill modal with the “Cost Center (applies to all lines)” selector — to be added.Behind the scenes: because the tag lives on the GL line, anything that posts to the ledger with a center attached counts — bills, expenses, journal entries, petty cash, and payroll accruals all feed the same reports. This is why payroll cost can show up against a cost center even though you never touched the Cost Centers page during a payroll run (see the next section).
Where cost centers come from automatically: org-unit sync
If your organisation uses the HR org structure (departments, teams, branches as org units), Hitaji can derive cost centers from it automatically so that payroll cost is attributed to the right department without any manual tagging. Here is what happens. When a payroll run posts the cost of a contract and that contract’s salary assignment carries no explicit cost center, Hitaji looks at the contract’s org unit and, on first use, creates a matching leaf cost center for that org unit inside the accounting book. The new cost center:- is a postable leaf, named after the org unit;
- is given a deterministic code derived from the org unit (so re-runs always land on the same cost center rather than creating duplicates);
- records which org unit it represents (shown as the Org unit row in the Details panel).
Mapped / Not mapped).
📷 Screenshot: Details panel of an org-unit-derived cost center showing the “Org unit” mapping row — to be added.
How cost centers feed the Cost-Center P&L report
The pay-off for tagging is the Cost-Center Profit & Loss report (/accounting/reports/cost-center-profit-and-loss, under Accounting → Financial Reports). It is an ordinary income statement — revenue, expenses, and net result — but filtered to a single cost center instead of the whole book.
- Pick a cost center from the dropdown (leaves and groups are both selectable here).
- Choose the period.
- Decide whether to Include sub-centers.
cost_center_id dimension, so payroll accruals, expense bills, and petty cash are all included — it is GL-truth, not an estimate. The report can be exported to PDF, CSV, or XLSX. Note that, unlike the statutory statements, the Cost-Center P&L is an analytical drill-down and is not frozen at period close — it always reflects current GL data for the period you select.
📷 Screenshot: Cost-Center P&L report with the cost-center dropdown, “Include sub-centers” toggle, and the Revenue / Expenses columns — to be added.
Related
- Budgets — set targets against cost centers and compare budget vs. actual.
- Accounting basics — chart of accounts and the double-entry foundations cost centers sit on top of.
- Dashboard — where the accounting module starts.