Payfast
$39.00

The Gateway Built for South Africa. Full Stop.

South African store owners don't need another payment plugin that tolerates ZAR as an afterthought. They need the one that speaks Rand natively — with subscriptions, webhook verification, and admin refunds built in from day one.

Everything a South African Joomla Store Needs to Get Paid

Accept one-time Payfast payments, run recurring subscription billing, issue refunds from the order screen, and verify every transaction through Payfast's secure notification system — all without leaving your Joomla ecommerce admin.

Secure Hosted Checkout

Customers pay on Payfast's PCI-compliant hosted page. Your store never touches a card number. The compliance headache leaves the building the moment you install this plugin.

Four-Layer Payment Verification

Every Payfast notification runs four independent checks: cryptographic signature, server origin, amount match, and direct server-to-server confirmation. Orders only advance to Completed when all four agree.

Tokenized Subscriptions

Subscription products automatically enable Payfast tokenization on first purchase. Renewal charges fire on schedule without the customer re-entering payment details. Ever.

Admin Refunds from the Order Screen

Full or partial refunds issued without leaving Joomla. For EFT payouts the modal collects bank details — account holder, bank, branch code, account number, type — then processes the refund and logs everything to the order history.

Saved Payment Methods

Returning subscribers see their stored Payfast token at checkout. Manage and delete saved methods from the customer account page. One click for repeat purchases.

Granular Controls

Geo zone restrictions, minimum and maximum order values, four configurable order statuses, and a notify URL override for stores behind reverse proxies. You control when and how Payfast appears.

Full Sandbox Mode

One toggle switches the entire plugin to Payfast's test environment. Run complete purchase flows, webhook deliveries, and status transitions before a single live rand changes hands.

Bootstrap 5 & UIkit Templates

Checkout pages render in Bootstrap 5 or UIkit to match your Joomla store's theme. No jarring style breaks mid-purchase. No visual discontinuity that makes customers wonder if they left your store.

18 Languages Including en-ZA

Ships with 18 language translations including South African English. Your checkout messages, error texts, and admin labels display in the right language for every member of your team and every customer.

Payment Verification That Doesn't Blink

A lot of payment plugins accept a notification and move on. This one interrogates every incoming Payfast confirmation until it's satisfied. Signature check, IP check, amount check, server confirm — four layers, no shortcuts. Fraudulent or spoofed notifications get logged and rejected before they touch an order status.

  • Cryptographic signature verified on every webhook
  • Payfast server IP confirmed before processing
  • Amount validated against the order to the cent
  • Direct server-side validation call to Payfast returns "VALID" — or the order stays pending

Subscription Billing That Actually Stays Subscribed

When a customer buys a subscription product, Payfast issues a token. The plugin stores it. On renewal day, J2Commerce creates the renewal order and charges the token automatically — no customer action required. The order confirms, the fulfilment email fires, and the next renewal date advances. Cancel the subscription from admin and the recurring billing stops at Payfast simultaneously.

  • Token stored after first purchase — no re-entry on renewal
  • Renewal orders created, charged, and confirmed automatically
  • Cancellations stop billing at Payfast immediately
  • Customers manage saved payment tokens from their account page

Refunds Without the Dashboard Circus

Every refund happens from the J2Commerce order screen. Enter the amount, write a reason, hit submit. When Payfast requires bank account information for an EFT payout, the refund modal collects it — account holder, bank, branch code, number, type — then processes the API call, records the result in the order's transaction detail, adds a history entry, and updates the order status. One screen. One action. Done.

  • Full or partial refund — your choice per order
  • EFT bank detail collection built into the modal
  • Refund written to order history with timestamp and amount
  • Order status updates to your configured "Refunded" state

Real-World Use Cases

A Cape Town gift-box company sells a monthly artisan box subscription at R499/month. They enable Payfast with tokenized subscriptions. First-time buyers pay through Payfast's hosted page. The token is stored. Every month, the renewal charges automatically — new order created, Payfast charged, order confirmed, fulfilment email triggered. The owner ships boxes. Nobody manually invoices anyone. The subscription business runs itself. That's the whole pitch.

An online training company sells annual access plans at R2,400/year. They use geo zone restrictions to show Payfast only to South African buyers — international buyers see a different gateway. Minimum subtotal limits keep Payfast off small add-on purchases. When a corporate client needs a partial refund for unused seats, the admin issues it from the order view in under a minute. The refund guard checks the available balance server-side — no risk of over-refunding, no double-charging.

A freelance developer is launching a client's Joomla ecommerce store behind a reverse proxy where the auto-detected webhook URL resolves to an internal hostname Payfast can't reach. They set the ITN Notify URL Override to the client's public HTTPS address, enable sandbox mode, turn on debug logging, and run a full purchase flow. Webhook deliveries appear in the Joomla log. Every order status transition is traceable. No surprises on launch day. The client signs off. The store goes live.

South Africa Is Waiting at Your Checkout. Don't Make Them Wait.

Sixty million people. South Africa's most trusted payment gateway. Your Joomla ecommerce store. Get the plugin and stop leaving South African sales on the table.

Translated In The Following Languages

Arabic Unitag (ar-AA), Chinese, Traditional (zh-TW), Danish (da-DK), Dutch (nl-NL), English (en-GB), English, USA (en-US), Finnish (fi-FI), French (fr-FR), German (de-DE), Greek (el-GR), Hebrew (he-IL), Italian (it-IT), Japanese (ja-JP), Norwegian Bokmål (nb-NO), Persian Farsi (fa-IR), Polish (pl-PL), Portuguese, Brazil (pt-BR), Portuguese, Portugal (pt-PT), Russian (ru-RU), Spanish (es-ES), Swedish (sv-SE), Turkish (tr-TR)


  • Developer J2Commerce
  • Extension Type Payment
  • J2Commerce Version 4.x, 6.x
  • Joomla Version 4.x, 5.x, 6.x
Language Translations
Arabic UnitagArabic Unitag
Chinese, TraditionalChinese, Traditional
DanishDanish
DutchDutch
EnglishEnglish
English, USAEnglish, USA
FinnishFinnish
FrenchFrench
GermanGerman
GreekGreek
HebrewHebrew
ItalianItalian
JapaneseJapanese
Norwegian BokmålNorwegian Bokmål
Persian FarsiPersian Farsi
PolishPolish
Portuguese, BrazilPortuguese, Brazil
Portuguese, PortugalPortuguese, Portugal
RussianRussian
SpanishSpanish
SwedishSwedish
TurkishTurkish

Improvement Tighten spacing on the order-view admin payment buttons (Bootstrap 5)

Improvement Tighten spacing on the order-view admin payment buttons (UIkit)

Fix Amount format fix

New Feature J2Commerce v4 and Joomla 4/5 support

Stay Updated

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