--- title: Payments & gateways description: Connect PayPal in the free Sikshya plugin, plus the Pro premium gateways — Stripe, Razorpay, Mollie, Paystack, Square, Authorize.Net, and Bank Transfer. --- # Payments & gateways
Pro Stripe & other premium gateways are Sikshya Pro. The free plugin ships PayPal & Offline. Activate a license under Sikshya → License to unlock the rest. View pricing →
Sikshya's free plugin includes **PayPal** as a fully-working gateway and **Offline / manual** for B2B or invoiced sales. **Stripe is not in the free plugin** — Stripe and the other premium gateways (Razorpay, Mollie, Paystack, Square, Authorize.Net, Bank Transfer) are **Pro-only add-ons** that you turn on under Sikshya → Add-ons after activating a license. ## What's included | Gateway | Free | Pro | Notes | | --- | --- | --- | --- | | **PayPal** | ✅ | ✅ | Simple (email + IPN) and Advanced (REST + webhooks) modes. | | **Offline / manual** | ✅ | ✅ | Bank deposit, Stripe outside Sikshya, B2B invoices. Admin marks orders paid. | | **Stripe** | — | ✅ | Pro-only add-on. One-time + recurring (with the Subscriptions add-on). | | **Razorpay** | — PRO | ✅ | India: cards, UPI, netbanking, wallets. | | **Mollie** | — PRO | ✅ | Europe: iDEAL, Bancontact, SEPA, cards. | | **Paystack** | — PRO | ✅ | Africa-first; cards, transfers, mobile money. | | **Square** | — PRO | ✅ | North America / UK / AU / JP cards. | | **Authorize.Net** | — PRO | ✅ | US-centric cards. | | **Bank Transfer** | — PRO | ✅ | Manual settlement, with bank details on the order. | ## Where to configure Open Sikshya → Settings → Payment. The screen has three sections: 1. **Pricing & taxes** — tax rate (%), "prices include tax", currency. 2. **Discounts & coupons** — allow coupons site-wide, max discount, default coupon lifetime. 3. **Invoicing** — auto-create invoices on success, invoice number prefix. Below those is the **Payment gateways** section. Each gateway is a row you can toggle on / off. Pro-gated gateways display a **PRO** badge until you have an active license. For each enabled gateway, expand the row to see its specific fields (described below). ## PayPal (free) PayPal is the primary free gateway. Two modes: ### Simple mode Easy setup — just an email address.
  1. Tick Enable PayPal.
  2. Set Integration mode to Simple (email + IPN).
  3. Paste your PayPal email.
  4. Tick Test mode (sandbox) until you've tested.
  5. Save.
The buy button redirects to PayPal. PayPal posts a notification (IPN) back to `/wp-json/sikshya/v1/webhooks/paypal-ipn`. Sikshya verifies and fulfills the order. ### Advanced (REST) mode Full webhook support, recurring payments, and better reporting. Requires PayPal developer credentials.
  1. In your PayPal developer dashboard, create an app and copy the Client ID and Secret.
  2. Set up a webhook on the PayPal app pointing to https://yoursite.com/wp-json/sikshya/v1/webhooks/paypal.
  3. Copy the Webhook ID.
  4. In Sikshya, set Integration mode to Advanced (REST), paste the three values.
  5. Save.
## Offline / manual (free) Useful for B2B, invoices, or "wire to our bank account" customers.
  1. Tick Enable offline / manual payment.
  2. Type the Offline payment instructions learners see at checkout (e.g. wire details, contact info).
  3. Tick Auto-enroll after offline checkout if you want learners enrolled immediately, or leave off if you want to verify payment first.
When a learner picks **Offline** at checkout, Sikshya creates a **Pending** order. Once you've received the money: - Open Commerce → Sales → Orders. - Click the row → **Mark paid**. - Choose **Mark paid and enroll now** (the learner gets enrolled and emailed). ## Stripe PRO
PRO Stripe — cards, wallets, and recurring billing

Stripe is a Pro-only gateway — it isn't bundled with the free Sikshya plugin. After activating a Pro license and toggling the Stripe add-on under Sikshya → Add-ons, the gateway shows up in Settings → Payment. With Pro you can also pair Stripe with the Subscriptions add-on for recurring courses.

Unlock Stripe →
Setup (after activating Pro):
  1. Tick Enable Stripe.
  2. Paste Publishable key and Secret key from your Stripe dashboard.
  3. Create a webhook in Stripe pointing to https://yoursite.com/wp-json/sikshya/v1/webhooks/stripe.
  4. Copy the webhook signing secret (whsec_...) and paste into Webhook secret.
  5. Tick Test mode (sandbox), save, run a test transaction with card 4242 4242 4242 4242.
  6. Switch to live keys and run one tiny live transaction, then refund it via the Stripe dashboard to verify the full loop.
