Website & Setup Guides15 min read

How to Accept Stripe Donations Without Writing Code

Stripe offers one genuinely zero-code donation route and several lower-code checkout routes. This guide separates them so you can choose without buying too much—or too little—technology.

By Kiran PatelPublished September 3, 2026

Quick answer

  • Stripe Payment Links are the true zero-code route, but donor-chosen amounts cannot be recurring.
  • Hosted Checkout, embedded Checkout, and Elements all use the Checkout Sessions API and therefore require an integration.
  • KindLumen supplies the fundraising layer and embed code while Stripe handles the payment inside the flow.

“Accept Stripe donations without code” can describe several very different setups. One is a link created entirely in the Stripe Dashboard. Another is a Stripe Checkout integration that a developer has already built. A third is a fundraising product that gives you a form and a snippet to paste into your site. They are not interchangeable.

The practical differences are where the donor enters payment details, who creates and maintains the Checkout Session, whether the donor can choose an amount, and how recurring gifts are configured. Those details determine whether you can launch from a dashboard, need to paste an embed, or need an engineer and a backend.

This guide uses Stripe’s current product documentation and pricing as the source of truth, then checks KindLumen’s claims against its implemented checkout path. It was reviewed on September 3, 2026; Stripe can change product behavior and fees, so use the linked documentation to verify anything material before launch.

nonprofit operators planning website donation improvements together for How to Accept Stripe Donations Without Writing Code

The short answer: four routes that require different levels of work

If the goal is simply to collect a donation, start with the smallest route that meets the requirement. “No code” should describe the work your organization must do, not hide development that still has to happen somewhere.

RouteWhat your team doesWhere payment happensAmount and frequencyBest fit
Stripe Payment LinkCreate and share a link in the DashboardStripe-hosted pageDonor-chosen one-time amount or a fixed recurring priceFastest launch with no integration
Stripe-hosted CheckoutBuild or adopt an integration that creates Checkout SessionsStripe-hosted page after a redirectDefined by the integrationA low-complexity custom payment flow
Stripe embedded CheckoutBuild or adopt a server and client integrationStripe form embedded on your siteDefined by the integrationOn-site payment with Stripe’s prebuilt UI
KindLumen inline formConfigure a fundraising form and paste its embed snippetKindLumen form on your page, using Stripe Checkout Elements when available; hosted Checkout is the fallbackSuggested or custom amount; one-time or monthlyA fundraising-specific form without maintaining a Stripe integration

Stripe documents Payment Links as its way to accept payments online without writing code. By contrast, Stripe’s hosted and embedded Checkout interfaces are built on the Checkout Sessions API. Checkout reduces the amount of code, but it does not remove the need for an integration.

A Payment Link is a reusable URL created in the Stripe Dashboard. You can put it behind a Donate button, share it in an email or text message, publish its QR code, or use Stripe’s generated buy button. Opening the link takes the donor to a Stripe-hosted payment page. Stripe describes the integration effort as its lowest complexity level and the page customization as limited.

The recurring-donation limitation that is easy to miss

Stripe offers two relevant pricing models when you create a Payment Link:

  • Customers choose what to pay: the donor enters an amount, with an optional suggested amount and optional minimum or maximum. Stripe says this model is suitable for donations, but it currently does not support recurring payments or recurring donations.
  • Product or subscription: you create a fixed Price. A recurring Price can power a subscription Payment Link, but the amount is fixed by that Price rather than freely chosen by each donor.

That means a single Payment Link cannot currently combine “enter any amount” with “make this monthly.” If you need both, you can publish separate fixed-price subscription links, change the product design, use a fundraising layer that creates the appropriate session, or build an integration.

What Payment Links do well

  • No server, API keys, or deployment are required to create and share the link.
  • Stripe hosts the payment page, handles the payment UI, and supports automatic receipts and Dashboard refunds.
  • The link is reusable and can be tracked with URL parameters and UTM codes.
  • Stripe can dynamically present eligible payment methods. What a donor sees depends on factors including country, currency, device, browser, and Dashboard settings.

What you give up

