All rejection and error scenarios with refund status.
| Scenario | What happens | Refund? | Terminal state |
|---|---|---|---|
| Auto-denial from form logic | Patient told treatment not suitable, advised to see GP | No — before payment | Auto-Denied |
| Payment fails at checkout | Patient shown error, can retry | N/A — never captured | Awaiting Payment |
| ID check fails | Upload requested → manual review → if still fails, rejected | Yes — via Stripe | Rejected → Refunded |
| Clinician requests more info | Patient messaged, consultation paused | No — still active | Awaiting Response |
| Clinician denies treatment | Reason logged, patient notified after refund confirmed | Yes — via Stripe | Rejected → Refunded |
| Repeat submission detected | Flag shown to clinician during Phase 6 review | No — informational | Flagged for Review |
| Consultation abandoned | Reminder email sent. Flagged at 7 days, abandonable at 30 days. | N/A — before payment | Abandoned (Draft) |
| Patient requests cancellation | Message to pharmacy team. Manual cancel + refund. | Yes — manual | Cancelled → Refunded |
| Consultation timeout (30 days) | Team can reject/refund after 30 days. | Yes — manual | Abandoned → Refunded |
| Delivery failed / returned | Delivery Failed screen. Team re-dispatches, contacts, or refunds. | Depends on action | Delivery Failed |
| API unavailable (any) | Order tagged "Pending (API Unavailable)". Auto-retry: 5min → 30min → 2hr → flag manual. | No — still active | Pending (API Down) |
| Instalment payment fails (month 2+) | Pharmacy notified. Patient contacted. Dispatch paused. | May cancel remaining | Instalment Paused |
| 12-month hard limit reached | Patient cannot renew. Must complete full new consultation. | No — not an error | Consultation Required |