figma guide

Designing breach settlement intraday liquidity and cash position dashboard UI in Figma: LIQ-*, CASH-POS-*, and wave solvency before export

Design breach settlement treasury liquidity UI in Figma with CASH-POS-* account snapshots, LIQ-* intraday forecasts, wave solvency checks, and ops alerts before NACHA or wire export drains escrow.

Published
Updated
Sep 29, 2026
Read time
6 min
Level
Intermediate

Quick answer

Intraday liquidity UI answers one question treasury asks all day: “If I approve this wave export now, will escrow still cover holds, fees, and the next tranche?” Design CASH-POS- account snapshots* fed from bank feeds (not claimant-visible), LIQ- rolling forecasts* that sum scheduled distribution waves, provisional payments, and reserve buckets, and solvency gates on NACHA export and wire schedule submit. Liquidity sits upstream of fund reconciliation (end-of-day truth) and downstream of supplemental fund injection (cure actions). When LIQ-* projects shortfall, surface defer wave, trigger replenishment, or apply pro rata reduction—each with audit ids, not silent batch splits. Ops war room users need at-a-glance available_to_pay vs committed_outflows with drill-down to PAY-* rows—not a single bank balance number that ignores contested escrow. Start from the Figma guides hub and use tables, inline alerts, and Dev Mode handoff.


Who this is for

  • Product designers where treasury uses three browser tabs (bank, Excel, admin) to guess solvency.
  • Claims administrators delaying waves because “we’re not sure the account can cover it.”
  • Finance pairing liquidity alerts with escrow interest allocation and administrator fee accruals.

CASH-POS-* cash position snapshot

CashPositionSnapshot — CASH-POS-992-110 · as_of: 2026-09-29T14:30:00Z
├── Accounts (program-scoped):
│   ├── escrow_operating · escrow_disbursement · fee_hold · tax_withholding
│   ├── per_account: ledger_balance · available_balance · holds_total
│   └── bank_feed_id · last_sync_status · stale_feed_warning
├── Derived buckets (must reconcile to RES-* model):
│   ├── available_to_pay = operating available − pending_exports − minimum_cushion
│   ├── committed = sum PAY-* approved not exported + in-flight ACH/wire
│   ├── reserved = [contested escrow](/designing-breach-settlement-contested-claim-escrow-and-dispute-reserve-ui-in-figma/) + [lien offsets](/designing-breach-settlement-lien-and-third-party-creditor-offset-ui-in-figma/)
│   └── scheduled_today = [WIR-SCHED-*](/designing-breach-settlement-wire-cutoff-windows-and-same-day-scheduling-ui-in-figma/) + NACHA batches + CARD-LOAD-* ([card rail](/designing-breach-settlement-prepaid-card-and-digital-wallet-disbursement-ui-in-figma/))
├── UI layout:
│   ├── Hero strip: available_to_pay (large) · committed · reserved
│   ├── Account cards with [badges](/designing-badges-and-chips-in-figma-status-tags-and-handoff/) stale | syncing | error
│   └── Drill-down [table](/figma-tables-and-data-ui-rows-columns-and-handoff/) to movement lines (admin only)
└── Audit:
    ├── LOG-CASH-* snapshot hash · who viewed export screen
    └── Alert CASH-ALERT-* when feed stale > SLA
MetricIncludesExcludes
Ledger balanceAll posted bank credits/debitsUnexported approval intent
Available to paySpendable per bank rulesContested reserves
CommittedApproved PAY-* queued for exportDraft claims
Forecast outflowsLIQ-* scheduledHypothetical simulations unless sim mode

Verdict: Never show claimants raw CASH-POS-*—portal uses payment timeline only; liquidity is treasury/admin.


LIQ-* intraday liquidity forecast

LiquidityForecast — LIQ-992-055 · horizon: 5_business_days
├── Inputs:
│   ├── CASH-POS-* latest · pending [replenishment](/designing-breach-settlement-escrow-replenishment-and-disbursement-reserve-ui-in-figma/) TOP-UP-*
│   ├── [Distribution schedule](/designing-breach-settlement-distribution-schedule-and-tranche-disbursement-planning-ui-in-figma/) tranches by date
│   ├── [Attorney fee](/designing-breach-settlement-attorney-fee-allocation-and-incentive-award-ui-in-figma/) and [admin fee](/designing-breach-settlement-claims-administrator-fee-and-expense-recovery-ui-in-figma/) accrual schedules
│   ├── Expected [returns / reissues](/designing-breach-settlement-returned-payment-and-reissue-ui-in-figma/) (credit back)
│   └── [Appeal stay](/designing-breach-settlement-appeal-and-mandamus-review-ui-in-figma/) — zero outflows when stay active
├── Outputs:
│   ├── daily_net_position[] · minimum_balance_day · first_shortfall_date
│   ├── scenario toggles: accelerate_wave | delay_tranche | inject_funds
│   └── export LIQ-RPT-* PDF for [court monitor](/designing-breach-settlement-court-monitor-and-special-master-reporting-ui-in-figma/)
├── Solvency check hook:
│   ├── On [GATE-PAY-* release](/designing-breach-settlement-disbursement-hold-release-and-payment-gate-ui-in-figma/) — warn if LIQ-min < cushion
│   ├── Hard block vs soft warn — program policy flag
│   └── Link [shortfall reduction](/designing-breach-settlement-fund-shortfall-and-pro-rata-reduction-ui-in-figma/) workflow if hard block
└── Visualization:
    ├── Stacked bar: inflows (interest, top-up) vs outflows by rail
    └── [Date picker](/designing-date-pickers-and-calendar-ui-in-figma/) to inspect single business day