The checkout is Stripe-hosted, and customization is deliberately bounded. Stripe’s current documentation lists preset fonts and border radii plus controls for elements such as the logo, background, and button color. You are not building the surrounding donation narrative, impact ladder, campaign layout, or donor journey inside the Payment Link.

Choose a Payment Link when launch speed and operational simplicity matter more than having a fundraising-specific form on your own page. It is a legitimate endpoint, not merely a temporary solution—but its amount and recurring rules need to match the campaign.

Routes two and three: hosted Checkout and embedded Checkout still need an integration

Stripe Checkout is a family of prebuilt payment interfaces powered by the Checkout Sessions API. It can support one-time and subscription payments, but your application generally creates a Checkout Session on a server and then sends the donor to the corresponding interface. That server-side step is the line between a Payment Link and a Checkout integration.

Stripe currently documents three Checkout UI approaches:

  • Full-page Checkout: a prebuilt page that can be Stripe-hosted after a redirect or embedded on your site. Stripe identifies this as the lowest-complexity Checkout route.
  • Embedded form: Stripe’s prebuilt checkout form appears on your site without a redirect. Stripe currently labels this interface public preview and assigns it more implementation complexity than full-page Checkout.
  • Elements with Checkout Sessions: your application composes Stripe Elements into a custom payment page. It offers the most interface control and requires the most implementation work of the three.

The current Stripe Checkout comparison is the best place to verify status and capabilities because product names and availability can change. All three approaches use Checkout Sessions; none is a dashboard-only setup in the way a manually created Payment Link is.

Why hosted Checkout can still be the right engineering choice

A redirect is not inherently a broken implementation. Hosted Checkout lets Stripe own more of the payment interface and keeps your client-side work smaller. It is often appropriate when you have a developer, need application-generated amounts or metadata, and do not need the payment fields embedded in your page.

Why embedded Checkout is not the same as an embedded donation form

Stripe’s embedded interfaces solve the payment-collection layer. A donation form also has to decide how to present suggested amounts, recurring choices, campaign context, optional donor questions, cost coverage, confirmations, and donor records. You can build those pieces around Stripe, or you can use a product that already supplies them. The payment UI and the fundraising experience are related, but they are not the same component.

Route four: what KindLumen’s inline Stripe form actually does

KindLumen is not a different payment processor and its form is not the same product as Stripe’s prebuilt embedded Checkout. It is a fundraising layer connected to the organization’s own Stripe account.

The current implementation works in three layers:

  1. The website embed: you paste KindLumen’s generated snippet into a custom-HTML area on the page where the form should appear. The script inserts a KindLumen-hosted iframe and resizes it to fit the flow. This is copy-and-paste setup, not a claim that the browser runs no code.
  2. The fundraising experience: inside that embedded form, KindLumen handles suggested and custom amounts, one-time or monthly selection, donor details, optional custom questions, form branding, and the optional choice to cover transaction costs.
  3. The Stripe payment: KindLumen creates a Checkout Session for the connected Stripe account. Its inline path uses Stripe Checkout in Elements mode and mounts Stripe’s Payment Element inside the KindLumen flow. A Stripe-hosted Checkout redirect remains the fallback when the inline Elements path is unavailable.

This distinction matters. Calling KindLumen “Stripe embedded Checkout” would be imprecise: the page embeds a KindLumen form, and that form uses Checkout Sessions and Stripe Elements for payment collection. It also means the responsible promise is “an inline donation flow with a hosted fallback,” not “a donor can never be redirected under any circumstance.”

Payment methods and frequencies supported by the current flow

KindLumen’s live Checkout Session explicitly requests the card payment-method type. Eligible donors may see Apple Pay or Google Pay as card-backed wallets when Stripe, their device, and their browser allow it. Bank debit is not part of this checkout path. The implemented donation frequencies are one-time and monthly; the guide does not infer additional frequencies from preview or template data.

The organization connects its own Stripe account, and the charge is created for that connected account. KindLumen does not hold the organization’s donations or add a separate payout schedule. Stripe controls settlement and payout timing. See KindLumen’s current feature overview for the product-level workflow rather than treating this article as a permanent feature contract.

How to choose without overbuilding

Start with requirements that change the architecture. Do not begin with the word “embedded,” because it can refer to a buy button, a prebuilt Stripe form, Stripe Elements, or an entire third-party form in an iframe.

