Skip to main content
PayFast Gateway for ERPNext — A build-to-order Frappe app that wires PayFast into ERPNext for South African and Pakistani mer — 1/1Illustrative preview

A build-to-order Frappe app that wires PayFast into ERPNext for South African and Pakistani merchants

— hosted checkout, instant EFT, wallets, recurring subscriptions, and ITN reconciliation.

ECOSIRE scopes, builds, installs, and supports it against your ledger.

What is PayFast Gateway for ERPNext?

A build-to-order Frappe app that wires PayFast into ERPNext for South African and Pakistani merchants — hosted checkout, instant EFT, wallets, recurring subscriptions, and ITN reconciliation. ECOSIRE scopes, builds, installs, and supports it against your ledger. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Registers PayFast as a native ERPNext `Payment Gateway Account`, so Payment Requests and the portal 'Pay Now' button route to it like any built-in gateway
`PayFast Settings` single DoctType with merchant ID, merchant key, and passphrase stored as encrypted `Password` fields, plus sandbox/live toggle
Signed hosted-payment-page redirect: MD5 signature over the sorted PayFast field set with passphrase, so no PAN or card data touches your ERPNext bench (PCI scope minimized)
Guest-accessible whitelisted ITN endpoint (`allow_guest`) that validates signature, PayFast source-IP allowlist, amount-equals-expected, and a server-side postback confirmation before booking anything
Idempotent `Payment Entry` creation keyed on PayFast `pf_payment_id` so retried or duplicate ITNs never double-post
ZAR and PKR support with per-currency enablement and card, instant EFT, and wallet method selection
Recurring billing that maps PayFast subscription/tokenization onto ERPNext `Subscription` records for automatic renewals
`hooks.py` doc events keep `Payment Request`, Sales Invoice, and Sales Order status in sync on payment, failure, and refund
`scheduler_event` sweep reconciles pending/timed-out transactions and pulls PayFast settlement data so Bank Reconciliation matches
Server-side refund action that calls the PayFast API and books a reversing `Payment Entry`, gated by ERPNext role permissions
Permission model reuses `Accounts Manager` / `Accounts User` role profiles for who can configure the gateway vs. issue refunds
Client scripts add PayFast transaction status and a Retry/Refund control directly on the Sales Invoice and Payment Request forms
Dedicated gateway-log DocType capturing every request, ITN, and API call for audit and dispute resolution
Frappe REST API and whitelisted methods for the initiate/verify/refund flow, usable by portal, mobile, or external integrations
Compatible with Frappe/ERPNext v15 and v16, delivered as a standard installable Frappe app on your bench

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your ERPNext.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

ERPNext Compatibility
—
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
MariaDB 10.6+

About this Product

South African and Pakistani merchants running ERPNext hit the same wall: the platform's native payment options (Stripe, PayPal, Razorpay, Braintree, Paytm) don't cover PayFast, so ZAR and PKR customers can't pay through the Frappe web checkout with the methods they actually use — cards, instant EFT, or mobile wallets. Teams end up marking Sales Invoices paid by hand from bank statements, chasing PayFast's transaction console in a separate tab, and reconciling settlement batches in a spreadsheet. There is no PayFast option in the Payment Gateway Account list, so Payment Request emails and the portal "Pay Now" button simply don't route to PayFast at all.

We build a proper Frappe app — erpnext_payfast — that registers PayFast as a first-class ERPNext payment gateway. It ships a PayFast Settings single DocType (holding merchant ID, merchant key, passphrase, sandbox/live toggle, and per-currency enablement) with credentials stored as Password fields, and it hooks into ERPNext's standard Payment Gateway / Payment Request flow so any Sales Invoice, Sales Order, or web-portal document can generate a PayFast "Pay Now" link. When a customer clicks it, a whitelisted method (erpnext_payfast.api.initiate) builds the signed PayFast form payload — MD5 signature over the sorted field set plus passphrase — and redirects to the hosted PayFast payment page, so no card data ever touches your ERPNext instance.

On the return path, a whitelisted, allow_guest ITN endpoint (erpnext_payfast.api.itn) receives PayFast's Instant Transaction Notification, validates it four ways per PayFast's spec — signature match, source-IP allowlist, amount-equals-expected, and a server-side postback confirmation to PayFast — then, inside a single transaction, creates the Payment Entry, links it to the originating Payment Request and reference document, and updates status. hooks.py doc events keep the Payment Request and invoice in sync, a scheduler_event sweeps for pending/timed-out transactions and pulls settlement data so bank reconciliation matches, and refunds are handled through a guarded server-side action that calls the PayFast API and books the reversing Payment Entry. Recurring subscriptions map PayFast tokenization/subscription billing onto ERPNext Subscription records. Role and permission handling reuses ERPNext's Accounts Manager / Accounts User profiles so who can configure the gateway and who can issue refunds is governed by standard permissions, and every gateway call is written to a log DocType for audit. Client scripts surface the PayFast status and a "Retry / Refund" control directly on the Sales Invoice and Payment Request forms.

Because this is build-to-order, nothing is shipped from a shelf. You start with a short scoping call; we confirm which currencies and methods you need (cards, instant EFT, wallet, recurring), your ERPNext version (v15 or v16), and your reconciliation and refund rules. We build against a copy of your setup, run UAT on a staging bench with PayFast sandbox credentials, then install on your production bench, hand over the git repository, and stay on for a post-go-live support window. Typical delivery is one working week from confirmed scope.

