Waterfall Templates
Access prerequisites
- Permission (module):
creditConfigManage(to create/edit). Read access granted byviewCredits. - License/Feature:
CREDIT_INVESTMENTSenabled in the tenant license (Vault). - Menu container: TOKENIZATION → Tokenized Credit group
What it is / when to use
The Waterfall Template defines the distribution order of funds when a receivable is settled. It specifies, step by step, who receives first and under what rule: first the investor's principal, then the investor's yield, the platform fee, any originator excess, and the reserve. It is the mechanism that ensures the payment waterfall always follows the same contracted priority.
Use this screen to standardize how settled funds are split among parties at settlement, instead of defining the order case by case.
Prerequisites
- Permission:
creditConfigManage(dual permission — CPM enum + dynamic module in DB). - License/Feature:
CREDIT_INVESTMENTSenabled. - Dependencies: none to create the template; it is consumed at the settlement of an operation.
Step by step
- Go to Tokenized Credit → Waterfall Templates.
- Filter by Active if needed.
- Click Create.
- Fill in Name, Reserve %, and the Rounding Rule.
- In the Steps block, click Add step and configure each row: Item Type, Rule Type, and, if applicable, the Value. The order is numbered automatically (first step = highest priority).
- Reorder by removing/re-adding steps (renumbering is automatic).
- Click Save.
Fields
| Field | What it is | Required? | System/backend effect |
|---|---|---|---|
| Name | Template identifier | Yes | Stored in name. |
| Reserve % | Percentage retained as reserve before/during the waterfall | No (default 0) | Stored in reservePercentage. |
| Rounding Rule | How to round fractional amounts: FLOOR (round down, 10.9→10), CEIL (round up, 10.1→11), ROUND (nearest) | No | Stored in roundingRule (or null if empty). Ensures cent consistency when splitting among parties. |
| Step → Order | Position in the distribution queue | Yes (automatic) | Stored in order. At execution, items are sorted by priority (lowest first) and disbursements occur in that sequence. |
| Step → Item Type | Who/what the step pays: INVESTOR_PRINCIPAL, INVESTOR_YIELD, PLATFORM_FEE, ORIGINATOR_EXCESS, RESERVE | Yes | Stored in itemType. Routes the disbursement to the correct account and classifies the ledger entry (INVESTOR, PLATFORM, or ORIGINATOR). |
| Step → Rule Type | How the step amount is calculated: PERCENT, FIXED, or REMAINDER | Yes | Stored in rule.type. PERCENT/FIXED use the Value; REMAINDER distributes whatever is left (no Value). |
| Step → Value | Percentage (PERCENT) or amount (FIXED) | Conditional | Stored in rule.value. Omitted when the type is REMAINDER. |
| Active | Enables/disables the template | Yes (default Yes) | Stored in active. |
| Version | Version number | No (default 1) | Stored in version. |
The form automatically builds the
stepsJson(structure{ steps: [{ order, itemType, rule: { type, value } }] }). You do not edit the JSON manually.
How the waterfall is executed (executor view)
At settlement, the waterfall executor:
- Locates the Escrow Pool account (platform guarantee pool).
- Sorts items by priority (lowest number first).
- For each item, releases funds from the Escrow Pool to the destination account and records the ledger entry with an
idempotencyKeyper settlement+itemType. - If an item fails, the executor continues with the next ones (does not abort the entire waterfall).
Actions and modals
- Create / Update: saves the template via
createWaterfallTemplate/updateWaterfallTemplate. Button visible only withcreditConfigManage. - Add / Remove step: manipulate the list and automatically renumber the order.
- Edit: loads the template and rebuilds the steps from the saved
stepsJson.
Because it defines how money is split, saving may require step-up (password + MFA) depending on the environment.
Business rules / cautions
Attention
- Order is priority. Whoever is on top receives first. Always place
INVESTOR_PRINCIPALbeforeINVESTOR_YIELD, and both beforePLATFORM_FEE/ORIGINATOR_EXCESS, unless a specific contract dictates otherwise. - Use
REMAINDERin the last step. TheREMAINDERstep distributes the remaining balance; placing it in the middle may zero out subsequent steps. NormallyORIGINATOR_EXCESSisREMAINDER. REMAINDERignores the Value. Even if you enter a value, it is not stored forREMAINDERsteps.- Partial failure does not revert disbursements already made. The executor proceeds to the next item; a failed item remains pending without undoing previous ones — requires manual reconciliation.
Financial distribution
- Waterfall execution moves real money from the Escrow Pool to investors/platform/originator. Once a disbursement is released, there is no automatic rollback — a wrong template distributes incorrectly. Validate the order and values before activating.
- Financial values: percentages and amounts are handled as BigNumber; the Rounding Rule explicitly defines how fractional cents are treated to avoid reconciliation discrepancies.
- Idempotency: disbursements are recorded with an
idempotencyKeyper settlement+itemType — reprocessing a settlement is safe and does not duplicate ledger entries. In ecosystem financial flows, errorE00021("already processed") means success (already processed), not failure.
Examples
Scenario 1 — Standard investor-first waterfall
- Name: "Senior Standard". Reserve %: 0. Rounding: FLOOR.
- Steps:
- 1 ·
INVESTOR_PRINCIPAL·REMAINDER— returns the invested principal. - 2 ·
INVESTOR_YIELD·PERCENT· value per contracted yield. - 3 ·
PLATFORM_FEE·PERCENT· platform fee. - 4 ·
ORIGINATOR_EXCESS·REMAINDER— whatever remains goes back to the originator.
- 1 ·
- Save.
Note: if there are two
REMAINDERsteps, the first consumes the balance; adjust to useFIXED/PERCENTfor the principal and reserveREMAINDERonly for the originator excess.
Scenario 2 — Waterfall with reserve and fixed fee
- Name: "With 5% Reserve". Reserve %: 5. Rounding: ROUND.
- Steps:
- 1 ·
RESERVE·PERCENT· 5. - 2 ·
INVESTOR_PRINCIPAL·FIXED· principal amount. - 3 ·
INVESTOR_YIELD·PERCENT· yield. - 4 ·
PLATFORM_FEE·FIXED· fixed fee. - 5 ·
ORIGINATOR_EXCESS·REMAINDER.
- 1 ·
- Save.
Result: at settlement, 5% goes to reserve, investor principal and yield are paid next, the platform receives the fixed fee, and the remaining balance returns to the originator.
Scenario 3 — "Subordinated originator" waterfall
- Name: "Subordinated Originator". Rounding: FLOOR.
- Steps:
INVESTOR_PRINCIPAL→INVESTOR_YIELD→PLATFORM_FEE→ORIGINATOR_EXCESS (REMAINDER). - Save.
Result: the originator only receives excess after all investors and the platform — a typical structure for operations where the originator absorbs the first loss.