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-*
StageAdmin UI emphasisClaimant sees
Draft VOID-PAY-*Reason + linked FIND-* / FRD-*No change until approved
Approved · processingProcessor ref · SLA timer“Update in progress” banner
Void completeReissue CTAReissue wizard
Recall failedEscalation queueNeutral 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

StagePreferred pathAvoid
Pre-exportCancel PAY-*STOP-* fees
In flightRECALL-* + VOID-PAY-*Telling claimant “paid”
SettledCLAW-* / recoveryFake void
Check cashedLegal recovery onlySTOP-*

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

MistakeWhy it hurtsFix
Void without portal updateDuplicate INQ-PAY-*Status sync job
New PAY-* without voidDouble payEnforce void-first state machine
Single-click voidFraud · ops errorDual-control APR-VOID-*
RECALL-* after windowFalse confidenceCountdown + block button
STOP-* without fee trackingFund shortfallFee line on REMIT-ADV-* admin view
Void SETTLED paymentImpossible promiseDisable UI · route CLAW-*
No LOG-VOID-* exportCourt monitor gapCompliance export
PROOF-PAY-* still downloadableWrong legal proofInvalidate HASH-PROOF-* on void

  1. Document rail-specific void rules with counsel (ACH vs check vs wire).
  2. Prototype VOID-PAY- wizard* with reason codes and linked evidence (FIND-, FRD-).
  3. Design STOP- / RECALL- consoles** with processor confirmation fields.
  4. Wire claimant messaging to payment inquiry and timeline components.
  5. 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

Share on X

§ Keep reading

Related guides.