How to accept donations on a WordPress site
For a simple donation button, create a hosted payment link with Stripe or PayPal and add it to a WordPress page. For recurring donations, donor records, receipts or a form embedded in your site, use a payment or donation plugin and test the payment gateway before publishing.
- 01Choose the donation route
- 02Create the payment option
- 03Add a Donate page
- 04Configure receipts and return pages
- 05Test the complete donation flow
- 06Use the fast route when appropriate
What you need
- A WordPress site with HTTPS enabled
- A Stripe or PayPal business account
- Administrator access to WordPress
- A thank-you page or confirmation message
Choose the donation route
Use a hosted payment link if you only need a Donate button and one-time payments. Stripe Payment Links can accept a fixed amount or let donors choose what to pay, and they can be set up for one-time or recurring fixed-amount donations.
Use a donation or payment form plugin if you need an embedded form, custom fields, recurring options, donor records, receipts, reports or more than one payment gateway. WordPress itself does not provide a general-purpose donation form for self-hosted sites.
Create the payment option
In Stripe, create a Payment Link for your cause. Choose a fixed price for a set donation amount, or choose the option that lets the donor enter an amount. Set the call to action to Donate, select the currency, and configure any available payment methods.
If you need PayPal instead, create a PayPal donation button or hosted donation page in your PayPal account. Keep the description clear so donors know who receives the money and what the donation supports.
Add a Donate page
Create a page such as Donate and explain what the money supports, whether the gift is one-time or recurring, and which organisation receives it. Add a WordPress Button block and paste in the hosted payment link, or add the form block supplied by your payment plugin.
Do not paste card fields into a normal text or HTML block. Payment details should be collected by the payment provider or its properly configured WordPress integration.
Configure receipts and return pages
Set the payment provider to send a confirmation email, then configure a return or thank-you page where the donor can see that the payment was submitted. If you collect names or email addresses, state why you need them and obtain separate consent before adding donors to a marketing list.
A common failure is relying only on the browser redirect as proof of payment. Check the payment dashboard and, for a plugin form, confirm that its webhook or gateway connection is working; otherwise a donor may pay successfully while WordPress still shows an incomplete donation.
Test the complete donation flow
Make a test donation using the gateway's test mode where available. Check the form on a phone, verify the amount and currency, confirm the success message and email, and make sure the donation appears in the payment dashboard or plugin records.
Also test a cancelled payment and a failed card. Spam and card-testing bots regularly target public donation forms, so enable the anti-spam, fraud-prevention and rate-limiting controls provided by your gateway or form plugin.
Use the fast route when appropriate
Fastest route: create a Stripe Payment Link, add it to a Donate button, publish the page and test one payment. It needs no custom PHP and no donation plugin, but donors leave your site for the hosted checkout and you get less control over form fields and donor management.
If donations must be optional or recurring during membership checkout, consider Paid Memberships Pro – Donations. It is the better fit when giving needs to work alongside membership levels, rather than as a standalone fundraising form.
Let Paid Memberships Pro do it
Adds optional or recurring donations to Paid Memberships Pro checkout; choose it when donations need to work with memberships.
Sources
- support.stripe.com /questions/how-to-accept-donations-through-stripe?utm_source…
- wordpress.org /support/topic/charitable-donation-receiving-scam-donations/…
- wordpress.org /plugins/wc-donation-platform/?utm_source=openai
Questions
- Can I accept donations in WordPress without a plugin?
- Yes, you can accept simple donations without a WordPress plugin by creating a hosted Stripe Payment Link or PayPal donation page and linking to it from a Donate button. This is suitable for basic one-time gifts, but it gives you less control over embedded fields, recurring choices, donor records and on-site confirmations.
- How do I accept recurring donations on WordPress?
- Use a payment provider or donation plugin that supports subscriptions or recurring gifts. Stripe supports recurring fixed-amount donation links, while WordPress donation tools can add recurring choices to an embedded form; confirm that the selected gateway supports recurring payments before publishing.
- Why is a donation marked incomplete after the donor paid?
- A donation can remain incomplete when the payment gateway callback or webhook cannot reach WordPress, even though the donor returned to the site. Check the gateway connection, webhook status, site HTTPS, firewall rules and plugin logs, then compare the transaction in the provider dashboard before treating it as unpaid.
- Should I use WooCommerce for donations?
- Use WooCommerce when donations need to share an existing shop, cart, checkout and order workflow. For a standalone donation page, a dedicated donation form or hosted payment link is usually simpler; WooCommerce donation extensions may also change checkout behaviour or require compatibility settings when used beside normal products.
- What is the quickest donation setup for a membership site?
- For a membership site, add donations to the membership checkout rather than building a separate fundraising system. Paid Memberships Pro – Donations is suited to optional or recurring gifts tied to membership levels, while a standalone Stripe Payment Link is quicker only when the donation does not need to affect membership checkout.