Title: Fosia Collect – Mobile Money Payments &amp; Donations
Author: FOSIA Ltd
Published: <strong>November 6, 2026</strong>
Last modified: November 6, 2026

---

Search plugins

![](https://ps.w.org/fosia-collect/assets/banner-772x250.png?rev=3787437)

![](https://ps.w.org/fosia-collect/assets/icon.svg?rev=3787437)

# Fosia Collect – Mobile Money Payments & Donations

 By [FOSIA Ltd](https://profiles.wordpress.org/fosialtd/)

[Download](https://downloads.wordpress.org/plugin/fosia-collect.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/fosia-collect/#description)
 * [Reviews](https://wordpress.org/plugins/fosia-collect/#reviews)
 *  [Installation](https://wordpress.org/plugins/fosia-collect/#installation)
 * [Development](https://wordpress.org/plugins/fosia-collect/#developers)

 [Support](https://wordpress.org/support/plugin/fosia-collect/)

## Description

Fosia Collect adds a **“Pay” or “Donate” form** to any page of your WordPress site.
People pay with **Mobile Money** (MTN MoMo, Airtel Money, Orange Money, M-Pesa, 
Moov Money and the other operators of your PawaPay account), and the money goes **
straight to your own PawaPay account**. Fosia never holds it.

It is made for organisations that do not sell products: **NGOs and charities, churches,
schools, associations, events**. You do not need WooCommerce, a shop or a cart.

**You need your own PawaPay merchant account.** A Sandbox account to test is free
and opens in minutes; PawaPay opens the Live account after checking your organisation(
see the FAQ).

#### How it works

 1. You add the **Fosia Collect form** block to a page (or the `[fosia_collect]` shortcode)
    and choose the amounts.
 2. The visitor picks an amount, types their Mobile Money number and presses “Donate”(
    or “Pay”).
 3. They are sent to **PawaPay’s secure payment page** and approve the payment on their
    phone with their PIN.
 4. They come back to your page and see the **real status**, read from PawaPay: “Thank
    you, your donation was received”, “Payment not received yet” (with “Pay again” 
    and “Check again”), or “Payment failed” with the reason in plain words and “Try
    again”. Never “thank you” for a payment that did not arrive.

#### Features

 * A **Gutenberg block** with its settings in the sidebar, and a **shortcode** for
   other page builders.
 * **Donation or payment** (only the words change: “Donate” or “Pay”).
 * **One fixed amount**, or up to **6 quick amounts** with an optional **“Other 
   amount”** (with a minimum and a maximum).
 * **Currency**: any Mobile Money currency (RWF, KES, UGX, TZS, XOF, XAF, GHS, NGN,
   CDF, ZMW…), or **USD / EUR** converted at the day’s rate into the payer’s Mobile
   Money currency, with the estimate shown before paying.
 * Your **title and text**; optional fields: **name, e-mail, message**, and **“Give
   anonymously”** (the name is then not recorded).
 * An **extra field with your own label**, required or optional: “Student name”,“
   Invoice number”, “Member ID”… It shows in Transactions, in the CSV export and
   on the receipt.
 * After payment: your **thank-you message**, or a **thank-you page** of your site.
 * **E-mail receipt** to payers who give their e-mail address, sent once PawaPay
   confirmed the payment (can be turned off).
 * An **e-mail to your organisation** for each payment PawaPay confirms (can be 
   turned off, or sent to another address).
 * **Refunds**, full or partial, through PawaPay (or recorded when made elsewhere),
   never more than what was paid, with the status followed until final and a note
   of who refunded.
 * **Transactions** screen: status, amount, amount received in Mobile Money, operator,
   payer, form, PawaPay reference; filters by status, form, date and mode; **CSV
   export**.
 * **Dashboard**: amounts received this month and since the start, **totals per 
   form**, latest payments, a setup checklist.
 * **Settings**: Sandbox or Live, PawaPay API token (tested before it is saved, 
   stored encrypted, never shown again), callback address with a Copy button, connection
   test.
 * A **guided setup** opens after activation (it can be skipped at any time).
 * In English. The French translation is on translate.wordpress.org and reaches 
   French sites once it is approved.

#### Payments you can trust

 * The amount never comes from the visitor’s browser: the form’s settings are signed
   by your site, and the visitor only picks one of your amounts (or an “other” amount
   within your limits).
 * A payment is shown as paid only after the plugin **asked PawaPay** with your 
   own token, and only if the amount and currency PawaPay confirms are exactly those
   asked. A different amount is put aside as “To check”, never counted as paid.
 * PawaPay’s callbacks are never trusted as they are: they only tell the plugin 
   which payment to check with PawaPay. Signed callbacks are verified too.
 * A payer who paid and closed the page is still confirmed: the plugin checks with
   PawaPay in the background (2 minutes after, then at growing intervals for about
   9 hours).
 * Abuse limits made for shared Wi-Fi (churches, schools, mobile operators): only
   payments that really start are counted, per phone number, per browser and per
   connection (60 per 10 minutes by default, adjustable); wrong numbers and “Try
   again” are never counted. A hidden anti-robot field, nonces and capability checks
   on every admin action.

#### Privacy

 * Payments are stored in the plugin’s own table on your site, never in public pages.
 * Payers’ details (name, e-mail, phone number, message) are **erased automatically**
   after the period you choose (6 to 60 months, 24 by default); the amount and the
   PawaPay reference stay for your accounts. Payments that were never paid are deleted
   after 90 days.
 * WordPress’s **personal data export and erasure** tools (Tools > Export / Erase
   Personal Data) include these payments.
 * A suggested text for your privacy policy is added to Settings > Privacy.
 * No tracking, no advertising, no analytics. One functional cookie (`fcol_session`,
   random, one day) is set only when a form is sent, to protect it against abuse.

#### Countries

The plugin knows the Mobile Money countries of PawaPay’s API: Benin, Burkina Faso,
Cameroon, Congo, DR Congo, Côte d’Ivoire, Ethiopia, Gabon, Ghana, Kenya, Lesotho,
Liberia, Malawi, Mali, Mozambique, Nigeria, Rwanda, Senegal, Sierra Leone, Tanzania,
Uganda, Zambia and Zimbabwe. You can take payments in the countries and with the
operators enabled on your PawaPay account.

### External services

#### PawaPay (payment processor)

The plugin cannot take payments without PawaPay. Requests go to `api.pawapay.io`(
Live) or `api.sandbox.pawapay.io` (Sandbox), with your PawaPay API token.

 * **When a visitor sends a form**: the plugin checks the Mobile Money number with
   PawaPay (phone number validation), reads your account’s amount rules (decimals,
   minimum and maximum, cached for 1 hour), then creates a PawaPay payment page 
   with the amount and currency, the country, the payer’s phone number, a short 
   text (letters and digits of your organisation’s name), a payment id, the address
   of your page to come back to, and the language. The payer’s name, e-mail address
   and message are **not** sent to PawaPay.
 * **When the payer comes back, when PawaPay sends a result to your callback address,
   and in the background** after a payment was started: the plugin asks PawaPay 
   for the payment’s status, and downloads PawaPay’s public signing keys (cached
   for 12 hours) to verify signed callbacks.
 * **When you refund a payment** (Transactions > Details and refund): the plugin
   sends PawaPay a refund (`POST /v2/refunds`) with a refund id, the original payment’s
   id, the amount and the currency, then reads its status (`GET /v2/refunds/{id}`)
   until it is final, also in the background (WP-Cron) and when PawaPay sends the
   refund’s result to your callback address. Nothing about the payer is sent: PawaPay
   refunds the number that paid.
 * **When you test the connection** (guided setup or settings): the plugin reads
   your PawaPay account configuration.

PawaPay [Merchant Terms of Service](https://www.pawapay.io/merchant-terms-of-service)
and [Privacy Policy](https://www.pawapay.io/privacy-policy).

#### ExchangeRate-API (open.er-api.com)

Used only for a form whose currency differs from the payer’s Mobile Money currency(
for example a form in USD paid from Rwanda in RWF). When no rates are cached, the
plugin requests `https://open.er-api.com/v6/latest/{form currency}`, when such a
form is shown (in the background, with WP-Cron) or sent. Only the currency code 
is sent: no personal or payment data. Rates are cached for 12 hours.

ExchangeRate-API [Terms of Use and privacy](https://www.exchangerate-api.com/terms).

#### Fosia (pay.fosiarw.com) — “Quick feedback” when you deactivate, only if you submit it

When you click “Deactivate” on Fosia Collect in Plugins, a “Quick feedback” window
asks why. It is optional: nothing is sent if you click “Skip & Deactivate”, the 
× or Escape (closing it keeps the plugin active).

 * **Only if you pick a reason and click “Submit & Deactivate”**, your site (not
   your browser) sends once to `https://pay.fosiarw.com/wp-json/fosia/v1/feedback`:
   the reason, the text you typed (optional, 500 characters at most), the product(
   Fosia Collect), the plugin, WordPress and PHP versions and the site language.
 * **Your site address and your e-mail address are sent only if you tick “You may
   email me about this”** (unticked by default). No payment or payer data and no
   PawaPay token are ever sent.
 * Fosia keeps the answers 12 months, then deletes them.

Fosia [Terms of Service](https://pay.fosiarw.com/terms-of-service/) and [Privacy Policy](https://pay.fosiarw.com/privacy-policy/).

No other external request is made. Links to PawaPay, pay.fosiarw.com and WhatsApp
in the admin screens only open when you click them.

## Screenshots

[⌊The Donate form on a phone: quick amounts, "Other", Mobile Money number.⌉⌊The 
Donate form on a phone: quick amounts, "Other", Mobile Money number.⌉[

The Donate form on a phone: quick amounts, “Other”, Mobile Money number.

[⌊Back from PawaPay: the payment status, read from PawaPay.⌉⌊Back from PawaPay: 
the payment status, read from PawaPay.⌉[

Back from PawaPay: the payment status, read from PawaPay.

[⌊"Payment failed" with the reason and "Try again".⌉⌊"Payment failed" with the reason
and "Try again".⌉[

“Payment failed” with the reason and “Try again”.

[⌊The block settings in the editor.⌉⌊The block settings in the editor.⌉[

The block settings in the editor.

[⌊Fosia Collect > Transactions, with filters and the CSV export.⌉⌊Fosia Collect 
> Transactions, with filters and the CSV export.⌉[

Fosia Collect > Transactions, with filters and the CSV export.

[⌊Fosia Collect > Dashboard: received, totals per form, latest payments.⌉⌊Fosia 
Collect > Dashboard: received, totals per form, latest payments.⌉[

Fosia Collect > Dashboard: received, totals per form, latest payments.

[⌊The guided setup.⌉⌊The guided setup.⌉[

The guided setup.

## Blocks

This plugin provides 1 block.

 *   Fosia Collect form A Pay or Donate form: visitors pay with Mobile Money (MTN
   MoMo, Airtel Money, Orange Money, M-Pesa and more) through your PawaPay account.

## Installation

 1. Install Fosia Collect from Plugins > Add New, then activate it. The guided setup
    opens.
 2. Choose Sandbox (test) or Live and paste your PawaPay API token: it is tested with
    PawaPay before it is saved.
 3. Type your organisation’s name and country.
 4. Copy the callback address into your PawaPay Dashboard under System Configuration
    > Callback URLs (Deposits, and Refunds if you will refund from WordPress). This
    is recommended, not required.
 5. Click “Create a donation page”: a draft page with the form opens in the editor.
    Set the amounts in the block settings, publish, and try it with a PawaPay Sandbox
    test number.

Everything can be changed later in Fosia Collect > Settings.

## FAQ

### Do I need WooCommerce?

No. Fosia Collect works on its own, without a shop or a cart.

### Does it work on a site that also runs WooCommerce?

Yes. Fosia Collect does not use WooCommerce and does not change your shop or its
checkout: its payments are kept in its own table, with their own callback address
and screens. It was tested on a site running WooCommerce and a WooCommerce Mobile
Money gateway for the same PawaPay account.

### Do I need a PawaPay account?

Yes. The money goes to your own PawaPay merchant account, never through Fosia.

 * **Sandbox (testing)**: free, you open it yourself in a few minutes at [dashboard.sandbox.pawapay.io](https://dashboard.sandbox.pawapay.io/#/merchant-signup),
   with no documents.
 * **Live (real payments)**: PawaPay opens it after checking your organisation’s
   documents, from your Sandbox account ([how to start](https://docs.pawapay.io/v2/docs/how_to_start)).
   The time this takes depends on PawaPay, not on the plugin.

### Is it free? Does Fosia take a commission?

The plugin is free, with no limit on the number of forms or payments. Fosia takes
no commission. The only fees are PawaPay’s own processing fees, agreed between you
and PawaPay.

### How do I add a form?

Edit a page, add the “Fosia Collect form” block and set the amounts, the currency
and the fields in the block settings. With another page builder, use the shortcode,
for example:

    ```
    [fosia_collect title="Support our school" amounts="1000, 5000, 10000" other="yes"]
    ```

Shortcode options: `type` (donation or payment), `title`, `text`, `amount` (one 
fixed amount) or `amounts` (separated by `;` or `|`, for example `amounts="1,000;
5,000; 10,000"`), `other` (yes/no), `min`, `max`, `currency`, `country`, `name`,`
email` (off, optional or required), `message` (yes/no), `anonymous` (yes/no), `field`(
label of an extra field) and `field_required` (yes/no), `button`, `thanks`, `thanks_url`,
and `id` (keeps a form’s totals together when you change its title).

### Where do I find PawaPay test phone numbers?

In PawaPay’s documentation: [Sandbox test numbers](https://docs.pawapay.io/v2/docs/test_numbers).
Forms show “Test mode: no real money” while the plugin is in Sandbox mode.

### What if the callback address is already used by another plugin?

PawaPay keeps one “Deposits” callback address per account. If a shop plugin already
uses it, leave it: Fosia Collect still confirms each payment by asking PawaPay when
the payer comes back and in the background. The callback only makes the confirmation
faster.

### What does the payer see if the payment fails?

“Payment failed”, the reason in plain words (for example “The Mobile Money balance
was not enough for this payment”), “No money was taken”, and a “Try again” button.
If they come back without paying: “Payment not received yet” with “Pay again” and“
Check again”.

### Can people give anonymously?

Yes, if you keep “Offer to give anonymously” on in the block. The payer’s name is
then not recorded; the payment shows “Anonymous” in your list.

### Where are the payments? Can I export them?

In Fosia Collect > Transactions, with filters and an “Export CSV” button (the export
protects your spreadsheet against formula injection). Fosia Collect > Dashboard 
shows the totals of each form.

### Can I refund a payment?

Yes, fully or partly, from Fosia Collect > Transactions > Details and refund, through
PawaPay with your own token: the money goes back to the Mobile Money number that
paid. You can never refund more than what was paid minus the refunds already made,
including those you made elsewhere (cash, PawaPay Dashboard) and record on the same
screen. Each refund is confirmed before it is sent, its status is checked with PawaPay
until it is final, and your notes keep who refunded, when and how much. A payer 
who received a receipt by e-mail gets an updated one.

### Not on WordPress?

Use Fosia Connect (https://connect.fosiarw.com) for payment links, QR codes and 
a payment page.

### Is recurring giving possible?

No. Each payment is approved by the payer on their phone; Mobile Money does not 
allow automatic debits.

### Does it work with a page cache (LiteSpeed Cache, WP Rocket, Hostinger cache…)?

Yes. The form’s page can be cached: just before the form is sent, the page asks 
your site for a fresh security code (through `admin-ajax.php`, which caches never
keep), and if a very old page still gets through, it is sent again once, silently.
Answers to the form and payment status pages (addresses with `fcol_payment`) are
marked “do not cache”, and LiteSpeed Cache is told directly. If your cache plugin
caches query strings anyway, exclude `fcol_payment` from the cache.

### Many people pay from the same Wi-Fi (a church, a school). Will they be blocked?

No. Only payments that really start at PawaPay are counted: each phone number may
start 5 payments and each browser 10 payments per 10 minutes, and one connection
60 (you can raise it in Settings > Protection against abuse, or with the `fcol_rate_limits`
filter). Mistyped numbers, missing fields and “Pay again” / “Try again” are never
counted.

### How do I know which pupil (or invoice, or member) a payment is for?

Give the form an **extra field**: in the block’s Fields panel, type its label (for
example “Student name and class”) and choose Required. With the shortcode: `[fosia_collect
type="payment" title="Term 1 fees" amount="25000" field="Student name" field_required
="yes"]`. The answer shows in Transactions, in the CSV export, in your e-mail and
on the payer’s receipt.

### A payer without an e-mail address asks for their data or its deletion.

WordPress’s export and erasure tools search by e-mail address. For a payer who gave
no e-mail, search Fosia Collect > Transactions by their Mobile Money number (or 
name or reference), then answer from there.

### What happens to my data if I delete the plugin?

The settings (including the encrypted token) are deleted. Your payment records are
kept, unless you tick “Delete the payments table too when the plugin is deleted”
in the settings first.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Fosia Collect – Mobile Money Payments & Donations” is open source software. The
following people have contributed to this plugin.

Contributors

 *   [ FOSIA Ltd ](https://profiles.wordpress.org/fosialtd/)

[Translate “Fosia Collect – Mobile Money Payments & Donations” into your language.](https://translate.wordpress.org/projects/wp-plugins/fosia-collect)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/fosia-collect/), check
out the [SVN repository](https://plugins.svn.wordpress.org/fosia-collect/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/fosia-collect/) 
by [RSS](https://plugins.trac.wordpress.org/log/fosia-collect/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * First version: Pay / Donate block and shortcode, PawaPay payment page, status
   read from PawaPay, Payments list with CSV export, dashboard with totals per form,
   settings and guided setup, privacy export and erasure, automatic erasure of payers’
   details, in English (French translation submitted to translate.wordpress.org).

## Meta

 *  Version **1.0.0**
 *  Last updated **5 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.3 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [donate](https://wordpress.org/plugins/tags/donate/)[donation](https://wordpress.org/plugins/tags/donation/)
   [mobile money](https://wordpress.org/plugins/tags/mobile-money/)[pawapay](https://wordpress.org/plugins/tags/pawapay/)
   [payment form](https://wordpress.org/plugins/tags/payment-form/)
 *  [Advanced View](https://wordpress.org/plugins/fosia-collect/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/fosia-collect/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/fosia-collect/reviews/)

## Contributors

 *   [ FOSIA Ltd ](https://profiles.wordpress.org/fosialtd/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/fosia-collect/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://pay.fosiarw.com/support-fosia-pay/)