Approval Control
Interactive operator demo for maker-checker approval before a live refund moves money.
Maker-checker approvalawaiting checker
appr_refund_school_2026
Refunds over 25,000 IQD require privileged checker
Maker created requestact_support_specialist opened refreq_school_2026_001 from the support case.
Permission policy checkedperm_refund_school_2026 verifies refunds.approve.
Checker approves separatelymaker_checker_no_self_approval prevents the maker from approving their own refund.
Ledger and provider reversal postref_school_2026_001 moves money only after approval evidence exists.
| Owner | Action | Evidence | Status |
|---|---|---|---|
| Support specialist | Created refund request | refreq_school_2026_001 | completed |
| Permission policy | Checked refunds.approve scope | perm_refund_school_2026 | completed |
| Privileged operator | Checker approval required | trace_refund_school_2026 | awaiting checker |
| Ledger control | Post refund movement only after approval | ref_school_2026_001 | pending |
| Fact | Value | Owner |
|---|---|---|
| Original payment | 125,000 IQD | Merchant balance |
| Requested refund | 50,000 IQD | Support maker |
| Merchant debit after approval | 49,000 IQD | Ledger control |
| Platform fee returned | 1,000 IQD | Pricing policy |
| Customer situation | Support decision | Customer answer | Next surface | Evidence | Status |
|---|---|---|---|---|---|
| I paid and need proof | Send immutable receipt and merchant reference | Payment captured; receipt is valid without Epara signup | /receipt/rcpt_scenario_001 | EP-RCPT-2026-00041 | ready |
| I need a partial refund | Create refund request, then maker-checker approval | Refund can be requested but money moves after approval | /backoffice/approvals/refund-school-2026 | refreq_school_2026_001 | approval ready |
| I may dispute this payment | Prepare evidence package and risk handoff | Receipt, checkout, auth, webhook, and support evidence are ready | /backoffice/disputes/disp_school_2026_001 | evpkg_school_2026_ready | evidence submitted |
| My checkout failed, expired, or was cancelled | Explain no-capture outcome and offer retry | No receipt, fee, reserve, refund, or payout exists because no money moved | /pay/school-fee/retry | att_school_failed_001 | not applicable |
Support boundaryDemo Market payment facts stay immutable; support opens the correct next workflow instead of editing money records.
Casecase_ops_school_2026_001
OwnerSupport
SLA targetJun 15, 2026, 6:00 PM
Audit anchoraudit_case_ops_school_2026_001
Queue assignment
| Queue | Assignee | Responsibility | SLA | Next action | Evidence | Status |
|---|---|---|---|---|---|---|
| Support | act_support_specialist | Customer answer, receipt proof, refund intake | same_day | Send receipt and explain refund approval path | tkt_school_parent_receipt_001 | assigned |
| Risk | act_risk_analyst | Review dispute evidence and merchant liability | before_evidence_due | Keep evidence package ready | evpkg_school_2026_ready | evidence submitted |
| Finance | act_finance_operator | Refund money impact, statement, and payout visibility | before_payout_release | Hold payout release until refund approval decision is clear | set_2026_06_15_iqd | review |
| Privileged approval | act_privileged_operator | Maker-checker refund decision | 2h | Approve or reject partial refund request | trace_refund_school_2026 | awaiting checker |
Escalation rules
| Trigger | Threshold | Owner | Action | Evidence | Status |
|---|---|---|---|---|---|
| Customer asks for receipt proof | same_day | Support lead | Send immutable receipt and merchant reference | EP-RCPT-2026-00041 | completed |
| Refund request needs approval | 2h after permission check | Privileged operator | Approve/reject maker request; no self-approval | maker_checker_no_self_approval | awaiting checker |
| Payer may dispute payment | before provider evidence due date | Risk lead | Submit receipt, checkout, auth, webhook, and support evidence | evpkg_school_2026_ready | evidence submitted |
| Merchant payout can leave platform | before payout release | Finance operator | Confirm refund/dispute state before treasury release | po_school_2026_001 | provider pending |
Case timeline
| Time | Actor | Event | Visibility | Evidence | Status |
|---|---|---|---|---|---|
| Jun 15, 1:45 PM | guest_payer | Customer asked for receipt and refund help | customer safe | tkt_school_parent_receipt_001 | received |
| Jun 15, 1:42 PM | act_support_specialist | Receipt, payment, and merchant reference verified | customer safe | EP-RCPT-2026-00041 | completed |
| Jun 15, 1:49 PM | act_support_specialist | Internal note added for refund and dispute readiness | internal only | note_support_school_001 | ready |
| Jun 15, 1:52 PM | act_support_specialist | Partial refund request created by maker | internal control | refreq_school_2026_001 | approval ready |
| Jun 15, 1:54 PM | permission_policy | Permission check passed; waiting for separate checker | internal control | perm_refund_school_2026 | awaiting checker |
| Jun 20, 12:25 PM | act_risk_analyst | Dispute evidence package prepared for provider handoff | internal control | evpkg_school_2026_ready | evidence submitted |
Notes and audit trail
| Type | Author | Note | Linked object | Status |
|---|---|---|---|---|
| Customer-safe reply | act_support_specialist | Receipt is valid without Epara signup; refund can be requested after verification. | EP-RCPT-2026-00041 | ready |
| Internal note | act_support_specialist | Partial refund requires maker-checker; do not promise money movement before approval. | refreq_school_2026_001 | internal only |
| Risk note | act_risk_analyst | Evidence package includes receipt, checkout session, issuer auth, webhook, and support transcript. | evpkg_school_2026_ready | evidence submitted |
Escalation policyescalate_to_finance_if_refund_or_dispute_waits_2h
Approval action console
provider pendingWhat does the checker control?
The refund checker can inspect customer support context, permission evidence, and payout exposure before any refund movement posts.
operator_action_console_school_2026Completed0/6Demo decision state is local to this browser.
Paymentpay_scenario_001set_2026_06_15_iqd
Controlled amount54,831,533 IQDpo_school_2026_001
Guardmaker_checker_no_self_approvalappr_refund_school_2026
customer safe
awaiting checker
statement matched
provider pending
Latest controlled resultoperator_action_risk_allow_captureCapture stays allowed with the default reserve onlyNo new ledger movement; default reserve stays held
Open evidence