figma guide
Designing breach settlement stop payment, void, and in-flight recall UI in Figma: VOID-PAY-*, STOP-*, RECALL-*, and dual-control gates
Design breach settlement stop payment UI in Figma with VOID-PAY-* voids, STOP-* check requests, RECALL-* in-flight ACH recalls, dual-control approval, and claimant-safe status sync.
- Published
- Updated
- Sep 22, 2026
- Read time
- 5 min
- Level
- Intermediate
Quick answer
Stop-payment and void UI prevents irreversible mistakes when the wrong payee, amount, or rail was approved—before bank confirmation makes recall expensive or impossible. Design VOID-PAY- records* that supersede PAY-* without deleting audit history, STOP- check stop-payment requests* with processor ticket ids, RECALL- in-flight ACH/wire recalls* with time-window warnings, and dual-control approval (preparer + counsel or finance) tied to counsel review. Claimant status portal must flip to neutral “payment cancelled—update required”—not silent failure. Connect to NACHA export, returned payment, clawback, and fund reconciliation. Start from the Figma guides hub and pair with modals, inline alerts, and Dev Mode handoff.
Who this is for
- Product designers on finance and disbursement consoles where errors must be stopped fast.
- Settlement administrators coordinating bank stop payments with reissue workflows.
- Class counsel who need LOG-VOID-* evidence before certifying final accounting.
Payment void state machine
VoidRequest — VOID-PAY-992-22014 · pay_id: PAY-992-22014 · Status: Pending second approval
├── Eligible states (rail-dependent):
│ ├── Pre-export (FILE-NACHA-* not submitted) → cancel PAY-* · no bank action
│ ├── Exported · pre-settlement → RECALL-* attempt + VOID-PAY-*
│ ├── SETTLED → not voidable · [clawback](/designing-breach-settlement-clawback-and-overpayment-recovery-ui-in-figma/) path only
│ └── Check mailed · uncashed → STOP-* stop payment · void if returned
├── ID namespace:
│ ├── VOID-PAY-* (void request)
│ ├── STOP-* (check stop)
│ ├── RECALL-* (in-flight recall)
│ ├── APR-VOID-* (approval)
│ ├── LOG-VOID-* (immutable audit)
│ └── WVR-VOID-* (counsel waiver when recall impossible)
├── Reasons (controlled vocabulary):
│ ├── Wrong payee · wrong amount · duplicate PAY-*
│ ├── [Fraud hold](/designing-breach-settlement-duplicate-claim-detection-and-fraud-prevention-ui-in-figma/) after export
│ ├── [Appeal stay](/designing-breach-settlement-appeal-and-mandamus-review-ui-in-figma/) · [GATE-PAY-*](/designing-breach-settlement-disbursement-hold-release-and-payment-gate-ui-in-figma/) override
│ └── Counsel-directed correction
└── Outcomes:
├── Void confirmed → PAY-* status voided · portal sync
├── Recall success → funds returned · new PAY-* via reissue
├── Recall failed → WVR-VOID-* + clawback or manual recovery
└── STOP-* placed → wait for check return · link RET-*
| Stage | Admin UI emphasis | Claimant sees |
|---|---|---|
| Draft VOID-PAY-* | Reason + linked FIND-* / FRD-* | No change until approved |
| Approved · processing | Processor ref · SLA timer | “Update in progress” banner |
| Void complete | Reissue CTA | Reissue wizard |
| Recall failed | Escalation queue | Neutral delay · no blame |
Verdict: Never hard-delete PAY-—VOID-PAY- preserves chain for post-disbursement QA and auditors.
STOP-* and RECALL-* operator consoles
StopPayment — STOP-992-0044 · pay_id: PAY-992-22014 · Check # 88421
├── Check stop UI:
│ ├── pay_id · check_number · mail_date · amount
│ ├── stop_reason_enum · fee disclosure
│ ├── bank_contact · STOP-* confirmation number
│ ├── Dual approval: finance + supervisor
│ └── Link uncashed timer → [UCF](/designing-breach-settlement-unclaimed-funds-and-escheatment-ui-in-figma/) if never cashed
├── ACH recall UI:
│ ├── Export timestamp · recall window countdown (visual urgency)
│ ├── RECALL-* request id · processor status polling
│ ├── Block new PROOF-PAY-* generation
│ └── On failure: auto-suggest CLAW-* or counsel ticket
├── Wire recall UI:
│ ├── SWIFT reference · beneficiary match warning
│ └── Higher friction confirm modal (typed pay_id)
└── Reconciliation hooks:
├── [REC-* period](/designing-breach-settlement-fund-reconciliation-and-bank-matching-ui-in-figma/) expects return leg
└── [Bank trace](/designing-breach-settlement-bank-confirmation-and-trace-matching-ui-in-figma/) reverses MATCH-LINE-*
Use progress steppers on VOID-PAY-* detail: Requested → Approved → Bank action → Closed.
Comparison: correction path by settlement stage
| Stage | Preferred path | Avoid |
|---|---|---|
| Pre-export | Cancel PAY-* | STOP-* fees |
| In flight | RECALL-* + VOID-PAY-* | Telling claimant “paid” |
| Settled | CLAW-* / recovery | Fake void |
| Check cashed | Legal recovery only | STOP-* |
Best for: high-volume ACH waves where QA FIND-* triggers batch halt before next export.
Handoff checklist (Dev Mode)
- VoidRequest — void_id (VOID-PAY-*), pay_id, reason_enum, status_enum, approver_ids[].
- StopPayment — stop_id (STOP-*), check_number, confirmation_number, fee_amount.
- PaymentRecall — recall_id (RECALL-*), pay_id, window_expires_at, processor_status_enum.
- VoidApproval — apr_void_id (APR-VOID-*), void_id, role_enum, signed_at.
- ClaimantStatusSync — rules mapping void_complete → portal_branch_enum.
Common mistakes
| Mistake | Why it hurts | Fix |
|---|---|---|
| Void without portal update | Duplicate INQ-PAY-* | Status sync job |
| New PAY-* without void | Double pay | Enforce void-first state machine |
| Single-click void | Fraud · ops error | Dual-control APR-VOID-* |
| RECALL-* after window | False confidence | Countdown + block button |
| STOP-* without fee tracking | Fund shortfall | Fee line on REMIT-ADV-* admin view |
| Void SETTLED payment | Impossible promise | Disable UI · route CLAW-* |
| No LOG-VOID-* export | Court monitor gap | Compliance export |
| PROOF-PAY-* still downloadable | Wrong legal proof | Invalidate HASH-PROOF-* on void |
Recommended workflow
- Document rail-specific void rules with counsel (ACH vs check vs wire).
- Prototype VOID-PAY- wizard* with reason codes and linked evidence (FIND-, FRD-).
- Design STOP- / RECALL- consoles** with processor confirmation fields.
- Wire claimant messaging to payment inquiry and timeline components.
- Reconciliation test cases in fund reconciliation mock data.
FAQ
Void vs returned payment RET-*?
RET- is bank-initiated failure* · VOID-PAY-* is admin-initiated cancellation before or during delivery.
Partial void on split PAY-*?
Support line-level void only if plan allows · otherwise void entire PAY-* and reissue corrected REMIT-ADV-*.
Batch void after QA halt?
Bulk VOID-PAY- from QA- sample** · require counsel APR-VOID-* on batch · audit LOG-VOID-* per pay_id.
Claimant already downloaded PROOF-PAY-*?
Supersede artifact · proof UI banner · NOTIF-PROOF-VOID-*.
Interest accrual during recall?
Show on admin REMIT-ADV- preview* · tie to escrow interest if applicable.
Next steps
- Design breach settlement payment file generation and NACHA preview UI in Figma — pre-export cancel path
- Design breach settlement returned payment and reissue UI in Figma — post-void reissue
- Design breach settlement clawback and overpayment recovery UI in Figma — post-settlement correction
- Design breach settlement post-disbursement QA and audit sampling UI in Figma — FIND-* triggered voids
- Design breach settlement payment inquiry and where-is-my-payment UI in Figma — claimant messaging after void
§ Keep reading