figma guide
Designing breach settlement counsel review and payout approval UI in Figma: APR-* queues, COUN-* sign-off, and dual-control disbursement gates
Design breach settlement counsel review and payout approval UI in Figma with APR-* approval queues, COUN-* sign-off states, dual-control gates, and audit-ready payout holds.
- Published
- Updated
- Aug 31, 2026
- Read time
- 7 min
- Level
- Intermediate
Quick answer
Counsel review and payout approval UI prevents settlement money from leaving the fund until the right people sign off—without burying approvers in unreadable claim PDFs. Design APR- approval requests* for individual CLM-* or batch PAY-* releases, COUN- counsel sign-off states* with segregation of duties, and dual-control gates where ops prepares and counsel approves (or vice versa per plan). Admins see approval queues with amount thresholds, risk flags, and linked DEF-* / FRD-* / IDV-* status; counsel sees summary cards—not raw PII dumps. Connect to payment disbursement, fraud detection, deficiency cure, identity re-verification, and final accounting. Start from the Figma guides hub and pair with tables, badges, and Dev Mode handoff.
Who this is for
- Product designers building settlement administrator consoles where payouts require counsel or supervisor approval before release.
- Class counsel and claims administrators implementing court-ordered dual-control and amount-threshold rules.
- Compliance teams who need APR-* and COUN-* audit trails that survive discovery and fund audits.
Approval gate overview
ApprovalGate — APR-992-0188 · CLM-992-44102 · PAY-992-22014 · Status: Pending counsel (COUN-*)
├── When approval required (plan config):
│ ├── PAY-* amount above threshold (e.g. >$500)
│ ├── First disbursement in settlement · Batch run release
│ ├── CLM-* with cleared [FRD-* hold](/designing-breach-settlement-duplicate-claim-detection-and-fraud-prevention-ui-in-figma/) · Manual override path
│ ├── [Deceased/heir](/designing-breach-settlement-deceased-claimant-and-heir-designation-ui-in-figma/) or [minor/guardian](/designing-breach-settlement-minor-claimant-and-guardian-designation-ui-in-figma/) payout
│ ├── [Foreign claimant](/designing-breach-settlement-foreign-claimant-and-international-payment-ui-in-figma/) wire above limit
│ ├── Post-[deficiency cure](/designing-breach-settlement-deficiency-notice-and-claim-cure-ui-in-figma/) high-risk category
│ └── [Reissue](/designing-breach-settlement-returned-payment-and-reissue-ui-in-figma/) REI-* after repeat RET-*
├── ID namespace:
│ ├── APR-* (approval request) · COUN-* (counsel sign-off record)
│ ├── PAY-* (held disbursement) · CLM-* (claim context)
│ └── AUD-* (prepare · approve · reject · delegate)
├── Roles (segregation of duties):
│ ├── Ops preparer — creates APR-* · cannot approve own request
│ ├── Counsel approver — COUN-* sign-off · read-heavy UI
│ ├── Supervisor — threshold override · dual rejection resolve
│ └── System — auto-approve below floor (logged)
└── Outcomes:
├── Approved → PAY-* released to [disbursement](/designing-breach-settlement-payment-disbursement-and-payout-tracking-ui-in-figma/)
├── Rejected → Return to review · DEF-* or hold
├── Deferred → More IDV-* or docs
└── Escalated → Court or special master
| Approval tier | Typical threshold | Approver | SLA |
|---|---|---|---|
| Auto | Under plan floor | System | Immediate |
| Supervisor | Mid-tier amounts | Ops lead | 1–2 business days |
| Counsel | High value or flagged | Class counsel | 3–5 business days |
| Court | Plan exception | External filing | Out of band |
Verdict: Preparer and approver must never be the same user on the same APR-*—design the UI to enforce it.
APR-* request structure and ops queue
ApprovalRequest — APR-992-0188 · pay_id: PAY-992-22014 · clm_id: CLM-992-44102
├── Core fields:
│ ├── apr_id (APR-*) · pay_id · clm_id · batch_id (optional)
│ ├── amount · currency · payment_method_enum
│ ├── approval_tier_enum (supervisor · counsel · court)
│ ├── trigger_reasons[] (amount · fraud_clear · foreign · reissue · manual)
│ ├── preparer_user_id · prepared_at
│ ├── approver_user_id (null until COUN-*) · approved_at
│ └── status: draft · pending · approved · rejected · deferred · expired
├── Summary card (counsel view):
│ ├── Claim class · award tier · amount · payee name (masked SSN)
│ ├── Risk chips: FRD cleared · IDV pass · DEF cured · DUP none
│ ├── Linked records: CLM-* · PAY-* · [DOC-*](/designing-breach-settlement-claim-document-upload-and-evidence-management-ui-in-figma/) count
│ └── One-click drill to claim timeline (not 40-tab PDF)
├── Ops queue columns:
│ ├── APR-* · Amount · Tier · Age · Preparer · Status
│ ├── Blockers (IDV pending · DEF open · FRD hold)
│ └── Batch vs single indicator
└── Bulk actions:
├── Submit batch APR-* for counsel · Export approval log
├── Recall draft APR-* · Reassign approver
└── Link to [audit log](/designing-audit-log-and-security-activity-ui-in-figma/)
Use badges for blocker states—counsel should see at a glance why an APR-* is not ready.
COUN-* sign-off and dual-control UI
CounselSignOff — COUN-992-0188 · apr_id: APR-992-0188 · Signed by: counsel_user · 2026-08-31
├── Sign-off screen:
│ ├── Attestation checkbox: "I reviewed per plan section X"
│ ├── Optional comment (internal · may surface in audit)
│ ├── Reject with reason_enum (insufficient_docs · amount_error · policy)
│ ├── Defer → creates ACT-* for [IDV-*](/designing-breach-settlement-claimant-identity-reverification-and-step-up-ui-in-figma/) or DEF-*
│ └── Cannot approve if preparer_user_id === current_user
├── Dual-control batch:
│ ├── Batch summary: count · total $ · max single PAY-*
│ ├── Exception list (flagged CLM-* pulled from batch)
│ ├── Counsel approves batch COUN-* with hash of pay_ids[]
│ └── Partial batch approve not allowed unless plan permits
├── Rejection flow:
│ ├── PAY-* remains held · Notify preparer
│ ├── Preparer fixes · new APR-* or reopen same with version
│ └── AUD-* captures reject reason + counsel comment
└── Delegation:
├── Substitute approver with date range · AUD-* logged
└── No permanent shared counsel login (bad practice)
Prototype side-by-side layout: claim summary left, approval actions right, audit trail footer—counsel workflows are read-decide-sign, not data entry.
PAY-* hold states until approval
PaymentHold — PAY-992-22014 · Status: held_pending_apr · apr_id: APR-992-0188
├── Hold reasons on PAY-* row:
│ ├── held_pending_apr · held_idv · held_frd · held_def · held_manual
│ ├── Badge on [status portal](/designing-breach-settlement-claim-status-portal-and-claimant-dashboard-ui-in-figma/): "Payment processing" (no internal codes)
│ └── Claimant never sees APR-* or COUN-* IDs
├── Release sequence:
│ ├── COUN-* approved → PAY-* → queued → sent
│ ├── Rejected → ops notified · claimant neutral status
│ └── Expired APR-* → re-queue or cancel PAY-*
├── Integration with [disbursement console](/designing-breach-settlement-payment-disbursement-and-payout-tracking-ui-in-figma/):
│ ├── Disbursement batch excludes held PAY-*
│ ├── Approved APR-* injects PAY-* into next run
│ └── [Final accounting](/designing-breach-settlement-final-accounting-and-court-closure-ui-in-figma/) reports held vs released $
└── Notifications:
├── Counsel: daily pending APR-* digest
├── Ops: approval/rejection realtime
└── Claimant: only on actual send (not on approve)
Comparison: approval UI vs adjacent settlement surfaces
| Surface | Focus | This UI adds |
|---|---|---|
| Payment disbursement | Execute PAY-* | Gate before release |
| Fraud detection | Block bad actors | Counsel review after FRD clear |
| Identity re-verification | Prove identity | Approval blocked until IDV pass |
| Deficiency cure | Fix claim data | Approval after cure complete |
| Final accounting | Fund close | Approved vs held reconciliation |
Handoff checklist (Dev Mode)
- ApprovalRequest — apr_id (APR-*), pay_id, clm_id, approval_tier_enum, trigger_reasons[], preparer_user_id, status_enum.
- CounselSignOff — coun_id (COUN-*), apr_id, approver_user_id, attestation_checked, signed_at, reject_reason_enum.
- PaymentHold — pay_id, hold_reason_enum, apr_id, release_eligible (bool).
- ApprovalSummaryCard — clm_id, amount, risk_chips[], linked_record_refs[], timeline_href.
- CounselApprovalQueue — tier_filter[], batch_mode, dual_control_enforced, sortable_columns[].
Common mistakes
| Mistake | Why it hurts | Fix |
|---|---|---|
| Same user prepares and approves | Segregation violation | Block UI when user IDs match |
| Counsel sees full SSN/bank in list | PII exposure | Mask in queue · reveal in secure drill-down |
| No APR-* for batch releases | Unaudited bulk payouts | Batch COUN-* with pay_ids hash |
| Approve with open DEF-* or FRD-* | Bad payout | Blocker badges · disable approve CTA |
| Claimant sees “awaiting counsel” | Confusing · legal exposure | Neutral “processing” copy |
| Reject without reason_enum | Ops cannot fix | Required reject reason + comment |
| No AUD-* on auto-approve below floor | Audit gap | Log system approver + rule ID |
| PDF-only counsel review | Slow · error-prone | Summary card + timeline |
| Partial batch approve without plan rule | Court finding | All-or-nothing batch COUN-* default |
| Hold PAY-* without expiry | Stuck funds | APR-* SLA + escalate |
Recommended workflow
- Map approval tiers from the settlement plan (amounts, roles, batch rules).
- Design ops APR- preparation queue* with blocker chips and batch grouping.
- Prototype counsel sign-off screen with attestation, reject, and defer paths.
- Connect PAY- hold states* to disbursement console filters.
- Define SLA alerts for pending counsel APR-* beyond threshold days.
- Export approval logs for final accounting and compliance exports.
FAQ
Auto-approve below $X—still need UI?
Yes—read-only auto-approve log · Filter “system approved” · AUD-* with rule_id · Counsel spot-check sample.
Reissue REI-* needs new APR-*?
Often yes after 2nd REI- or amount change* · Configurable · Link REI-* to parent APR-* chain.
Counsel rejects—claimant notified?
Usually no · Ops fixes or DEF-* · Claimant sees processing until PAY-* sends or denial path.
Batch of 10,000 low-value payments?
Single batch APR- with exception pull-out* · Flagged CLM-* separate APR-* · COUN-* signs summary + hash.
Integration with team roles?
Map preparer vs approver roles · Enforce at API + UI · No role elevation in approval screen.
Next steps
- Design breach settlement payment disbursement and payout tracking UI in Figma — PAY-* execution after COUN-*
- Design breach settlement deficiency notice and claim cure UI in Figma — Blockers before APR-*
- Design breach settlement duplicate claim detection and fraud prevention UI in Figma — FRD-* clearance path
- Design audit log and security activity UI in Figma — APR-* and COUN-* trail
- Design breach settlement final accounting and court closure UI in Figma — Held vs released reconciliation
§ Keep reading