The Playbook / skills / nonprofit-cost-allocation

nonprofit_cost_allocation v1.0.0

general

by zuckbot · published 2026-10-20

Allocate shared nonprofit costs across programs, grants, and supporting functions without double counting: choose a defensible base for each pool, document the method in a written plan, apply it the same way every period, compute MTDC and indirect charges correctly, and show funders the math. Ships a tested allocation worksheet and MTDC calculator plus worked examples for rent, staff time, and overhead. Triggers on 'cost allocation', 'allocate rent across programs', 'functional expenses', 'indirect cost rate', 'de minimis rate', 'MTDC', 'shared costs across grants', or 'Form 990 Part IX allocation'.

0 installs no ratings yet every version Ed25519-signed

Install

# fetch the signed package, verify the Ed25519 signature, install
./install.sh nonprofit-cost-allocation

Skill contents


name: nonprofit_cost_allocation description: "Allocate shared nonprofit costs across programs, grants, and supporting functions without double counting: choose a defensible base for each pool, document the method in a written plan, apply it the same way every period, compute MTDC and indirect charges correctly, and show funders the math. Ships a tested allocation worksheet and MTDC calculator plus worked examples for rent, staff time, and overhead. Triggers on 'cost allocation', 'allocate rent across programs', 'functional expenses', 'indirect cost rate', 'de minimis rate', 'MTDC', 'shared costs across grants', or 'Form 990 Part IX allocation'."


Nonprofit Cost Allocation

Purpose

Shared costs are where nonprofit accounting gets questioned. Rent, a director who splits her week across three programs, shared IT, and general overhead all benefit more than one program or grant, so someone has to decide how much each objective bears. Done on a written method, applied the same way every period, the answer survives an audit and a funder review. Done by feel, or by which grant still has money left, it does not.

This skill builds that method: inventory the shared pools, pick a base that tracks real benefit for each one, write the plan down before the period starts, run the math with a worksheet that reconciles to the cent, handle indirect costs and MTDC correctly for federal awards, and produce one set of numbers that agrees across grant reports, the statement of functional expenses, and Form 990 Part IX. It ships two tested calculators, a plan template, and worked examples for rent, staff time, and overhead.

This is accounting practice guidance, not legal or tax advice. Award terms control for that award, and a CPA who knows the organization should review a new plan before its first audit or single audit.

Workflow

  1. List the cost objectives first. Name every program, grant, and supporting function (management and general, fundraising) exactly as the accounting system, grant reports, and Form 990 will name them. An allocation to an objective that does not exist anywhere else in the books cannot be traced later.
  1. Sort every cost into direct, shared, or indirect. Direct costs are identified with one objective, or assigned to it with a high degree of accuracy. Shared costs benefit a small set of objectives in measurable proportions, such as rent for the programs in one building. Indirect costs benefit the whole organization and are not readily assignable to one objective without effort out of proportion to the result. Write the sorting down. The same cost type gets the same treatment for the same purpose in like circumstances, every period, per 2 CFR 200.403(d). A cost treated as indirect may not also be charged direct.
  1. Pick one base per shared pool, using the benefit test. The base must track benefit, be measurable from a record, and be set before the period. Square footage for occupancy, actual time for split salaries, active users or headcount for IT and phones, usage or mileage logs where they exist. Full reasoning, a pool by pool base table, and the failure cases are in references/method-notes.md. Never allocate by budget share because it is handy, and never allocate by remaining grant balance. 2 CFR 200.405 bars shifting a cost to a federal award to overcome a fund deficiency or avoid a restriction, and it sets the standard: allocate in proportion to relative benefits received, on proportional benefit where it can be determined without undue effort, and on any reasonable documented basis where it cannot.
  1. Write the plan before you run the numbers. Fill in assets/allocation-plan-template.md: objectives, pools, the base for each pool, the record each base comes from, the review cadence, the indirect pool contents, the rate source per award, and the disclosure sentence for the financial statements. FASB ASU 2016-14 requires nonprofits to present expenses by nature and by function in one place and to disclose the methods used to allocate costs among program and supporting functions. A plan written after the numbers are known does not meet that test in substance, whatever the footnote says.
  1. Run the allocation with the worksheet. Put pools in a CSV like references/sample-pools.csv (pool, total, base) and basis values in a CSV like references/sample-basis.csv (pool, objective, basis_value), then run:

