Title: Donor Merchant &#8211; Donation Form with Recurring Donations, Stripe and PayPal
Author: Matt McWilliam
Published: <strong>7. awgusta 2026</strong>
Last modified: 14. oktobra 2026

---

Tykače pytać

![](https://ps.w.org/donor-merchant/assets/banner-772x250.png?rev=3687782)

![](https://ps.w.org/donor-merchant/assets/icon-256x256.png?rev=3713289)

# Donor Merchant – Donation Form with Recurring Donations, Stripe and PayPal

 Wot [Matt McWilliam](https://profiles.wordpress.org/mattmcwilliam/)

[Sćahnyć](https://downloads.wordpress.org/plugin/donor-merchant.2.9.1.zip)

 * [Podrobnosće](https://hsb.wordpress.org/plugins/donor-merchant/#description)
 * [Pohódnoćenja](https://hsb.wordpress.org/plugins/donor-merchant/#reviews)
 * [Wuwiće](https://hsb.wordpress.org/plugins/donor-merchant/#developers)

 [Podpěra](https://wordpress.org/support/plugin/donor-merchant/)

## Wopisanje

**Donor Merchant is a free donation plugin for WordPress.** It gives a nonprofit,
church, charity, school, or community group a donation form that takes one-time 
and recurring donations through Stripe and PayPal, keeps a record of every donor
and gift in your own database, and sends receipts.

**[Try the live demo](https://www.donormerchant.com/demo/)**: pick an amount, choose
monthly, cover the fees, and see the receipt. Nothing is charged.

Every feature is in the free plugin. There are no paid add-ons, no locked settings,
and no fee added on top of what Stripe or PayPal charge. Optional paid support plans
are available: priority email help for a single organization, or faster help for
agencies looking after several client sites. Details are at [donormerchant.com/pricing](https://www.donormerchant.com/pricing/).

#### Who it is for

 * **Small nonprofits and charities** that need a dependable donation page without
   a monthly platform bill.
 * **Churches** taking online tithes and offerings, with funds such as General, 
   Building, or Missions, and year-end giving statements donors can download themselves.
 * **Schools, PTAs, booster clubs, animal rescues, and community groups** running
   a goal-based campaign.
 * **Freelancers and agencies** who build sites for nonprofit clients and want one
   donation setup they can repeat on every site, with no license keys.

#### Donations

 * **One-time and recurring donations.** Donors choose one-time, weekly, every 2
   weeks, monthly, quarterly, or yearly, and you pick which of those your form offers.
   Recurring giving works on both gateways: Stripe subscriptions and PayPal subscriptions.
 * **Stripe** through Stripe’s Payment Element: cards, plus Apple Pay and Google
   Pay where you have them turned on in your Stripe account.
 * **Bank debit (ACH)** from US bank accounts through Stripe, as a setting you switch
   on.
 * **PayPal** Smart Buttons for one-time gifts.
 * **20 currencies**, with WooCommerce-style number formatting: currency position,
   thousand and decimal separators, and number of decimals, used on the form, receipts,
   statements, and reports.
 * **Suggested amounts and a minimum.** Your own suggested amounts, a custom amount
   field, and a minimum donation the server enforces.
 * **Fee recovery.** Donors can choose to add the processing fee to their gift, 
   worked out from the percentage and fixed fee you enter so that the full gift 
   is left after the processor’s cut. A donor who pays a one-time gift by bank account
   is asked for the lower bank fee instead.
 * **Designations.** Donors pick the fund their gift supports.
 * **Tributes.** A gift can be made in honor of or in memory of someone, with an
   optional message.
 * **Employer matching.** An optional question asks whether the donor’s employer
   matches gifts. The employer shows on the donation, your new-donation email and
   the donor’s receipt.
 * **Custom fields.** Add your own questions as text, paragraph, dropdown, or checkbox
   fields, each required or optional.
 * **Test mode.** Test end to end with Stripe test keys and the PayPal sandbox before
   going live.

#### Gift Aid for UK charities

Offer Gift Aid on the form when your currency is pounds sterling. Donors tick HMRC’s
model declaration (unticked by default) and give a house name or number and postcode,
or a full address if they live outside the UK. One declaration covers future gifts
and gifts in the past 4 years, so monthly donors are covered. The declaration is
stored exactly as the donor saw it.

Donor Merchant > Gift Aid lists the gifts ready to claim and downloads them in HMRC’s
schedule format, ready to paste into HMRC’s spreadsheet for Charities Online. Mark
gifts as claimed so they are never claimed twice, see refunds that need reporting
back, and cancel a declaration when a donor asks. Donors can also cancel from the
donor portal.

#### Campaigns and goal thermometers

Create as many campaigns as you need, each with its own goal, description, suggested
amounts, and an optional end date after which its form stops taking gifts. A campaign’s
form shows progress toward the goal, and the `[donor_merchant_progress campaign="
N"]` shortcode places the same thermometer anywhere else on your site.

#### Donor records and reports

 * Every donor and gift is saved in your WordPress database, with each donor’s lifetime
   total and last donation date.
 * A dashboard shows total raised, this month’s total, number of donations and donors,
   recurring gifts, and the average gift.
 * Search and filter the donations list by status, and export donations or donors
   to CSV.
 * Record offline gifts (check, cash, bank transfer, or other) so your totals stay
   complete, or let donors choose „check or bank transfer“ on the form: they get
   your instructions, and you mark the gift received when it arrives.
 * Add a donor by hand, and correct a gift’s status to completed, refunded, or failed
   without deleting it. Corrections never email the donor.
 * An optional monthly fundraising summary is emailed to you on the first of each
   month.

#### Receipts, statements, and the donor portal

 * Email customization like WooCommerce’s: every email the plugin sends (donation
   receipt, recurring gift receipt, offline gift instructions, failed recurring 
   payment, new-donation alert, donor portal link and monthly summary) can be switched
   on or off, given its own subject, heading and message with placeholders such 
   as `{first_name}`, `{amount}` and `{designation}`, and sent as HTML or plain 
   text. Add your logo, colors, font and footer, set the From name and address, 
   preview each email live on desktop or mobile, and send yourself a test.
 * A printable receipt for every gift, showing your organization’s address, tax 
   ID, and your own receipt wording. Donors save it as a PDF from their browser,
   so no PDF library is bundled.
 * Annual giving statements for the current and previous year.
 * A donor portal with passwordless sign-in by one-time email link, where donors
   see their giving history, open receipts and statements, update the card on or
   cancel a Stripe recurring gift through Stripe’s hosted billing portal, and cancel
   a PayPal recurring gift.

#### Donation importer

The built-in donation importer reads a CSV export and recognizes the exports from
GiveWP, Charitable, Donorbox, PayPal, Stripe, WooCommerce, Gravity Forms, and WPForms.
Any other spreadsheet works too.

You confirm which column is which before anything is written, and a preview shows
the result first. Re-running is safe: gifts already on file are matched by transaction
ID, or by donor, amount, and date. Imported gifts never send receipts or fire integrations,
and rows marked as test mode can be skipped. Each file can hold up to 10,000 rows.

#### Integrations

 * **Mailchimp.** Add donors to an audience, with a „keep me updated“ checkbox on
   the form and optional double opt-in.
 * **Outgoing webhooks.** Send completed donations to Zapier, Make, a CRM, or your
   own code. Each request is signed with HMAC-SHA256 so the receiver can confirm
   it came from your site.

#### Design and placement

 * A Donation Form block, plus the shortcodes `[donor_merchant]`, `[donor_merchant
   campaign="N"]`, `[donor_merchant_progress campaign="N"]`, and `[donor_merchant_portal]`.
   A Shortcodes tab in Settings lists each one with your campaign IDs filled in,
   ready to copy.
 * Six accent colors or a custom color, and three button shapes (pill, rounded, 
   sharp), with a live preview in Settings.
 * Your own wording: switch „donation“ and „donate“ to „gift“ and „give“, or to 
   your own words, everywhere donors see them, and reword any other text with a 
   simple replacement table.

#### Records that match your processor

Renewals, refunds, and bank payments that settle days later are recorded from Stripe’s
and PayPal’s signed webhooks, so the donations list lines up with your gateway account.
A partial refund leaves the gift in your totals, and only a full refund marks it
refunded.

#### How it stays secure

Payment details are collected by Stripe and PayPal directly in the donor’s browser.
No card number, expiration date, or CVC is ever transmitted to or stored on your
server. Donation totals are recomputed on the server, payment status is confirmed
server-to-gateway, and webhook signatures are verified.

Card testing and spam are handled without a CAPTCHA by default: a hidden honeypot
field, a signed check that rejects forms submitted impossibly fast, per-IP rate 
limiting, and a server-side minimum amount. If your payment processor asks you to
add a CAPTCHA, the `donor_merchant_pre_donation` filter lets you plug one in without
editing the plugin.

#### What it does not do

Donor Merchant has no peer-to-peer fundraising, text-to-give, matching-gift company
lookup, or drag-and-drop form builder. Forms are set up from the Settings screens.

#### External services

To process donations this plugin connects to third-party payment and (optionally)
marketing services. Nothing is sent until you enable and configure a given service.

 * **Stripe** (only when Stripe is enabled). The Stripe.js library is loaded from`
   https://js.stripe.com` on pages that display the donation form, so payment details
   can be collected securely in the donor’s browser. Your server also calls the 
   Stripe API at `https://api.stripe.com` to create payment intents, customers, 
   and subscriptions, and to verify payments. Data sent: donation amount and currency,
   the donor’s name, email and phone number if given, an internal reference for 
   the donation, and the payment details the donor enters (handled by Stripe – they
   do not touch your server). Stripe terms: https://stripe.com/legal – privacy: 
   https://stripe.com/privacy
 * **PayPal** (only when PayPal is enabled). The PayPal JS SDK is loaded from `https://
   www.paypal.com` on pages with the donation form. Your server calls the PayPal
   API (`https://api-m.paypal.com`, or `https://api-m.sandbox.paypal.com` in sandbox
   mode) to create and capture orders and subscriptions. Data sent: donation amount,
   currency, and an internal reference. PayPal terms: https://www.paypal.com/legalhub–
   privacy: https://www.paypal.com/privacy
 * **Mailchimp** (optional – only when you enable it). By default the form shows
   a „keep me updated“ checkbox and only opted-in donors are sent. If you switch
   that checkbox off in the settings, every donor is added to the audience, so leave
   it on unless you have another basis for contacting them. Your server calls the
   Mailchimp API (`https://<dc>.api.mailchimp.com`) to add the donor to the audience
   you choose. Data sent: donor email and name. Mailchimp terms: https://mailchimp.
   com/legal/terms/ – privacy: https://mailchimp.com/legal/privacy/
 * **Outgoing webhooks** (optional). If you enter one or more webhook URLs, completed-
   donation data is POSTed to those URLs – which you control and choose (e.g. your
   Zapier or Make endpoint). No third party receives data unless you configure it.

#### Getting started

 1. Install and activate the plugin.
 2. Go to **Donor Merchant  Settings  Payments** and paste your Stripe and/or PayPal
    API keys.
 3. Add the **Donation Form** block (or `[donor_merchant]`) to any page.
 4. If you accept recurring gifts, add the webhook URL shown on the Payments tab to
    your Stripe or PayPal account.
 5. Test with Stripe test mode or the PayPal sandbox, then switch to live.

## Fota wobrazowki

[⌊The donation form: giving frequency, suggested amounts, an optional dedication,
and fee recovery.⌉⌊The donation form: giving frequency, suggested amounts, an optional
dedication, and fee recovery.⌉[

The donation form: giving frequency, suggested amounts, an optional dedication, 
and fee recovery.

[⌊Dashboard with fundraising totals at a glance and the most recent gifts.⌉⌊Dashboard
with fundraising totals at a glance and the most recent gifts.⌉[

Dashboard with fundraising totals at a glance and the most recent gifts.

[⌊Donations list with status filters, search, and one-click CSV export.⌉⌊Donations
list with status filters, search, and one-click CSV export.⌉[

Donations list with status filters, search, and one-click CSV export.

[⌊Donor list with lifetime giving totals and last donation date.⌉⌊Donor list with
lifetime giving totals and last donation date.⌉[

Donor list with lifetime giving totals and last donation date.

[⌊Payment settings: Stripe and PayPal as separate panels, each showing whether it
is connected.⌉⌊Payment settings: Stripe and PayPal as separate panels, each showing
whether it is connected.⌉[

Payment settings: Stripe and PayPal as separate panels, each showing whether it 
is connected.

[⌊Form style settings: six accent colors with a live preview, plus button shape.⌉⌊
Form style settings: six accent colors with a live preview, plus button shape.⌉[

Form style settings: six accent colors with a live preview, plus button shape.

[⌊A campaign form with its own goal thermometer, description, and suggested amounts.⌉⌊
A campaign form with its own goal thermometer, description, and suggested amounts
.⌉[

A campaign form with its own goal thermometer, description, and suggested amounts.

## Bloki

Tutón tykač 1 blok skići.

 *   Donation Form

## HSP

### Is Donor Merchant really free?

Yes. Every feature described on this page is in the free plugin, with no add-ons
to buy and no fee added to donations. You pay only Stripe’s or PayPal’s own processing
fees. The optional paid plans are for priority support.

### Can I accept recurring donations for free?

Yes. Weekly, every-2-weeks, monthly, quarterly, and yearly donations work with both
Stripe and PayPal in the free plugin, and you choose which ones your form offers.
Set up the gateway’s webhook (the Payments tab shows the exact URL and events) so
each renewal payment is recorded.

### Does it work for churches?

Yes. Churches use it for online tithes and offerings. Set up funds such as General,
Building, or Missions so givers can designate their gift, let members give monthly,
record cash and check offerings by hand so each giver’s history is complete, and
let members download their own year-end giving statement from the donor portal.

### Can a charity outside the US use it?

Yes. It supports 20 currencies, including EUR, GBP, CAD, AUD, and NZD, and the currency
position, separator, and decimal settings let amounts follow your local conventions.
Bank debit (ACH) is for US bank accounts only. UK charities can collect Gift Aid
declarations and prepare their HMRC claims.

### Can I import donations from GiveWP or Charitable?

Yes. Export your donations to CSV from GiveWP or Charitable, then upload the file
at **Donor Merchant  Import**. The donation importer detects the columns automatically,
including Charitable’s campaign, date, and gateway columns, so gifts land in the
right campaign. It also recognizes exports from Donorbox, PayPal, Stripe, WooCommerce,
Gravity Forms, and WPForms. You review the mapping and a preview before anything
is saved, and running it twice does not create duplicates.

### Will my donors‘ recurring donations move over when I switch plugins?

No. An active recurring donation stays with Stripe or PayPal, attached to the plugin
that created it, so it cannot be moved by any plugin. The import brings across each
donor’s past gifts. Ask recurring donors to start a new recurring gift on your new
form, then cancel the old one.

### Is it PCI compliant?

Card details are typed into fields hosted by Stripe’s Payment Element or into PayPal’s
own window. They never reach your server, and the plugin never stores them. Integrations
built this way generally qualify for the shortest PCI self-assessment questionnaire(
SAQ A), as Stripe’s security guide describes for its Payment Element. Your organization
is still responsible for completing whatever PCI validation your processor asks 
for, and your site must use HTTPS.

### Does the plugin store card numbers?

No. Card details are entered into fields hosted by Stripe (or on PayPal’s site) 
and never reach your server.

### Do I need an SSL certificate?

Yes. Stripe and PayPal require your site to be served over HTTPS.

### Where do I find my Stripe API keys?

In your Stripe dashboard under **Developers  API keys**. Use the test keys with 
Test mode to try things out safely.

### Can donors cover the processing fees?

Yes. Turn on fee recovery and enter your fee percentage and fixed fee. Donors then
see a checkbox offering to add the fee to their gift. The figure covers the processor’s
cut of the fee itself, so the full gift reaches you. If you accept bank (ACH) payments,
a donor who switches a one-time gift to their bank account is asked for the bank
fee instead (by default 0.8%, capped at $5.00, Stripe’s standard US price).

### Can donors choose which fund their gift goes to?

Yes. Add your funds on the Forms tab and a designation dropdown appears on the form.
The fund is saved with the gift, carried on recurring renewals, and shown in your
donations list and CSV export.

### Can I record cash and check donations?

Yes. Use **Add Donation** on the Donations screen to record a check, cash, bank 
transfer, or other offline gift. It counts toward the donor’s lifetime total, your
reports, and any campaign goal. You can also switch on **Offline gifts** under Settings,
Payments, so donors can pledge a check or bank transfer on the form. They are emailed
your instructions, and the gift counts once you mark it received.

### Does it send tax receipts?

Every completed gift gets an email receipt and a printable receipt page. Add your
organization’s address, tax ID, and the wording your accountant recommends, such
as a statement that no goods or services were provided. Donors can also download
an annual giving statement. The plugin does not give tax advice, so check what your
country requires.

### Are webhooks required?

Recommended, but not required for one-time card gifts. Recurring renewal payments,
refunds, and bank payments that settle later are recorded from the Stripe and PayPal
webhooks, so set them up if you accept recurring gifts or ACH. The settings page
shows the exact URL and events to use.

### Does it include a CAPTCHA?

No CAPTCHA is bundled. Card-testing attacks are limited by a hidden honeypot field,
a timing check, per-IP rate limiting, and a server-side minimum donation, while 
Stripe and PayPal run their own fraud screening on every payment. If your processor
asks for a CAPTCHA, a developer can add one through the `donor_merchant_pre_donation`
filter without changing the plugin.

### Can I connect it to Mailchimp, Zapier, or my CRM?

Yes. Mailchimp is built in. For Zapier, Make, a CRM, or custom code, add an outgoing
webhook URL and every completed donation is posted to it as signed JSON.

### Does the plugin run background tasks or phone home?

No. Donor Merchant sends no telemetry and performs no analytics, tracking, or license
checks. It never contacts our servers.

When a page loads and nobody is donating, the plugin makes no external or background
server requests. The donation form and the goal thermometer are built from your 
own database, with no AJAX polling or heartbeat requests.

On pages that contain the donation form, the visitor’s browser loads Stripe.js and/
or the PayPal SDK from the gateway’s own CDN, so card details go straight into the
gateway’s secure fields and never touch your server. No donor or payment data is
sent until someone submits, and on pages without a form those scripts are not loaded
at all.

Your server contacts Stripe or PayPal only when a visitor submits a donation, when
a gateway sends an incoming signature-verified webhook, when a donor manages a recurring
gift in the donor portal, and, if you enable them, when an outgoing webhook or Mailchimp
sync fires on a completed donation.

The plugin schedules two WordPress cron events, and neither makes an external request.
The first runs daily and, on the first of the month, emails the fundraising summary
to your own admin address if that option is enabled. The second also runs daily 
and deletes donation attempts that were never completed and have sat unfinished 
or failed for more than 90 days; completed and refunded records, and anything attached
to a recurring gift, are never touched. Filter `donor_merchant_stale_donation_days`
to change the window, or set it to 0 to switch the cleanup off.

### Does it work with my theme?

The form has its own styling, with class names prefixed so they do not clash with
your theme. Pick an accent color and button shape on the Forms tab to match your
site.

### Does it support Gift Aid?

Yes, for UK charities taking donations in pounds. The form collects HMRC’s declaration
and the donor’s address, and the Gift Aid screen prepares your claim file, keeps
track of what has been claimed, and lists refunds to report. It does not submit 
the claim to HMRC for you.

### Does it do peer-to-peer fundraising?

No. Peer-to-peer fundraising pages, text-to-give, and matching-gift company lookups
are not part of Donor Merchant.

## Pohódnoćenja

![](https://secure.gravatar.com/avatar/e3b555354408becad907486bb7a85f4a901625327c4a499c7563afb40e412bf0?
s=60&d=retro&r=g)

### 󠀁[Very functional donation plugin](https://wordpress.org/support/topic/very-functional-donation-plugin/)󠁿

 [tomwsimon](https://profiles.wordpress.org/tomwsimon/) 4. oktobra 2026 2 replies

I really like the simplicity and functionality of this plugin. I have a list of 
enhancements that would really help the plugin's adoption, but I have had no issues
getting it to work. I thought about forking it since it's GPL, but I would rather
have those changes go directly into this version.

 [ Čitajće 1 pohódnoćenje ](https://wordpress.org/support/plugin/donor-merchant/reviews/)

## Sobuskutkowarjo a wuwiwarjo

„Donor Merchant – Donation Form with Recurring Donations, Stripe and PayPal“ je 
softwara wotewrjeneho žórła. Slědowacy ludźo su k tutomu tykačej přinošowali.

Sobuskutkowarjo

 *   [ Matt McWilliam ](https://profiles.wordpress.org/mattmcwilliam/)

[Přełožće „Donor Merchant – Donation Form with Recurring Donations, Stripe and PayPal“ do swojeje rěče.](https://translate.wordpress.org/projects/wp-plugins/donor-merchant)

### Na wuwiću zajimowany?

[Přehladajće kod](https://plugins.trac.wordpress.org/browser/donor-merchant/), hladajće
do [SVN-repozitorija](https://plugins.svn.wordpress.org/donor-merchant/) abo abonujće
[wuwiwanski protokol](https://plugins.trac.wordpress.org/log/donor-merchant/) přez
[RSS](https://plugins.trac.wordpress.org/log/donor-merchant/?limit=100&mode=stop_on_copy&format=rss).

## Protokol změnow

#### 2.9.1

 * New: change how a check, cash or other offline gift was paid after it is recorded,
   with „Change method“ on the Donations list.
 * Improved: the Transaction column shows how an offline gift was paid and its reference,
   such as „Check · 1024“.
 * Improved: the list of offline payment methods is fully editable. Check, Cash 
   and Bank transfer are there to start and can be removed.
 * Improved: the Method column shows names such as „Check“ and „Offline“.

Full release history: [donormerchant.com/changelog](https://www.donormerchant.com/changelog/).
Detailed notes for every release are in changelog.txt, included with the plugin.

## Meta

 *  Version **2.9.1**
 *  Last updated **17 hodźin**
 *  Active installations **Mjenje hač 10**
 *  WordPress version ** 6.2 abo nowši **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 abo nowši **
 *  Language
 * [English (US)](https://wordpress.org/plugins/donor-merchant/)
 * Tags
 * [donate](https://hsb.wordpress.org/plugins/tags/donate/)[donation](https://hsb.wordpress.org/plugins/tags/donation/)
   [fundraising](https://hsb.wordpress.org/plugins/tags/fundraising/)[nonprofit](https://hsb.wordpress.org/plugins/tags/nonprofit/)
   [recurring donations](https://hsb.wordpress.org/plugins/tags/recurring-donations/)
 *  [Rozšěrjeny napohlad](https://hsb.wordpress.org/plugins/donor-merchant/advanced/)

## Pohódnoćenja

 5 out of 5 stars.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/donor-merchant/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/donor-merchant/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/donor-merchant/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/donor-merchant/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/donor-merchant/reviews/?filter=1)

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

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

## Sobuskutkowarjo

 *   [ Matt McWilliam ](https://profiles.wordpress.org/mattmcwilliam/)

## Podpěra

Rozrisane problemy zańdźeneju dweju měsacow:

     5 z 5

 [Forum pomocy pokazać](https://wordpress.org/support/plugin/donor-merchant/)