Payment Providers
EventPalour currently supports the following payment providers:- Paystack: Primary provider for KES (Kenya) and USD (International)
- M-Pesa: Mobile money integration (coming soon)
- Stripe: Alternative card payment processor (coming soon)
Supported Currencies
The platform supports multiple currencies:- KES (Kenyan Shilling): Primary currency for Kenya-based events
- USD (US Dollar): For international events
- NGN (Nigerian Naira): Available through Paystack
- GHS (Ghanaian Cedi): Available through Paystack
- ZAR (South African Rand): Available through Paystack
Payment Flow
Initiating Payments
/home/daytona/workspace/source/app/actions/payments.ts:32-220
Payment Fee Structure
EventPalour uses a transparent fee structure:Platform Fee
- Percentage-based commission on ticket sales
- Covers platform maintenance and support
Provider Fee
- Payment processor fees (Paystack, M-Pesa, etc.)
- Varies by provider and transaction amount
Organizer Share
- Amount the event organizer receives
- Calculated as:
Total Amount - Platform Fee - Provider Fee
Payment Schema
/home/daytona/workspace/source/lib/db/schema/payments.ts:56-102
Payment Verification
/home/daytona/workspace/source/app/actions/payments.ts:226-370
Payment Status
Payments can be in the following states:- Pending: Payment has been initiated, awaiting completion
- Processing: Payment is being processed by the provider
- Completed: Payment successful, tickets issued
- Failed: Payment failed or was declined
- Refunded: Payment was refunded to the buyer
- Cancelled: Payment was cancelled by the user
Cancelling Payments
/home/daytona/workspace/source/app/actions/payments.ts:376-416
Withdrawals
Organizers can request withdrawals of their earnings:/home/daytona/workspace/source/lib/db/schema/payments.ts:104-151
KYC Requirements
For paid events, organizers must complete KYC (Know Your Customer) verification:- Identity verification
- Bank account details
- Business information (for organizations)
- Tax information
KYC verification is required before creating paid events and processing withdrawals.
Best Practices
Use Numeric Types
Always use numeric/decimal types for monetary amounts, never floats.
Verify Webhooks
Always verify webhook signatures from payment providers.
Handle Failures
Implement proper error handling and retry logic for failed payments.
Transparent Fees
Clearly display all fees to users before payment.