Skip to main content
Checked against the product · 2026-10-05

Cost Pools — Controller Guide

Accounting → Cost Pools (/accounting/indirect-pools) is where your indirect cost structure is defined: each pool of indirect cost and the base it is allocated over. The indirect-rate engine computes rates from this structure, and Pricing selects among these pools when it burdens labor. Pricing never creates a pool; only this screen does.

Changing a pool — creating one, giving one its labor account, deactivating one — needs read-write access on the Acct: Rates & Compliance row of your company's permission matrix. A role with read-only access there can read every pool here, and a change it attempts is refused.

What a pool is​

A pool collects indirect costs that behave alike and allocates them to contracts over a base that moves with them (FAR 31.203; CAS 418 for covered contractors). A services firm often runs three: fringe, overhead and G&A. A manufacturer usually runs more, because factory cost and engineering cost benefit different labor: manufacturing overhead, engineering overhead, material handling, G&A — sometimes with fringe inside each departmental pool. The number of pools is your disclosed practice; the screen does not impose one.

Creating a pool​

Press Create pool after filling in:

  • Pool code — short and permanent, e.g. MOH, EOH, MH, GA. It appears in Pricing's pool picker, so keep it recognizable.
  • Name — e.g. Manufacturing Overhead.
  • Pool type — one of: overhead, fringe, g_and_a, material_handling, service_center (an intermediate pool that allocates to other pools, such as facilities), b_and_p, ir_and_d.
  • Allocation base type — one of: total_cost_input, value_added (total cost input less material and subcontracts), direct_labor_dollars, direct_labor_hours, single_element, other. G&A takes total cost input or value added (CAS 410); an overhead pool normally takes direct labor dollars or hours of the department it serves; material handling takes material and subcontract dollars (other, described in the text below).
  • Allocation base definition — the sentence a DCAA auditor reads, e.g. Direct manufacturing labor dollars, including manufacturing fringe. Required.
  • Effective start (and an end date when a pool is retired). Rates are computed per period, so set the start to the first day of the fiscal year the pool applies.
  • Segment — government, commercial, or all.
  • Labor expense account — the GL account this pool's labor posts to. The picker offers only your own active expense accounts. Leave it Not set for a pool nobody charges time to: an intermediate or service-center pool that receives its cost by allocation rather than by timecard needs no account, and setting one there would invite charges it should never take. A pool people do charge needs this before their hours can post — without it the labor has nowhere to land.

Below the form the screen shows what the server will derive before you submit: the pool category, the allocation base and the allocation sequence (the order pools allocate in: intermediate and service-center pools first, then fringe, overhead, material handling, G&A, B&P/IR&D, and unallowable last). Leave Override category on (derive) unless you are defining an intermediate, SCA-fringe, union-fringe or unallowable pool, which the derivation cannot tell apart.

The screen refuses a pool without a code and name, and refuses an empty base definition.

Two of the fields on that form carry more weight than their neighbors. Allocation base — TCI, value added, or labor? is the base type, chosen from the set your configuration offers. Allocation base definition (CAS-facing) is the wording itself — this is the sentence that has to survive contact with an auditor, so write what you would be willing to read back in a rate negotiation rather than a shorthand only you understand.

The pool table​

Each row shows the code, name, type, Segment, Effective dates, the Labor account and whether the pool is active.

Labor account is the expense account that a timecard charge to this pool posts to, and you set it here on a pool that already exists — choose the account and it saves. Only expense accounts are offered.

A pool nobody charges can sit at Not set, which is why that reads in amber rather than as an error: amber means nobody has chosen one, not something is broken. But a pool people do charge cannot post their time at all until an account is chosen — the time is captured and simply will not book. So amber on a pool anyone charges is the thing to clear before month end, and a blank would have told you nothing either way.

An inactive pool shows its account without offering to change it. It posts nothing, so that account is history rather than a decision.

Edit on a row opens the pool's panel. It takes the Name, the Allocation base description (the CAS-facing sentence the Incurred Cost Submission's Schedule A prints beside the base total) and the CAS disclosure reference, with a Reason for change, then Save pool. Only the fields that moved are saved, and each one is written to the pool's change log with who, when, before, after and why. The structure (pool type, base type, step-down sequence) is set at creation; a different structure is a new pool. A reason is required because re-defining a pool is a disclosed accounting-practice change; wiring the Labor account from the table needs none and is logged all the same.

Retire this pool in the same panel takes a Reason for deactivating and Deactivate pool. It ends the pool's use going forward. There is no delete: pools are referenced by transactions and allocations, so an inactive pool stays on record, and its row offers History instead of Edit.

History at the foot of the panel lists every change since the log existed, newest first: who, when, which field, the value before and after, and the reason given. It is append-only; a correction is a new entry. Edits made before the log existed are not listed.

How Pricing uses this screen​

Pricing reads the active pools through a one-way seam. An overhead-type pool becomes selectable on a proposal once a rate is filed for it on Admin → Pricing Rates; then every position and every touch-labor component can pick it. Fringe, G&A and material handling stay proposal-level rates.

Today: Pricing applies each selected pool's rate to the labor on that row. It does not apply the pool's allocation base — the burden ladder is fixed (fringe, then overhead on labor plus fringe, then G&A), and on material G&A is applied to the material-handling amount only. A pool defined on direct labor hours cannot be applied in Pricing today. The structure you define here is exact on the accounting side; the pricing side is catching up to it.