Skip to main content

Managing Cost Codes

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
  • Markup - Default markup percentage
  • QuickBooks Account - For accounting sync
  • Sort Order - Custom display order

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.

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

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

Import Multiple Codes

Use CSV import for bulk creation:

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
  • Code is not marked inactive
  • Code is saved properly

Hierarchy Not Working

Verify:

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