6.1 KiB
Spanglish Website – Booking & Payment Flow
1. Purpose
This document defines the complete booking and payment flow for Spanglish events.
It ensures a fast, reliable, and user-friendly process for participants and a clear management workflow for organizers.
The system supports the following payment methods:
- TPago / Bancard (Credit & Debit Cards)
- Bitcoin Lightning (BTCPay)
- Cash at Event
2. Core Objectives
The booking system must:
- Allow users to reserve a seat in under 60 seconds
- Minimize drop-off during payment
- Provide clear confirmation
- Support mobile-first usage
- Reduce manual coordination
- Integrate cleanly with the admin dashboard
3. High-Level Booking Flow
- User visits an event page
- User clicks "Join Event"
- Booking page opens
- User enters personal details
- User selects payment method
- Payment or reservation is processed
- Ticket is generated
- Confirmation is sent
- User appears in admin dashboard
4. Booking Page Structure
The booking page is available at:
/book/{event-id}
It consists of a single vertical flow optimized for mobile devices.
4.1 Event Summary Section
Displayed at the top and always visible:
- Event title
- Date and time
- Location
- Remaining seats
- Price
This section helps users verify they selected the correct event.
4.2 User Information Section
The booking form collects:
- Full name (required)
- Email address (required)
- Phone / WhatsApp number (required)
- Preferred language (optional)
Validation rules:
- All required fields must be filled
- Email format validation
- Phone number format validation
- Duplicate booking prevention
4.3 Payment Selection Section
Users choose one of the following payment methods using selectable cards.
Each option is presented as a large, tap-friendly card with icon and description.
Available options:
- TPago / Bancard
- Bitcoin Lightning
- Cash at Event
Only one option may be selected.
5. Payment Methods
5.1 TPago / Bancard (Credit & Debit Card)
User Flow
- User selects "TPago / Bancard"
- User clicks "Pay with Card"
- User is redirected to Bancard checkout
- User completes payment
- User is redirected back to Spanglish
- Payment is verified via webhook
- Ticket is confirmed
System Behavior
- Payment intent is created before redirect
- Payment reference is stored
- Webhook validation is mandatory
- Only verified payments mark tickets as paid
Status: Paid
5.2 Bitcoin Lightning (BTCPay)
User Flow
- User selects "Bitcoin Lightning"
- Invoice is generated
- QR code and invoice string are displayed
- User pays with Lightning wallet
- Payment is detected via webhook
- Ticket is confirmed automatically
Display Requirements
- QR code
- Amount in sats
- Expiry countdown
- Copy invoice button
System Behavior
- Invoice created via BTCPay API
- Webhook confirmation required
- Automatic ticket confirmation
Status: Paid
5.3 Cash at Event
User Flow
- User selects "Cash at Event"
- User confirms reservation
- Booking is created
- Ticket is generated
- User receives confirmation
- User pays in cash at the event entrance
System Behavior
- Booking is stored as unpaid
- Seat is reserved immediately
- No automatic expiration is applied
- Admin marks payment as received manually
Status: Pending (until marked Paid by staff)
6. Ticket Generation
After successful booking:
- A unique ticket ID is generated
- Ticket is linked to user and event
- Ticket status is assigned
- QR code may be generated
- Ticket is stored permanently
Ticket statuses:
- Pending
- Paid
- Cancelled
- Refunded
7. Confirmation & Notifications
7.1 Booking Confirmation
Sent immediately after booking.
Channels:
- Optional WhatsApp integration
Content includes:
- Event details
- Payment method
- Ticket ID
- Check-in instructions n
7.2 Payment Confirmation
Sent when payment is completed (Card / Lightning).
Includes:
- Payment receipt
- Ticket confirmation
- Calendar link
7.3 Event Reminder
Sent automatically before the event.
Includes:
- Date and time
- Location map
- Payment reminder for cash users
8. Admin Management Flow
8.1 Admin View
Admins can view all bookings with:
- Name
- Event
- Payment method
- Status
- Contact info
- Check-in status
Color coding:
- Green: Paid
- Yellow: Pending
- Red: Cancelled
8.2 Manual Payment Processing
For cash payments:
- Admin locates ticket
- Marks as Paid
- Timestamp is recorded
- Receipt may be attached
8.3 Refund Handling
Admins may:
- Mark tickets as Refunded
- Trigger payment provider refunds
- Send notification to user
9. Capacity Management
- Each event has a fixed capacity
- Seats are reserved immediately on booking
- Overbooking is prevented
- Sold-out events disable booking
10. Anti-Abuse Measures
The system must implement:
- Duplicate booking detection
- Rate limiting on bookings
- Email verification (optional)
- Admin override tools
11. Error Handling
The system must handle:
- Failed payments
- Interrupted redirects
- Invoice expiration
- Network issues
- Invalid input
Behavior:
- Clear user-facing messages
- Automatic retry options
- Error logging
12. Audit Logging
All booking-related actions must be logged:
- Ticket creation
- Payment updates
- Manual status changes
- Refunds
- Cancellations
Each log entry includes:
- User ID
- Admin ID (if applicable)
- Timestamp
- Action type n
13. Security Requirements
- Secure payment redirects
- Webhook signature verification
- Encrypted data storage
- PCI compliance via provider
- No sensitive card data stored
14. Future Extensions
The booking system is designed to support:
- Subscriptions
- Membership passes
- Promo codes
- Group bookings
- Lightning Address payments
- Cashu payments
15. Summary
This booking and payment flow is designed to be fast, reliable, and scalable.
It supports local payment methods, Bitcoin Lightning, and cash while maintaining professional standards.
All implementations must follow this document to ensure consistency and trust.