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 $199.00 USD; request a quote for a scoped proposal.

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.
Aucun paiement maintenant. Ceci envoie une demande de devis à notre équipe — nous vous recontacterons par e-mail avec les tarifs et les prochaines étapes.
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.
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
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 2-4 weeks from confirmed scope.
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.
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.
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.
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.
Achetez la licence sur ecosire.com et téléchargez le ZIP de l'application PayFast Gateway for ERPNext depuis le tableau de bord de votre compte.
Extrayez le ZIP dans le dossier d'applications de votre banc ou exécutez « bench get-app » avec le chemin d'accès à l'application extraite.
Exécutez `bench --site SITE_NAME install-app APP_NAME` suivi de `bench migrate` pour installer PayFast Gateway for ERPNext et appliquer son schéma.
Ouvrez les paramètres de licence ECOSIRE sur votre site et activez votre clé de licence. Nécessite les applications gratuites ecosire_connect et ecosire_license_client.
| Critère | ÉCOSIRE | Construction personnalisée | Concurrent | Odoo natif |
|---|---|---|---|---|
| PayFast support | Native gateway registered in ERPNext, built to spec | Depends entirely on your in-house build | Sometimes available, often generic or unmaintained | |
| ERPNext integration depth | Payment Request, Payment Entry, reconciliation, refunds wired in | Whatever you have time to build | Usually checkout only, shallow accounting links | |
| ITN reconciliation | Signature + IP + amount + postback validated, auto Payment Entry | You design and test all validation yourself | Basic callback, variable validation rigor | |
| Recurring subscriptions | PayFast subscriptions mapped to ERPNext `Subscription` | Significant extra build effort | Rarely included | |
| Fit to your setup | Scoped to your version, currencies, and rules | Fully bespoke but you carry the effort | One-size-fits-all, limited tailoring | |
| Maintenance & versions | Built for v15/v16, support window, upgrade guidance | You own every future fix | Depends on vendor's release cadence | |
| Code ownership | Full source + git repo handover | You own it, if you can staff it | Often closed or licensed | |
| Time to live | Typically 2-4 weeks from confirmed scope | Unpredictable, hiring/backlog dependent | Fast to install but may not fit |
This is a build-to-order app, not an instant download. Typical delivery is 2-4 weeks 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.
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.
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`.
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.
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.
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.
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.
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.