# Return, refund, or exchange

**Flow key:** `return-refund-exchange`

## Outcome

An eligible customer selects the correct items and remedy, receives accurate instructions and money movement, and the order/inventory states reconcile.

## Actors

- Customer
- Support/merchant
- Order and returns service
- Payment processor
- Carrier/warehouse

## Preconditions and entry points

- Delivered synthetic orders include returnable and non-returnable items.
- Return windows, reasons, fees, exchange inventory, and refund timing are known.

## Required test data

Use synthetic, isolated, resettable data. Never use real credentials, payment instruments, private customer records, or production notifications.

| Data | Canonical valid seed | Critical variations |
|---|---|---|
| Order | delivered order with two returnable items | partial refund, gift, subscription, final sale, outside window |
| Reason | `Wrong size` | damaged, missing, remorse, Unicode/emoticon, evidence required |
| Remedy | refund to original method | store credit, exchange size, partial refund, replacement |
| Shipment | test return label/tracking | drop-off, no-return refund, lost return, multiple packages |
| Payment | captured test payment | gift card, split tender, expired card |

## Canonical steps

Treat this as the ordinary successful path inferred from common product behavior. Adapt it to observed labels, business rules, APIs, and implementation evidence; do not invent a requirement.

| Step | User or system action | Expected evidence |
|---:|---|---|
| 1 | Open eligible order and start return. | Eligible items, quantities, deadlines, fees, and remedies are accurate. |
| 2 | Select items, reason, remedy, and exchange variant if applicable. | Availability and refund estimate update for exact choices. |
| 3 | Review and submit once. | One return authorization is created with stable item identity and instructions. |
| 4 | Follow label/drop-off/evidence steps. | Tracking and custody events bind to the authorization. |
| 5 | Receive/inspect and approve outcome. | Inventory, order, return, and customer-visible state converge. |
| 6 | Issue and reconcile refund/exchange. | Money, tax, discount allocation, notifications, and audit are exact once. |

## Alternate paths

- Full or partial return
- Exchange
- Refund without return
- Store credit
- Merchant/support initiated remedy

## Failure and recovery paths

- Window expires mid-flow
- Exchange inventory disappears
- Return shipment lost
- Refund webhook duplicates
- Partial refund allocation is wrong

## Completion oracle

- The stated outcome is true in visible UI and authoritative persisted state.
- Exactly one intended business result and no unintended side effect occurred.
- Identity, tenant, authorization, money/data, lifecycle, notifications, integrations, analytics, and audit agree where applicable.
- Refresh, retry, back/forward, and a second authorized read do not reveal a contradictory result.
- Any partial, delayed, canceled, failed, or unknown outcome is labeled truthfully and has a safe recovery path.

## Evidence to capture

- Entry context, actor, tenant, role, feature flags, locale, time zone, and initial identifiers/state.
- Step-level screenshots or DOM state plus request/response, correlation, job, event, and stable business IDs where available.
- Before/after authoritative records, versions, totals, permissions, lifecycle states, and downstream side effects.
- Notifications, audit events, integration deliveries, retries, deduplication, latency, and recovery evidence.
- Untested branches, unsafe-to-run cases, product decisions, and evidence tier.

## Product decisions to resolve

- Exact eligibility, required data, authorization, and validation rules.
- Which steps are synchronous, asynchronous, optional, skippable, reversible, or irreversible.
- Idempotency, concurrency, timeout, retry, cancellation, and compensation semantics.
- Retention, privacy, notification, audit, performance, accessibility, and localization commitments.

## Related CARBON items

- [payment](../../items/records/payment.md)
- [currency price totals](../../items/data/currency-price-totals.md)
- [approve reject](../../items/actions/approve-reject.md)
- [timeline and feed](../../items/views/timeline-and-feed.md)

[Back to Commerce and billing flows](index.md)