Choose a Payment Link when:

  • You need to launch without a server or developer.
  • A Stripe-hosted page is acceptable.
  • You need either a donor-chosen one-time amount or fixed recurring options—not both in one link.
  • Stripe’s bounded page customization and Dashboard reporting are enough.

Choose hosted Checkout when:

  • Your application must decide the amount, frequency, campaign identifier, or other session data.
  • You have someone who can securely create Checkout Sessions on a server.
  • You prefer Stripe to host the full payment page and want to minimize client-side payment code.

Choose embedded Checkout or Checkout Elements when:

  • Payment details must be collected on the same page.
  • You can build and maintain both the server-side session creation and the browser integration.
  • The difference in UI control is worth the additional engineering and testing.

Choose a fundraising platform with a Stripe connection when:

  • You need a donation-specific experience rather than only payment fields.
  • Your team can configure a form and paste an approved embed but should not own a payments integration.
  • The platform’s supported amounts, frequencies, questions, payment methods, records, and pricing match your actual requirements.

A third-party product does not make Stripe disappear; it becomes the party responsible for the integration. Evaluate it on what it demonstrably supports, how funds reach your account, what data you can export, and what happens if the inline path fails.

When custom development is genuinely required

Stripe recommends Checkout Sessions for most payment integrations because it manages session state and reduces the amount of checkout logic an application must own. Its documentation says to consider the lower-level Payment Intents API when you need control over every aspect of checkout state or intend to build features such as discount, tax, subscription, or currency-conversion logic yourself.

For a donation program, custom development is warranted when a documented requirement falls outside both Stripe’s no-code tools and the chosen fundraising platform. Common examples include:

  • Dynamic business rules before payment: calculating an amount from external data, routing funds according to organization-specific logic, or changing allowed options based on an authenticated user.
  • Deep, bespoke system synchronization: mapping gifts into a CRM, fund-accounting system, or data warehouse with organization-specific objects and reconciliation rules that no supported integration exposes.
  • Post-payment fulfillment: issuing event access, provisioning a benefit, triggering a physical shipment, or performing another action that must be reliable and idempotent after Stripe confirms payment.
  • A fully custom payment interface: controlling page structure and interaction states beyond Stripe Checkout’s supported settings or beyond a third-party form’s editor.
  • Unsupported payment or recurring models: offering payment methods, schedules, allocation rules, or pledge behavior that the selected route does not implement.

Custom work is more than drawing card fields. It includes server-side secret handling, session creation, authentication challenges, webhook verification, duplicate-event handling, error recovery, testing in Stripe test mode, production monitoring, refunds, and reconciliation. The Checkout Sessions overview explains the managed path and links to Stripe’s comparison with Payment Intents.

If your requirement is simply “a donor chooses an amount and pays by card,” custom development is probably unnecessary. If the requirement contains conditional rules, custom downstream actions, or an unsupported payment model, write it down before choosing the integration.

What the Stripe routes cost

Stripe’s US pricing page, reviewed September 3, 2026, lists Standard pricing at 2.9% + 30¢ per successful domestic-card transaction. It also says Standard has no setup fee, monthly fee, or hidden fee. Rates vary by country, payment method, card origin, currency conversion, and negotiated agreement, so an organization outside that exact scenario should use the live pricing page rather than copying the US domestic-card number into a budget.

On that page, Stripe says accepting payments through Payment Links and Checkout is included at no additional charge for businesses on standard Payments pricing. That does not erase payment-processing fees, and it does not mean every optional Stripe product or feature is included. It also says a custom domain for its hosted payments page is $10 per month at the time of review.

A fundraising product can have its own pricing model in addition to Stripe processing. KindLumen’s current pricing disclosure says organizations pay no setup, subscription, or platform fee. Donors can optionally cover transaction costs; when they do not, Stripe’s processing fee is deducted from the gift. Review both Stripe’s live pricing and the platform’s disclosure before publishing a “free” claim in donor-facing or board materials.

This article does not quote a nonprofit-specific Stripe rate. Eligibility and discounts can change, and any organization seeking special pricing should obtain the current terms directly from Stripe.

A launch checklist that tests the real flow