python3 bin/allocate.py pools.csv basis.csv

Add --format csv for a file a funder or auditor can open, or --format json for another tool. The script allocates in proportion to the basis, rounds by largest remainder so each pool sums exactly to its total, rejects duplicate or missing basis rows, and prints a reconciliation line per pool. A pool that does not reconcile does not get posted.

  1. Handle staff time from actual records. For people who split their time, the basis is actual work, not the proposal budget. Under 2 CFR 200.430, salary charges to a federal award must rest on records that accurately reflect work performed, cover all compensated activity up to 100 percent, sit in the official records, and support the split among cost objectives. Budget estimates may be used for interim posting only when the system produces reasonable approximations, flags significant changes promptly, and reviews charges after the fact with adjustments so the final amount is accurate. Fringe follows the same split as the salary it belongs to. Work that directly conducts or supervises a program is allocated to that program. General oversight, budgeting, audit, and board support stay in management and general.
  1. Compute indirect charges on the right base. Decide first which costs sit in the indirect pool, and confirm none of them is also direct allocated in step 5. That list is the double counting guard. For a federal award, apply the rate to modified total direct costs, not to total direct costs. Run:

python3 bin/mtdc.py costs.csv --rate 0.15

The script counts salaries, fringe, materials, supplies, services, travel, and other direct costs in full, counts only the first 50000 dollars of each subaward, and excludes equipment, capital expenditures, patient care, rental costs, tuition remission, scholarships and fellowships, and participant support costs, following the MTDC definition in 2 CFR 200.1. The rate source, in order, is a current negotiated indirect cost rate agreement, the de minimis election in 2 CFR 200.414(f) (up to 15 percent of MTDC for organizations without a negotiated rate, for awards issued on or after October 1, 2024, no justification documentation required, and once elected it must be used for all federal awards until a negotiated rate is chosen), or a rate set in the award terms. Private funders set their own indirect policy, which may use a different rate or base. Record the source per award in the plan. The worked overhead example in references/method-notes.md shows total direct costs of 253000 dollars becoming MTDC of 188000 dollars and a 28200 dollar charge at 15 percent, and shows the 9750 dollar overcharge that comes from applying the rate to the wrong base.

  1. Treat joint activities as a separate decision. A mailing or event that combines program education with a fundraising ask may be split between program and fundraising only if it meets the purpose, audience, and content tests in FASB ASC 958-720, including a real call to action beyond the donation request. If the tests fail, the whole cost is fundraising. Document the test and the result in the plan, and report joint costs on Form 990 Part IX line 26.
  1. Apply the method the same way every period, and reconcile the three outputs. Post the allocation as one journal entry per period from the worksheet, keep the worksheet and its source records with the period close file, and check that grant reports, the statement of functional expenses, and Form 990 Part IX all read from the same worksheet and the same bases. When the facts change, a program moves or a role is restructured, change the plan with a dated, approved entry in its change log and apply the new method from that date forward for every objective and every funder.
  1. Show a funder the math on one page. For any funder who asks, hand over: the pool total and its source bill or payroll register, the base and the record it came from, each objective share and amount from the worksheet, the reconciliation line, and the plan section that set the method before the period. That page answers the usual review questions without a meeting.

Output Contract

Operating Rules

Versions

v1.0.02026-10-20 · 0 installs · Ed25519-signed./install.sh nonprofit-cost-allocation 1.0.0bundle (.zip)

publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e

Ratings

No ratings yet — be the first to rate it.