Legal
Clear, fair rules for paid courses and subscriptions — and what happens when payments fail.
All paid transactions are processed by Razorpay in INR. Prices on course pages are authoritative; the server validates coupon, amount and currency (create-order:19 INR-only). Refunds, when approved, go to the original payment method via Razorpay.
Request within 7 days of purchase and before you have completed >25% of course content (progress <25%) or accessed >25% of paid lessons. Access is revoked (enrollment isActive=false, status cancelled) once a refund is processed (course-payment.ts). Consumable access (certificate already issued, >25% progress) is not refundable except for duplicate/failed payments below.
Subscriptions (subscriptions status active|expired|cancelled) can be cancelled anytime before the next billing cycle — cancellation stops future charges; the current period stays active until endDate. Expiry/cancellation revokes subscription-gated access (access.ts now checks active subscriptions). No pro-rata for the current period unless it was unused and requested within 48 hours.
Free notes (standalone_resources free), free courses (accessModel free) and public blog/community are not chargeable and not refundable by design.
If you were charged but the course was not activated (pending→completed webhook:101 may retry up to Razorpay's 500), or you were charged twice, share the providerRef/order_id and paymentId. We verify via Razorpay and Appwrite (payments providerRef unique) and refund the duplicate/failed amount in full. Uncaptured/failed Razorpay statuses remain failed and are not charged.
Coupons (coupons) are limited by maxUses/expiresAt/isActive and incremented transactionally (coupons.ts:348). Discounts are applied at order creation; invalid coupons are ignored (couponApplied:false) — request a correction before paying if the discount did not apply.
Use /contact or email the grievance officer (see /grievance-redressal) with: account email, course/subscription name, providerRef/order_id, paymentId, reason and % completion. We acknowledge in 24 hours and resolve/refund within 7 business days of approval. Refunds via Razorpay take 5-10 business days to reflect per bank.
Abuse of refunds (repeated enroll→refund), ToS violations, or chargeback fraud may lead to account suspension and denial of future refunds. We log all payment transitions (audit_logs/payments status pending|completed|failed|refunded) for audit.
Nothing here limits your rights under the Consumer Protection Act 2019. If our resolution is unsatisfactory, you may approach the appropriate consumer forum or the Grievance Officer for escalation (15-day redressal, see /grievance-redressal). Subscriptions may also be managed via your Razorpay/bank mandate.