Payment Links vs Embedded Forms

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…UseWhy
Payments running today, zero site changesPayment LinksNothing to install; share a URL anywhere
Checkout that stays on your domainEmbedded formNo redirect; the form inherits your design
Donations with a progress goalEmbedded formDoes not provide a built-in campaign goal display
Occasional invoices or one-off salesPayment LinksNo plugin fee, no maintenance
Subscriptions your customers manage themselvesEmbedded formCustomer portal for card updates and cancellations
Zero fees beyond Stripe’s ownPayment 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. 👍

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.

Stripe's Payment Links page showing the hosted checkout preview with email field, Card, PayPal, and Klarna payment methods, plus feature cards for embedding and sharing links

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. 💡

The WP Full Pay setup wizard inside wp-admin, showing the Connect to Stripe step with Stripe Connect security and currency features listed

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

CapabilityPayment LinksEmbedded 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. [1] Stripe Payment Links: no-code payment pages
  2. [2] Stripe pricing: processing rates and fee structure
  3. [3] WPFullPay on WordPress.org: free-tier features and application fee
  4. [4] WPFullPay pricing: license options that remove the fee
  5. [5] WP Simple Pay Lite vs Pro: the 3% free-tier fee
Yay! 🎉 You made it to the end of the article!

0 Comments
Newest
Oldest Most Voted