Mode
Internal controls
Maker-checker approval

appr_refund_school_2026

Refunds over 25,000 IQD require privileged checker

awaiting 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.

Approval evidence

The demo shows the exact separation between support maker, privileged checker, and ledger posting.

OwnerActionEvidenceStatus
Support specialistCreated refund requestrefreq_school_2026_001completed
Permission policyChecked refunds.approve scopeperm_refund_school_2026completed
Privileged operatorChecker approval requiredtrace_refund_school_2026awaiting checker
Ledger controlPost refund movement only after approvalref_school_2026_001pending

Money impact

The refund amount is lower than the original payment and posts against the merchant balance after approval.

FactValueOwner
Original payment125,000 IQDMerchant balance
Requested refund50,000 IQDSupport maker
Merchant debit after approval49,000 IQDLedger control
Platform fee returned1,000 IQDPricing policy

Refund approval outcome map

Approval operators see the customer-facing support answer before posting a refund movement, so maker-checker stays tied to the original support case.

ready
Customer situationSupport decisionCustomer answerNext surfaceEvidenceStatus
I paid and need proofSend immutable receipt and merchant referencePayment captured; receipt is valid without Epara signup/receipt/rcpt_scenario_001EP-RCPT-2026-00041ready
I need a partial refundCreate refund request, then maker-checker approvalRefund can be requested but money moves after approval/backoffice/approvals/refund-school-2026refreq_school_2026_001approval ready
I may dispute this paymentPrepare evidence package and risk handoffReceipt, checkout, auth, webhook, and support evidence are ready/backoffice/disputes/disp_school_2026_001evpkg_school_2026_ready
My checkout failed, expired, or was cancelledExplain no-capture outcome and offer retryNo receipt, fee, reserve, refund, or payout exists because no money moved/pay/school-fee/retryatt_school_failed_001not applicable
Support boundaryDemo Market payment facts stay immutable; support opens the correct next workflow instead of editing money records.
Operational case control

Refund approval case management

Support, risk, finance, and privileged approval teams manage one payment case with assignment, SLA, escalation, internal notes, and immutable evidence links.

assigned
Casecase_ops_school_2026_001
OwnerSupport
SLA targetJun 15, 2026, 6:00 PM
Audit anchoraudit_case_ops_school_2026_001

Queue assignment

QueueAssigneeResponsibilitySLANext actionEvidenceStatus
Supportact_support_specialistCustomer answer, receipt proof, refund intakesame_daySend receipt and explain refund approval pathtkt_school_parent_receipt_001assigned
Riskact_risk_analystReview dispute evidence and merchant liabilitybefore_evidence_dueKeep evidence package readyevpkg_school_2026_ready
Financeact_finance_operatorRefund money impact, statement, and payout visibilitybefore_payout_releaseHold payout release until refund approval decision is clearset_2026_06_15_iqdreview
Privileged approvalact_privileged_operatorMaker-checker refund decision2hApprove or reject partial refund requesttrace_refund_school_2026awaiting checker

Escalation rules

TriggerThresholdOwnerActionEvidenceStatus
Customer asks for receipt proofsame_daySupport leadSend immutable receipt and merchant referenceEP-RCPT-2026-00041completed
Refund request needs approval2h after permission checkPrivileged operatorApprove/reject maker request; no self-approvalmaker_checker_no_self_approvalawaiting checker
Payer may dispute paymentbefore provider evidence due dateRisk leadSubmit receipt, checkout, auth, webhook, and support evidenceevpkg_school_2026_ready
Merchant payout can leave platformbefore payout releaseFinance operatorConfirm refund/dispute state before treasury releasepo_school_2026_001provider pending

Case timeline

TimeActorEventVisibilityEvidenceStatus
Jun 15, 1:45 PMguest_payerCustomer asked for receipt and refund helpcustomer safetkt_school_parent_receipt_001received
Jun 15, 1:42 PMact_support_specialistReceipt, payment, and merchant reference verifiedcustomer safeEP-RCPT-2026-00041completed
Jun 15, 1:49 PMact_support_specialistInternal note added for refund and dispute readinessinternal onlynote_support_school_001ready
Jun 15, 1:52 PMact_support_specialistPartial refund request created by makerinternal controlrefreq_school_2026_001approval ready
Jun 15, 1:54 PMpermission_policyPermission check passed; waiting for separate checkerinternal controlperm_refund_school_2026awaiting checker
Jun 20, 12:25 PMact_risk_analystDispute evidence package prepared for provider handoffinternal controlevpkg_school_2026_ready

Notes and audit trail

TypeAuthorNoteLinked objectStatus
Customer-safe replyact_support_specialistReceipt is valid without Epara signup; refund can be requested after verification.EP-RCPT-2026-00041ready
Internal noteact_support_specialistPartial refund requires maker-checker; do not promise money movement before approval.refreq_school_2026_001internal only
Risk noteact_risk_analystEvidence package includes receipt, checkout session, issuer auth, webhook, and support transcript.evpkg_school_2026_ready
Escalation policyescalate_to_finance_if_refund_or_dispute_waits_2h
Approval action console

What 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_2026
provider pending
Completed0/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
SupportCan support answer without changing money?Support can explain receipt, refund path, and payout statusoperator_action_support_safe_answerop_decision_support_no_money_movetkt_school_parent_receipt_001Customer answer only; no refund or payout movement
customer safe
Refund approvalCan this refund affect payout release?Payout remains gated until checker decision is clearoperator_action_refund_checker_gateop_decision_refund_gatetrace_refund_school_2026Maker-checker required; maker cannot self-approve
awaiting checker
ReconciliationDo provider, ledger, and statement match?No difference; statement can support payout handoffoperator_action_reconciliation_matchop_decision_reconciliation_matchrecon_run_school_2026_001Statement evidence only; treasury still controls release
statement matched
TreasuryCan merchant payout leave Epara control?Treasury waits for Rafidain provider confirmationoperator_action_treasury_release_holdop_decision_treasury_releaserafidain_transfer_pending_8821Bank transfer remains provider pending
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