Forecast assumptions belong in admin copy, not claimant FAQ—when interest accrual is estimate, badge row estimated on interest slice.


Wave solvency panel (pre-export)

Attach a solvency drawer to NACHA preview, payment re-export, and wire schedule bulk submit:

WaveSolvencyCheck — SOLV-992-881 · batch_ref: NACHA-EXP-992-044
├── batch_total_cents · fee_buffer_cents · cushion_policy_cents
├── available_to_pay_at_submit · projected_after_batch
├── Result: pass | warn | block
├── If block:
│   ├── CTA: [Replenishment request](/designing-breach-settlement-escrow-replenishment-and-disbursement-reserve-ui-in-figma/)
│   ├── CTA: Split batch to [validation queue](/designing-breach-settlement-pre-export-payment-validation-and-exception-queue-ui-in-figma/)
│   └── CTA: Defer to next business day on [calendar](/designing-breach-settlement-wire-cutoff-windows-and-same-day-scheduling-ui-in-figma/)
└── Log SOLV-* outcome on export audit trail ([QA sampling](/designing-breach-settlement-post-disbursement-qa-and-audit-sampling-ui-in-figma/) may reference)

Treasury should see which PAY- rows push the batch over*—sort table by marginal impact, not only batch total.


Alerts, roles, and war room integration

LiquidityAlert — CASH-ALERT-992-003 · severity: critical
├── Triggers:
│   ├── available_to_pay < committed + cushion
│   ├── bank feed stale > N minutes
│   ├── LIQ-* first_shortfall_date within 2 business days
│   └── [Replenishment](/designing-breach-settlement-escrow-replenishment-and-disbursement-reserve-ui-in-figma/) approved but not settled
├── Routing ([security alerting patterns](/designing-security-alerting-rules-and-notification-routing-ui-in-figma/) adapted for finance):
│   ├── treasury_primary · claims_admin_backup · counsel_readonly optional
│   └── [Notification prefs](/designing-notification-preferences-and-communication-settings-ui-in-figma/) per role—not SMS for everyone
└── War room tile:
    ├── Link [customer status page](/designing-customer-incident-status-page-and-communication-ui-in-figma/) only if disbursement pause is public
    └── Do not publish exact escrow balance externally

Use inline alerts on export screens for warn; modals for block with required acknowledgment.


Comparison: liquidity vs reconciliation

ToolWhenQuestion answered
LIQ- forecast*Intraday / planningWill we run out before Friday?
CASH-POS-*Real-time-ishWhat is spendable right now?
Fund reconciliationEnd of dayDid bank match our exports?
Final accountingProgram closeCourt-ready totals

Designers should reuse table and badge components across CASH-POS drill-down and reconciliation matching—treasury learns one visual language.


Handoff checklist (Dev Mode)

  • CashPositionSnapshot — snapshot_id (CASH-POS-*), as_of, accounts_json, available_to_pay_cents, feed_status_enum.
  • LiquidityForecast — forecast_id (LIQ-*), horizon_days, daily_series_json, first_shortfall_date, scenario_id.
  • WaveSolvencyCheck — solv_id (SOLV-*), batch_ref, result_enum, projected_balance_cents, policy_cushion_cents.
  • LiquidityAlert — alert_id (CASH-ALERT-*), severity, trigger_enum, acknowledged_by.
  • TreasuryDashboardLayout — widget_order, role_visibility_matrix (no claimant variant).

Common mistakes

MistakeWhy it hurtsFix
Single bank balance heroIgnores reservesavailable_to_pay
No stale feed stateExport on bad dataCASH-ALERT-* + block
Forecast without feesSurprise shortfallInclude admin/attorney accrual
Soft warn only on block policyDouble paysPolicy flag per program
Claimant-visible balanceSecurity / panicAdmin-only CASH-POS
Ignore appeal stayIllegal disbursementZero outflows in LIQ-*
Solvency separate from GATE-PAYPays under holdSingle pre-export stack

  1. Define RES- and account mapping* with finance before drawing widgets.
  2. Design CASH-POS hero + drill-down with stale and error states first.
  3. Add LIQ- chart* with scenario toggles tied to real batch ids in fixtures.
  4. Wire solvency drawer into NACHA and wire export flows.
  5. Run tabletop with mock shortfall day—verify CTAs match ops playbook.

FAQ

Same as fund reconciliation?

Reconciliation matches history; liquidity prevents bad exports before they happen—link both from treasury nav.

Escrow replenishment vs supplemental injection?

Replenishment covers operational drift; injection cures plan-level shortfall—LIQ-* should show which cure applies.

Wire cut-off interaction?

scheduled_today must include wires at risk of missing CUT-*—otherwise available_to_pay looks artificially high until tomorrow.

SLA dashboard for claimants?

Only publish “disbursement delays” if program comms approves—never live escrow balance on SLA site.

Card loads (prepaid rail)?

Include CARD-LOAD- in committed outflows* when batch approved—loads are not “off balance sheet.”


Next steps

Share on X

§ Keep reading

Related guides.