2.3 KiB
2.3 KiB
Manual Payouts for French Users
Overview
Due to regulatory restrictions, Stripe Global Payouts are not available in France. As a result, we've implemented a manual payout system using SEPA (Single Euro Payments Area) bank transfers for French promoters.
How It Works
1. Payout Request
- When a French promoter's event ends and they have earnings, they can request a payout through their dashboard
- The system creates a payout record with status "pending"
2. Admin Processing
- Admins can view pending payouts in the admin panel
- For French users, the "Process Payout" button automatically marks the payout as a SEPA transfer
- Admins can also manually mark a payout as a SEPA transfer using the "Mark as SEPA Transfer" button
3. SEPA Transfer
- When a payout is marked as a SEPA transfer, the system:
- Updates the payout status to "completed"
- Generates a unique SEPA transfer ID
- Updates all related earnings to "paid" status
- Admins then manually process the bank transfer outside the application using SEPA
4. Promoter Notification
- Promoters receive a notification that their payout is being processed via SEPA transfer
- They are informed that funds should appear in their account within 1-3 business days
Technical Implementation
Payout Model
manual_payout?method checks if the payout is a SEPA transfer (ID starts with "SEPA_")sepa_transfer?method is an alias formanual_payout?mark_as_manually_processed!method generates a SEPA transfer ID
Payout Service
should_process_manually?method is hardcoded to return true for French usersprocess_manually!method handles the SEPA transfer process
Views
- Admin and promoter views display "SEPA Transfer" instead of "Manual Transfer"
- Specific messaging about SEPA transfer timelines is shown to promoters
Testing
The manual payout system is thoroughly tested with:
- Unit tests for the payout model methods
- Service tests for the payout processing logic
- Controller tests for the admin interface
- Integration tests for the end-to-end flow
Future Improvements
- Automatically detect user country from their address or IP
- Integrate with a SEPA transfer API for automated bank transfers
- Add email notifications for payout status changes
- Implement a dashboard for admins to track SEPA transfers