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
SeverityExport behaviorOverride
CriticalBLOCK-EXPORT-*OVR-EXC-* + APR-PAY-* only
WarningGenerate allowed · confirm modalOps acknowledge
InfoGenerate allowedNone

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

StageUI homeCost to ops
Pre-export EXC-*PAY-VAL-* / this queueLow · no SUB-*
Processor FILE-NACK-*ACK/NACK remediationMedium · SUB-* attempt
Post-settlement RET-*Returned paymentHigh · claimant impact

Best for: Routing checksum and missing W-8—never reach SUB-*.


Integration with export and re-export

  1. Generate FILE-NACHA-* requires VAL-PASS-* or documented OVR-EXC-* set on all critical EXC-*.
  2. WAVE-REX-* re-runs PAY-VAL-* on patched pay_ids only (delta mode).
  3. HALT-QA-* can inject FIND-* as new EXC-* with critical severity—blocks next SUB-*.
  4. 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

MistakeWhy it hurtsFix
Validate once at wave createStale BENERe-run at generate
Warnings block exportOps fatigueSeverity taxonomy
No owner on EXC-*Queue rotowner_enum required
OVR-EXC-* without counsel idCourt riskAPR-PAY-* link
Same rule different copy per railConfusionrule_id → template map
Hide dollar blockedFund surpriseWave readiness card
Skip fraud rules on small amountsFRD-* leakSubclass-aware thresholds
VAL-PASS-* not linked to FILE-*Audit gapCertificate on artifact

  1. Add PAY-VAL- panel* beside NACHA generate in existing export frames.
  2. Design EXC-QUEUE- with owner filters* and fix CTAs deep-linking to BENE/GATE modules.
  3. Define BLOCK-EXPORT- empty state* with top 5 rule failures aggregated.
  4. Prototype OVR-EXC- counsel modal* with APR-PAY-* attachment.
  5. 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

Share on X

§ Keep reading

Related guides.