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 stateTeam seesBlocks next batch?
DraftAmount · reason · linked FIND-*No
Counsel reviewThreshold flag · plan citationConfigurable
Recovery activeREC-* attempts · LTR-* sentMaybe
PartialOFF-* queue · agingYes if material
ClosedRecovery rate · AUD-* trailNo

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 methodBest forWhen it fails
ACH reversalRecent direct depositAccount closed · window expired
Check stopUncashed checkAlready deposited
Voluntary returnCooperative claimantNo response · dispute
OFF- offset*Pending second paymentNo future payout
Write-offImmaterial · court approvedRequires 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

SurfaceWhenThis UI adds
Returned payment RET-*Bank rejects payoutAdmin-initiated recovery of valid payment
Post-disbursement QA FIND-*Detects errorExecutes financial correction
DisputesClaimant-initiatedAdmin-initiated with dispute escape hatch
Reconciliation VAR-*Bank vs ledgerClaim-level overpay correction
Final accountingFund closeUnrecoverable 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

MistakeWhy it hurtsFix
Clawback without FIND-* / reasonAudit failureMandatory trigger_source + link
Accusatory claimant copySupport volume · reputational harmNeutral LTR-* templates
REC-* before counsel on large $Plan violationThreshold gate
Show “clawback” on status portalClaimant alarm”Payment adjustment” chip
Infinite ACH retriesProcessor flags · feesMax attempts + OFF-* fallback
Offset without claimant visibilityTrust erosionPortal shows net calculation
Write-off without court pathFinal accounting rejectionDocument waiver workflow
CLB-* separate from reconciliationLedger driftAuto ADJ-* on REC-* success
No dispute pauseLegal exposurePause REC-* on dispute open
Delete CLB-* recordsChain of custody breakClose/waive only with AUD-*

  1. Auto-create CLB- from critical FIND- overpay** in QA console.
  2. Route above-threshold CLB- through counsel gate* before any REC-* attempt.
  3. Design REC- attempt UI* with processor codes and OFF-* fallback.
  4. Prototype LTR- and portal copy* aligned with call center scripts.
  5. Feed recovered amounts to reconciliation and unrecoverable to final accounting.
  6. 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

Share on X

§ Keep reading

Related guides.