# Refund Investigation Decision Matrix

Companion to **AI Agent for eCommerce Refund Investigation**.

Order-exception **types** live in [`order-exception-playbook.md`](order-exception-playbook.md). This matrix is **this refund request**. Demo caps are worksheets, not finance policy.

## Evidence pack (must collect)

| Source | Tool | Why |
| ------ | ---- | --- |
| Customer | `getCustomer` | Duplicate accounts, prior RMAs |
| Order | `getOrder` | Status, delivered flag, lines |
| Product | `getProduct` | Restricted, warranty |
| Shipping | `getShipment` | Scan, delivered-not-received |
| Return history | `listReturnsForOrder` | Stacked returns |
| Policy | Knowledge Base **versioned** | Eligibility |
| Previous refunds | `listRefundsForCustomer` | Pattern — not proof of fraud |

## Recommendations (never silent Execute on delivered)

| Recommendation | When (example) | Human |
| -------------- | -------------- | ----- |
| **Approve** | In-window, undelivered cancel, policy allows, under cap | Optional under Cedar cap |
| **Reject** | Outside window, consumed digital, policy deny | Associate confirms language |
| **Partial refund** | Partial line, restocking rule in **code** | Usually HITL |
| **Replacement** | Defect with QA evidence | HITL |
| **Human review** | Delivered-not-received, high value, fraud-adjacent, stacked RMAs | **Required** |

Prompt caps are not authorization. Put the cap in Cedar. Timeout **fails closed**.

## Fairness

Same evidence pack for every customer in the same policy version. Do not let “VIP” be a prompt adjective without a CRM **tool** that returns the tier.

## Related

- Order exceptions: [`order-exception-playbook.md`](order-exception-playbook.md)
- HITL: [`hitl-approval-architecture.md`](hitl-approval-architecture.md)
- Return risk (not accusation): [`return-fraud-risk-scoring.md`](return-fraud-risk-scoring.md)
