---
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.
- Tick Enable PayPal.
- Set Integration mode to Simple (email + IPN).
- Paste your PayPal email.
- Tick Test mode (sandbox) until you've tested.
- 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.
- In your PayPal developer dashboard, create an app and copy the Client ID and Secret.
- Set up a webhook on the PayPal app pointing to
https://yoursite.com/wp-json/sikshya/v1/webhooks/paypal.
- Copy the Webhook ID.
- In Sikshya, set Integration mode to Advanced (REST), paste the three values.
- Save.
## Offline / manual (free)
Useful for B2B, invoices, or "wire to our bank account" customers.
- Tick Enable offline / manual payment.
- Type the Offline payment instructions learners see at checkout (e.g. wire details, contact info).
- 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):
- Tick Enable Stripe.
- Paste Publishable key and Secret key from your Stripe dashboard.
- Create a webhook in Stripe pointing to
https://yoursite.com/wp-json/sikshya/v1/webhooks/stripe.
- Copy the webhook signing secret (
whsec_...) and paste into Webhook secret.
- Tick Test mode (sandbox), save, run a test transaction with card
4242 4242 4242 4242.
- 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:
- Toggle Test mode (sandbox) on for the gateway.
- Paste sandbox / test keys.
- Set up the gateway webhook in sandbox mode pointing to your staging URL — never live URL with test keys, never live keys with localhost.
- Buy a course as a fresh test learner with the gateway's test card or sandbox account.
- Verify: order shows Paid, learner shows under Enrollments, the receipt email arrives.
- 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.