You want to take a payment on your WordPress site. Not build a store, not manage inventory, just charge a card for a service, a deposit, a donation, or a single product. There are two clean ways to do it, and they feel very different to your customer: send them to a hosted checkout page, or keep them on your site with an embedded form.
The first way is Stripe Payment Links, which lives entirely inside your Stripe account. The second is an embedded form plugin like WPFullPay (part of the ThemeIsle family, like this blog), which puts the whole checkout inside your own page design.
This guide compares the two on setup, branding, features, and real costs, then maps each option to the situations where it genuinely wins. Let’s start with the short version. 👇
The quick answer: which one fits your situation?
| If you need… | Use | Why |
|---|---|---|
| Payments running today, zero site changes | Payment Links | Nothing to install; share a URL anywhere |
| Checkout that stays on your domain | Embedded form | No redirect; the form inherits your design |
| Donations with a progress goal | Embedded form | Does not provide a built-in campaign goal display |
| Occasional invoices or one-off sales | Payment Links | No plugin fee, no maintenance |
| Subscriptions your customers manage themselves | Embedded form | Customer portal for card updates and cancellations |
| Zero fees beyond Stripe’s own | Payment Links (or a licensed plugin) | Free form plugins add 3 to 5% per transaction |
If that table already answered your question, the rest of this guide adds the details and the honest tradeoffs behind each row. 👍
What Stripe Payment Links actually is
Payment Links is a feature inside your Stripe Dashboard, not a WordPress plugin. You create a product with a price, and Stripe generates a complete, hosted checkout page with a shareable URL, no code required. [1]
That URL works anywhere you can paste a link: a button on your WordPress page, an email signature, a WhatsApp message, a QR code on a printed invoice. The same link can serve unlimited customers, and Stripe hosts everything: the page, the card fields, Apple Pay and Google Pay, even the receipt email if you enable it.
The cost story is the simplest possible: you pay Stripe’s standard processing rate (2.9% + 30¢ for domestic US cards, more for international cards), and nothing else. No monthly fee, no per-link fee, no plugin taking a cut. [2]
The tradeoff is custody. Your customer leaves your site to pay. You can add your logo and brand colors to the Stripe page, and you can embed a buy button on your site, but the button still redirects. For many situations that is completely fine. For some, it is the whole decision, and the next section is for those.

What an embedded WordPress form is
An embedded form plugin puts the entire checkout inside your WordPress page: your header, your footer, your fonts, and the payment form itself sitting in the middle of your content. The buyer never leaves your domain, and the card details travel directly from their browser to Stripe, never through your server.
For this guide the example plugin is WPFullPay, whose free tier includes one-off payments, subscriptions, donation forms with goals and custom amounts, and save-card features, with a 5% application fee per transaction until you buy a license. [3] WP Simple Pay Lite is the other well-known free option, with a 3% fee and a more restricted free feature set. [5]
The plugin route also gives you something a link never can: a record of every payment inside wp-admin, notification emails you control, and forms you can style, duplicate, and reuse across pages. If payments are a permanent feature of your site rather than an occasional event, that machinery earns its keep quickly. 💡

