Appearance
Integration: Razorpay
Used by FinFluencify for trainer payouts via Razorpay linked accounts (Route-style payouts), plus course-payment flows.
Where it lives
- Trainer onboarding/KYC fields are on
profiles(razorpay_linked_account_id,razorpay_stakeholder_id,razorpay_onboarding_status, andkyc_*fields). - Linked-account creation runs through an edge function (e.g.
finfluencify-create-linked-account) — filter the EF index for the current Razorpay-related functions.
Onboarding status machine
not_started → documents_submitted → pending_review → active
↘ suspendedThe Settings UI (components/Settings/TrainerPayoutsSettings.jsx) is a multi-step KYC wizard that uploads documents to Supabase Storage and reflects this status.
Secrets
Razorpay API keys are edge-function secrets only (never in src/). See Environment Variables. Sensitive KYC fields are encrypted server-side before storage.
Notes
- All payment/payout logic is server-side in edge functions; the client only collects input and reads status.
- Course payment verification is partly trainer-mediated (trainer grants access after confirming payment) — see the FinFluencify enrollment flow.