# 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 for `manual_payout?` - `mark_as_manually_processed!` method generates a SEPA transfer ID ### Payout Service - `should_process_manually?` method is hardcoded to return true for French users - `process_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