Guide
Asset programs and their rules
What each setting of your asset program decides, and where to read them.
Your asset program's settings decide which records Fence accepts and how it treats your assets. Fence sets them with you when you start, and changes them as your data shows what it needs. You can read them at any time, and so can your systems.
Read your program's settings
Sign in to these docs and open My programs to see, for each program, the fields each record must carry, the rules Fence applies and an example batch it accepts.
Your systems read the same thing from the API:
curl -s "$FENCE_API/v1/api/asset-programs/$PROGRAM_ID" -H "Authorization: Bearer $TOKEN"Each setting comes twice: as stored (asset_state) and in force (asset_state_in_force), the second with Fence's defaults filled in. Read the one in force. Add ?at=2026-10-21T13:00:00Z to see the settings as they were at that moment.
What each setting decides
Setting | What it decides |
|---|---|
| Your program's calendar: which day a due date, a payment or a change of state falls on. Example: |
| The currencies an asset may be in. An asset in another one is refused |
| The fields of an asset's |
| The kinds of asset group your program takes (an |
| Whether Fence takes payment plans, in which modes ( |
| When an asset counts as late and in default. See Asset state. |
| What Fence does with a collection that names no instalment (it holds it), and a payment tolerance per currency. See Payments and allocation. |
A field's rules
Each field of asset_schema and of a group schema may have:
- checks:
required(a value, not blank),one_of(one of a list of values),date(aYYYY-MM-DDday),after(later than another field) andpairs(allowed pairs of this field's value and another's). A record that fails a check is refusedcheck_failed, naming the field and the kind of check. - cleaning, applied in order as the value is read:
trimremoves the spaces around it,upperturns it to capitals,blank_is_absentreads blank text as no value. - source: the name you send the field under, when Fence keeps it under another.
- default or default_from: the value the field takes when you leave it out, fixed or taken from another field.
- locked: once Fence holds a value, a record that changes it is refused
field_cannot_change.
A field with no rules is kept as you send it.
When settings change
A record is always decided by the settings in force when its batch was received. A change of rules never re-judges records Fence already decided. Every version is kept, with who changed it and when.