Setup and maintenance: minutes versus an afternoon ⚙️
Payment Links: if you already have a Stripe account, you can genuinely be taking payments in under ten minutes. Create a product, set a price, copy the link, paste it into a WordPress button block. There is nothing to update, no plugin to break after a WordPress release, and no settings page to second-guess.
Embedded form: budget an afternoon for the first form. Install the plugin, connect Stripe with your API keys, build the form, place it on a page, then run a test payment in Stripe’s test mode and a real $1 payment in live mode. It is not hard, and a good walkthrough like how to integrate Stripe with WordPress makes it shorter, but it is a project with moving parts you own forever after.
💡 PRO TIP: whichever route you choose, run one real $1 payment before sharing the form or link with anyone. A live-mode test catches webhook and email problems that test mode never shows.
Branding and the checkout experience
This is the comparison most people actually feel. An embedded form is invisible in the best way: the buyer stays in your world from the first paragraph to the thank-you message. A Payment Link asks for a small leap: the URL changes to a Stripe domain at the exact moment money is involved.
How much that leap costs you depends on who your buyer is. Clients paying an invoice already trust you, and Stripe’s page is more recognizable than most small-business sites, so the redirect reads as professional rather than suspicious. Cold traffic buying a $29 download from a site they found ten minutes ago is more fragile, and keeping that buyer on your own domain removes one reason to hesitate. 🤔
Stripe does soften the gap: you can brand the hosted page with your logo, colors, and custom domain on paid Stripe plans, and the page itself is polished and mobile-friendly. “Ugly checkout” is not a reason to avoid Payment Links. “Not my checkout” is the honest one.
Features: what each option can actually do
| Capability | Payment Links | Embedded form (WPFullPay free) |
|---|---|---|
| One-time payments | ✅ | ✅ |
| Subscriptions / recurring prices | ✅ | ✅ (free tier included) |
| Custom “pay what you want” amounts | ✅ | ✅ |
| Donation goals and progress display | ❌ | ✅ |
| Promo codes | ✅ | ✅ |
| Customer self-service portal | ℹ️ Stripe-hosted portal setup | ✅ Built-in subscription portal |
| Payment records inside wp-admin | ❌ | ✅ |
| Multiple forms / pages with different purposes | ✅ One link per product | ✅ Unlimited forms |
The pattern to notice: Payment Links covers the payment itself very well, including recurring prices and promotions, and stops there. Everything that happens around the payment (donation campaigns, customer self-service, your own records) is where a plugin earns its existence. The WP Full Pay feature set goes deeper still, and the WP Full Pay review on this blog walks through it screen by screen.
The real cost comparison 💰
Both options pay Stripe the same processing fees; that part is a wash. The difference is what sits on top. Payment Links adds nothing, ever. A free embedded plugin adds its application fee: 5% per transaction on WPFullPay’s free tier, 3% on WP Simple Pay Lite.
At small volumes that fee is the correct price for the features: 5% of $100 a month is $5, far less than any license. At business volume the math flips, and a license (WPFullPay Basic is €79.50 per year at introductory pricing, renewing at €159) becomes the cheaper option. [4] The full break-even math, with a fill-in worksheet for your own numbers, is in the companion guide to the real cost of Stripe on WordPress.
Receipts, refunds, and where the records live
Three housekeeping questions matter after the first payment arrives. Who emails the receipt? Stripe can send one automatically on both routes, and a plugin adds its own customizable notification on top. Where do refunds happen? Always inside Stripe, no matter which button started the payment. And where do you look when a customer asks “did my card go through?” With Payment Links, the answer is the Stripe Dashboard. With an embedded plugin, the payment list is right there in wp-admin next to everything else you manage. 📋
None of these is a reason to switch routes on its own, but the records question grows with volume. Searching a separate dashboard for one payment a month is trivial; reconciling fifty payments a week across two systems is how bookkeeping afternoons are born.
⚖️ Worth knowing: no option in this guide makes Stripe’s own fees disappear. Anyone promising “zero-fee payments” is moving the cost, not removing it.
So which should you use?
- Choose Payment Links if you take occasional payments, already live in your Stripe Dashboard, want zero maintenance, or need to sell from places your website cannot reach (email, social, printed materials).
- Choose an embedded form if payments are a permanent feature of your site, you take donations or subscriptions, you want payment records inside WordPress, or your brand cannot afford a redirect at checkout time.
- Use both if it fits: plenty of sites embed a donation form on their campaign page and keep a payment link in their email signature for one-off invoices. The two options share the same Stripe account, so nothing conflicts. 👍
And if your plans include a cart, multiple products, or shipping, neither option is the right tool: that is when a full store like WooCommerce starts making sense. Until then, keep the stack light and the checkout shorter than this article.
Have a setup that works well for your site? Share it in the comments below. 💬
Sources
- [1] Stripe Payment Links: no-code payment pages
- [2] Stripe pricing: processing rates and fee structure
- [3] WPFullPay on WordPress.org: free-tier features and application fee
- [4] WPFullPay pricing: license options that remove the fee
- [5] WP Simple Pay Lite vs Pro: the 3% free-tier fee
FREE GUIDE
4 Essential Steps to Speed Up Your WordPress Website
Follow the simple steps in our 4-part mini series and reduce your loading times by 50-80%. 🚀


















