Billing·Advanced·5 min·Updated 2026-10-05
Ledger assignment criteria are insert-only, and nothing warns you
A mistake in a ledger routing criterion is permanent. The object accepts field names that do not exist, and only tells you at posting.
Salesforce docs documented by SalesforceField experience observed on a real orgRecommended pattern what we recommendTo verify unverified
Ledger account assignment rules carry their criteria in a child object. That child object is insert-only: no update, no delete, in Apex or by API. There is no undo.
The consequences compound:
- A rule carrying a criterion can never be deleted — only deactivated. Your mistakes accumulate in the org permanently.
- The rule must be deactivated before a criterion can be added.
- No validation of the field name on insert. Any string is accepted, including a field that does not exist. The error surfaces only when an invoice is posted.
The workaround, once you are stuck with a wrong criterion, is to add another with a higher sequence and change the rule's filter logic to ignore the bad one.
The practical rule that follows: prove every rule with a real posted invoice. Reading the configuration proves nothing, because the configuration accepts nonsense.