figma guide
Designing breach settlement treasury end-of-day close and liquidity certification UI in Figma: EOD-CLOSE-*, CERT-LIQ-*, and sign-off before reconciliation locks
Design breach settlement treasury end-of-day close UI in Figma with EOD-CLOSE-* checklists, CERT-LIQ-* certification, export freeze gates, and handoff to fund reconciliation without silent ledger drift.
- Published
- Updated
- Sep 30, 2026
- Read time
- 6 min
- Level
- Intermediate
Quick answer
End-of-day close UI is the contract between intraday chaos and reconciliation truth: treasury attests that no further exports will leave the building until tomorrow, CASH-POS- snapshots* are stamped for the business date, and open exceptions (NACK remediation, ACH clearing failures, in-flight recalls) are either resolved or explicitly carried with owner ids. Design EOD-CLOSE- wizard steps* that mirror ops playbooks, CERT-LIQ- dual-control certification* when programs require two treasury signatures, and export freeze banners on NACHA preview, wire schedule, and card load batches. Close sits after intraday liquidity monitoring and before fund reconciliation locks the day—if designers merge those screens, finance will export past cut-off or certify on stale feeds. Start from the Figma guides hub and reuse tables, progress steppers, and Dev Mode handoff.
Who this is for
- Product designers where “close” is a Slack message instead of an auditable workflow.
- Treasury needing proof that LIQ-* forecasts and bank feeds were reviewed before reconciliation starts.
- External auditors sampling post-disbursement QA who ask for dated certification artifacts.
EOD-CLOSE-* close checklist model
EndOfDayClose — EOD-CLOSE-992-091 · business_date: 2026-09-30
├── Preconditions (auto-checked):
│ ├── No NACHA batch in state exporting | awaiting_ack without owner
│ ├── Wire [WIR-SCHED-*](/designing-breach-settlement-wire-cutoff-windows-and-same-day-scheduling-ui-in-figma/) past cut-off marked submitted | cancelled
│ ├── CASH-POS-* feed sync within SLA (not stale)
│ └── [QA batch halt](/designing-breach-settlement-post-disbursement-qa-and-audit-sampling-ui-in-figma/) flags cleared or waived with LOG-WAI-*
├── Manual attestations (treasury):
│ ├── Reviewed LIQ-* end-of-day snapshot vs committed outflows
│ ├── Confirmed [replenishment](/designing-breach-settlement-escrow-replenishment-and-disbursement-reserve-ui-in-figma/) wires expected tomorrow noted
│ ├── Signed off on open [returned payments](/designing-breach-settlement-returned-payment-and-reissue-ui-in-figma/) queue count
│ └── Acknowledged [appeal stay](/designing-breach-settlement-appeal-and-mandamus-review-ui-in-figma/) blocks zero-export day if active
├── Outputs:
│ ├── close_id · closed_at_utc · closed_by_user_id
│ ├── frozen_snapshot_id (CASH-POS-* hash at close)
│ └── unlock_reconciliation_job — triggers RECON-DAY-* only when pass
└── Blockers UI:
├── Table of blocking items with deep links (export id, PAY-*, batch ref)
└── [Inline alert](/designing-inline-alerts-and-banners-in-figma/) on admin home until resolved
| Step | Auto vs human | Typical blocker |
|---|---|---|
| Export drain | Auto | Batch stuck in exporting |
| Feed freshness | Auto | Bank API down |
| Exception queue | Human | NACK without remediation owner |
| Liquidity review | Human | LIQ-min below cushion unacknowledged |
| Dual cert | Human | Second approver pending |
Verdict: Close fails closed—partial checkmarks do not unlock reconciliation; show which single row blocks with a primary CTA, not a generic error toast.
CERT-LIQ-* liquidity certification
When counsel or court orders require daily liquidity attestation, separate “I clicked close” from certified financial position:
LiquidityCertification — CERT-LIQ-992-012 · ties_to: EOD-CLOSE-992-091
├── Attestation fields (read-only from snapshot):
│ ├── available_to_pay_cents · committed_cents · reserved_cents
│ ├── sum_pending_exports_cents · cushion_policy_cents
│ └── first_shortfall_date from LIQ-* or “none within horizon”
├── Signer roles:
│ ├── primary_treasury · secondary_treasury (dual control)
│ └── optional counsel_readonly acknowledgment (no sign)
├── Legal copy block:
│ ├── Plain language: “We certify balances reflect bank feeds as of…”
│ └── Link program definition of available_to_pay (not raw ledger)
├── Artifacts:
│ ├── PDF CERT-LIQ-RPT-* for [court monitor](/designing-breach-settlement-court-monitor-and-special-master-reporting-ui-in-figma/)
│ └── Immutable append to [audit log](/designing-audit-log-and-security-activity-ui-in-figma/) pattern
└── Revocation:
├── CERT-REV-* only before reconciliation lock
└── Requires reason + re-run EOD-CLOSE if snapshot superseded
Use modals for signature capture with typed name + re-auth (session step-up), not checkbox-only theater.
Export freeze and cut-off integration
After EOD-CLOSE- pass*, global export freeze state should propagate:
ExportFreeze — FREEZE-EOD-992-091 · active: true
├── Surfaces:
│ ├── Disabled primary on NACHA export · wire bulk submit · CARD-LOAD-*
│ ├── Tooltip: “Treasury closed 2026-09-30 — contact treasury to reopen”
│ └── [Emergency break-glass](/designing-break-glass-emergency-access-and-account-recovery-ui-in-figma/) override with LOG-BRK-* (finance admin only)
├── Exceptions (program policy):
│ ├── Same-day [void/recall](/designing-breach-settlement-stop-payment-void-and-in-flight-recall-ui-in-figma/) — allowed
│ ├── [Bank confirm](/designing-breach-settlement-bank-confirmation-and-trace-matching-ui-in-figma/) ingest — allowed (read-only)
│ └── New disbursement exports — blocked
└── Reopen day:
├── EOD-REOPEN-* with reason · invalidates CERT-LIQ-* for that date
└── Reconciliation job must not start until re-close
Design warn vs block consistently with GATE-PAY-*—claimants never see FREEZE-EOD; they still use payment timeline.
Handoff to reconciliation and QA
CloseToReconHandoff — HANDOFF-992-044
├── Inputs to [fund reconciliation](/designing-breach-settlement-fund-reconciliation-and-bank-matching-ui-in-figma/):
│ ├── business_date · frozen_snapshot_id · export_manifest_hash
│ ├── list of batches included in close (NACHA, wire, card load ids)
│ └── excluded_in_flight_items[] with carry_reason
├── [Post-disbursement QA](/designing-breach-settlement-post-disbursement-qa-and-audit-sampling-ui-in-figma/):
│ ├── Sample population = exports before close timestamp only
│ └── FIND-* from QA does not reopen close automatically—separate workflow
└── [Final accounting](/designing-breach-settlement-final-accounting-and-court-closure-ui-in-figma/) (program end):
└── Historical EOD-CLOSE-* archive read-only; link from [compliance exports](/designing-compliance-exports-and-legal-hold-ui-in-figma/)
Treasury nav should read Liquidity → Close → Reconciliation as three siblings, not one mega-page.
Comparison: close vs liquidity vs reconciliation
| Screen | Time horizon | Primary user | Output |
|---|---|---|---|
| CASH-POS / LIQ-* | Intraday | Treasury ops | Prevent bad export |
| EOD-CLOSE / CERT-LIQ | Business date boundary | Treasury + controller | Attestation + freeze |
| Fund reconciliation | Prior day truth | Treasury + claims finance | Matched ledger |
Handoff checklist (Dev Mode)
- EndOfDayClose — close_id (EOD-CLOSE-*), business_date, preconditions_json, blocker_list, closed_at, frozen_snapshot_id.
- LiquidityCertification — cert_id (CERT-LIQ-*), close_id, attestation_amounts_json, signers[], pdf_artifact_uri.
- ExportFreeze — freeze_id (FREEZE-EOD-*), active_bool, effective_close_id, override_log_ids[].
- CloseToReconHandoff — handoff_id, export_manifest_hash, recon_job_eligible_bool.
Common mistakes
| Mistake | Why it hurts | Fix |
|---|---|---|
| Close without feed freshness | Cert on fantasy balance | Hard block on stale CASH-POS |
| Single-click “certify all” | No dual control | CERT-LIQ two-step |
| Freeze hides void tools | Stuck recalls | Allow void/recall lane |
| Reconciliation starts mid-close | Double counting | Job gate on EOD pass |
| Claimant sees “closed” | Panic | Admin-only freeze |
| No reopen path | Trapped typos | EOD-REOPEN with audit |
| QA samples post-close exports | Audit gap | Timestamp population rule |
Recommended workflow
- Map finance SOP to EOD-CLOSE steps—one screen row per real checkpoint.
- Design blocker table with deep links before drawing success state.
- Add CERT-LIQ PDF preview component for court-facing programs.
- Wire FREEZE-EOD into export primary buttons across rail screens.
- Tabletop with mock NACK at 4:55 PM—verify close fails until owned.
FAQ
Same as bank confirmation?
Bank confirm matches individual payments; EOD close certifies the day is ready for aggregate reconciliation—run confirm feeds during the day, close at boundary.
Intraday liquidity dashboard redundant?
Dashboard is continuous; close is the dated checkpoint—LIQ-* at close should snapshot into CERT-LIQ read-only fields.
Counsel approval still open?
EOD-CLOSE can pass with counsel queues open if policy allows—but GATE-PAY-* must still block export; close does not bypass counsel.
External auditor portal?
Expose CERT-LIQ-RPT- PDFs read-only*—not live CASH-POS after close (use frozen snapshot references).
Holidays and wire cut-off?
Business_date drives close, not UTC midnight—show holiday banner on close wizard when bank calendar skips settlement.
Next steps
- Design breach settlement intraday liquidity and cash position dashboard UI in Figma — upstream monitoring
- Design breach settlement fund reconciliation and bank matching UI in Figma — downstream match
- Design breach settlement post-disbursement QA and audit sampling UI in Figma — sample population rules
- Design breach settlement payment submission acknowledgment and processor NACK remediation UI in Figma — common blockers
- Design breach settlement court monitor and special master reporting UI in Figma — CERT-LIQ recipients
§ Keep reading