quote → cash
EN/FR Contact

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.

Salesforce resources