How-To Guides7 min read

How to Accept Donations With Stripe (Complete 2026 Guide)

Stripe can absolutely take donations. The catch is that "Stripe" means about five different products, and only one of the obvious paths gives you a real donation form. Here is how to pick.

KindLumen TeamMay 13, 2026Updated May 13, 2026

Quick answer

  • There are three real ways to take donations with Stripe, not one.
  • Payment Links are fastest; a form layer keeps donors on your branded site.
  • Apply for the 2.2% + 30¢ nonprofit rate before you take serious volume.

Someone tells you to "just use Stripe" for donations, so you open the dashboard and immediately hit a wall. There is Payment Links, Checkout, Elements, Billing, the Payment Element, Connect. None of them is labeled "donation form." You came to take a $50 gift and you are now reading API docs about Prices and Subscriptions.

Stripe genuinely is a great way to accept donations. It is reliable, the fees are reasonable, and the money lands in your own account. But Stripe is a toolbox, not a finished product, and the path you pick decides whether this takes ten minutes or a week of developer time.

This guide lays out the three real paths, what each one costs you in money and effort, and how to handle the parts nobody mentions until they bite you: the nonprofit discount, recurring gifts, receipts, and payouts.

nonprofit operators planning website donation improvements together for How to Accept Donations With Stripe (Complete 2026 Guide)

First, set up the account (this part is the same for everyone)

No matter which path you choose, you need a Stripe account in your organization's name, not a personal one. Sign up, then complete the business profile: legal entity name, EIN, address, and a bank account for payouts. Stripe will not pay you out until this is done, so do it first.

If you are a US 501(c)(3), apply for the Stripe.org nonprofit discount while you are in there. It drops your rate from the standard 2.9% + 30¢ per successful charge to 2.2% + 30¢. You have to apply and be approved; it is not automatic, and it can take a little while. There is no reason to leave that 0.7% on the table. We break the math down in the Stripe nonprofit discount, explained.

One more setting worth flipping early: turn on Stripe's email receipts under your account's customer emails. They are minimal and Stripe-branded, but they are better than nothing while you decide on a real receipt strategy.

Payment Links are Stripe's no-code, hosted payment pages. You create one in the dashboard, set a price (or let the donor enter a custom amount), and Stripe gives you a URL you can paste on a button or share by email. They support recurring, so you can offer a monthly gift this way too.

This is the fastest possible way to take a donation with Stripe. No developer, live in minutes. The tradeoffs:

  • The donor leaves your site and lands on a Stripe-hosted page. You can add a logo and brand color, but it still reads as a Stripe checkout, not your donation page.
  • No suggested amount buttons, no "make this monthly" toggle, no donation-specific copy unless you hand-build several links.
  • Donor records are just Stripe's customer list. No fund designations, no campaign tracking.

Great for a one-off campaign or a small all-volunteer group. If you want the deeper comparison, see Payment Links vs. an embedded donation form.

Path 2: Build it with Checkout or Elements (most control, real dev)

If you have engineering time, you can build exactly what you want on Stripe's primitives.

Checkout is a prebuilt, hosted-or-embedded checkout. You create a Checkout Session on your server and redirect (or embed) the donor into it. Less custom than Elements, but you still write code and run a server.

Stripe Elements / the Payment Element is a set of embeddable UI components you build your own form around. This is the route to a fully custom, on-page donation experience, and it is the most work. You create a PaymentIntent server-side, mount the Payment Element client-side, and confirm the payment:

// server: create the intent
const intent = await stripe.paymentIntents.create({
  amount: 5000, // $50.00 in cents
  currency: 'usd',
})
// client: mount Stripe Elements with intent.client_secret

For recurring you add a Price with a monthly interval and create a Subscription instead. Then you need webhooks to send receipts and handle failed payments, suggested-amount logic, donor records, the works. It is powerful and it is genuinely a software project. Budget for maintenance, not just the build.

