Skip to main content

Managing Cost Codes

Required Permission
Manage Company Settings - You must have the Manage Company Settings permission to access this setting.

Create, edit, and organize your cost code structure.

Creating Cost Codes

Add a Cost Code

  1. Go to SettingsCost Codes
  2. Click Add Cost Code
  3. Enter the details:
    • Code Number - Numeric identifier (e.g., 09.3)
    • Name - Description (e.g., Flooring)
    • Parent - Select parent for subcodes (optional)
    • Type - Production, Design, or Non-billable
  4. Configure additional settings
  5. Click Save

Required Fields

  • Number - Must be unique
  • Name - Descriptive label

Optional Fields

  • Parent - For hierarchical organization
  • Type - Production, Design, or Non-billable. Beyond estimating and reporting, this determines how time logged against the code is categorized — see Cost Code Types
  • Markup - Default markup percentage
  • QuickBooks Account - For accounting sync
  • Sort Order - Custom display order
  • Allowed for Time Entries - For companies using ID-filtered time cost codes, controls whether the code appears in the time-entry list. Production and Design have separate allowed lists. See Allowing Cost Codes for Time Entry.

Editing Cost Codes

  1. Find the code in the list
  2. Click to open
  3. Modify settings as needed
  4. Click Save

What You Can Change

  • Name and description
  • Default markup
  • Parent assignment
  • QuickBooks mapping
  • Sort order

What to Be Careful With

caution

Changing a code number affects historical reporting. Consider creating a new code instead of renumbering.

caution

Changing a code's Type changes how time logged against it is categorized from that point on. Time entries already saved keep the Entry Type they were recorded with — they are not re-categorized. If existing entries need correcting, an approver can reclassify them individually.

  • Code Number - Affects sorting and references
  • Type - May affect where code can be used
  • Parent - Changes hierarchy and roll-up reporting

Time Entry Cost Code Strategies

The list of cost codes an employee sees when logging time is not always the full cost code list. Readybuild supports several cost code strategies that decide which codes appear. Your company is set up with one strategy, and it can be set separately for Production, Design, and Non-billable work.

StrategyWhich cost codes appear on time entry
Estimated (parents)Only the parent cost codes that carry labor hours on the project's sold estimate. This is the default.
Estimated (children only)Only the child cost codes that carry labor hours on the sold estimate. For companies that estimate and track labor at the child level.
Estimated (parents + children)Both the parent cost codes and the child cost codes from the sold estimate.
All codes, sold projects onlyEvery cost code of that type, but only once the project has a sold estimate. Nothing is offered before the estimate is sold.
All codesEvery cost code of that type, all the time. No estimate required.
Allowed list (ID-filtered)Only the codes you flag with the Allowed for Time Entries toggle on the cost code list. The estimate is ignored entirely. This is the one strategy whose list you curate yourself in the app — see Allowing Cost Codes for Time Entry.
note

Which strategy each type uses is configured by Readybuild for your company — contact support to change it. Once you are on the Allowed list strategy, maintaining the list of allowed codes is done by you — see Allowing Cost Codes for Time Entry.

How the Estimate-Based Strategies Behave

The three estimate-based strategies share the same rules:

  • Only sold estimates are considered.
  • A cost code appears only if the estimate has labor hours on it. Material-only codes are left out.
  • Codes marked time only always appear, whether or not they were estimated.
  • On a change order, the parent project's estimate drives the list.
  • If the project has no matching estimated codes at all, the full cost code list is shown instead, so the employee is never left with an empty list.

Deleting Cost Codes

Cost codes can only be deleted if not in use.

Prerequisites for Deletion

  • No assemblies assigned to the code
  • No estimate items using the code
  • No schedule items using the code
  • No time entries coded to it

To Delete a Code

  1. Reassign any associated items to other codes
  2. Select the code
  3. Click Delete
  4. Confirm deletion

Alternative: Disable Instead

If a code has historical data:

  1. Open the code
  2. Mark as Inactive or Disabled
  3. Code hidden from new entries but preserved for reporting

Organizing Cost Codes

Parent and Child Structure

Create hierarchies for detailed tracking:

09 - Finishes (Parent)
09.1 - Drywall (Child)
09.2 - Painting (Child)
09.3 - Flooring (Child)
09.4 - Tile (Child)

Setting Up Hierarchy

  1. Create the parent code first
  2. Create child codes
  3. Set the Parent field to the parent code
  4. Child codes indent under parent in lists

Benefits of Hierarchy

  • Roll-up reporting - Parent totals include children
  • Organization - Easier to navigate large lists
  • Flexibility - Track detail, report summary

Reordering Cost Codes

By Code Number

Codes sort by number automatically:

  • 01 before 02
  • 09.1 before 09.2

Custom Sort Order

Override automatic sorting:

  1. Open the code
  2. Set Sort Order value
  3. Lower numbers appear first

Drag and Drop

Some views support drag-and-drop reordering:

  1. Click and hold the code
  2. Drag to new position
  3. Release to save

Bulk Operations

Export Codes

Export your structure for backup or reference:

  1. Go to Cost Codes list
  2. Click Export
  3. Download CSV file

Best Practices

Before Creating Codes

  • Plan your complete structure first
  • Consider reporting needs
  • Match accounting chart of accounts
  • Review industry standards (CSI, etc.)

Naming Conventions

  • Use clear, descriptive names
  • Be consistent in style
  • Avoid abbreviations that may confuse
  • Include number in name for clarity (e.g., "09 - Finishes")

Maintenance

  • Review codes annually
  • Disable unused codes (don't delete)
  • Add new codes as services expand
  • Train team on proper code selection

Common Mistakes to Avoid

  • Creating too many codes (hard to manage)
  • Creating too few codes (insufficient detail)
  • Inconsistent numbering schemes
  • Not setting up hierarchy when needed
  • Deleting codes with historical data

Troubleshooting

Can't Delete a Code

The code is in use somewhere:

  1. Check assemblies using the code
  2. Check estimate line items
  3. Check schedule entries
  4. Reassign items before deleting

Code Not Appearing in Estimates

Check that:

  • Code type matches estimate type (a design code does not appear on production estimates)
  • Code is a top-level code — subcodes are not offered on estimate line items
  • Code is not marked Allowed for Time Entries only
  • Code has not been deleted
  • Code is not marked inactive
  • Code is saved properly

Estimate line items can only use codes meeting all of the above. This is deliberate: a line item on a code that does not apply would be added into the estimate's totals but never shown in the line item list.

Code Not Appearing in Time Entry

Which codes appear depends on your cost code strategy. Check that:

  • The code type (Production, Design, or Non-billable) matches the type of work being logged
  • Allowed list (ID-filtered): the code's Allowed for Production/Design Time Entries toggle is on
  • Estimate-based strategies: the project has a sold estimate, and that estimate has labor hours on the code. Mark the code time only if it should always be available regardless of the estimate
  • All codes, sold projects only: the project has a sold estimate of that type

Hierarchy Not Working

Verify:

  • Parent code exists
  • Parent field is set correctly
  • Both codes are active