figma guide
Designing breach settlement pre-export payment validation and exception queue UI in Figma: PAY-VAL-*, EXC-QUEUE-*, and export blockers
Design breach settlement pre-export validation UI in Figma with PAY-VAL-* rule runs, EXC-QUEUE-* exceptions, counsel overrides, and BLOCK-EXPORT-* gates before NACHA file generation.
- Published
- Updated
- Sep 24, 2026
- Read time
- 5 min
- Level
- Intermediate
Quick answer
Pre-export validation UI stops bad rows from ever becoming FILE-NACHA-—so SUB- and SUB-ACK- do not inherit avoidable NACKs.* Design PAY-VAL- validation runs* over a WAVE-* or tranche, EXC-QUEUE- exception queues* grouped by fix owner (claimant · ops · counsel · fraud), and BLOCK-EXPORT- summaries* that disable NACHA preview generate until critical EXC-* clear or receive OVR-EXC- counsel override*. Rules should mirror post-export pain: missing GATE-PAY-*, stale FIN-AWD-*, open FRD-*, invalid rail for foreign claimant, and lien offset mismatches. Passing PAY-VAL-* produces VAL-PASS-* certificate linked to HASH-FILE-* draft. Start from the Figma guides hub and pair with forms, search filters, and Dev Mode handoff.
Who this is for
- Product designers building “Generate NACHA” buttons that currently fail at the processor with 400 row errors.
- Claims administrators triaging hundreds of EXC-* before a distribution tranche cutoff.
- Counsel approving OVR-EXC-* when court order allows pay despite a soft validation warning.
PAY-VAL-* run model
ValidationRun — PAY-VAL-992-044 · wave: WAVE-992-04 · Status: 412 pass · 38 blocked
├── Scope:
│ ├── All PAY-* in wave · or SIM-WAVE-* dry run
│ ├── Rule pack version (RULE-PKG-* dated)
│ └── Subclass filters · rail filters (ACH · check · wire)
├── Rule categories (examples):
│ ├── Gate: GATE-PAY-* released · no appeal STY-*
│ ├── Award: FIN-AWD-* current · no pending [tier objection](/designing-breach-settlement-tier-objection-and-award-challenge-ui-in-figma/)
│ ├── Payee: routing checksum · name match · [BENE-UPD-*](/designing-breach-settlement-payee-correction-and-beneficiary-update-ui-in-figma/) approved
│ ├── Fraud: no open FRD-* · IDV step-up satisfied
│ ├── Lien: LIEN-OFF-* applied · net ≥ 0
│ ├── Tax: W-9/W-8 on file for threshold
│ └── Fund: escrow ALLOC-* covers wave total
├── Outputs:
│ ├── EXC-* rows (one per pay_id · rule_id)
│ ├── BLOCK-EXPORT-* if any severity=critical
│ ├── VAL-PASS-* certificate when zero critical
│ └── VAL-RPT-* PDF for [counsel approval](/designing-breach-settlement-counsel-review-and-payout-approval-ui-in-figma/)
└── Re-run triggers: BENE-UPD-* · AWD restatement · lien update · manual refresh
| Severity | Export behavior | Override |
|---|---|---|
| Critical | BLOCK-EXPORT-* | OVR-EXC-* + APR-PAY-* only |
| Warning | Generate allowed · confirm modal | Ops acknowledge |
| Info | Generate allowed | None |
Verdict: PAY-VAL- should run automatically before every FILE-NACHA- generate**—manual “export anyway” is audit poison unless OVR-EXC-* exists.
EXC-QUEUE-* operator workspace
ExceptionQueue — EXC-QUEUE-992-04 · run: PAY-VAL-992-044 · Sort: severity · owner
├── Filters:
│ ├── owner_enum (claimant · ops · counsel · fraud · treasury)
│ ├── rule_id · subclass · rail · fix_status
│ └── pay_id · clm_id search ([search UI patterns](/designing-search-ui-in-figma-bars-filters-and-results/))
├── Row detail drawer:
│ ├── Human-readable rule explanation + doc link
│ ├── Suggested fix CTA (open BENE · request docs · release gate)
│ ├── Related EXC-* on same CLM-*
│ └── History: prior VAL-* runs · cleared_at
├── Bulk actions:
│ ├── Assign to queue owner · snooze until date
│ ├── Export CSV for call center ([payment inquiry](/designing-breach-settlement-payment-inquiry-and-where-is-my-payment-ui-in-figma/))
│ └── Request counsel batch OVR-EXC-*
└── Wave readiness card:
├── Pass count · block count · dollar blocked
├── Compare to [shortfall](/designing-breach-settlement-fund-shortfall-and-pro-rata-reduction-ui-in-figma/) baseline
└── CTA: Run PAY-VAL-* · Generate NACHA (disabled if BLOCK-EXPORT-*)
Use tables with sticky severity column and empty states when VAL-PASS-* clears all EXC-*.
Comparison: fix before export vs patch after NACK
| Stage | UI home | Cost to ops |
|---|---|---|
| Pre-export EXC-* | PAY-VAL-* / this queue | Low · no SUB-* |
| Processor FILE-NACK-* | ACK/NACK remediation | Medium · SUB-* attempt |
| Post-settlement RET-* | Returned payment | High · claimant impact |
Best for: Routing checksum and missing W-8—never reach SUB-*.
Integration with export and re-export
- Generate FILE-NACHA-* requires VAL-PASS-* or documented OVR-EXC-* set on all critical EXC-*.
- WAVE-REX-* re-runs PAY-VAL-* on patched pay_ids only (delta mode).
- HALT-QA-* can inject FIND-* as new EXC-* with critical severity—blocks next SUB-*.
- Provisional pay uses stricter rule pack PROV-RULE-*.
Claimant-facing: only EXC-* with owner=claimant and notify_flag should trigger portal tasks—never expose internal rule_id strings.
Handoff checklist (Dev Mode)
- PaymentValidationRun — pay_val_id (PAY-VAL-*), wave_id, rule_pkg_version, pass_count, block_count.
- PaymentException — exc_id (EXC-*), pay_id, rule_id, severity_enum, owner_enum, fix_status_enum.
- ExportBlock — block_export_id (BLOCK-EXPORT-*), pay_val_id, critical_count.
- ValidationPassCertificate — val_pass_id (VAL-PASS-*), pay_val_id, file_draft_hash_optional.
- ExceptionOverride — ovr_exc_id (OVR-EXC-), exc_id, apr_pay_id (APR-PAY-), reason_text.
Common mistakes
| Mistake | Why it hurts | Fix |
|---|---|---|
| Validate once at wave create | Stale BENE | Re-run at generate |
| Warnings block export | Ops fatigue | Severity taxonomy |
| No owner on EXC-* | Queue rot | owner_enum required |
| OVR-EXC-* without counsel id | Court risk | APR-PAY-* link |
| Same rule different copy per rail | Confusion | rule_id → template map |
| Hide dollar blocked | Fund surprise | Wave readiness card |
| Skip fraud rules on small amounts | FRD-* leak | Subclass-aware thresholds |
| VAL-PASS-* not linked to FILE-* | Audit gap | Certificate on artifact |
Recommended workflow
- Add PAY-VAL- panel* beside NACHA generate in existing export frames.
- Design EXC-QUEUE- with owner filters* and fix CTAs deep-linking to BENE/GATE modules.
- Define BLOCK-EXPORT- empty state* with top 5 rule failures aggregated.
- Prototype OVR-EXC- counsel modal* with APR-PAY-* attachment.
- Align claimant tasks with EXC-* notify_flag only.
FAQ
PAY-VAL-* vs counsel review APR-PAY-*?
VAL is machine rules on rows · APR-PAY-* is human approval of payout batch—both can be required.
SIM-WAVE-* without generating file?
Yes—default for distribution schedule planning · produces EXC-* forecast.
EXC-* cleared but NACK still happens?
Processor rules differ · map NACK-ROW-* back to RULE-PKG-* updates (ACK/NACK UI).
Contested escrow claims in wave?
Auto EXC- critical* until dispute resolved or OVR-EXC-* with court doc.
Re-run after single BENE-UPD-*?
Delta PAY-VAL-* · only affected pay_ids · update VAL-PASS-* timestamp.
Next steps
- Design breach settlement payment file generation and NACHA preview UI in Figma — generate gated by VAL-PASS-*
- Design breach settlement disbursement hold release and payment gate UI in Figma — GATE-PAY-* rule source
- Design breach settlement payment submission acknowledgment and processor NACK remediation UI in Figma — when validation misses a row
- Design breach settlement payee correction and beneficiary update UI in Figma — clear payee EXC-*
- Design breach settlement counsel review and payout approval UI in Figma — OVR-EXC-* partner flow
§ Keep reading