The setup is complete only when the production donor journey and the financial record both work. Before sending traffic to the page:

  1. Confirm the legal and account setup. Make sure Stripe has the correct organization, bank, tax, representative, and public business information.
  2. Match the route to the amount model. For Payment Links, confirm whether the campaign uses donor-chosen one-time gifts or fixed recurring Prices. Do not assume those can be combined.
  3. Verify live versus test mode. A successful test-mode charge does not mean the published button points to a live object or that live account requirements are complete.
  4. Test every advertised frequency. One-time and recurring payments create different Stripe objects and failure modes. Complete each flow you show.
  5. Test on a real phone and desktop browser. Check the embedded height, keyboard behavior, validation, authentication redirects, return state, and confirmation screen.
  6. Check the money and the data. Verify the payment in the correct connected Stripe account, confirm the amount and fee treatment, and make sure campaign and donor fields reach the records your team will use.
  7. Run a refund. Confirm who can issue it, what the donor sees, and how the refunded gift appears in reporting.
  8. Document ownership. Name the person responsible for expired links, Stripe account alerts, failed recurring payments, embed changes, and integration errors.

Do not use an assumed conversion lift as the business case for one route over another. Measure your own page views, checkout starts, completed gifts, device mix, average gift, recurring starts, and payment failures after launch. The sound decision is the one that meets the organization’s requirements and can be operated reliably.

Primary sources and review date

The Stripe product and pricing statements in this guide were checked against the following official pages on September 3, 2026:

  • Stripe Payment Links overview for hosting, customization, receipts, refunds, sharing, and recurring-link capabilities.
  • Create a Payment Link for the distinction between donor-chosen amounts and fixed product or subscription Prices.
  • Stripe Checkout overview for full-page, embedded-form, and Elements UI modes and their relative implementation complexity.
  • Checkout Sessions API overview for server-created sessions, UI options, metadata, and the boundary between Checkout Sessions and Payment Intents.
  • Stripe pricing for current US Standard domestic-card pricing and the listed Payment Links and Checkout charges.

KindLumen-specific statements were checked against the application’s current embed script, donation-flow component, Stripe Elements component, and server-side Checkout Session creation. Product behavior can change after this review date; the live product and linked documentation take precedence.

Frequently asked questions

Can I really take Stripe donations with no code at all?

Yes. A Stripe Payment Link can be created and shared from the Dashboard without an API integration. Pasting a generated form embed can also avoid custom development, although the embed itself is HTML and JavaScript maintained by the form provider. Building directly with Stripe Checkout requires server and browser integration work.

Can a Stripe Payment Link let donors choose any amount and make it monthly?

Not in the same link under Stripe’s current rules. The “customers choose what to pay” Payment Link model does not support recurring payments. A subscription Payment Link uses a fixed recurring Price. Use separate fixed subscription links, a fundraising layer that supports donor-chosen monthly gifts, or a custom integration if you need both behaviors.

Is Stripe embedded Checkout a no-code product?

No. Stripe’s embedded Checkout is a prebuilt UI, but it is powered by the Checkout Sessions API. An application still needs to create a session securely on the server and initialize the checkout in the browser. It reduces custom payment-interface work; it does not eliminate integration work.

Is KindLumen’s inline form the same as Stripe embedded Checkout?

No. Your website embeds a KindLumen-hosted fundraising form. KindLumen then creates a Stripe Checkout Session and uses Checkout Elements to collect payment within that flow when available, with Stripe-hosted Checkout as a fallback. KindLumen supplies donation-specific fields and behavior around Stripe’s payment layer.

Which payment methods does KindLumen’s current Stripe flow support?

The live Checkout Session requests card payments. Apple Pay or Google Pay can appear as card-backed wallets when Stripe and the donor’s device and browser consider them eligible. Bank debit is not supported by this checkout path.

What does Stripe charge for Payment Links or Checkout?

As reviewed on September 3, 2026, Stripe’s US Standard page lists 2.9% + 30¢ for a successful domestic-card transaction and says Payment Links and Checkout are included with standard Payments pricing. Other countries, payment methods, international cards, currency conversion, optional products, and custom agreements can change the total, so verify Stripe’s live pricing.

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