What you get

  • Installable Frappe app source code (`erpnext_payfast`) built for your ERPNext v15 or v16 version
  • Installation and configuration on your bench, including PayFast Settings, gateway account, and sandbox-to-live cutover
  • Technical documentation: DocType reference, hooks/scheduler map, whitelisted API endpoints, and ITN validation flow
  • End-user guide plus a live training session for your accounts team covering pay links, reconciliation, and refunds
  • UAT on a staging bench with PayFast sandbox credentials, sign-off checklist, and a documented rollback plan
  • Post-go-live support window for bug fixes and configuration adjustments after production launch
  • Git repository handover with full commit history so you own and can extend the code
  • Compatibility notes and upgrade guidance for future Frappe/ERPNext minor versions

Who this is for

South African ERPNext merchant

Sells in ZAR and needs customers to pay by card and instant EFT through the ERPNext portal, with PayFast ITNs auto-creating Payment Entries and settlement batches reconciling cleanly against the bank.

Pakistani online retailer on ERPNext

Wants local card and wallet acceptance via PayFast so PKR checkout works from Payment Request emails and the web store, without staff manually marking invoices paid.

Finance / accounts manager

Owns reconciliation and refunds; needs role-gated refund actions, an audit log of every gateway call, and automatic Payment Entry posting so month-end matches PayFast settlement without spreadsheets.

ERPNext administrator or implementation partner

Needs a clean, installable Frappe app that follows framework conventions — DocTypes, hooks.py, scheduler events, whitelisted methods — plus the git repo so it can be maintained and upgraded across v15/v16.

How PayFast Gateway for ERPNext Compares

CriterionECOSIRECustom BuildCompetitorERPNext Native
PayFast supportNative gateway registered in ERPNext, built to specDepends entirely on your in-house buildSometimes available, often generic or unmaintainedNot available — no PayFast in core
ERPNext integration depthPayment Request, Payment Entry, reconciliation, refunds wired inWhatever you have time to buildUsually checkout only, shallow accounting linksN/A — core has no PayFast
ITN reconciliationSignature + IP + amount + postback validated, auto Payment EntryYou design and test all validation yourselfBasic callback, variable validation rigorNone
Recurring subscriptionsPayFast subscriptions mapped to ERPNext `Subscription`Significant extra build effortRarely includedNone
Fit to your setupScoped to your version, currencies, and rulesFully bespoke but you carry the effortOne-size-fits-all, limited tailoringN/A
Maintenance & versionsBuilt for v15/v16, support window, upgrade guidanceYou own every future fixDepends on vendor's release cadenceN/A
Code ownershipFull source + git repo handoverYou own it, if you can staff itOften closed or licensedN/A
Time to liveTypically one working week from confirmed scopeUnpredictable, hiring/backlog dependentFast to install but may not fitImmediate but non-functional for PayFast

Frequently Asked Questions about PayFast Gateway

How long does delivery take?

This is a build-to-order app, not an instant download. Typical delivery is one working week from confirmed scope — the range depends on which methods and currencies you need (cards, instant EFT, wallet, recurring) and your reconciliation and refund rules. We agree the timeline in writing after the scoping call.

Do card details ever pass through my ERPNext server?

No. We use PayFast's hosted payment page, so the customer enters card details on PayFast's PCI-compliant environment. ERPNext only sends a signed redirect and receives the ITN callback, which keeps card data — and PCI scope — off your bench.

Which ERPNext and Frappe versions are supported?

We build for Frappe/ERPNext v15 and v16. Tell us your exact version at scoping and we target it specifically; the app follows standard Frappe app conventions so it installs on your bench with `bench get-app` and `bench install-app`.

How does support and updates work after go-live?

Every build includes a post-go-live support window for bug fixes and configuration tweaks. You also receive the full git repository, so your own team or partner can maintain and extend it. Longer-term maintenance and version-upgrade retainers are available on request.

How are payments reconciled and refunds handled?

On a validated ITN we create a `Payment Entry` linked to the originating Payment Request and reference document. A scheduler event pulls PayFast settlement data so Bank Reconciliation matches, and refunds run through a role-gated server-side action that calls the PayFast API and books the reversing entry.

Does it support recurring subscriptions?

Yes, if it's in scope. We map PayFast subscription/tokenization billing onto ERPNext `Subscription` records so renewals are charged automatically and posted back as Payment Entries. Confirm your recurring plans during scoping so we build the right cadence and dunning behavior.

Can I extend or customize the app after handover?

Yes. You receive the complete source and git history. Because it's a standard Frappe app using DocTypes, hooks.py doc events, whitelisted methods, and client scripts, your developers can add fields, endpoints, or business rules the same way you would with any ERPNext customization.

Request a quote

PayFast Gateway

A build-to-order Frappe app that wires PayFast into ERPNext for South African and Pakistani merchants — hosted checkout, instant EFT, wallets, recurring subscriptions, and ITN reconciliation. ECOSIRE scopes, builds, installs, and supports it against your ledger.

  • Registers PayFast as a native ERPNext `Payment Gateway Account`, so Payment Requests and the portal 'Pay Now' button route to it like any built-in gateway
  • `PayFast Settings` single DoctType with merchant ID, merchant key, and passphrase stored as encrypted `Password` fields, plus sandbox/live toggle
  • Signed hosted-payment-page redirect: MD5 signature over the sorted PayFast field set with passphrase, so no PAN or card data touches your ERPNext bench (PCI scope minimized)
  • Guest-accessible whitelisted ITN endpoint (`allow_guest`) that validates signature, PayFast source-IP allowlist, amount-equals-expected, and a server-side postback confirmation before booking anything

Request a Quotation

Tell us about your PayFast Gateway requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.