figma guide
Designing breach settlement clawback and overpayment recovery UI in Figma: CLB-* cases, REC-* recovery, and claimant outreach
Design breach settlement clawback and overpayment recovery UI in Figma with CLB-* recovery cases, REC-* payment reversals, offset queues, and neutral claimant communication flows.
- Published
- Updated
- Sep 02, 2026
- Read time
- 8 min
- Level
- Intermediate
Quick answer
Clawback UI recovers settlement money that should never have left the fund—without turning a QA finding into a panicked phone call. Design CLB- recovery cases* that link FIND-* from post-disbursement QA, REC- payment reversals* for ACH/check clawbacks, and offset queues when direct reversal fails. Finance sees amount at risk, recovery status, and counsel gates; claimants see neutral letters—not accusatory copy. Connect to payment disbursement, returned payments, fund reconciliation, and final accounting. Start from the Figma guides hub and pair with tables, inline alerts, and Dev Mode handoff.
Who this is for
- Product designers building settlement administrator consoles where overpayments must be reversed or offset under court plan rules.
- Finance and claims operations teams executing CLB-* cases triggered by QA findings, duplicate payouts, or eligibility reversals.
- Class counsel who approve clawback thresholds before funds leave claimant accounts or before final accounting closes.
Recovery lifecycle overview
ClawbackFlow — CLB-992-0088 · clm_id: CLM-992-44102 · pay_id: PAY-992-22014 · Status: Recovery in progress
├── Triggers:
│ ├── Critical FIND-* from [post-disbursement QA](/designing-breach-settlement-post-disbursement-qa-and-audit-sampling-ui-in-figma/)
│ ├── Duplicate PAY-* detected post-send via [fraud detection](/designing-breach-settlement-duplicate-claim-detection-and-fraud-prevention-ui-in-figma/)
│ ├── Eligibility reversal after [dispute](/designing-breach-settlement-claims-dispute-and-appeals-ui-in-figma/) or [amendment](/designing-breach-settlement-claim-amendment-and-correction-ui-in-figma/)
│ ├── Award tier correction after [counsel approval](/designing-breach-settlement-counsel-review-and-payout-approval-ui-in-figma/) error
│ └── Manual ADJ-* from [reconciliation](/designing-breach-settlement-fund-reconciliation-and-bank-matching-ui-in-figma/) variance
├── ID namespace:
│ ├── CLB-* (clawback case) · REC-* (recovery transaction)
│ ├── OFF-* (offset applied to future payout) · LTR-* (claimant notice)
│ ├── PAY-* (original) · RET-* (returned) · ADJ-* (ledger adjustment)
│ └── AUD-* (open · counsel_approve · attempt · close)
├── Recovery paths (priority order):
│ ├── ACH reversal / check stop — if within processor window
│ ├── Claimant voluntary return — LTR-* with payment link
│ ├── Offset against pending PAY-* — OFF-* on next batch
│ ├── Escalate to counsel — amounts above threshold or disputed
│ └── Write-off with court approval — last resort · documented
├── Outcomes:
│ ├── Recovered full → CLB-* closed · [reconciliation](/designing-breach-settlement-fund-reconciliation-and-bank-matching-ui-in-figma/) updated
│ ├── Partial → CLB-* open · OFF-* remainder
│ └── Unrecoverable → Counsel waiver · final accounting footnote
└── Claimant impact: Neutral LTR-* via [call center script](/designing-breach-call-center-and-agent-script-ui-in-figma/) · [status portal](/designing-breach-settlement-claim-status-portal-and-claimant-dashboard-ui-in-figma/) shows "Payment adjustment" not "Fraud"
| CLB state | Team sees | Blocks next batch? |
|---|---|---|
| Draft | Amount · reason · linked FIND-* | No |
| Counsel review | Threshold flag · plan citation | Configurable |
| Recovery active | REC-* attempts · LTR-* sent | Maybe |
| Partial | OFF-* queue · aging | Yes if material |
| Closed | Recovery rate · AUD-* trail | No |
Verdict: Every CLB- needs a linked FIND- or ADJ-* reason—never a free-text clawback that auditors cannot trace.**
CLB-* case creation and counsel gate
ClawbackCase — CLB-992-0088 · find_id: FIND-992-0044 · overpay_amount: $847.00
├── Case setup:
│ ├── clb_id (CLB-*) · settlement_id · clm_id · pay_id
│ ├── trigger_source_enum (qa_finding · duplicate_pay · eligibility · manual)
│ ├── linked_find_id · linked_act_id from [QA ACT-*](/designing-breach-settlement-post-disbursement-qa-and-audit-sampling-ui-in-figma/)
│ ├── overpay_amount · correct_amount · delta (always positive for recovery)
│ ├── plan_section_ref (settlement plan paragraph for legal basis)
│ └── counsel_required_bool (threshold e.g. >$250 or any disputed)
├── Counsel gate UI:
│ ├── Queue: CLB-* pending COUN-* approval before REC-* attempt
│ ├── Package: FIND-* evidence · PAY-* receipt · plan excerpt
│ ├── Approve · Deny · Request more docs · Defer to court
│ └── AUD-* on counsel decision · blocks REC-* until approved
├── Auto-create from FIND-*:
│ ├── Critical + financial_impact=overpay → Draft CLB-* pre-filled
│ ├── Ops confirms or dismisses (dismiss requires reason)
│ └── Cannot delete CLB-*—only close or waive with audit
└── Dashboard rollup:
├── Total at risk $ · Recovered $ · Outstanding $
├── Aging buckets (0–30 · 31–60 · 60+ days)
└── Trend vs prior settlement (optional benchmark)
Use badges for CLB-* status and progress steppers for recovery path stages.
REC-* reversal attempts and OFF-* offset queue
RecoveryTransaction — REC-992-0012 · clb_id: CLB-992-0088 · method: ACH_reversal · Status: Failed (R01)
├── REC-* attempt types:
│ ├── ach_reversal — Processor API · window typically 5–60 days
│ ├── check_stop — If uncashed · link [RET-*](/designing-breach-settlement-returned-payment-and-reissue-ui-in-figma/)
│ ├── wire_recall — Rare · manual bank call · note in AUD-*
│ ├── voluntary_return — Claimant pays via secure link (LTR-* CTA)
│ └── offset — OFF-* applied to next PAY-* for same CLM-*
├── REC-* UI per attempt:
│ ├── rec_id (REC-*) · clb_id · method_enum · amount
│ ├── processor_response_code · failure_reason
│ ├── Retry rules (max attempts · backoff · alternate method)
│ └── Success → Updates ledger · Closes CLB-* or reduces balance
├── OFF-* offset queue:
│ ├── off_id (OFF-*) · clb_id · clm_id · offset_amount
│ ├── Applied to: next PAY-* · or specific pending batch
│ ├── Partial offset allowed · remainder stays on CLB-*
│ ├── Claimant sees reduced net on [status portal](/designing-breach-settlement-claim-status-portal-and-claimant-dashboard-ui-in-figma/)
│ └── Cannot offset below $0 or violate plan minimum award
└── Integration:
├── Failed ACH → Auto-suggest OFF-* or LTR-* voluntary path
├── Success REC-* → Feed [reconciliation](/designing-breach-settlement-fund-reconciliation-and-bank-matching-ui-in-figma/) BNK-* match
└── Material unrecoverable → Flag for [final accounting](/designing-breach-settlement-final-accounting-and-court-closure-ui-in-figma/) footnote
| Recovery method | Best for | When it fails |
|---|---|---|
| ACH reversal | Recent direct deposit | Account closed · window expired |
| Check stop | Uncashed check | Already deposited |
| Voluntary return | Cooperative claimant | No response · dispute |
| OFF- offset* | Pending second payment | No future payout |
| Write-off | Immaterial · court approved | Requires counsel + court |
LTR-* claimant notice and dispute handling
ClaimantNotice — LTR-992-0044 · clb_id: CLB-992-0088 · channel: mail + portal
├── Notice requirements:
│ ├── Neutral tone — "Payment adjustment" not "You were overpaid due to error"
│ ├── Amount · reason summary (plan-allowed language)
│ ├── Recovery options: return link · offset explanation · contact number
│ ├── Deadline for voluntary return (if plan allows)
│ └── Right to [dispute](/designing-breach-settlement-claims-dispute-and-appeals-ui-in-figma/) per settlement plan
├── Portal copy ([status portal](/designing-breach-settlement-claim-status-portal-and-claimant-dashboard-ui-in-figma/)):
│ ├── "Adjustment pending" chip · not "Clawback" or "Debt"
│ ├── Link to FAQ · [call center](/designing-breach-call-center-and-agent-script-ui-in-figma/) script alignment
│ └── Hide internal CLB-* / FIND-* IDs from claimant view
├── Dispute path:
│ ├── Claimant disputes → CLB-* status: disputed · pause REC-*
│ ├── Route to [appeals](/designing-breach-settlement-claims-dispute-and-appeals-ui-in-figma/) workflow
│ ├── Counsel review before resuming recovery
│ └── AUD-* on dispute open · resolution · resume
└── [Tax reporting](/designing-breach-settlement-tax-reporting-and-1099-ui-in-figma/): Adjust 1099 if recovery in same tax year
Comparison: clawback vs adjacent settlement flows
| Surface | When | This UI adds |
|---|---|---|
| Returned payment RET-* | Bank rejects payout | Admin-initiated recovery of valid payment |
| Post-disbursement QA FIND-* | Detects error | Executes financial correction |
| Disputes | Claimant-initiated | Admin-initiated with dispute escape hatch |
| Reconciliation VAR-* | Bank vs ledger | Claim-level overpay correction |
| Final accounting | Fund close | Unrecoverable footnote exhibit |
Handoff checklist (Dev Mode)
- ClawbackCase — clb_id (CLB-*), clm_id, pay_id, trigger_source_enum, overpay_amount, counsel_required_bool, status_enum.
- RecoveryTransaction — rec_id (REC-*), clb_id, method_enum, amount, processor_response, success_bool.
- OffsetEntry — off_id (OFF-*), clb_id, clm_id, offset_amount, applied_pay_id.
- ClaimantNotice — ltr_id (LTR-*), clb_id, channel_enum, sent_at, template_version.
- ClawbackDashboard — at_risk_total, recovered_total, aging_buckets[], counsel_queue[].
- AuditEvent — aud_id (AUD-*), entity_type, action_enum, actor_id, timestamp.
Common mistakes
| Mistake | Why it hurts | Fix |
|---|---|---|
| Clawback without FIND-* / reason | Audit failure | Mandatory trigger_source + link |
| Accusatory claimant copy | Support volume · reputational harm | Neutral LTR-* templates |
| REC-* before counsel on large $ | Plan violation | Threshold gate |
| Show “clawback” on status portal | Claimant alarm | ”Payment adjustment” chip |
| Infinite ACH retries | Processor flags · fees | Max attempts + OFF-* fallback |
| Offset without claimant visibility | Trust erosion | Portal shows net calculation |
| Write-off without court path | Final accounting rejection | Document waiver workflow |
| CLB-* separate from reconciliation | Ledger drift | Auto ADJ-* on REC-* success |
| No dispute pause | Legal exposure | Pause REC-* on dispute open |
| Delete CLB-* records | Chain of custody break | Close/waive only with AUD-* |
Recommended workflow
- Auto-create CLB- from critical FIND- overpay** in QA console.
- Route above-threshold CLB- through counsel gate* before any REC-* attempt.
- Design REC- attempt UI* with processor codes and OFF-* fallback.
- Prototype LTR- and portal copy* aligned with call center scripts.
- Feed recovered amounts to reconciliation and unrecoverable to final accounting.
- Report recovery rate in ERR-* rollup for counsel certification.
FAQ
Can we offset without telling the claimant?
No for material amounts — Plan usually requires notice · Portal must show net · LTR-* for offsets above de minimis.
ACH reversal window closed?
Queue OFF- against next PAY-** · Send LTR-* voluntary return · Escalate to counsel if no pending payout.
Claimant disputes the overpay?
Pause CLB-* · Route to appeals · Resume only after resolution · AUD-* trail.
Same CLM-* got two PAY-* by mistake?
One CLB- with two REC- or one CLB-* + link duplicate PAY-*** · Feed fraud detection pattern.
Immaterial $12 overpay?
Plan de minimis threshold · Auto-waive with AUD-* · Do not send LTR-* for $12 unless plan requires.
Recovery affects 1099?
Yes if same tax year · Flag CLB-* for tax ops · Corrected 1099 workflow.
Next steps
- Design breach settlement post-disbursement QA and audit sampling UI in Figma — FIND-* triggers CLB-*
- Design breach settlement returned payment and reissue UI in Figma — Bank-side returns vs admin clawback
- Design breach settlement fund reconciliation and bank matching UI in Figma — Ledger updates after REC-*
- Design breach settlement claims dispute and appeals UI in Figma — Claimant dispute path
- Design breach settlement final accounting and court closure UI in Figma — Unrecoverable footnotes
§ Keep reading