## Razorpay PRO Popular in India. - **Key ID** + **Key Secret** from the Razorpay dashboard. - Webhook URL: `https://yoursite.com/wp-json/sikshya/v1/webhooks/razorpay`. - Optional **Webhook secret**. ## Mollie PRO Strong in Europe (Netherlands, Belgium, Germany, France). - **API key** (one key for live or test, prefixed `live_` / `test_`). - Optional list of **Payment methods** to offer (iDEAL, Bancontact, etc.). - Optional **Webhook secret**. ## Paystack PRO Africa-first; supports recurring (works with **Subscriptions** add-on). - **Public key** + **Secret key** from the Paystack dashboard. - Optional **Payment channels** (e.g. card-only, bank-only). - Optional **Webhook secret**. ## Square PRO US, UK, Canada, Australia, Japan. - **Application ID**, **Access token**, **Location ID**, **Webhook signature key**. - Sandbox has its own credentials. ## Authorize.Net PRO US-centric; popular with established merchants. - **API Login ID**, **Public client key**, **Transaction key**, **Signature key**. - Sandbox URL: `https://sandbox.authorize.net`. ## Bank Transfer PRO For accountants who need a real bank reference. Fields: - **Bank name**, **Account name**, **Account number**, **Routing / SWIFT**, **Instructions**. These details show on the order page. The order is **Pending** until you mark it paid, just like Offline / manual.
PRO Six premium gateways + bank transfer

Razorpay, Mollie, Paystack, Square, Authorize.Net, and Bank Transfer are all part of Sikshya Pro. One license, every gateway you'll need.

Compare Pro plans →
## Refunds The order detail page has a **Refund** action. Three patterns: | Gateway | Recommended refund flow | | --- | --- | | **PayPal / Stripe** | Refund in the gateway dashboard first, then mark refunded in Sikshya. | | **Razorpay / Mollie / Paystack / Square / Authorize.Net** | Same — gateway dashboard first, then mark refunded. | | **Offline / Bank Transfer** | Refund manually via your bank, then mark refunded. | When you mark refunded: - The order status changes to **Refunded**. - The enrollment is cancelled. - A refund row is written in your payments table. - The `sikshya_user_unenrolled` action fires (so any downstream automation runs). The setting **Try to refund automatically when a student leaves** under Enrollment exists but its reliability depends on the gateway adapter. Treat it as a convenience, not a guarantee. ## Test mode workflow A safe way to test any gateway:
  1. Toggle Test mode (sandbox) on for the gateway.
  2. Paste sandbox / test keys.
  3. Set up the gateway webhook in sandbox mode pointing to your staging URL — never live URL with test keys, never live keys with localhost.
  4. Buy a course as a fresh test learner with the gateway's test card or sandbox account.
  5. Verify: order shows Paid, learner shows under Enrollments, the receipt email arrives.
  6. Switch to Live mode, paste live keys, change the webhook to live mode, and run one small live transaction with a real card. Refund it via the gateway dashboard.
## Currency Set under Settings → General: - **Currency** — code (USD, EUR, INR, NPR, …). - **Currency position** — `$199`, `199$`, `$ 199`, or `199 $`. - **Thousand separator** — `,` or `.` or space. - **Decimal separator** — `.` or `,`. - **Number of decimals** — usually 2 (or 0 for JPY). > Sikshya stores prices as floats. For very high transaction volume, ask your developer about high-precision migrations. ## Webhook URLs (cheat sheet) Copy these into the corresponding gateway dashboard: ``` https://yoursite.com/wp-json/sikshya/v1/webhooks/paypal https://yoursite.com/wp-json/sikshya/v1/webhooks/paypal-ipn https://yoursite.com/wp-json/sikshya/v1/webhooks/stripe https://yoursite.com/wp-json/sikshya/v1/webhooks/razorpay https://yoursite.com/wp-json/sikshya/v1/webhooks/mollie https://yoursite.com/wp-json/sikshya/v1/webhooks/paystack https://yoursite.com/wp-json/sikshya/v1/webhooks/square https://yoursite.com/wp-json/sikshya/v1/webhooks/authorize-net ``` ## What's next - [Email & notifications](/email-settings) — the receipts and welcome emails that fire after payment. - [Pro add-ons](/third-party-integrations) — every Pro feature, including subscriptions. - [Troubleshooting](/troubleshooting) — what to do when payments don't show up.