Path 3: A form layer on your own Stripe (branded, on-site, no code)

The third path is the one most nonprofits actually want without knowing it has a name. You connect a donation form tool to your own Stripe account, and it handles the donation-specific UI, the recurring subscriptions, the branded receipts, and the donor records for you. The money still flows to your Stripe; the tool just sits on top.

You get the on-page, branded experience of Path 2 without writing or maintaining any of the code. Suggested amounts, a custom amount field, a monthly toggle, tax-acknowledgment receipts, and a donor list show up out of the box. This is exactly what KindLumen does: a Stripe-powered form you drop onto your existing site with one line of code, rendered inline and fully branded, with funds going to your own Stripe (PayPal and Square work too).

The tradeoff versus raw Payment Links is a subscription cost. The tradeoff versus building it yourself is that you give up some deep customization in exchange for not running a payments codebase. For most teams that is a good trade.

The three paths, side by side

Here is the honest comparison. None of these is wrong; they fit different teams.

PathCode neededStays on your site?Donation UI + records?Best when
Payment LinksNoneNo, Stripe-hostedNo, basicOne-off campaign, smallest setup
Checkout / ElementsYes, real devElements: yesOnly what you buildYou have engineers and want full control
Form layer on your StripeNoneYes, inlineYes, out of the boxYou want branded on-site giving, no dev

Notice the fees are identical across all three. They are Stripe's processing fees, and they do not change based on the form on top. So the decision is purely about effort and donor experience, not cost per gift.

Recurring, receipts, and getting paid

Three things trip people up after the first donation works.

Recurring gifts

Monthly donors are worth far more over time than one-time gifts. In raw Stripe, recurring means creating a Price with a monthly interval and a Subscription, then using webhooks for dunning. Payment Links and form layers handle this for you. Either way, offer it: see how to add recurring donations to your website.

Receipts

Stripe's built-in receipt is fine for an order confirmation and wrong for a donation. US donors want tax-acknowledgment language and your branding. You either build custom receipts via webhooks or use a form layer that sends them automatically. More in how to send branded donation receipts with Stripe.

Payouts

Because the money is in your own Stripe account, it pays out to your bank on Stripe's normal rolling schedule (often a couple of business days at first, faster once established). No platform sits between you and the funds. That is the single best reason to do donations on Stripe at all.

So which path is right for you?

Quick gut check. If you are running one campaign this year and do not care that the page looks like Stripe, use a Payment Link and move on. If you have in-house engineers and very specific requirements, build on Elements and own it. If you depend on year-round online giving and want a branded form on your own site without a software project, use a form layer on your own Stripe.

Whatever you pick, test it the real way: make an actual $1 donation on your phone, on your live site, confirm the receipt arrives and the money lands, then refund yourself. Five minutes of that tells you more than any feature list.

Frequently asked questions

Does Stripe charge extra fees for nonprofits?

No, the opposite. Stripe charges the standard 2.9% + 30¢ per charge, but US 501(c)(3) nonprofits can apply for the Stripe.org discount and pay 2.2% + 30¢ instead. You have to apply and be approved; it is not applied automatically.

Can I take donations with Stripe without writing any code?

Yes. A Stripe Payment Link is fully no-code but hosted on a Stripe page. A form layer connected to your own Stripe account is also no-code and renders a branded form on your own site. Building with Checkout or Elements is the only path that requires a developer.

Does the donation money go to me or to Stripe?

It goes to you. When donations run through your own Stripe account, Stripe deducts its processing fee and pays the rest out to your bank on its normal schedule. There is no pooled account holding your funds.

Can Stripe handle monthly recurring donations?

Yes. Stripe supports recurring through Prices, Subscriptions, and Billing. A recurring Payment Link or a form layer sets this up for you; doing it from scratch with the API requires webhooks to handle receipts and failed payments.

Product links

Use the research, then choose the right donation setup.

Compare your options, then move into a donation setup your team can launch and maintain with confidence.

Related reading