Skip to content
Knowledge ERP Docs
API Reference ↗
Manufacturing

Work Centers

A station on the shop floor — a machine, bench, or team — with its own capacity and hourly cost, that operations are routed through when you build something.

A work center is a place where work gets done — a CNC machine, an assembly bench, a paint booth, or a crew. It's the where of manufacturing: every operation on a routing is assigned to a work center, and when those operations run on a work order they inherit that center. A work center carries two things the rest of the system cares about — how much it can handle at once (capacity) and what an hour of its time costs (cost per hour).

Think of a work center as a labeled station, not a job. The same paint booth shows up on dozens of routings; each routing just points its "paint" step at the booth. Change the booth's hourly rate once and every future operation costs out correctly.

What a work center holds #

A work center is deliberately lean — it's a reusable reference, not a record of any one job. Its fields are:

  • Name — what the station is called (e.g. Assembly Bench 2, Powder Coat Booth). Required.
  • Location — optionally ties the center to an inventory location. Leave it blank for a center that isn't pinned to a specific warehouse or site.
  • Capacity — the maximum number of concurrent work orders the center can run at once. A whole number; leave it empty if the center isn't capacity-limited.
  • Cost / Hour — the labor cost rate for operations performed here, used to cost out the time logged against work order operations.
  • Active — whether the center is currently in use. Inactive centers stay on record (and on historical work orders) but signal they're retired or offline.
  • Description — free-text notes about the station.

Cost is stored in cents. The UI shows and accepts dollars (a center at $50.00/hr), but under the hood — and over the API — cost_per_hour is an integer in cents (5000). See Doing it from the API.

Creating and managing a work center #

New centers are created from Manufacturing → Work Centers → New Work Center. Fill in the name, optionally pick a location, set the capacity and hourly rate, and toggle Active (on by default). The Cost / Hour field takes a dollar amount and converts to cents on save.

From the work center's own page you can:

  • View — see the center's name, active state, location (with a link through to that location), capacity, hourly cost, and description.
  • Edit — change any field. Updating the hourly rate affects future cost calculations, not operations already logged.
  • Delete — soft-deletes the center. It disappears from the active list but is retained for history; its operations and work order operations are kept.

Deleting a work center is a soft delete — nothing is destroyed. Use the Trashed filter in the list to find and restore (or permanently remove) deleted centers.

The work center list #

The list (Manufacturing → Work Centers) shows each center's name, location, capacity, cost per hour, an operations count (how many routing operations reference it), and an active indicator. Columns are sortable, the name is searchable, and a Trashed filter lets you see soft-deleted centers. Select rows for bulk Delete, Force Delete, or Restore.

How work centers relate to operations and work orders #

Work centers sit between your standard process and your live jobs:

  • A routing is a Product's recipe of steps. Each step — an operation — names a work center, so the routing says not just what to do but where. See Routings & Operations.
  • When you open a work order, its routing's operations are copied onto the order as work order operations, each still pointing at its work center. As the floor logs time against those operations, the center's cost per hour is what turns hours into labor cost.
  • The operations count in the list is the simplest health check: a center with zero operations isn't referenced by any routing yet.

Because a center can be tied to a location, a multi-site operation can model the same kind of station at each site separately and route work to the right one.

Doing it from the API #

Work centers are exposed as a standard REST resource. Note the API uses _id field names (e.g. location_id), never _uuid, and cost_per_hour is an integer in cents.

# List work centers (paginated 50/page; filter by location_id and active)
curl "https://your-domain.com/api/v1/manufacturing/work-centers?active=true" \
  -H "Authorization: Bearer $TOKEN"

# Create a work center at $50.00/hr
curl -X POST "https://your-domain.com/api/v1/manufacturing/work-centers" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Powder Coat Booth", "capacity": 2, "cost_per_hour": 5000, "active": true}'

GET /manufacturing/work-centers accepts location_id and active query filters. A DELETE soft-deletes the center while retaining its operations.