figma guide

Designing breach settlement payment file generation and NACHA preview UI in Figma: WAVE-EXPORT-*, RAIL-VAL-*, and dual-control treasury handoff

Design breach settlement payment file UI in Figma with WAVE-EXPORT-* batches, RAIL-VAL-* NACHA preview, checksum gates, and dual-control export before bank upload.

Published
Updated
Sep 20, 2026
Read time
4 min
Level
Intermediate

Quick answer

Payment file generation UI is the last human checkpoint before money leaves escrow—not a “download CSV” button. Design WAVE-EXPORT- batch builders* that only include claims passing GATE-PAY-*, RAIL-VAL- NACHA/ACH preview panels* (entry hash, addenda, return account routing), and CHK-SUM- dual-control export* with immutable LOG-EXPORT-* tied to fund reconciliation and counsel payout approval. Preview must surface EXCL-WAVE-* exclusions with top HOLD-DISB-* reasons, VER-AWD- drift* since last BATCH-GUARD-* run, and rail-specific validation for international payments and tax withholding. Without structured export UI, treasury uploads stale files after award restatement, returned payments duplicate, and post-disbursement QA cannot match bank lines to claim ids. Start from the Figma guides hub and pair with distribution schedule, payment disbursement tracking, and status portal ETA updates.


Who this is for

  • Product designers connecting WAVE-* planning to bank-ready artifacts.
  • Treasury operators who need NACHA preview without opening raw files in a text editor.
  • Engineers implementing idempotent export jobs and checksum verification in CI.

WAVE-EXPORT-* batch builder overview

PaymentExportBatch — WAVE-EXPORT-441 · Tranche T3 · Status: Draft
├── Source:
│   ├── [Distribution schedule](/designing-breach-settlement-distribution-schedule-and-tranche-disbursement-planning-ui-in-figma/) · SIM-WAVE-*
│   ├── GATE-PAY-* snapshot id · frozen at export start
│   └── Counsel APP-PAY-* batch lock · required
├── ID namespace:
│   ├── WAVE-EXPORT-* (export job)
│   ├── RAIL-VAL-* (validation result)
│   ├── CHK-SUM-* (file fingerprint)
│   ├── LOG-EXPORT-* (who/when/what)
│   ├── LINE-PAY-* (one row per claim payout)
│   └── EXCL-WAVE-* (skipped claims + reason)
├── Totals panel:
│   ├── Entry count · debit/credit hash
│   ├── Gross vs net after [lien offset](/designing-breach-settlement-lien-and-third-party-creditor-offset-ui-in-figma/)
│   ├── Escrow ALLOC remaining · tie to reconciliation
│   └── Rail mix · ACH / check / wire / intl
└── Actions:
    ├── Run RAIL-VAL-* · block until pass
    ├── Request second approver · dual control
    ├── Generate file · stamp CHK-SUM-*
    └── Mark uploaded · bank confirmation ref
Export stateClaimant portalBank
DraftNo changeNo file
RAIL-VAL passOptional “processing soon”Not yet
Exported (pending upload)“Payment processing”Awaiting upload
UploadedETA from rail SLAIn flight
ConfirmedPaid / check mailedSettled

Verdict: Never regenerate WAVE-EXPORT- without a new GATE-PAY snapshot*— partial reruns after restatement cause double pay.


RAIL-VAL-* NACHA preview UI

ValidationUI surfaceFailure UX
Routing numberInline on LINE-PAY-*Block + link saved addresses
Account tokenizationMasked last-4 onlyFraud queue if duplicate token
Addenda / remittancePreview paneTruncate with LOG if over limit
Entry hashSummary bannerHard block until fixed
SEC code / IATRail pickerForeign claimant wizard
1099 / W-8 flagsTax columnBlock if tax reporting incomplete

Show a split view: left = claim list with FIN-AWD-* and net pay; right = rendered NACHA lines (read-only) with line numbers mapping to CLM-* ids.

Use tables for LINE-PAY-* grids and inline alerts for RAIL-VAL-* blockers.


Dual-control and checksum handoff

ExportApproval — APP-EXPORT-992 · WAVE-EXPORT-441
├── Approver 1 · treasury · timestamp
├── Approver 2 · counsel or admin · timestamp
├── CHK-SUM-SHA256 · attached to LOG-EXPORT-*
├── Download link · expires · audit logged
└── Upload confirmation:
    ├── Bank ref id · required
    ├── Optional file re-upload match CHK-SUM-*
    └── Triggers [status portal](/designing-breach-settlement-claim-status-portal-and-claimant-dashboard-ui-in-figma/) bulk update

Pair with active sessions policy for export download roles and audit log entries for every preview and download.


Comparison: export formats by rail

RailPreview complexityTypical failure
ACH (NACHA)High · hash + addendaInvalid routing
Check print fileMedium · address blockReturned mail
WireMedium · SWIFT/BICIntl tax
Digital walletLow · tokenProvider limit

Recommended: one WAVE-EXPORT-* job per rail per tranche— do not mix ACH and wire in a single NACHA file.


Common mistakes

  1. Exporting without fresh BATCH-GUARD-* after hold release— stale inclusions.
  2. No CHK-SUM- on downloaded file*— treasury uploads wrong attachment from email.
  3. Preview shows gross FIN-AWD- but bank debits net*— claimant confusion and clawback risk.
  4. Skipping LOG-EXPORT- on “test” files*— auditors treat test as production.
  5. Portal “paid” before bank confirm— align with export state table above.

  1. Finalize tranche in distribution schedule · counsel APP-PAY-*.
  2. Run BATCH-GUARD-* · resolve EXCL-WAVE-* · freeze GATE-PAY snapshot.
  3. Build WAVE-EXPORT-* · run RAIL-VAL-* until clean.
  4. Dual APP-EXPORT-* · download · upload to bank · record confirmation.
  5. Feed lines to reconciliation and QA sampling.

FAQ

Can counsel approve export without viewing NACHA preview?

Require RAIL-VAL pass badge on APP-EXPORT screen— preview link opens read-only RAIL-VAL-*.

Partial tranche rerun after one return?

New WAVE-EXPORT- job* for affected LINE-PAY-* only— never append to uploaded batch.

International claim in ACH file?

Block in RAIL-VAL-*— route to foreign payment rail.

Developer handoff?

Ship LINE-PAY- → NACHA line mapping table* in specs— Dev Mode checklist.

Monitor reporting?

Attach CHK-SUM- and entry count* to court monitor tranche exhibits.


Next steps

Share on X

§ Keep reading

Related guides.