figma guide
Designing breach settlement returned payment and reissue UI in Figma: RET-* bounces, PAY-* recall, and claimant reissue flows
Design breach settlement returned payment and reissue UI in Figma with RET-* bounce alerts, PAY-* recall states, claimant bank updates, and check reissue workflows.
- Published
- Updated
- Aug 30, 2026
- Read time
- 7 min
- Level
- Intermediate
Quick answer
Returned payment UI keeps settlement disbursement honest when ACH rejects, checks bounce, or mail is undeliverable—without trapping claimants in dead-end “payment failed” screens. Design RET- bounce records* linked to original PAY-* disbursements, recall and void states for in-flight payments, and claimant-facing reissue flows that collect corrected bank details or mailing addresses before a new PAY-* is issued. Admins see return reason codes (R01, R02, undeliverable mail); claimants see plain-language next steps. Connect to payment disbursement, status portal, saved addresses, fraud holds, and unclaimed funds. Start from the Figma guides hub and pair with forms, alerts, and Dev Mode handoff.
Who this is for
- Product designers building settlement administrator consoles and claimant portals where payments fail after approval.
- Disbursement operations teams reconciling returned checks, ACH returns, and stale payment methods before court accounting.
- Class counsel and claims administrators who need audit-ready reissue trails tied to original PAY-* records.
Returned payment lifecycle overview
ReturnEvent — RET-992-0088 · Original PAY-992-22014 · Status: Awaiting claimant action
├── Return triggers:
│ ├── ACH return (R01 insufficient funds, R02 closed account, R03 no account)
│ ├── Check void/uncashed expiry · Stop payment
│ ├── Mail undeliverable (bad address on file)
│ ├── Payee name mismatch · Bank rejects wire
│ ├── [Foreign payment](/designing-breach-settlement-foreign-claimant-and-international-payment-ui-in-figma/) SWIFT rejection
│ └── Fraud recall after [FRD-* hold](/designing-breach-settlement-duplicate-claim-detection-and-fraud-prevention-ui-in-figma/) (admin-initiated)
├── ID namespace:
│ ├── RET-* (return/bounce record) · PAY-* (original disbursement)
│ ├── REI-* (reissue attempt) · CLM-* (claim context)
│ └── AUD-* (audit entries for every state change)
├── Outcomes:
│ ├── Reissued → New PAY-* or REI-* linked to RET-*
│ ├── Escheat → Route to [UCF workflow](/designing-breach-settlement-unclaimed-funds-and-escheatment-ui-in-figma/)
│ ├── Cancelled → Counsel-approved write-off (rare)
│ └── Blocked → Active FRD-* or [dispute](/designing-breach-settlement-claims-dispute-and-appeals-ui-in-figma/)
└── Claimant messaging: What failed + one clear CTA to fix
| Return type | Admin sees | Claimant sees | Typical fix |
|---|---|---|---|
| ACH R02/R03 | Bank return code + last4 | ”Bank could not accept payment” | Update bank in portal |
| Check uncashed | Void after 90 days | ”Your check expired—request reissue” | Choose e-check or ACH |
| Undeliverable mail | USPS scan / NCOA flag | ”We couldn’t deliver your check” | Confirm address |
| Name mismatch | Bank rejection detail | ”Name on account must match claim” | Upload ID + correct payee |
| Fraud recall | FRD-* reference | Neutral review message | Wait or upload docs |
Verdict: Every RET- must trace to exactly one PAY- and produce either REI-* or documented escheatment**—never a silent duplicate payout.
RET-* record structure and admin queue
ReturnRecord — RET-992-0088 · pay_id: PAY-992-22014 · clm_id: CLM-992-44102
├── Core fields:
│ ├── return_type_enum (ach_return · check_void · mail_undeliverable · wire_reject · admin_recall)
│ ├── return_reason_code (NACHA R-codes · internal enums)
│ ├── returned_at · original_pay_amount · currency
│ ├── reissue_eligible (bool) · escheat_eligible_after (date)
│ └── status: new · notified · awaiting_update · reissue_queued · reissued · escheated · closed
├── Admin queue columns:
│ ├── RET-* ID · CLM-* · Claimant name · $ amount · Age · Return type
│ ├── Reissue count (REI-* attempts) · FRD-* hold flag
│ └── Assigned ops · SLA (days until escheat clock)
├── Bulk actions:
│ ├── Send reminder email · Export for counsel
│ ├── Queue batch reissue (after claimant updates)
│ └── Route to UCF review (threshold met)
└── Filters: return_type · amount band · foreign · minor/guardian · deceased/heir
Use tables for the ops queue and detail drawer for PAY-* ↔ RET-* ↔ REI-* chain—operators should never hunt across screens.
Claimant reissue flow (portal)
ReissueWizard — CLM-992-44102 · RET-992-0088 · Step 2 of 3
├── Entry points:
│ ├── Email/SMS deep link with signed token
│ ├── [Status portal](/designing-breach-settlement-claim-status-portal-and-claimant-dashboard-ui-in-figma/) banner: "Action required: payment returned"
│ └── [Call center](/designing-breach-call-center-and-agent-script-ui-in-figma/) sends ACT-* link
├── Step 1 — Understand (plain language):
│ ├── "Your $XX payment on [date] could not be delivered"
│ ├── Reason bucket (not raw R-codes): bank issue · mail issue · expired check
│ └── No blame language · No other claimants' data
├── Step 2 — Fix method:
│ ├── ACH: [Payment methods](/designing-payment-methods-ui-in-figma/) form · micro-deposit verify optional
│ ├── Check: Confirm mailing address · certified mail option
│ ├── Digital: PayPal/Venmo if settlement allows
│ └── [Foreign claimant](/designing-breach-settlement-foreign-claimant-and-international-payment-ui-in-figma/) W-8 + SWIFT re-entry
├── Step 3 — Confirm:
│ ├── Summary: old PAY-* voided · new REI-* pending
│ ├── ETA range · Support contact
│ └── Optional: opt into e-payment only (no future checks)
└── Post-submit: Status tile → "Reissue processing" · Blocks duplicate REI-* requests
Prototype mobile-first—many claimants open reissue links on phones. Use progress steppers for multi-step fixes.
PAY-* recall, void, and REI-* issuance (admin)
PaymentStateMachine — PAY-992-22014
├── States:
│ ├── sent → returned (creates RET-*)
│ ├── sent → recalled (pre-clear · admin only)
│ ├── cleared → returned (ACH late return window)
│ └── void (check uncashed · issues RET-* with check_void)
├── REI-* creation rules:
│ ├── Max 3 REI-* per CLM-* without supervisor approval
│ ├── Block if FRD-* hold active
│ ├── Block if [tax W-9](/designing-breach-settlement-tax-reporting-and-1099-ui-in-figma/) stale after payee change
│ └── Require claimant confirmation timestamp before REI-* queue
├── Accounting hooks:
│ ├── Original PAY-* marked returned_not_reissued until REI-* clears
│ ├── [Final accounting](/designing-breach-settlement-final-accounting-and-court-closure-ui-in-figma/) reports RET-* counts by reason
│ └── Link to [audit log](/designing-audit-log-and-security-activity-ui-in-figma/)
└── Notifications:
├── Claimant: payment returned + CTA
├── Admin: high-value RET-* · repeat return same CLM-*
└── Counsel: batch summary weekly
Design state badges on PAY-* rows: Sent · Returned · Reissue pending · Reissued · Escheated.
Comparison: reissue UI vs adjacent settlement surfaces
| Surface | Focus | This UI adds |
|---|---|---|
| Payment disbursement | First payout | Failure and second attempt |
| Status portal | Claim progress | Action-required payment banner |
| Unclaimed funds | Abandoned money | RET-* aging into UCF |
| Amendments | Claim data fixes | Payee/bank correction for payout |
| Fraud holds | Integrity blocks | Recall vs return distinction |
Handoff checklist (Dev Mode)
- ReturnRecord — ret_id (RET-*), pay_id, clm_id, return_type_enum, reason_code, status_enum, reissue_eligible, escheat_eligible_after.
- ReissueRequest — rei_id (REI-*), ret_id, new_payment_method_ref, claimant_confirmed_at, status_enum.
- PaymentReturnBanner — clm_id, ret_id, reason_bucket_key, cta_href, dismissible (false).
- ReissueWizard — step_index, return_type_enum, payment_method_form_variant, confirmation_summary_fields[].
- AdminReturnQueue — sortable columns[], bulk_action_enums[], pay_rei_chain_view.
Common mistakes
| Mistake | Why it hurts | Fix |
|---|---|---|
| Show raw ACH R-codes to claimants | Confusion · support load | Reason buckets + plain copy |
| Issue REI-* without voiding PAY-* | Double payment · court finding | State machine enforces void first |
| Unlimited reissue attempts | Fraud · cost | Cap REI-* · supervisor override |
| No link RET-* → original PAY-* | Accounting nightmare | Mandatory pay_id foreign key |
| Reissue while FRD-* active | Payout to bad actor | Block REI-* on hold |
| Check reissue to same bad address | Repeat RET-* loop | Force address confirm step |
| Silent escheat after one bounce | Claimant harm | Reminder series before UCF |
| Allow REI-* without claimant action | Wrong bank on file | Require portal confirmation timestamp |
| Mix returns with disputes queue | Wrong SLA | Separate RET-* ops queue |
| Skip AUD-* on manual recall | Counsel discovery gap | Log admin_id + reason |
Recommended workflow
- Map return types your disbursement vendor supports (ACH, check, wire, digital wallet).
- Design admin RET- queue* with PAY-* ↔ REI-* chain visible in one drawer.
- Prototype claimant reissue wizard for top three return buckets (bank, mail, expired check).
- Connect status portal banners to RET-* states with signed deep links.
- Define REI- caps and FRD- blocks** with disbursement and fraud teams.
- Export RET- aging report* for UCF and final accounting mockups.
FAQ
Same claimant, third return in 30 days?
Supervisor review queue · Possible FRD-* referral · Offer phone verification · Cap auto REI-*.
Deceased claimant check returned?
Route to heir designation · Do not reissue to original payee · RET-* notes decedent status.
Minor/guardian payment returned?
Guardian contact only · Guardian bank or trust account · Extra ID step if payee changed.
Partial ACH return (rare split)?
Support manual REI- for remainder* · UI shows original amount vs returned portion · Counsel rule in config.
Integration with tax 1099?
Reissue in same tax year may amend 1099 · Flag TAX-* regen when payee or amount changes on REI-*.
Next steps
- Design breach settlement payment disbursement and payout tracking UI in Figma — Original PAY-* flows
- Design breach settlement claim status portal and claimant dashboard UI in Figma — Action-required banners
- Design breach settlement unclaimed funds and escheatment UI in Figma — RET-* aging path
- Design payment methods UI in Figma — Bank update forms
- Design audit log and security activity UI in Figma — RET-* and REI-* audit trail
§ Keep reading