Taking payments
Connect Stripe, ZarinPal or bank transfer, follow every payment in one list, and handle refunds and discount codes.
Everything your site sells — courses, event tickets, appointments, shop orders, restaurant orders and table deposits — is paid through the same payment methods and shows up in the same list. The money goes straight to your own account; VPress never holds it. Payments needs the admin role.
Connect a payment method
Open Payments → Payment settings and switch on the methods you want, then Save changes.
| Method | What you need | Currencies |
|---|---|---|
| Stripe | Your Secret key, from Stripe → Developers → API keys. | Everything except toman and rial |
| ZarinPal | Your Merchant ID. Sandbox tests without real money. | Toman and rial only |
| Bank transfer | Instructions for learners: account holder, IBAN or card number, and the reference to write. | Any |
Each section sets its own currency — the shop in Shop settings, a course or a ticket on its price. Keys are stored encrypted; after saving you only ever see the last few characters.
The payments list
Payments shows every payment with who paid, what for, how, and its status, with totals for the last 30 days, transfers waiting for you and refunds owed. Filter by status or by what was paid for, and Export CSV for your accountant.
| Status | Meaning |
|---|---|
| Unpaid | Checkout started but not finished. |
| To check | A bank transfer waiting for you to look at your account. |
| Paid | The money arrived. |
| Refund owed | Money arrived for something that can no longer be delivered — a cancelled booking, an expired hold. Refund it, then mark it. |
| Refunded | You've marked the money as returned. |
Bank transfers
A transfer waits under Transfers to check until you Confirm it (the payer is emailed and gets what they paid for) or Reject it with a Note to the payer, who can then try again.
Refunds
On a paid row, press Mark refunded. For Stripe payments, Refund via Stripe sends the full amount back for you. For ZarinPal and bank transfers, return the money in the ZarinPal panel or from your bank first — the button only records that you did.
Discount codes
Courses, events and the shop each have a Coupons screen. New coupon takes a Code, what it Applies to — that section or Everything on the site — a Percentage or Fixed amount, and optional Maximum uses, Last day valid and Minimum spend. Codes aren't case-sensitive, and a use only counts once the order is paid.