Form builder with payment gateway
To collect money with a form, you don't need to set up a WordPress site or write code. Porsino's form builder with payment gateway connects your order, tuition or donation form to a rial gateway: set a fixed amount or calculate it from the answers, the transaction is verified server-side, and an invoice is issued for every successful payment. Building forms in Porsino is free, and publishing a payment form unlocks with the “Pro” plan.
- No WordPress or coding
- Zibal and ZarinPal
- PDF invoice

Tuition, orders and donations
Class and course tuition
Combine the registration form with tuition payment; registration is confirmed only after a successful payment.
Order form
Collect the product and quantity in the form, total the amount with a calculated field and take payment right there.
Donations
Let the payer choose the amount; whatever they enter in the amount field goes to the gateway.
Paid events and exams
Charge attendance fees for conferences and workshops; in the exam builder you can make exam entry paid too.
Nothing gets installed anywhere: send the short link or QR, or place the iframe code on any site, including your own WordPress site. For course enrollment, see theOnline registration formas well.
Amount from a formula field
The payment amount works two ways: fixed, or read from a field. For the second, add a “calculated” field and write its formula referencing other fields' keys inside double curly braces:
Sample amount formula
{{qty}} * {{unit_price}}Quantity times unit price{{price}} * 1.09Price plus 9% VAT{{tuition}} + {{books}}Tuition plus the cost of the book
The formula runs in a restricted, safe engine that recognizes only math operations and allowed functions, and the server recalculates the amount at submission — so nobody can pay less by tampering with the browser. The display unit is toman or rial, and the amount always goes to the gateway in rials. Conditional logic can act on the amount too; for example, require a pro forma upload when the total exceeds a threshold.
Server-side payment verification
The biggest risk with a payment form is recording an order that was never paid for. In Porsino a response stays in “awaiting payment” until the payment is confirmed. When the payer returns from the gateway, the server itself queries the gateway for the transaction and never accepts any parameter returned from the browser as proof of payment.
- Successful payment: the response is finalized and receives a unique invoice number.
- Failed or abandoned payment: the payer can try again from the result page.
- Payment deadline passed: the unfinished response is set aside and option capacity, booked slots and discount-code quotas are released.
In the dashboard, each form's Payments section shows the status of every transaction, and if needed you can re-query a payment's status from the gateway.
Payer invoice
After a successful payment, the result page shows the amount, discount, gateway, bank reference number, invoice number and payment time, and a “Download invoice” button gives the PDF invoice. Enter the seller's name, address, tax ID and logo in the form's payment settings so they appear on the invoice.
Discount codes are included: percentage or fixed amount, with a usage cap, expiry date and minimum purchase. Each code's usage is counted atomically, so two simultaneous purchases can't exceed its cap.
Porsino works with the Zibal and ZarinPal gateways. Connect your own gateway once under “My payment gateway” so form payments go straight to your account; in the form settings you just turn payments on.
Porsino's form builder with payment gateway vs. Gravity Forms
Gravity Forms is a powerful commercial WordPress plugin. If you have a WordPress site and the form has to integrate with that site's users, products or other plugins, it's a sensible choice.
| Subject | Gravity Forms | Porsino |
|---|---|---|
| Prerequisite | A WordPress site, hosting and plugin updates | None; the form is hosted on Porsino and embeds in any site |
| Cost | Paid license | Free to build; payment forms with the “Pro” plan |
| Iranian gateway | Usually via Persian third-party add-ons | Zibal and ZarinPal built into the form builder |
| Jalali calendar and Iranian fields | With Persian localization add-ons | Built in: Jalali calendar, national ID, mobile, province and city |
| Site integration | Deep; data lives inside WordPress itself | iframe, webhooks, API and Google Sheets integration |
In short: if you don't have WordPress, or don't want to maintain a plugin and its license, Porsino is the shorter route; if everything you run is on WordPress, Gravity Forms is a good option too.
Frequently asked questions
Do I need a website or WordPress for a payment form?
No. The form is built and hosted on Porsino and is available via link, QR or iframe. If you have a website, place the iframe code on your page.
How do I know a payment actually went through?
A response only becomes “paid” when the server itself confirms the transaction with the gateway. A forged return from the gateway page or a tampered return URL has no effect.
Can the amount be calculated from the form's answers?
Yes. Create a calculated field — quantity times unit price, for example — and set it as the amount source in the payment settings. The server recalculates the amount at submission time.
Does the payer get an invoice?
Yes. After a successful payment, an invoice with a unique number and the seller's details is issued and can be downloaded as a PDF from the payment result page.
Which gateways are supported?
Zibal and ZarinPal. You connect your own gateway under “My payment gateway”, and every payment goes straight to your account.
Related pages
Form-building guides
All posts- Why Users Abandon Forms Halfway (and How to Stop It)Form abandonment has less to do with 'impatient users' than with how many fields you ask for, the order of your questions, and where you show errors.3 min read
- Jalali (Persian) Dates in Online Forms: Three Mistakes That Corrupt Your DataThe Jalali calendar is not just a different way of displaying dates. If you do the conversion in the wrong place, your reports end up shifted by a day.2 min read
- Iranian National ID in Forms: Why Checking for '10 Digits' Isn't EnoughIran's 10-digit national ID has a check digit. If your form only checks the length, 90% of made-up numbers slip through the filter.3 min read
Build your first payment form without writing code
Build the form, turn on payments, set a fixed or formula-based amount and send the link.