Field guides for California district business offices
All guides
Field guide · DFT-G03

Invalid code combinations, and how the matrices decide

Every segment of a string can be valid on its own while the string is still illegal. The pairings are the rule, and CDE publishes exactly which ones a district may use.

The rule

Seven matrices, one verdict

CDE publishes valid-combination tables covering the pairings among fund, resource, goal, function, and object. Each matrix answers one question: for this row code, which column codes are allowed? A district-valid pairing carries the D flag; a combination without it is invalid for district reporting even when both codes exist and both post happily in your ledger all year.

That last part is the trap. Your financial system will usually accept any structurally well-formed string. The combination tables are a separate, stricter layer, and they change: codes retire, new-year-only codes appear, and pairings that were legal last fiscal year quietly stop being legal this one.

How it fails

The usual suspects

  • Carry-forward strings. A budget rolled from last year keeps a pairing the new year's tables no longer allow.
  • Restricted resources on the wrong function or goal. The resource is fine, the function is fine, the pair is not.
  • Object families with narrow homes. Certain objects are only valid against specific funds or resource ranges.
  • One-digit slips. A typo lands on a real code, so nothing looks wrong until the pairing check runs.
The fix

Recode one side, then re-verify the whole string

An invalid pair has exactly two candidate fixes: change the row code or change the column code. In practice the substitution should come from codes you already use (your chart is your vocabulary), and the resulting string must be re-checked against all the matrices, not just the one that failed, because fixing the resource-function pair can break the resource-object pair.

SPECIMEN · V2 FINDINGSYNTHETIC DATA
01-6300-0-1110-2700-4300INVALID PAIR
resource 6300 not valid with function 27003 lines
01-6300-0-1110-1000-4300VALID ALL 7
recode function to 1000, already in your filesame amount

The verification step is the part worth automating. Checking one repaired string against seven matrices is clerical; checking forty of them in deadline week is an evening.

Check your own file in the time it took to read this. Drop a SACS Other Export (.dat) into SACS Pre-Flight and see every finding, with line numbers, before the Official Export runs. Findings are free and your file never leaves your browser.

Run SACS Pre-Flight free