Peach Payments Gateway
Description
A payment gateway integration between WooCommerce and Peach Payments.
Introduction
Accept payments from customers using a variety of payment methods, including card, EFT, BNPL (buy now, pay later), QR code, wallet, voucher, mobile money, and alternative credit.
Overview
Peach Payments is a leading payment service provider in multiple countries servicing some of the largest companies in Africa. Our mission is to make online payments simple and seamless across Africa.
Explore all Peach Payments features and how to configure Peach Payments for WooCommerce.
Features
- Enterprise-grade security (3-D Secure enabled and PCI compliant)
- Mobile-optimised user experience
- Industry-leading conversion rates
- Supports multiple currencies
- Secure card storage
- Fully supports WooCommerce Subscriptions, if purchased separately
- Our modern Dashboard enables you to easily connect your e-commerce platform to Peach Payments, view and refund transactions, and test integrations and payment methods using our fully isolated sandbox environment.
It’s free, and always will be
We are firm believers in open source, which is why we’re releasing this module for free, forever.
Actively developed
This module is actively developed, new features and enhancements are added based on your feedback.
PHP compatibility
PHP 8.3 or newer is recommended for production environments, in line with WooCommerce guidance. The plugin minimum remains PHP 7.4 for backward compatibility.
Testing
Visit the Peach Payments documentation hub for details on how to test the payment extension WooCommerce and for test cards and credentials Test and go live procedure 🚀.
Sign up with Peach Payments
Contact Peach Payments at [email protected] to set up a merchant account for your company or website.
Peach Payments is there to assist you in the application process with the respective banks. Note: The merchant account application process may take up to four weeks depending on the bank. Get in touch as soon as possible to avoid delays going live.
Reviews
Definitely the best WooCommerce Payment Plugin for SA
By zavantd on November 8, 2023
This is possibly the most comprehensive WooCommerce payments plugin available in South Africa. I love that it enables the customer to check out on your site without having to be redirected to complete the transaction. The plugin also allows store managers to refund customer orders directly from the WooCommerce dashboard, which is an awesome feature. I highly recommend this plugin for anyone who wants to have comprehensive payment management functionality, directly from the store backend.
Absolutely love Peach Payments
By Rudi S. (lashvegasadmin) on August 25, 2022
Changelog
4.1.0
- Fix – Stores using WooCommerce legacy order storage (HPOS disabled) no longer incorrectly flag every order as an authentication-blocked renewal.
- Fix – Blocked-renewal admin warnings now reflect only genuinely blocked renewals, and previously incorrect warnings are automatically recalculated and cleared.
- Fix – Recovery jobs are now only scheduled for genuinely blocked renewals, preventing excessive Action Scheduler activity and unnecessary server load.
- Fix – Invalid, empty or zero-value authentication markers are excluded from blocked-renewal counts and recovery scheduling, and genuine authentication failures now correctly replace invalid markers.
- Fix – Subscription card-change webhooks now update the intended subscription instead of historical renewal orders.
- Fix – Older renewal orders with inherited checkout data no longer receive subscription card-change updates.
- Fix – Card changes are only marked as successful once WooCommerce Subscriptions confirms the payment method update.
- Fix – Removed false success messages, duplicate notices and misleading cancellation messages during card changes, and added notices for changes still being confirmed.
- Fix – Failed or cancelled card changes now restore the correct subscription payment settings, including manual renewal preferences.
- Fix – Existing card details are preserved during pending card changes and safely restored when needed, without overwriting newer card updates.
- Tweak – Blocked-renewal lookups now support both HPOS and legacy order storage.
- Tweak – Improved blocked-renewal counting and retrieval performance for stores with large order volumes.
- Tweak – Renewals continue using the existing card until a new card change is successfully confirmed.
- Tweak – Added safeguards against duplicate, delayed, failed, mismatched and concurrent card-change callbacks, and prevented conflicting payment updates from overwriting registration details.
- Tweak – Replaced deprecated curl_close() calls to improve PHP 8.5 compatibility.
4.0.9
- Fix – Resolved the “Missing transaction ID” error on WooCommerce refunds by switching refund transaction lookup to WooCommerce order CRUD/transaction data instead of legacy post meta.
- Fix – Updated order and subscription data handling so the plugin works with both HPOS and legacy WooCommerce storage.
- Fix – Refunds now target the correct transaction for parent orders, renewals, and hosted payments, with better result validation.
- Tweak – Improved subscription renewal transaction tracking, retry handling, duplicate-charge protection, and pending or unknown payment handling.
- Fix – Prevented customer Hosted Checkout payments from racing against automatic saved-card renewal attempts.
- Tweak – Added stronger matching, locking, and reconciliation for delayed, pending, or unknown renewal webhook outcomes.
- Fix – Prevented stale initial transaction IDs or old card references from being paired with newly selected cards.
- Tweak – Strengthened concurrency protection so the same order or payment is not processed more than once.
- Fix – Added safe handling for Peach credential or entity failures without incorrectly triggering customer dunning.
- Tweak – Admins can retry the existing renewal order without creating a duplicate renewal order.
- Tweak – Added clearer warnings, duplicate-payment alerts, and admin-attributed notes for manual payment actions.
- Fix – Prevented checkout, session, and webhook metadata from carrying over to new renewal orders.
- Tweak – Automatic renewals now use a unique merchantTransactionId per attempt, with the WooCommerce order number sent as merchantInvoiceId for merchant reporting.
- Fix – Prevented an active subscription from being suspended when a customer starts a change-payment flow and then cancels on the payment page.
- Fix – Expired stored cards can now be deregistered when Peach returns a 400.
4.0.8
- Fix – Zero value add card and change payment sessions could miss a valid payment_initial_id when an earlier response field existed but was empty. Extraction now skips empty values and continues with valid Peach CIT fields, including the top level cardholderInitiatedTransactionId.
- Fix – The checkout Cancel URL was HTML escaped before being sent to Peach. The plugin now sends WooCommerce’s raw gateway cancel URL so cancel requests process correctly.
- Fix – Adding a card from My Cards could fail with “token missing or expired” or a false verification error if the Peach webhook completed before the customer returned. The return token is now preserved. Existing saved card records can be updated with missing details instead of being treated as duplicates.
- Fix – Subscription payment method changes could fail on zero value Peach sessions. Registration and payment settings, subscription detection, and return validation for the original amount and currency are corrected so the new card replaces the old one for future renewals.
- Fix – HPOS: subscription flows now use WooCommerce CRUD metadata instead of direct post meta checks.
- Fix – Card deletion could miss cards linked to subscriptions, including HPOS. Cards linked to active, pending, or on hold subscriptions cannot be deleted until the subscription is moved to another card. Unused cards can still be deleted. Customers see which subscriptions are affected and are directed to Change Card.
- Tweak – Prevent stale initial transaction IDs from an old card being paired with a newly selected registration on renewals.
- Tweak – Added V2 card holder name normalisation so holder details are saved when adding a card.
- Tweak – Clearer Peach and WooCommerce logs for failed session creation, return validation, card registration, credential changes, renewal mismatches, and blocked or failed card deletion.
- Tweak – Removed unused duplicate class-order-utils.php.
4.0.7
- Fix – Valid Peach payment returns are no longer rejected when the local return token or checkout ID has changed after a refresh, retry, or new payment session. Signature validation now runs first for signed results.
- Fix – Subscription renewals failing with “missing saved card token (registration ID)”.
- Enhancement – SSL is no longer checked on every plugin load. The check now runs only on activation and after a plugin version update, and uses the site’s HTTPS configuration instead of the current request protocol.
- Enhancement – Removed repeated SSL warning logging; the warning is shown only as an admin notice when relevant.
- Enhancement – Improved checkout icons.
4.0.6
- Fix – Apple Pay redirection to Thank you page
4.0.5
- Fix – Remove validation for cart total amount less 1 ZAR
- Fix – Compatibility with Sequential order number
4.0.4
- Fix – Redirection to thank you page for alternative payments
4.0.3
- Enhancement – Added signature validation for webhooks
- Fix – Prevent Expired webhook from updating order status
- Fix – Prevent recurring payments from processing multiple times
4.0.2
- Enhancement – Added support for failed recurring payment
- Fix – Deprecated warnings
- Fix – Duplicate webhook events
4.0.1
- Enhancement – Improve error logging details
4.0.0
- Enhancement – Simplified Integration with Checkout V2 Hosted payment page
- Enhancement – Customizable Storefront Branding
- Enhancement – Subscription Support for COF parameters
- Enhancement – Flexible Card Management
- Enhancement – Single Webhook endpoint
3.3.7
- Enhancement – Added MauCas as a new payment method to Consolidated Payments.
- Enhancement – Showing first 6 payement logos now instead of 4.
3.3.6
- Fix – Retry of Subscription payments on initial fail result.
3.3.5
- Fix – Retrieve customer IP address.
- Update – Improved embedded checkout error messages.
- Update – Compatibility tested with WordPress 6.8
3.3.4
- Fix – Removed unwanted spacing in the codebase that caused 400 errors.
- Enhancement – Added a check to verify if Peach Webhooks have been triggered.
- Update – Included Order ID in the payload for recurring payments.
3.3.3
- Fix – Select correct payment type code for subscription payments
3.3.2
- Enhancement – Add Float payment method.
- Enhancement – Set cookies via JS rather than via WP hooks to ensure “headers already sent” warnings doesn’t get triggered.
- Fix – Retrieving order object on Switch Webhook request.
- Fix – New PHP notice “_load_textdomain_just_in_time”.
3.3.1
- Fix – PHP warnings due to undefined variable
3.3.0
- Fix – PHP warning when upgrading to latest version of PHP
- Enhancement – Only load CSS and JS front-end assets on cart and checkout
- Enhancement – Update Subscription page. Remove flushing of permalinks and rather display admin notice
- Fix – Allow for custom “Order IDs” setting when using WooCommerce Sequential Order Numbers Pro plugin
- Fix – Refund payments using various checkout methods
3.2.9
- Update – Update card payment endpoints
3.2.8
- Fix – Order state changes from processing to canceled
- Update – Added SameSite attribute relevant custom cookies
- Enhancement – Improved brand select field display on card payments
3.2.7
- Fix – PHP Warning: Cannot modify header information – headers already sent
- Fix – PHP Warning: Undefined array key “peach-payments”
3.2.6
- Enhancement – Increase height on the Embedded Checkout payment form
- Fix – Prevent webhook from changing transactions from a processing/completed order state to failed state
3.2.5
- Enhancement – Orders with completed status will remain as completed
- Enhancement – Only display selected payment brands on the Copy and Pay card form
- Fix – Incorrect redirect on payment complete for Embeddable Checkout form
- Fix – Format when using the Embeddable Checkout form
3.2.4
- Update – Remove Google Analytics Scripts
- Fix – Default selection on payment options
3.2.3
- Update – More descriptive backend setting labels
- Fix – PHP errors on WC Blocks
3.2.2
- Enhancement – Update Card expiry validation logic for CnP
- Enhancement – Show plugin description on front-end
- Enhancement – Support for WooCommerce Blocks
- Enhancement – Added MCB Juice Payment Logo
3.2.1
- Fix – Issues with subscription Card widget payments
3.2.0
- Fix – Backend vulnerability in ajax call when rolling back versions
- Fix – Set a default value of the ‘Checkout Option Cookie’ for new Checkouts
3.1.9
- Enhancement – Plugin description update
- Enhancement – receipt_page function cookie order check
- Fix – Redirect when the “More payment methods” option is selected
- Fix – Backend order error for payment method field
- Fix – Error on the Standalone Card widget if the Visa and Mastercard logos aren’t added to the Consolidated Payment Logo option
3.1.8
- Feature – Setting to enable and disable consolidated payment options
- Feature – Setting to enable and disable the standalone CARD payment option
- Feature – Setting to remove and add logos displayed on the frontend.
- Feature – Setting to change label text displayed on consolidated payment options
- Feature – Added new payment method Capitec Pay
- Enhancement – Cards stored before version 3.0.0 can now be deleted in subsequent versions.
- Enhancements – Support for sending payment links via WooCommerce
- Enhancements – Additional COF parameters
- Enhancements – Rollback option to version 3.1.7
- Fix – Auto-selecting the “Pay and Save New Card” option for logged-in users on subscription payments
- Fix – Issue with stored card expiry data
3.1.7
- Enhancements – Remove duplicate links in plugin readme file.
- Enhancements – Add additional cards on the “My Cards” page.
- Enhancements – Change/Update card for a subscription order.
3.1.6
- Fix – Deployment error. Missing Backend Styling
3.1.5
- Fix – Remove special characters from billing fields.
- Enhancements – Remove duplicate links in plugin readme file.
- Enhancements – Ability to update plugin description.
3.1.4
- Enhancements – WPML string translations.
- Enhancements – Blink by EMTEL: new supported payment method
3.1.3
- Fix – Plugin default title text
- Fix – Error when deleting stored cards
3.1.2
- Enhancements – All Products for WooCommerce Subscriptions plugin support
- Enhancements – Custom order status support
- Update – Error Logging
- Fix – Custom order notes will not be emailed to clients
3.1.1
- Enhancements – Billing Address character limit based on new 3DS 2.0 on .JS Widget
- Fix – Order_id reference fix on hosted payments page webhooks
3.1.0
- Enhancements – Checkout for Woo-commerce plugin support
- Enhancements – Mix basket processing
- Enhancements – Additional billing parameters to support 3DS 2.0
- Fix – Webhook handling
- Fix – SSL handling function
3.0.9
- Enhancements – Express Checkout for Woocommerce plugin support.
- Fix – Undefined variable “seqOrderID”
- Fix – Manual Orders not showing Payment Widgets
3.0.8
- Enhancements – Access and secret token validation
- Enhancements – Update on guests users payment flow
- Enhancements – Stored card display in the user dashboard
- Enhancements – Improvements in .JS widget design for stored card payments
- Enhancements – Check when card items amount is 0
- Fix – Code conflict causing php errors
3.0.7
- Fix – SSL check for PHP7.4
- Fix – Subscription payments for orders made on older version (v2) of the plugin.
- Fix – Hosted Payments Page Webhook.
- Enhancements – Include current Peach Payments plugin version number in API responses.
- Enhancements – Cards saved on older version of the plugin will now be available.
- Enhancements – CleanTalk plugin compatibility.
3.0.6
- Enhancements – Peach Logs added to WooCommerce
3.0.5
- Enhancements – In plugin update message.
- Update – Webhook Order Status.
- Update – Conditional display for card payment options.
- Fix – Incorrect Payment Brand Saved.
3.0.4
- Enhancements – Code improvements apon live checkout.
3.0.3
- Fix – PHP parse error causing critical error on plugin activation.
- Fix – Live and Sandbox result codes.
3.0.1
- Fix – Theme Conflict – duplicate function names.
3.0.0
- Fix – Updated payment method branding and names.
- Fix – Elementor page builder compatibility.
- Fix – Support for multi-currency plugins.
- Fix – Support for WordPress membership Plugin.
- Enhancements – Subscription functionality.
- Enhancements – Ability to do refunds via WordPress backend.
- Enhancements – Plugin UI and admin re-design.
- Enhancements – Optimisation for mobile.
- Enhancements – Code cleanup and better coding standards.
- Enhancements – WordPress Multi Site Support.
- Enhancements – Version Rollback Functionality.
- Enhancements – Support for AutomateWoo plugin.
- Enhancements – Scrubill plugin compatibility.
- Enhancements – Support for Woo-commerce eGift Card plugin.
- Security – Improved way on how card details are stored and used.
- Security – SSL Checks.


