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
StepAuto vs humanTypical blocker
Export drainAutoBatch stuck in exporting
Feed freshnessAutoBank API down
Exception queueHumanNACK without remediation owner
Liquidity reviewHumanLIQ-min below cushion unacknowledged
Dual certHumanSecond 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

ScreenTime horizonPrimary userOutput
CASH-POS / LIQ-*IntradayTreasury opsPrevent bad export
EOD-CLOSE / CERT-LIQBusiness date boundaryTreasury + controllerAttestation + freeze
Fund reconciliationPrior day truthTreasury + claims financeMatched 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

MistakeWhy it hurtsFix
Close without feed freshnessCert on fantasy balanceHard block on stale CASH-POS
Single-click “certify all”No dual controlCERT-LIQ two-step
Freeze hides void toolsStuck recallsAllow void/recall lane
Reconciliation starts mid-closeDouble countingJob gate on EOD pass
Claimant sees “closed”PanicAdmin-only freeze
No reopen pathTrapped typosEOD-REOPEN with audit
QA samples post-close exportsAudit gapTimestamp population rule

  1. Map finance SOP to EOD-CLOSE steps—one screen row per real checkpoint.
  2. Design blocker table with deep links before drawing success state.
  3. Add CERT-LIQ PDF preview component for court-facing programs.
  4. Wire FREEZE-EOD into export primary buttons across rail screens.
  5. 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

Share on X

§ Keep reading

Related guides.