{"id":391874,"date":"2026-10-27T08:19:31","date_gmt":"2026-10-27T08:19:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/fosia-pay-lite\/"},"modified":"2026-10-30T15:07:52","modified_gmt":"2026-10-30T15:07:52","slug":"fosia-pay-lite","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/fosia-pay-lite\/","author":23530626,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.1.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Fosia Pay Lite \u2013 PawaPay Mobile Money for WooCommerce","header_author":"Fosia Ltd","header_description":"Free WooCommerce Mobile Money gateway for Africa, powered by PawaPay's hosted payment page. No commission, no payment limit.","assets_banners_color":"0c2573","last_updated":"2026-10-30 15:07:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/pay.fosiarw.com","header_author_uri":"https:\/\/fosiarw.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":177,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.7":{"tag":"1.0.7","author":"fosialtd","date":"2026-10-27 08:56:39","revision":3768073},"1.1.0":{"tag":"1.1.0","author":"fosialtd","date":"2026-10-29 20:34:41","revision":3773991},"1.1.1":{"tag":"1.1.1","author":"fosialtd","date":"2026-10-30 14:28:03","revision":3775466},"1.2.0":{"tag":"1.2.0","author":"fosialtd","date":"2026-10-30 15:07:52","revision":3775541}},"upgrade_notice":{"1.2.0":"<p>Never &quot;Thank you&quot; for an unpaid order, the amount in the customer&#039;s own currency before paying, Mobile Money hidden when it cannot work, a clearer guided setup and dashboard, French included, and encrypted token storage. Recommended for every shop.<\/p>","1.1.1":"<p>Security fix: every payment result is checked with PawaPay before an order is marked paid. Please update.<\/p>","1.1.0":"<p>A guided setup opens once after activation (Mode, PawaPay token, callback URL), and an optional Quick feedback window when you deactivate.<\/p>","1.0.7":"<p>New Insights on the dashboard, computed locally from your own orders. Optional, off-by-default &quot;Connect this site to Fosia&quot;.<\/p>","1.0.6":"<p>No more payment limit. Payments are now confirmed even without PawaPay &quot;signed callbacks&quot;, and PawaPay rejections are shown clearly. Recommended update.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3768013,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3768013,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3768013,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3768013,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3768013,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.7","1.1.0","1.1.1","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3775539,"resolution":"1","location":"assets","locale":"","width":1400,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3775539,"resolution":"2","location":"assets","locale":"","width":1400,"height":1180},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3775539,"resolution":"3","location":"assets","locale":"","width":1400,"height":1000},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3775539,"resolution":"4","location":"assets","locale":"","width":1400,"height":1000},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3775539,"resolution":"5","location":"assets","locale":"","width":1400,"height":1430}},"screenshots":{"1":"The guided setup: paste your PawaPay token, tested with PawaPay before it is saved, with help for merchants who have no PawaPay account yet.","2":"The Fosia Pay dashboard: setup checklist with \"Test now\", whether customers see Mobile Money at checkout, volume and recent payments.","3":"Checkout on a phone: the operators of the customer's country and the amount in their Mobile Money currency, before they pay.","4":"Back from PawaPay without paying, the customer sees \"Payment not received yet\" with \"Pay now\" and \"Check again\"; after a failed payment, the reason in plain words and \"Try again\". Never \"Thank you\" for an unpaid order.","5":"The settings in WooCommerce &gt; Payments, with \"Test Connection\"."}},"plugin_section":[262246],"plugin_tags":[141805,3050,187426,174359,288886],"plugin_category":[45],"plugin_contributors":[286652],"plugin_business_model":[],"class_list":["post-391874","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-mobile-money","plugin_tags-mpesa","plugin_tags-mtn-momo","plugin_tags-orange-money","plugin_tags-pawapay","plugin_category-ecommerce","plugin_contributors-fosialtd","plugin_committers-fosialtd"],"banners":{"banner":"https:\/\/ps.w.org\/fosia-pay-lite\/assets\/banner-772x250.png?rev=3768013","banner_2x":"https:\/\/ps.w.org\/fosia-pay-lite\/assets\/banner-1544x500.png?rev=3768013","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/fosia-pay-lite\/assets\/icon.svg?rev=3768013","icon":"https:\/\/ps.w.org\/fosia-pay-lite\/assets\/icon.svg?rev=3768013","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/fosia-pay-lite\/assets\/screenshot-1.png?rev=3775539","caption":"The guided setup: paste your PawaPay token, tested with PawaPay before it is saved, with help for merchants who have no PawaPay account yet."},{"src":"https:\/\/ps.w.org\/fosia-pay-lite\/assets\/screenshot-2.png?rev=3775539","caption":"The Fosia Pay dashboard: setup checklist with \"Test now\", whether customers see Mobile Money at checkout, volume and recent payments."},{"src":"https:\/\/ps.w.org\/fosia-pay-lite\/assets\/screenshot-3.png?rev=3775539","caption":"Checkout on a phone: the operators of the customer's country and the amount in their Mobile Money currency, before they pay."},{"src":"https:\/\/ps.w.org\/fosia-pay-lite\/assets\/screenshot-4.png?rev=3775539","caption":"Back from PawaPay without paying, the customer sees \"Payment not received yet\" with \"Pay now\" and \"Check again\"; after a failed payment, the reason in plain words and \"Try again\". Never \"Thank you\" for an unpaid order."},{"src":"https:\/\/ps.w.org\/fosia-pay-lite\/assets\/screenshot-5.png?rev=3775539","caption":"The settings in WooCommerce &gt; Payments, with \"Test Connection\"."}],"raw_content":"<!--section=description-->\n<p>Fosia Pay Lite is a free WooCommerce payment gateway for Mobile Money in Africa, powered by the <a href=\"https:\/\/www.pawapay.io\">PawaPay<\/a> API. <strong>You need your own PawaPay merchant account<\/strong>: a Sandbox account to test is free and opens in minutes; PawaPay opens the Live account after checking your business (see the FAQ). Accept <strong>MTN MoMo<\/strong> (MTN Mobile Money), <strong>Airtel Money<\/strong>, <strong>Orange Money<\/strong>, <strong>M-Pesa<\/strong>, Moov Money, Wave and the other Mobile Money networks served by PawaPay: 43 networks in 21 African countries, from Rwanda, Uganda, Kenya and Ghana to Cameroon, C\u00f4te d'Ivoire, Senegal and DR Congo.<\/p>\n\n<p>The customer sees the amount in their own Mobile Money currency before paying, is sent to PawaPay's secure payment page, picks their operator, approves the payment on their phone with their Mobile Money PIN, and comes back to your store. The order is marked paid only once PawaPay confirms the payment, and a customer who comes back without paying sees \"Payment not received yet\" with a \"Pay now\" button, never \"Thank you\".<\/p>\n\n<p><strong>No commission on your sales, ever.<\/strong> The only fees are PawaPay's own processing fees, agreed directly between you and PawaPay. <strong>No limit on the number of payments<\/strong>, no licence key, no time limit.<\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=zkjFS6S72Vc<\/p>\n\n<p>En fran\u00e7ais : <a href=\"https:\/\/www.youtube.com\/watch?v=UHQtsTag0AQ\">Fosia Pay : le Mobile Money sur WooCommerce<\/a><\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>WooCommerce payment gateway for the classic checkout and the block-based Cart &amp; Checkout<\/li>\n<li>Works in the countries and with the operators enabled on your PawaPay account (MTN MoMo, Airtel Money, Orange Money, M-Pesa, Moov, Vodacom and more)<\/li>\n<li>PawaPay hosted payment page: the plugin never sees or stores Mobile Money PINs<\/li>\n<li>Automatic conversion from your store currency to the customer's Mobile Money currency, shown at checkout before the customer pays<\/li>\n<li>Clear return page: paid, \"Payment not received yet\" (with \"Pay now\" and \"Check again\"), failed (with the reason in plain words and \"Try again\"), or \"Confirming your payment\"<\/li>\n<li>Mobile Money is only offered when it can work: hidden without a PawaPay token, with a token PawaPay refused, or for a billing country your PawaPay account does not cover<\/li>\n<li>Payments re-checked with PawaPay in the background, so a customer who paid and closed the page is confirmed even without a callback<\/li>\n<li>Amounts follow the decimals and limits set on your PawaPay account<\/li>\n<li>Payment confirmation you can trust: every PawaPay callback, signed or not, is confirmed by reading the payment from PawaPay with your own token (status, amount and currency) before an order is marked paid<\/li>\n<li>Guided setup in about 3 minutes once you have your PawaPay API token: the token is tested with PawaPay before it is saved<\/li>\n<li>Dashboard: setup checklist with a \"Test now\" button, whether customers see Mobile Money at checkout, volume per currency, success rate and recent payments (with the operator and why an order is unpaid)<\/li>\n<li>Insights, computed on your site from your own orders: unfinished checkouts at the PawaPay page, failed payments by reason, refunds done by hand<\/li>\n<li>Sandbox mode for testing before going live<\/li>\n<li>Compatible with WooCommerce High-Performance Order Storage (HPOS)<\/li>\n<li>In English and French (more languages through translate.wordpress.org)<\/li>\n<\/ul>\n\n<h4>Supported countries and Mobile Money operators<\/h4>\n\n<p>Fosia Pay Lite works with the countries and operators enabled on your PawaPay account:<\/p>\n\n<ul>\n<li><strong>Benin<\/strong>: MTN MoMo, Moov Money<\/li>\n<li><strong>Burkina Faso<\/strong>: Orange Money, Moov Money<\/li>\n<li><strong>Cameroon<\/strong>: MTN Mobile Money, Orange Money<\/li>\n<li><strong>Congo (Brazzaville)<\/strong>: MTN MoMo, Airtel Money<\/li>\n<li><strong>DR Congo<\/strong>: Vodacom M-Pesa, Airtel Money, Orange Money<\/li>\n<li><strong>C\u00f4te d'Ivoire<\/strong>: MTN MoMo, Orange Money, Wave<\/li>\n<li><strong>Ethiopia<\/strong>: Safaricom M-Pesa<\/li>\n<li><strong>Gabon<\/strong>: Airtel Money<\/li>\n<li><strong>Ghana<\/strong>: MTN MoMo, Telecel Cash, AT Money<\/li>\n<li><strong>Kenya<\/strong>: M-Pesa<\/li>\n<li><strong>Lesotho<\/strong>: M-Pesa<\/li>\n<li><strong>Malawi<\/strong>: Airtel Money, TNM Mpamba<\/li>\n<li><strong>Mozambique<\/strong>: Vodacom M-Pesa, Movitel e-Mola<\/li>\n<li><strong>Nigeria<\/strong>: MTN MoMo, Airtel<\/li>\n<li><strong>Rwanda<\/strong>: MTN MoMo, Airtel Money<\/li>\n<li><strong>Senegal<\/strong>: Orange Money, Wave, Free Money<\/li>\n<li><strong>Sierra Leone<\/strong>: Orange Money<\/li>\n<li><strong>Tanzania<\/strong>: Vodacom M-Pesa, Airtel Money, Mixx by Yas, Halopesa<\/li>\n<li><strong>Uganda<\/strong>: MTN MoMo, Airtel Money<\/li>\n<li><strong>Zambia<\/strong>: MTN MoMo, Airtel Money, Zamtel Kwacha<\/li>\n<li><strong>Zimbabwe<\/strong>: EcoCash<\/li>\n<\/ul>\n\n<p>Your store can keep its prices in US dollars, euros or any currency: the amount is converted to the customer's Mobile Money currency (RWF, UGX, KES, TZS, GHS, XOF, XAF, CDF, ZMW, NGN and more) at checkout.<\/p>\n\n<h4>Fosia Pay Pro<\/h4>\n\n<p>Fosia Pay Pro is a separate, paid plugin by the same team. It adds on-site checkout without redirect, refunds from WooCommerce, payouts, payment links with QR codes, a REST API, and a callback router for several sites on one PawaPay account. Fosia Pay Lite works fully on its own. <a href=\"https:\/\/pay.fosiarw.com\">Learn more<\/a>.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WooCommerce<\/li>\n<li>A <a href=\"https:\/\/www.pawapay.io\">PawaPay<\/a> merchant account and API token<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<h4>PawaPay (payment processor)<\/h4>\n\n<p>The plugin cannot take payments without PawaPay. Requests go to <code>api.pawapay.io<\/code> (live) or <code>api.sandbox.pawapay.io<\/code> (sandbox mode), with your PawaPay API token.<\/p>\n\n<ul>\n<li><strong>At checkout<\/strong>, when a customer pays with Mobile Money: the plugin reads your account's amount rules (decimals, minimum and maximum, cached for 1 hour) and creates a PawaPay payment page with the amount and currency, the customer's country, a short text (\"Order 123\"), a payment id, your store's return URL and the checkout language. The customer's phone number is only sent if you turn on \"Pre-fill and lock the Mobile Money number\" in the settings (it is then checked with PawaPay's phone number validation).<\/li>\n<li><strong>When PawaPay sends a payment result<\/strong> to your callback URL, or when the customer returns to your store: the plugin may ask PawaPay for the payment's status, and downloads PawaPay's public signing keys (cached for 12 hours) to verify signed callbacks.<\/li>\n<li><strong>When you click \"Test Connection\"<\/strong> in the settings: the plugin reads your PawaPay account configuration.<\/li>\n<\/ul>\n\n<p>PawaPay <a href=\"https:\/\/www.pawapay.io\/merchant-terms-of-service\">Merchant Terms of Service<\/a> and <a href=\"https:\/\/www.pawapay.io\/privacy-policy\">Privacy Policy<\/a>.<\/p>\n\n<h4>ExchangeRate-API (open.er-api.com)<\/h4>\n\n<p>Used only when your store currency differs from the customer's Mobile Money currency (for example, a EUR store and a customer in Rwanda paying in RWF). When no rates are cached, the plugin requests <code>https:\/\/open.er-api.com\/v6\/latest\/{store currency}<\/code>: at checkout, or in the background (WP-Cron) after a successful connection test, when the Fosia Pay dashboard is opened or when the checkout needs the rate to show the amount in the customer's currency. Only the currency code is sent: no personal, customer or order data. Rates are cached for 12 hours.<\/p>\n\n<p>ExchangeRate-API <a href=\"https:\/\/www.exchangerate-api.com\/terms\">Terms of Use and privacy<\/a>.<\/p>\n\n<h4>Fosia (pay.fosiarw.com) \u2014 only if you opt in<\/h4>\n\n<p>Off by default: nothing is sent to Fosia unless an administrator ticks the consent box and clicks \"Connect this site\" in FosiaPay &gt; Dashboard &gt; \"Connect this site to Fosia (optional)\".<\/p>\n\n<ul>\n<li><strong>When you connect<\/strong>, then <strong>at most once a day<\/strong>, the plugin sends <code>https:\/\/pay.fosiarw.com\/wp-json\/fosia\/v1\/heartbeat<\/code>: a random installation ID created on your site, the plugin name and version, your WordPress and PHP versions and your site language. Fosia uses it to count active installations and decide which WordPress and PHP versions to keep supporting.<\/li>\n<li><strong>When you click \"Disconnect\"<\/strong>, or delete the plugin while connected: the plugin sends the installation ID with a deletion request, Fosia's server deletes the record, and the ID is removed from your site.<\/li>\n<li>Your domain, e-mail address, customers, orders and PawaPay token are never sent (the request uses a neutral user agent, without your site address).<\/li>\n<\/ul>\n\n<p>Fosia <a href=\"https:\/\/pay.fosiarw.com\/terms-of-service\/\">Terms of Service<\/a> and <a href=\"https:\/\/pay.fosiarw.com\/privacy-policy\/\">Privacy Policy<\/a>.<\/p>\n\n<h4>Fosia (pay.fosiarw.com) \u2014 \"Quick feedback\" when you deactivate, only if you submit it<\/h4>\n\n<p>When you click \"Deactivate\" on Fosia Pay Lite in Plugins, a \"Quick feedback\" window asks why. It is optional: nothing is sent if you click \"Skip &amp; Deactivate\", the \u00d7 or Escape (closing it keeps the plugin active).<\/p>\n\n<ul>\n<li><strong>Only if you pick a reason and click \"Submit &amp; Deactivate\"<\/strong>, your site (not your browser) sends once to <code>https:\/\/pay.fosiarw.com\/wp-json\/fosia\/v1\/feedback<\/code>: the reason, the text you typed (optional, 500 characters at most), the product and edition (Fosia Pay Lite), the plugin, WordPress and PHP versions and the site language.<\/li>\n<li><strong>Your site address and your e-mail address are sent only if you tick \"You may email me about this\"<\/strong> (unticked by default), so that Fosia can answer you. No customer, order or payment data and no PawaPay token are ever sent; the request uses a neutral user agent, without your site address.<\/li>\n<li>Fosia keeps the answers 12 months, then deletes them. No IP address is stored.<\/li>\n<\/ul>\n\n<p>Fosia <a href=\"https:\/\/pay.fosiarw.com\/terms-of-service\/\">Terms of Service<\/a> and <a href=\"https:\/\/pay.fosiarw.com\/privacy-policy\/\">Privacy Policy<\/a>.<\/p>\n\n<h4>YouTube (setup video), only when you press play<\/h4>\n\n<p>The Welcome step of the guided setup shows a picture of the Fosia Pay video, stored in the plugin. Nothing is requested from YouTube until you click it; the video then plays from <code>https:\/\/www.youtube-nocookie.com<\/code> (Google), which receives your IP address and browser details like any embedded video. Without JavaScript the link opens the video on youtube.com.<\/p>\n\n<p>YouTube <a href=\"https:\/\/www.youtube.com\/t\/terms\">Terms of Service<\/a> and Google <a href=\"https:\/\/policies.google.com\/privacy\">Privacy Policy<\/a>.<\/p>\n\n<p>No other external request is made. The dashboard, its insights and the guided setup load nothing from outside your site (apart from the video above, on click); links to pay.fosiarw.com, PawaPay and WhatsApp only open when you click them.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Install Fosia Pay Lite from Plugins &gt; Add New, then activate it. The guided setup opens.<\/li>\n<li>Choose Sandbox (test) or Live, paste your PawaPay API token: it is tested with PawaPay before it is saved.<\/li>\n<li>Copy the callback URL into your PawaPay Dashboard under System Configuration &gt; Callback URLs (Deposits). Turning on \"signed callbacks\" there is optional: every callback is confirmed with PawaPay either way.<\/li>\n<li>In Sandbox, place a small order and pay with a PawaPay test number. Then switch to Live with your Live token.<\/li>\n<\/ol>\n\n<p>Everything can also be changed in WooCommerce &gt; Settings &gt; Payments &gt; Fosia Pay Lite.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20accept%20mtn%20momo%20payments%20on%20woocommerce%3F\"><h3>How do I accept MTN MoMo payments on WooCommerce?<\/h3><\/dt>\n<dd><p>Install and activate Fosia Pay Lite, then follow the guided setup: choose Sandbox or Live, paste your PawaPay API token and copy the callback URL into your PawaPay Dashboard. Place a test order in sandbox mode, then switch to Live. Customers choose MTN MoMo (MTN Mobile Money) on the payment page and approve the payment on their phone. MTN MoMo is available in Benin, Cameroon, Congo, C\u00f4te d'Ivoire, Ghana, Nigeria, Rwanda, Uganda and Zambia, if it is enabled on your PawaPay account.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20m-pesa%20%28mpesa%2C%20mpesa%29%3F\"><h3>Does it work with M-Pesa (MPesa, Mpesa)?<\/h3><\/dt>\n<dd><p>Yes. M-Pesa is supported in Kenya, Tanzania (Vodacom M-Pesa), DR Congo, Mozambique, Lesotho and Ethiopia, if it is enabled on your PawaPay account.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20airtel%20money%3F\"><h3>Does it work with Airtel Money?<\/h3><\/dt>\n<dd><p>Yes, in Rwanda, Uganda, Tanzania, Zambia, Malawi, DR Congo, Congo, Gabon and Nigeria, if it is enabled on your PawaPay account.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20orange%20money%3F\"><h3>Does it work with Orange Money?<\/h3><\/dt>\n<dd><p>Yes, in Cameroon, C\u00f4te d'Ivoire, Senegal, Burkina Faso, DR Congo and Sierra Leone, if it is enabled on your PawaPay account. Wave, Moov Money and Free Money are supported in West Africa too.<\/p><\/dd>\n<dt id=\"is%20fosia%20pay%20lite%20free%3F\"><h3>Is Fosia Pay Lite free?<\/h3><\/dt>\n<dd><p>Yes. It is free, with no limit on the number of payments, no licence key and no time limit. Fosia takes no commission on your sales.<\/p><\/dd>\n<dt id=\"does%20fosia%20pay%20lite%20take%20a%20commission%20on%20my%20sales%3F\"><h3>Does Fosia Pay Lite take a commission on my sales?<\/h3><\/dt>\n<dd><p>No, never. The only fees are PawaPay's own processing fees.<\/p><\/dd>\n<dt id=\"is%20there%20a%20limit%20on%20the%20number%20of%20payments%3F\"><h3>Is there a limit on the number of payments?<\/h3><\/dt>\n<dd><p>No. Fosia Pay Lite has no payment limit and no time limit.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20pawapay%20account%3F\"><h3>Do I need a PawaPay account?<\/h3><\/dt>\n<dd><p>Yes. Fosia Pay Lite connects to the PawaPay API to process payments, and the money goes to your own PawaPay merchant account, never through Fosia.<\/p>\n\n<ul>\n<li><strong>Sandbox (testing)<\/strong>: free, you open it yourself in a few minutes at <a href=\"https:\/\/dashboard.sandbox.pawapay.io\/#\/merchant-signup\">dashboard.sandbox.pawapay.io<\/a>, with no documents. Every country and operator is there.<\/li>\n<li><strong>Live (real payments)<\/strong>: PawaPay opens it after checking your business documents, from your Sandbox account (<a href=\"https:\/\/docs.pawapay.io\/v2\/docs\/how_to_start\">how to start<\/a>). You then ask PawaPay for the countries and operators you need. The time this takes depends on PawaPay, not on the plugin.<\/li>\n<\/ul><\/dd>\n<dt id=\"where%20do%20i%20find%20pawapay%20test%20phone%20numbers%3F\"><h3>Where do I find PawaPay test phone numbers?<\/h3><\/dt>\n<dd><p>In PawaPay's documentation: <a href=\"https:\/\/docs.pawapay.io\/v2\/docs\/test_numbers\">Sandbox test numbers<\/a>. Each operator has numbers that complete, fail or stay in progress, so you can test every case. The guided setup links to it too.<\/p><\/dd>\n<dt id=\"what%20does%20the%20customer%20see%20if%20the%20payment%20fails%20or%20they%20come%20back%20without%20paying%3F\"><h3>What does the customer see if the payment fails or they come back without paying?<\/h3><\/dt>\n<dd><p>Never \"Thank you, your order has been received\". The return page reads the payment status from PawaPay before it is shown: \"Payment not received yet\" with \"Pay now\" and \"Check again\", or \"Payment failed\" with the reason in plain words (for example \"The Mobile Money balance was not enough\") and \"Try again\". You see the same on the order, in an order note.<\/p><\/dd>\n<dt id=\"why%20is%20mobile%20money%20not%20shown%20at%20my%20checkout%3F\"><h3>Why is Mobile Money not shown at my checkout?<\/h3><\/dt>\n<dd><p>Fosia Pay Lite hides it when it cannot work, so customers never meet a payment error: no PawaPay token saved yet, a token PawaPay refused in the current mode (Sandbox or Live), or a billing country your PawaPay account does not cover. The Fosia Pay dashboard says which one, and \"Test now\" checks the token again.<\/p><\/dd>\n<dt id=\"woocommerce%20asks%20my%20rwandan%20customers%20for%20a%20postal%20code.\"><h3>WooCommerce asks my Rwandan customers for a postal code.<\/h3><\/dt>\n<dd><p>That is WooCommerce's address form, not Fosia Pay Lite. You can make the postcode field optional with a small snippet or an address-fields plugin; the payment works either way.<\/p><\/dd>\n<dt id=\"which%20countries%20and%20operators%20are%20supported%3F\"><h3>Which countries and operators are supported?<\/h3><\/dt>\n<dd><p>21 African countries: Benin, Burkina Faso, Cameroon, Congo, DR Congo, C\u00f4te d'Ivoire, Ethiopia, Gabon, Ghana, Kenya, Lesotho, Malawi, Mozambique, Nigeria, Rwanda, Senegal, Sierra Leone, Tanzania, Uganda, Zambia and Zimbabwe, with MTN MoMo, Airtel Money, Orange Money, M-Pesa, Moov Money, Wave, Telecel Cash, EcoCash and other operators depending on the country. See \"Supported countries and Mobile Money operators\" above. You can use those enabled on your PawaPay account.<\/p><\/dd>\n<dt id=\"can%20my%20store%20keep%20its%20prices%20in%20us%20dollars%20or%20euros%3F\"><h3>Can my store keep its prices in US dollars or euros?<\/h3><\/dt>\n<dd><p>Yes. The amount is converted to the customer's Mobile Money currency at checkout, at the current exchange rate. Fosia Pay Lite sits next to your other WooCommerce payment methods (cards, PayPal and so on).<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20woocommerce%20block%20checkout%3F\"><h3>Does it work with the WooCommerce block checkout?<\/h3><\/dt>\n<dd><p>Yes. It works with the classic checkout and the block-based Cart &amp; Checkout, and with High-Performance Order Storage (HPOS).<\/p><\/dd>\n<dt id=\"does%20the%20customer%20stay%20on%20my%20site%3F\"><h3>Does the customer stay on my site?<\/h3><\/dt>\n<dd><p>No: the customer is redirected to PawaPay's secure payment page, then back to your store. Fosia Pay Pro offers on-site checkout.<\/p><\/dd>\n<dt id=\"can%20i%20refund%20from%20woocommerce%3F\"><h3>Can I refund from WooCommerce?<\/h3><\/dt>\n<dd><p>Not with Fosia Pay Lite: it cannot send money back through PawaPay. Send the refund from your PawaPay Dashboard, then record it on the order with \"Refund\" and \"Refund manually\" so your stock and reports stay right. The order screen explains it. Fosia Pay Pro, a separate plugin, adds refunds from WooCommerce.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20turn%20on%20signed%20callbacks%3F\"><h3>Do I need to turn on signed callbacks?<\/h3><\/dt>\n<dd><p>No, it is optional. Every callback, signed or not, is confirmed with PawaPay before an order changes: the plugin reads the payment's real status, amount and currency from PawaPay with your own API token.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20data%20to%20fosia%3F\"><h3>Does the plugin send data to Fosia?<\/h3><\/dt>\n<dd><p>Not unless you choose to. The dashboard insights are computed on your site from your own orders and are never sent. The optional \"Connect this site to Fosia\" (off by default) sends a random installation ID, the plugin, WordPress and PHP versions and the site language once a day; you can disconnect at any time and the record is deleted. When you deactivate the plugin, the \"Quick feedback\" window sends your answer only if you click \"Submit &amp; Deactivate\" (your site address and e-mail only if you tick the box). See \"External services\".<\/p><\/dd>\n<dt id=\"can%20i%20hide%20the%20insights%20and%20hints%3F\"><h3>Can I hide the insights and hints?<\/h3><\/dt>\n<dd><p>Yes. The insights card on the Fosia Pay dashboard has a \"Hide\" link, the hint on order screens has \"Don't show again\", and the \"Mobile Money this month\" widget on the WordPress dashboard can be hidden from Screen Options. Hiding them changes nothing else: every Lite feature keeps working. The only mention of Fosia Pay Pro is one plain line at the bottom of the Fosia Pay dashboard.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens to my data when I delete the plugin?<\/h3><\/dt>\n<dd><p>Deleting the plugin removes its settings (including your API token) and cached data, and, if the site was connected to Fosia, asks Fosia's server to delete its record. Your orders and their notes are kept.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Security: the PawaPay API token is now stored encrypted in the database (AES-256-GCM, with a key made from the secret keys of your wp-config.php). A stolen database or backup alone no longer reveals it. Nothing to do: a token saved by an earlier version is encrypted on the next admin page load. If the secret keys of wp-config.php are changed, paste the token again (a notice says so).<\/li>\n<li>Security: a PawaPay callback is never applied on its signature alone. Every callback, signed or not, is now confirmed by reading the payment from PawaPay with your own API token, and only PawaPay's answer (payment id, amount, currency, status) is applied to the order. A genuinely signed callback for a payment your PawaPay account does not have changes nothing. If PawaPay cannot be reached, the order is left as it is, PawaPay is asked to send the callback again, and the background checks continue (security audit 2026-10-31, H1).<\/li>\n<li>Security: the saved PawaPay API token is no longer written into the settings page (WooCommerce &gt; Settings &gt; Payments &gt; Fosia Pay Lite). The field stays empty with \"Saved: leave empty to keep it\"; saving with the field empty keeps the token, pasting a new one replaces it, and \"Test Connection\" with the field empty tests the saved token.<\/li>\n<li>Guided setup (shared design kit): the last screen's list keeps each line next to its mark on phones. No change to the steps.<\/li>\n<li>Fixed: a customer back from PawaPay after a failed or abandoned payment saw \"Order received \u2013 Thank you\". The payment status is now read before the page is shown: \"Payment not received yet\" (with \"Pay now\" and \"Check again\"), \"Payment failed\" with the reason in plain words and \"Try again\", or \"Confirming your payment\u2026\" (the page checks again by itself). \"Thank you\" only for a paid order.<\/li>\n<li>Fixed: Mobile Money was offered at checkout when it could not work. It is now hidden without a PawaPay token, with a token PawaPay refused in the current mode, or for a billing country your PawaPay account does not cover (from the last connection test: the checkout never waits for PawaPay). Classic and block checkout.<\/li>\n<li>Fixed: pressing Enter in the guided setup's token field left the setup without testing the token. Enter now tests it.<\/li>\n<li>Fixed: a token PawaPay refused replaced the token that worked. Tokens are now tested before they are saved.<\/li>\n<li>Fixed: the setup's last screen said \"is set up\" while steps were left; it now says \"Almost ready: N steps left\", and a skipped step is not ticked.<\/li>\n<li>Fixed: a failed payment was counted both as an unfinished checkout and as a failed payment.<\/li>\n<li>Fixed: the dashboard could show \"Connection OK\" or \"last test failed\" for a token that had changed since; the test result now belongs to the token it tested.<\/li>\n<li>Added: the amount in the customer's Mobile Money currency at checkout (for example \"about 26,605 RWF\" for a $18 order), with the operators of their country and what happens next.<\/li>\n<li>Added: payments are re-checked with PawaPay in the background for a few hours, so a customer who paid and closed the page is confirmed even when no callback arrives.<\/li>\n<li>Added: \"No PawaPay account yet?\" in the guided setup and on the dashboard, with the Sandbox sign-up, the Live onboarding and the Sandbox test numbers pages.<\/li>\n<li>Added: \"Test now\" on the dashboard, and a line saying whether customers see Mobile Money at checkout and why not.<\/li>\n<li>Added: the token is tested as soon as you save the settings (unless you just tested it), and the result is shown on the same page: a wrong token is hidden from customers at once.<\/li>\n<li>Added: French shipped with the plugin (used until a translate.wordpress.org language pack exists for your site). The checkout title and description saved in English by earlier versions follow the site language.<\/li>\n<li>Changed: the countries and operators match PawaPay's own list (21 countries, 43 Mobile Money networks, checked on 30 October): Zimbabwe (EcoCash) and Wave added; Liberia, Mali and Moov Money in C\u00f4te d'Ivoire, which PawaPay does not serve, removed.<\/li>\n<li>Changed: clearer messages (no \"401\"), a warning when the callback address is local or http:\/\/, readable operator names (\"MTN MoMo (Rwanda)\") and why an order is unpaid in \"Recent activity\", order notes when the customer comes back without paying, a factual refund explanation, better contrast and phone layout, the new Fosia Pay film in the guided setup. The deactivation window no longer offers \"too expensive\" for this free plugin.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Security: a payment result sent to your callback URL is never applied on its own, even when PawaPay's signature is valid. The plugin always asks PawaPay for the payment's status with your own API token, so a payment made on another PawaPay account can never mark one of your orders paid.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added: a guided setup that opens once, right after you activate the plugin (never on bulk activation): Welcome (what Fosia Pay Lite does, the video, which loads from YouTube only when you press play), Mode (Sandbox or Live), PawaPay token (saved and tested), Confirmations (the callback URL with a Copy button), Done (what is set up, next step, help links). \"Exit guided setup\" on every step saves what you entered; \"Resume setup\" stays on the FosiaPay dashboard until it is finished. Phone-friendly and keyboard-friendly.<\/li>\n<li>Added: a short \"Quick feedback\" window when you deactivate the plugin, with a link to support. Optional: nothing is sent on \"Skip &amp; Deactivate\"; see \"External services\" for what \"Submit &amp; Deactivate\" sends.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fixed: the \"Test Connection\" button in the gateway settings always answered \"Request failed (400)\", because WooCommerce does not load payment gateways during AJAX requests. The check is now registered when the plugin loads. The \"Don't show again\" link on the refund notice had the same problem and is fixed too.<\/li>\n<li>Added: \"Insights\" on the FosiaPay dashboard, computed on your site from your own orders (nothing is sent): this month's unfinished checkouts at the PawaPay page, failed payments by reason and refunds done by hand, each with a daily trend. Can be hidden.<\/li>\n<li>Added: failed payments now keep PawaPay's failure code on the order, so the dashboard can group them by reason.<\/li>\n<li>Added: on a Mobile Money order that failed or was refunded by hand, a one-line hint in the order details, with \"Don't show again\".<\/li>\n<li>Added: a \"Mobile Money this month\" widget on the WordPress dashboard (paid orders, unfinished checkouts, failed payments). Hide it from Screen Options.<\/li>\n<li>Added: optional \"Connect this site to Fosia\", off by default. Once you agree, a random installation ID, the plugin, WordPress and PHP versions and the site language are sent once a day; \"Disconnect\" (or deleting the plugin) deletes the record. See \"External services\".<\/li>\n<li>Changed: the refund notice on the order screen is no longer shown once the order has a refund.<\/li>\n<li>Added: a setup checklist at the top of the FosiaPay dashboard (turn on the gateway, add the PawaPay token, test the connection, paste the callback URL with a Copy button, first payment), with Sandbox\/Live shown. Once everything is done it shrinks to a one-line status (connection tested, last callback received).<\/li>\n<li>Changed: no \"Upgrade to Pro\" page or menu item any more, and no Pro mention in notices or order hints; one plain line at the bottom of the FosiaPay dashboard says what the separate Pro plugin adds.<\/li>\n<li>Changed: the dashboard shows \"\u2014\" instead of \"0%\" success rate when there is no transaction yet, splits transactions into paid \/ pending \/ failed, and the empty activity card links to \"All time\".<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Changed: no more monthly payment limit. Fosia Pay Lite is free with unlimited payments.<\/li>\n<li>Fixed: payments were never confirmed when PawaPay's \"signed callbacks\" option was off. Unsigned callbacks are now checked with PawaPay (deposit status) before an order is marked paid, with abuse limits. The \"Webhook Secret\" setting was removed (PawaPay has no such secret).<\/li>\n<li>Fixed: signed callbacks could never be verified because WordPress adds slashes to request headers.<\/li>\n<li>Fixed: a payment page rejected by PawaPay (HTTP 200, status REJECTED) showed \"Payment Error: Unknown\"; the customer now gets a clear message and the reason is added to the order notes. A timeout or PawaPay server error is checked instead of being treated as a failure.<\/li>\n<li>Fixed: amounts now follow the decimals and limits of your PawaPay account (amounts like \"1500.00\" were refused), and the order text sent to PawaPay respects its format.<\/li>\n<li>Changed: the customer types their Mobile Money number on PawaPay's page and may pay from any number. Optional setting to pre-fill and lock it to the billing phone (validated by PawaPay).<\/li>\n<li>Changed: the confirmation page checks the payment status when the customer comes back from PawaPay.<\/li>\n<li>Changed: PawaPay v2 public key endpoint; operator read from the v2 callback.<\/li>\n<li>Changed: logs go to WooCommerce &gt; Status &gt; Logs, without phone numbers or request bodies; new \"Debug log\" setting.<\/li>\n<li>Changed: the \"Upgrade to Pro\" page no longer downloads prices from pay.fosiarw.com; admin notices are limited to the relevant screens and can be dismissed.<\/li>\n<li>Changed: all texts are translatable; deleting the plugin removes its settings.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed: orders stay \"Pending payment\" until PawaPay confirms payment.<\/li>\n<li>Fixed: a late \"failed\" callback could mark an already-paid order as failed.<\/li>\n<li>Fixed: a completed payment with a different amount or currency now puts the order on hold.<\/li>\n<li>Security: stricter callback signature checks.<\/li>\n<li>Fixed: currency conversion rounding, dashboard totals per currency.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Added: refunds notice on order screens. Fixed: checkout is blocked instead of under-charging when exchange rates are unavailable.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Free Mobile Money gateway for WooCommerce with PawaPay: MTN MoMo, Airtel Money, Orange Money, M-Pesa and more. No commission, unlimited payments.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/391874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=391874"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/fosialtd"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=391874"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=391874"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=391874"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=391874"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=391874"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=391874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}