Skip to main content

Cost Codes

Cost codes are how the dashboard tracks spend at a finer grain than categories. If you've ever seen "Missing Cost Codes" in the Action Queue and wondered what a cost code actually is, this page is for you.

tip

You don't need to memorize cost codes. The dashboard always shows the description next to the code, and when you fix a missing code in the Action Queue, you pick from a list — you don't type from memory.

What a cost code is

A cost code is a short identifier — something like 03-300 or 01-010 — that labels what specific work a cost relates to. Every PO line and every labor entry gets one. The code has a description attached, which the dashboard shows alongside it (for example, 03-300: Cast-in-place concrete).

Where a category answers the broad question "what kind of cost?" (Concrete, Material, Labor), a cost code answers the more specific one: which kind of concrete work, or which kind of labor.

Why cost codes exist

Categories alone aren't granular enough. "Concrete" tells you a cost is concrete-related, but it doesn't tell you whether the cost is for ready-mix delivery or for the labor placing the concrete on the slab — and on a real job, those are different lines that PMs and accounting want to track separately.

Cost codes give you that granularity, which then powers:

  • The Cost Codes breakdown view inside each job, where you can see total spend per cost code
  • Budget vs. Actual variance at the cost-code level — clicking the expand arrow on a category row drills into the codes inside it
  • Drill-downs in spend widgets that group or filter by cost code rather than category alone

Where cost codes come from

The full cost-code catalog lives upstream, in the accounting system. The JCI dashboard reads a nightly snapshot of that catalog — so if a code is added, renamed, or retired upstream, you'll see the change in JCI by the next morning.

note

You can't create or edit cost codes from the JCI dashboard. The catalog is read-only here. If a code is wrong, missing from the catalog, or you need a new one added, contact the team that maintains the upstream catalog. JCI just reflects what's there.

Cost code versus category

CategoryCost code
GranularityHigh-levelFine-grained
Count7 (PO side) or 9 (budget side)Many
ExamplesConcrete, Material, Labor03-300: Cast-in-place concrete, 01-010: Job supervision
Where assignedTagged as the line landsTagged with the line, or fixed later if missing

Every cost code is mapped to a category (and to a PM Sheet budget category). That's how rollups work: you enter a budget at the 9-category level, POs land at the 7-category level, and cost codes bridge between them so Budget vs. Actual adds up correctly. For more on the two category systems, see Categories.

info

Cost codes apply to labor too — not just materials and POs. Labor entries from clock-in carry cost codes the same way PO lines do. So when something needs a cost code fixed, it might be a labor entry, not a purchase.

Code format

The format isn't strict — most codes follow a XX-XXX shape, but not all of them do. Don't read too much into the digits. Use the description that travels with the code as the source of truth.

If you're curious, the full catalog is visible in the dashboard wherever you'd pick a cost code (such as the picker on the Missing Cost Codes tab). It's not worth republishing here because the catalog evolves and any list we wrote down would go stale.

JCI Dashboard Job Detail Field Data tab with Cost Codes sub-tab active, showing a table of cost codes for the selected job with columns for Code, Description, Category, and Total Cost, with rows sorted by cost descending

"Missing cost codes" — what that means

The Action Queue has a dedicated Missing Cost Codes tab for PO lines and labor entries that landed in the system without a cost code assigned. There are two common reasons a line ends up missing a code:

  • The uploader (whoever entered the PO or clocked in the labor) didn't tag it.
  • The system tried to auto-assign a code based on metadata but couldn't figure out a confident match.

Either way, the line shows up on the Missing Cost Codes tab so a PM can pick the right code from the list and apply it. For the step-by-step, see Fixing a Missing Cost Code.

JCI Dashboard Action Queue Missing Cost Codes tab showing a table of PO lines and labor entries without assigned cost codes, with a cost-code picker dropdown open on one row showing search results

Where you'll see cost codes

Cost codes show up across several parts of the dashboard:

  • Job Detail → Field Data → Cost Codes — the main per-job breakdown view
  • Job Detail → PO Detail tab — Cost Code column on each row
  • Job Detail → Budget tab → Entry — budget is entered at the category level, but the actual costs that compare against it roll up from the cost-code level
  • Action Queue → Missing Cost Codes — where you fix lines that landed without a code
  • Spend widgets — particularly the Cost Code Treemap

JCI Dashboard Job Detail PO Detail tab table close-up showing the Cost Code column populated with short alphanumeric codes on most rows and an empty or dash placeholder on a few rows that lack cost codes

You don't enter budgets at the cost-code level

A small but important distinction: when you enter a budget on a job, you do it at the 9-category level, not at the cost-code level. The dashboard rolls actual spend up from cost codes to those nine buckets so that Budget vs. Actual compares apples to apples. You can drill into any category row to see the cost-code-level breakdown, but you don't enter dollar figures per code. See Budget Entry for the entry workflow.