Incurred Cost Submission Adequacy Pre-Check API Reference
Beta. Pre-checks one annual incurred cost submission workbook for adequacy: the schedules in FAR 52.216-7(d)(2)(iii), the math, the ties between schedules, the certificate in FAR 42.703-2 and 52.242-4, and the deadline in FAR 52.216-7(d)(2)(i), reported against DCAA's adequacy checklist (Version 3.4). Adequacy only: it does not judge allowability. Product page and free test form.
Endpoint
| Paid | POST https://www.spreadrun.com/api/v1/ice-adequacy-precheck, API key required, $250.00 per completed pre-check |
|---|---|
| Demo | POST https://www.spreadrun.com/api/demo/ice-adequacy-precheck, no key, 10 runs per day. Runs the three published sample workbooks only (DCAA layout, own format, with errors), byte for byte. Their fiscal year ends June 30, 2026. |
| Body | The .xlsx workbook, up to 4 MB. .xls is refused with instructions to save as .xlsx. The check stops after about 20 seconds with a plain message and no charge. |
Parameters
fiscalYearEnd | Required. YYYY-MM-DD, the last day of the fiscal year the submission covers. The deadline is this date plus 6 months; a month-end date stays at month end (December 31 gives June 30). |
asOf | Optional. YYYY-MM-DD to measure the deadline from. Default: today (UTC). |
Any other parameter is refused, so a typo never changes the result quietly.
Finding the schedules
The DCAA ICE model is not required. Each schedule is found, in this order:
- Tab name:
A,Schedule B,Sch C,Sch. D,E - Bases. Sub-schedules such asF-1,H-1andH (Summary)are read with their schedule. - Sheet title: "Schedule G" in the first rows of the sheet.
- Content: a title that describes it, such as "Occupancy expenses" or "Certificate of Final Indirect Costs", if exactly one sheet matches.
A schedule that does not apply should still be there, saying "None" or "Not applicable". Columns are read by their headings, so name them plainly (pool, base, rate; per books, adjustments, claimed; contract number, order number).
The math
- Values are the ones Excel saved; formulas are never trusted, every total is recomputed. A formula with no saved value is reported.
- A total row is a row labeled Total, Subtotal or Grand total (or numbers under a row of Total labels). It is accepted when it equals any reading of what it totals: the rows since the previous total, the rows sharing its pool, contract or category, the rows its label names, everything above it, the subtotals above it, or the rows those subtotals cover. Differences up to $1 are rounding.
- Rate, factor, percentage, date, number and ranking columns are not footed.
Report
| Field | Meaning |
|---|---|
status, summary | FAIL if any error, WARN if only warnings, otherwise PASS. A PASS is not DCAA acceptance and says nothing about allowability. |
deadline | due, asOf, daysLeft (negative when late) and status: on-time, due-soon (30 days or less) or late. |
checks | schedules, math, crossTies, certificate and deadline, each pass, warn or fail. |
schedules | A to O: status (found, missing, not-applicable, empty), tab, foundBy (tab name, sheet title, content) and subSchedules. |
findings | Errors first, up to 400. |
checklist, checklistCounts, checklistVersion | All 47 DCAA checklist items: item, schedule, label (in our words), status (pass, warn, fail, review, na) and automatic. |
notChecked, sources, scope, input, inputSha256 | What the report does not cover, where the rules come from, what the verdict means, and a fingerprint of the workbook. |
Each finding
severity | error or warning. Any error makes the report FAIL; warnings alone make it WARN. |
ruleId | One of the rule IDs below. |
tab | The worksheet name, or null for the workbook as a whole. |
range | The cell or cells, such as K74 or B23, B25. |
sumRange | Footing findings: the cells that were added up. |
expected, actual | Amounts, where the finding compares two. Expected is what the rows or the other schedule say; actual is what the cell says. |
message | What is wrong, in plain words. Never repeats text from the workbook. |
source | A key in sources. |
checklistItem | The DCAA checklist item, where one applies. |
Rule IDs
| Rule | Severity | Meaning |
|---|---|---|
ICE-SCHEDULE-MISSING | error | A schedule A to O was not found, or more than one tab could be it. The message says what was looked for. |
ICE-SCHEDULE-EMPTY | warning | A schedule tab with nothing on it and no statement that it does not apply. |
ICE-FOOT | error | A total that does not equal any reading of the rows it totals. |
ICE-ROW-MATH | error | Claimed is not books plus adjustments on a row. |
ICE-NO-VALUES | error | Formulas with no saved result: open the workbook in Excel, let it calculate and save it. |
ICE-RATE | error | A Schedule A rate that is not pool divided by base at the precision shown. |
ICE-A-UNREADABLE | error | Schedule A has no rows with a pool, a base and a rate. |
ICE-TIE | error | Two schedules that should agree do not. Reported on both tabs. |
ICE-H-RATE | error | Indirect expense on Schedule H not at the Schedule A rate. |
ICE-K-LABOR | error | Schedule K labor that is not rate times hours. |
ICE-H-K | error | A T&M or labor-hour contract on Schedule H missing from Schedule K. |
ICE-I-O, ICE-O-I | warning | Contracts complete on one of Schedules I and O but not found on the other. |
ICE-NOTES | warning | An adjustment with no explanatory note beside it. |
ICE-CERT-MISSING | error | No certificate of final indirect costs (FAR 42.703-2). |
ICE-CERT-UNSIGNED | warning | The certificate is there but its signature, name, title, date or proposal lines are blank. |
ICE-CERT-LEVEL | warning | The certifying official's title does not read as vice president, CFO or higher (FAR 52.242-4). |
ICE-D-ALLOCATION | warning | Schedule D lacks the base, percentage or dollars allocated per recipient. |
ICE-J-DETAIL | warning | Schedule J lacks columns DCAA expects for each subcontract. |
ICE-O-DETAIL | warning | Schedule O lacks level of effort, fee, period of performance or ceiling. |
ICE-M-EMPTY | warning | Schedule M is empty with no statement that there is nothing to report. |
ICE-FYE-MISMATCH | warning | The fiscal year end written in the workbook differs from the one you sent. |
ICE-DEADLINE-PASSED | warning | Past the 6-month mark (FAR 52.216-7(d)(2)(i)). |
Source keys, as returned in every report:
far52.216-7 | FAR 52.216-7(d)(2), Allowable Cost and Payment: the 6-month deadline and items (A) to (O) of an adequate final indirect cost rate proposal |
far42.703-2 | FAR 42.703-2, Certificate of indirect costs (and the clause at FAR 52.242-4) |
far42.705-1 | FAR 42.705-1(b)(1), adequacy review of the final indirect cost rate proposal |
dcaa-checklist | DCAA Checklist for Determining Adequacy of Contractor Incurred Cost Proposal, Version 3.4 (December 2021) |
- FAR 52.216-7(d)(2): the 6-month deadline and the content of an adequate proposal, items (A) to (O)
- FAR 42.703-2: certificate of indirect costs, and unilateral rates without it
- FAR 52.242-4: Certification of Final Indirect Costs (signing level and format)
- FAR 42.705-1(b)(1): the adequacy review and written description of inadequacies
- DCAA Checklist for Determining Adequacy of Contractor Incurred Cost Proposal, Version 3.4 (December 2021)
- DCAA ICE Model: Power Query version 1.08 (July 2026) and Visual Basic version 2.0.1h
- GAO-13-131: DOD initiative to address the audit backlog (December 2012)
Not checked
- Whether any claimed cost is allowable, allocable or reasonable under FAR Part 31. That is judgment, not math, and DCAA audits it after adequacy.
- Whether the numbers match your books, payroll records and billing system. Only the workbook is checked.
- Checklist items marked Review, which need documents or judgment outside the workbook.
- Whether the certificate is actually signed: a signature normally lives on the signed copy you submit.
- Classified contracts, compensation cap blending agreements and anything else DCAA coordinates separately.
Example responses
A paid pre-check of the clean sample (report shortened), and the findings from a demo run of the sample with errors. Both generated by running the real endpoint code.
{
"requestId": "7f3c2a1e-5b8d-4c6f-9e0a-1d2b3c4d5e6f",
"api": "ice-adequacy-precheck",
"mode": "paid",
"charged": true,
"priceCents": 25000,
"balanceCents": 25000,
"report": {
"schemaVersion": 1,
"status": "PASS",
"summary": "Every required schedule is there, the math foots, the schedules tie and the certificate is in place.",
"fiscalYearEnd": "2026-06-30",
"deadline": {
"due": "2026-12-31",
"asOf": "2026-10-07",
"daysLeft": 85,
"status": "on-time",
"rule": "Fiscal year end plus 6 months (FAR 52.216-7(d)(2)(i)). Extensions only in writing."
},
"checks": {
"schedules": "pass",
"math": "pass",
"crossTies": "pass",
"certificate": "pass",
"deadline": "pass"
},
"schedules": [
{
"schedule": "A",
"name": "Summary of claimed indirect rates",
"status": "found",
"tab": "A",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "B",
"name": "General and administrative expenses",
"status": "found",
"tab": "B",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "C",
"name": "Overhead expenses",
"status": "found",
"tab": "C",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "D",
"name": "Occupancy or intermediate pool expenses",
"status": "found",
"tab": "D",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "E",
"name": "Claimed allocation bases",
"status": "found",
"tab": "E",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "F",
"name": "Facilities capital cost of money",
"status": "found",
"tab": "F",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "G",
"name": "Reconciliation of books of account to claimed direct costs",
"status": "found",
"tab": "G",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "H",
"name": "Direct costs by contract with indirect expense applied",
"status": "found",
"tab": "H",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "I",
"name": "Cumulative costs claimed and billed",
"status": "found",
"tab": "I",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "J",
"name": "Subcontract information",
"status": "found",
"tab": "J",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "K",
"name": "Time-and-materials and labor-hour contracts",
"status": "found",
"tab": "K",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "L",
"name": "Reconciliation of IRS Form 941 payroll to labor distribution",
"status": "found",
"tab": "L",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "M",
"name": "Decisions, agreements, approvals and accounting changes",
"status": "not-applicable",
"tab": "M",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "N",
"name": "Certificate of final indirect costs",
"status": "found",
"tab": "N",
"foundBy": "tab name",
"subSchedules": []
},
{
"schedule": "O",
"name": "Contract closing information",
"status": "found",
"tab": "O",
"foundBy": "tab name",
"subSchedules": []
}
],
"schedulesMissing": [],
"checklistVersion": "DCAA Checklist for Determining Adequacy of Contractor Incurred Cost Proposal, Version 3.4, December 2021",
"checklistCounts": {
"pass": 26,
"warn": 0,
"fail": 0,
"review": 21,
"na": 0
},
"ratesClaimed": [
{
"tab": "A",
"cells": {
"pool": "D9",
"base": "E9",
"rate": "F9"
},
"kind": "oh"
},
{
"tab": "A",
"cells": {
"pool": "D10",
"base": "E10",
"rate": "F10"
},
"kind": "ga"
},
{
"tab": "A",
"cells": {
"pool": "D11",
"base": "E11",
"rate": "F11"
},
"kind": "com"
},
{
"tab": "A",
"cells": {
"pool": "D12",
"base": "E12",
"rate": "F12"
},
"kind": "com"
},
{
"tab": "A",
"cells": {
"pool": "D13",
"base": "E13",
"rate": "F13"
},
"kind": "inter"
}
],
"findingCount": 0,
"findingCounts": {
"error": 0,
"warning": 0
},
"ruleCounts": {},
"findings": [],
"findingsTruncated": false,
"scope": "An adequacy pre-check: are the required schedules there, does the math foot, do the schedules tie, is the certificate there, and is the submission on time. Adequacy is not allowability, and a PASS is not DCAA acceptance. DCAA makes its own adequacy determination, and the costs claimed remain your responsibility.",
"input": {
"format": "xlsx",
"bytes": 19265,
"tabs": 15
},
"inputSha256": "93ecdc8d21583cb74ea8f252c25b1aca949710c2728392a051df27b3845a9931",
"checklist": "47 items"
}
}[
{
"severity": "error",
"ruleId": "ICE-FOOT",
"tab": "G",
"range": "C15",
"message": "This total does not foot. The amounts above it in C10:C14 add up to a different figure.",
"source": "dcaa-checklist",
"expected": 905000,
"actual": 880000,
"sumRange": "C10:C14"
},
{
"severity": "error",
"ruleId": "ICE-FOOT",
"tab": "G",
"range": "E15",
"message": "This total does not foot. The amounts above it in E10:E14 add up to a different figure.",
"source": "dcaa-checklist",
"expected": 905000,
"actual": 880000,
"sumRange": "E10:E14"
},
{
"severity": "error",
"ruleId": "ICE-TIE",
"tab": "A",
"range": "D10",
"message": "The pool amount does not tie: B K14 shows a different amount.",
"source": "dcaa-checklist",
"expected": 398000,
"actual": 394000,
"checklistItem": 4
},
{
"severity": "error",
"ruleId": "ICE-TIE",
"tab": "B",
"range": "K14",
"message": "The pool amount does not tie: A D10 shows a different amount.",
"source": "dcaa-checklist",
"expected": 394000,
"actual": 398000,
"checklistItem": 4
},
{
"severity": "warning",
"ruleId": "ICE-CERT-UNSIGNED",
"tab": "N",
"range": "B14, B15, B16, B17",
"message": "The certificate is there but its date, name, signature, title lines are blank. Complete and sign it before you submit: it must be signed at vice president or CFO level or higher (FAR 52.242-4).",
"source": "far42.703-2",
"checklistItem": 45
},
{
"severity": "warning",
"ruleId": "ICE-NOTES",
"tab": "C",
"range": "J12",
"message": "1 adjustment has no explanatory note next to it. DCAA asks for a note on every adjustment and on any amount left out of the claim.",
"source": "dcaa-checklist",
"checklistItem": 12
}
]Errors
See the shared error table. Rejected and not charged: an .xls file, a file that is not an .xlsx workbook, a file over 4 MB (HTTP 413), a missing or malformed fiscalYearEnd, an unknown parameter, a workbook too large to finish in time, and on the demo endpoint anything other than a sample workbook. Example, an .xls upload (HTTP 400):
{
"error": {
"code": "input_error",
"message": "This is an .xls file (Excel 97 to 2003 format). This version checks .xlsx only: open it in Excel, choose Save As, pick Excel Workbook (.xlsx), and upload that.",
"requestId": "7f3c2a1e-5b8d-4c6f-9e0a-1d2b3c4d5e6f",
"charged": false
}
}Code samples
curl -X POST "https://www.spreadrun.com/api/v1/ice-adequacy-precheck?fiscalYearEnd=2025-12-31" \
-H "Authorization: Bearer $SPREADRUN_API_KEY" \
-H "Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" \
--data-binary @incurred_cost_fy2025.xlsx