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 tierTypical thresholdApproverSLA
AutoUnder plan floorSystemImmediate
SupervisorMid-tier amountsOps lead1–2 business days
CounselHigh value or flaggedClass counsel3–5 business days
CourtPlan exceptionExternal filingOut 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

SurfaceFocusThis UI adds
Payment disbursementExecute PAY-*Gate before release
Fraud detectionBlock bad actorsCounsel review after FRD clear
Identity re-verificationProve identityApproval blocked until IDV pass
Deficiency cureFix claim dataApproval after cure complete
Final accountingFund closeApproved 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

MistakeWhy it hurtsFix
Same user prepares and approvesSegregation violationBlock UI when user IDs match
Counsel sees full SSN/bank in listPII exposureMask in queue · reveal in secure drill-down
No APR-* for batch releasesUnaudited bulk payoutsBatch COUN-* with pay_ids hash
Approve with open DEF-* or FRD-*Bad payoutBlocker badges · disable approve CTA
Claimant sees “awaiting counsel”Confusing · legal exposureNeutral “processing” copy
Reject without reason_enumOps cannot fixRequired reject reason + comment
No AUD-* on auto-approve below floorAudit gapLog system approver + rule ID
PDF-only counsel reviewSlow · error-proneSummary card + timeline
Partial batch approve without plan ruleCourt findingAll-or-nothing batch COUN-* default
Hold PAY-* without expiryStuck fundsAPR-* SLA + escalate

  1. Map approval tiers from the settlement plan (amounts, roles, batch rules).
  2. Design ops APR- preparation queue* with blocker chips and batch grouping.
  3. Prototype counsel sign-off screen with attestation, reject, and defer paths.
  4. Connect PAY- hold states* to disbursement console filters.
  5. Define SLA alerts for pending counsel APR-* beyond threshold days.
  6. 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

Share on X

§ Keep reading

Related guides.