E4-F7: Payment Processing (Stripe)¶
Epic: E4: Ticket Purchase Flow
Size: M (Medium)
Problem / Outcome¶
Process card payments via Stripe.
Scope¶
In-Scope:
- Create payment intent
- Process payment
- Handle webhooks (success, failure)
- Update order status
Out-of-Scope:
- Alternative payment methods
Acceptance Criteria¶
- AC1: Given valid card, when payment submitted, then Stripe charges and returns success
- AC2: Given payment failure, when webhook received, then order remains pending for retry
- AC3: Payment confirmation webhook updates order to COMPLETED
Data Model Impact¶
Order table:
- payment_status (ENUM: pending, processing, completed, failed)
- stripe_payment_intent_id (VARCHAR)
Payment table:
- id (UUID, PK)
- order_id (UUID, FK)
- stripe_payment_id (VARCHAR)
- amount (DECIMAL)
- currency (VARCHAR)
- status (ENUM: pending, succeeded, failed)
- created_at (TIMESTAMP)
Permissions/Roles¶
- Authenticated user
How to Verify¶
npm test -- --grep "stripe payment"
Expected: Payment flow completes, webhooks processed.
Dependencies¶
Implementation Tasks¶
Doc References¶
Last Updated: January 2026