ZarinPal
$0.00
$39.00

Iran's #1 Payment Gateway. Now Built to Last.

Your Iranian shoppers trust ZarinPal. The J2Commerce plugin hits the correct live endpoint, handles Rial and Toman, and ships with the official SDK — so your checkout actually works.

Everything Your Iranian Checkout Needs

Sixteen real features. One correctly wired ZarinPal integration. No dead hosts, no currency guesswork, no abandoned-plugin nightmares.

Official ZarinPal SDK — Live Host

Ships with the SDK that ZarinPal themselves maintain, pointed at the correct live payment endpoint. No dead hosts. No abandoned forks. Payments reach ZarinPal the first time, every time.

Sandbox Testing

One toggle switches the entire plugin to ZarinPal's sandbox environment. Separate credential fields for live and test — no risk of mixing them. Test your full checkout before your first real order ships.

Rial (IRR) and Toman (IRT)

You choose the currency unit — the plugin handles the conversion. The amount sent at checkout is the same amount confirmed on return. No silent math errors. No rejected payments.

Double-Finalize Guard

Browser back buttons, page reloads, retry requests — this plugin checks whether an order is already confirmed before processing again. One confirmation. Nothing fires twice. Quietly protecting every order.

Refund, Inquiry & Reverse

Process refunds through ZarinPal's API when you configure your Access Token. Look up any transaction by reference. Void an unpaid payment before capture. All from J2Commerce — no manual portal visits.

Gateway Surcharge

Pass ZarinPal's transaction fee to the customer as a named line item in the cart. Percentage, fixed, or a combination of both. Optional tax class assignment. Transparent at checkout — not a surprise on the receipt.

Geo-Zone Restrictions

Show ZarinPal only to customers with Iranian billing addresses — or any geo-zone you configure. International shoppers see appropriate payment methods. Iranian shoppers see ZarinPal. Nobody gets confused.

Order Total Limits

Set a minimum and/or maximum subtotal for ZarinPal availability. Apply it only within the order ranges that make business sense for your store — and let the right payment method handle everything else.

Persian + English Language Files

Full Farsi (fa-IR) translation shipped out of the box, alongside American and British English. Every customer-facing message — selection, confirmation, error, cancellation — is translatable. Your store speaks your customers' language.

The Correct Host. Not the Dead One.

Every ZarinPal plugin for Joomla that existed before this one used an outdated API endpoint — one that ZarinPal retired. Payments failed silently. Store owners found out when the orders stopped. This plugin ships with the official SDK that ZarinPal maintains, using the live endpoint that ZarinPal themselves update when the gateway changes.

  • Official ZarinPal SDK — not a five-year-old fork
  • Correct live payment endpoint — automatically
  • Sandbox environment wired to ZarinPal's real sandbox
  • Automatic updates keep you current with gateway changes

Rial vs Toman — This Time It's Configurable

The old plugin had a hard-coded divide-by-10 buried in its logic. If your store was in Rial, it sent Toman to ZarinPal. If it was in Toman, the amounts were off by a factor of ten — and ZarinPal's verify call rejected them. Now you set the currency once in the admin panel, and the plugin handles the conversion correctly in both directions.

  • IRR (Rial) and IRT (Toman) — your choice
  • Amount stored at request time — used exactly at verify time
  • No silent math. No amount mismatches. No rejected payments.

Beyond Checkout — Refund, Inquire, Reverse

A payment plugin that can only take money is half a payment plugin. When you configure your ZarinPal Access Token, the plugin gains the ability to process refunds through the ZarinPal API — no portal login required for routine operations. Inquiry looks up any payment by its reference. Reverse voids an unpaid authorization before funds move.

  • Refund with reason code — customer request, duplicate, or other
  • Inquiry: look up any transaction's status by reference
  • Reverse: void an unpaid payment before capture
  • Transaction history query with filters (status, card, email, mobile)

Real-World Use Cases

A clothing shop in Tehran runs their Joomla ecommerce store with prices in Iranian Rial. Their previous ZarinPal plugin had been silently broken for months — all attempted payments were failing before reaching the gateway. They install the J2Commerce ZarinPal plugin, set the currency to Rial, enter their live merchant ID, and test a complete checkout through the sandbox in under ten minutes. They flip to production, take their first confirmed ZarinPal payment, and the ZarinPal reference ID appears in the order record. The customer sees the custom Farsi thank-you message the store owner wrote.

A software download store in Iran prices products in Toman. They need to pass ZarinPal's transaction fee to the customer as a transparent line item. They set the currency to IRT, configure a 1.5% surcharge named "Gateway Fee", and it appears at checkout for every order that uses ZarinPal. The currency conversion is handled automatically. Order totals match. Accounting reconciles. Customers see the fee before they confirm — no surprises.

A marketplace serves both Iranian and international customers. International customers won't have a ZarinPal account — showing it to them creates confusion at checkout. The store owner configures a geo-zone restriction so ZarinPal is only visible to shoppers with Iranian billing addresses. International customers see other payment methods automatically. Iranian customers see ZarinPal at the top of the list. Clean checkout for everyone.

A subscription box company in Iran needs to issue refunds when customers cancel. Previously, every refund required logging into the ZarinPal merchant portal manually. With the Access Token configured in J2Commerce, refunds are processed through the ZarinPal API directly. The operations team selects the reason code — customer request, duplicate transaction, or other — and the refund is processed and logged. No portal session required for routine operations.

Your Iranian Checkout Deserves Better Than a Dead Host.

The official SDK. The correct endpoint. Rial and Toman handled properly. Full Farsi translation. Refund support. Sandbox testing. Everything a real ZarinPal integration for Joomla ecommerce should have been all along. Yeah. We built that.

Translated In The Following Languages

English (en-GB), English, USA (en-US), Persian Farsi (fa-IR)


  • Developer J2Commerce
  • Extension Type Payment
  • J2Commerce Version 6.x
  • Joomla Version 6.x
Language Translations
EnglishEnglish
English, USAEnglish, USA
Persian FarsiPersian Farsi

Improvement Patch version bump (no functional changes)

Update Requires Joomla 6.x + J2Commerce 6.x + a ZarinPal merchant account

You may also be interested in these products

Stay Updated

Subscribe for free and be the first to know about the latest features, updates, and new additions.