Description
Sifalo Pay for WooCommerce lets customers in Somalia, Somaliland and Djibouti pay with the mobile wallet or card they already use, while you get paid through your Sifalo Pay account. Install the plugin, enter your API credentials once, and every supported payment method appears at checkout automatically.
Supported payment methods
- Mobile money: EVC Plus, ZAAD, eDahab, Sahal, Premier Wallet
- Cards: Mastercard and Visa
- More methods are added to Sifalo Pay over time and become available without reinstalling the plugin.
Features
- One-step setup. Enter your API User and API Key once. No per-method configuration.
- Live and Staging modes. Test the full payment flow before accepting real payments.
- Automatic order verification. Pending orders are re-checked in the background, so successful payments are not missed.
- Pending-aware wallet payments. Mobile wallet payments that are still awaiting customer approval stay pending instead of failing checkout.
- Refunds from WooCommerce. Issue refunds through the Sifalo Pay API (full refunds for ZAAD).
- Clear checkout experience. Mobile-friendly payment fields, a processing overlay, and plain-language error messages.
- Order notes for debugging. Failed payments are logged to the order notes.
- HPOS compatible. Works with WooCommerce High-Performance Order Storage.
Requirements
- WordPress 5.4 or higher and PHP 7.4 or higher
- WooCommerce with the classic (shortcode) checkout. The WooCommerce Cart and Checkout blocks are not supported yet.
- A Sifalo Pay account: https://sifalopay.com
Third-party service
This plugin sends order and payment details (order ID, amount, currency, and customer billing details) to the Sifalo Pay API to process payments and verify their status. A Sifalo Pay account is required.
- Service: Sifalo Pay, operated by Sifalo Technologies
Sifalo Pay – Mobile Money & Card Payments for WooCommerce
Contributors: sifalo
Tags: woocommerce, payment gateway, mobile money, somalia, evc plus
Requires at least: 5.4
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 2.5.3
License: GPLv2
License URI: http://www.gnu.org/licenses/gpl-2.0.txt
Accept EVC Plus, ZAAD, eDahab, Sahal, Premier Wallet, Mastercard and Visa in WooCommerce with one plugin and one set of API credentials.
Caching and Performance
Payment API calls and order updates run on the server and are not affected by page caching. Problems only appear when checkout HTML, checkout fragments, or JS/CSS are cached or combined incorrectly. No Sifalo-specific rules are needed beyond standard WooCommerce caching practice.
Recommended setup
- Enable WooCommerce mode in your caching plugin if it has one (WP Rocket, LiteSpeed Cache, WP-Optimize and similar).
- Never cache these URLs (adjust for your permalinks, e.g.
/en/checkout/):/cart//checkout//my-account/- order-received (thank-you) pages
- any URL containing
?add-to-cart= - any URL containing
?sid=(card payment return from Sifalo) - any URL containing
?key=(WooCommerce order key)
- Exclude WooCommerce cookies from caching:
woocommerce_items_in_cart,woocommerce_cart_hash,wp_woocommerce_session_*. Also enable “Do not cache for logged-in users”. - Exclude from JS/CSS minify, combine and defer:
sifalo-pay-public.js,sifalo-pay-public.css, andjqueryif checkout breaks after enabling defer. - Purge everything (page, object, opcode and CDN caches) and retest in a private window.
Smoke test
- Add a product to the cart and open checkout.
- Confirm the Sifalo methods appear (ZAAD, EVC Plus, eDahab, Premier Wallet, Cards) with the Sifalo logo and “Secured by Sifalo Pay” styling.
- Place a test order in Staging.
- For cards, confirm the order status updates after returning from payment and does not stay on pending.
Symptoms and fixes
- No payment methods at checkout: the checkout page is fully cached. Exclude
/checkout/and skip the cache for visitors with cart cookies. - Methods show but no logo or green styling: JS/CSS is not loading or is over-minified. Exclude the Sifalo assets, purge, and hard-refresh.
- “Processing…” overlay never appears:
sifalo-pay-public.jsis blocked or stale. Exclude it from minify/defer and check the browser console. - Wrong cart total or empty payment section: a cached checkout fragment. Exclude checkout and disable fragment caching for AJAX checkout.
- Card payment completes but order stays pending: the thank-you page is cached, so verification is skipped. Exclude order-received pages and
?sid=URLs. - Works logged in, broken for guests: guest page caching is too aggressive. Exclude cart cookies.
- Works after clearing cache, then breaks again: a long cache TTL on checkout-like pages. Add the URL exclusions permanently.
Still stuck? Temporarily disable page caching to confirm the cause. Then open browser DevTools > Network and check that sifalo-pay-public.js returns 200 on checkout, search the page source for sifaloPayCheckout, and look for console errors. As a last resort, exclude the whole site from page cache until the rules are correct.
Settings for popular caching plugins
- WP Rocket: Cache > Never Cache URL(s); Advanced Rules > Never Cache Cookies; File Optimization > exclude the Sifalo JS/CSS; enable WooCommerce integration if shown.
- LiteSpeed Cache: Cache > Excludes > Do Not Cache URIs and Cookies; Page Optimization > exclude the Sifalo JS/CSS from combine/minify.
- W3 Total Cache: Page Cache > Advanced > Never cache the following pages; Minify > ignore scripts and styles containing
sifalo-pay. - SiteGround Optimizer, Hostinger and other host caches: use the host’s WooCommerce / E-commerce preset and add the checkout exclusions manually if they are not automatic.
Do not full-page cache checkout for performance. Use object caching or a CDN for static assets only.
Installation
- In WordPress, go to Plugins > Add New, search for “Sifalo Pay”, then click Install Now and Activate. Alternatively, upload the plugin .zip, or extract it into
wp-content/plugins/. - Go to WooCommerce > Settings > Sifalo Pay.
- Enter your API User and API Key. Find them in your Sifalo Pay dashboard: https://pay.sifalo.com/business/merchant/api
- Choose Live or Staging, then save.
- All payment methods are enabled automatically. Place a test order in Staging to confirm everything works.
FAQ
-
Do I need a Sifalo Pay account?
-
Yes. Create a free account at https://sifalopay.com, then copy your API User and API Key from the merchant API page.
-
Which payment methods are supported?
-
EVC Plus, ZAAD, eDahab, Sahal, Premier Wallet, Mastercard and Visa. New methods added by Sifalo Pay appear automatically.
-
Does it work with the WooCommerce Cart and Checkout blocks?
-
Not yet. The plugin works with the classic, shortcode-based checkout. Block support is not available in this version.
-
Can I test payments before going live?
-
Yes. Select Staging in the plugin settings and place test orders. Switch to Live when you are ready.
-
Can I refund orders?
-
Yes, from the WooCommerce order screen, using the Sifalo Pay API. ZAAD supports full refunds.
-
A mobile wallet payment shows as pending. Is that a problem?
-
No. The order stays pending while the customer approves the payment on their phone, and the plugin verifies it automatically afterward.
-
A card payment succeeded but the order is still pending. What should I do?
-
Your checkout or thank-you page is probably cached. See the caching section below, and make sure order-received pages and URLs containing
?sid=are never cached. -
Is it compatible with HPOS and PHP 8.3?
-
Yes to both.
Reviews
ডেভেলপার এবং কন্ট্রিবিউটর
“Sifalo Pay – Mobile Money & Card Payments for WooCommerce” is open source software. The following people have contributed to this plugin.
কন্ট্রিবিউটরTranslate “Sifalo Pay – Mobile Money & Card Payments for WooCommerce” into your language.
ডেভেলপমেন্ট এ আগ্রহী?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.5.3
- Security: checkout return verification now requires a valid order key and a Sifalo payment method before acting
- Security: transaction IDs are no longer stored on the order until verification succeeds
- Security: verification requests and responses are bound to the order ID, amount, and currency (when present)
- Security: scheduled pending-order verification uses the same order binding
- Credits: Pablo González Pérez, Francisco José Ramírez Vicente and Iñigo Sánchez Enciso for reporting unauthorized order status/meta writes via the return handler
- Credits: Ryan Fabella for reporting cross-order payment confirmation via reused transaction IDs
2.5.1
- Tested with WordPress 7.1 and WooCommerce 11.0
- Removed the Local environment option (Live and Staging only)
- HPOS (High-Performance Order Storage) compatible
- Fixed a PHP 8.3 compatibility issue with gateway properties
- Failed payments are now logged to order notes for easier debugging
2.5.0
- Payment status codes aligned with the Sifalo API (601 paid, 603 pending, 604 insufficient funds, 600 failed)
- Pending mobile wallet payments stay pending instead of failing checkout
- Card returns and scheduled verification now handle failed and pending statuses correctly
- Wallet payments send full billing details and store the Sifalo transaction ID
- Separate gateway, checkout, and verify URLs for Live, Staging, and Local environments
- WooCommerce refunds via the Sifalo API (full ZAAD refunds)
- HPOS compatibility
- Checkout CSS and processing overlay now load on the checkout page
2.4.0
- Simplified setup: enter your API credentials once and all payment methods are ready
- New guided settings page with step-by-step instructions
- Modern, mobile-friendly checkout with polished inputs
- Payment processing animation keeps customers informed
- Clearer error messages
- Automatic order verification so no payment is missed
- Security and reliability improvements across the payment flow
- Compatible with the latest WordPress and WooCommerce