Skip to content
GPLWP Guides

How to accept online payments on a WordPress site

Forms Time About 30 minutes 7 steps Updated 29 Sep 2026

FORMS
The short answer

WordPress does not process payments by itself. For a simple fixed payment, add a Stripe Payment Link to a WordPress button; for branded forms, recurring payments, customer details, and payment records, use a payment plugin connected to Stripe or WooCommerce.

The route
  1. 01Choose the payment setup
  2. 02Create the payment account
  3. 03Add the manual payment link
  4. 04Install a payment-form plugin
  5. 05Configure confirmation and notifications
  6. 06Test before going live
  7. 07Switch to live payments

What you need

  • A WordPress site with administrator access
  • A Stripe or other payment-processor account
  • An HTTPS-enabled website
  • The product, service, or donation amount you want to charge

Choose the payment setup

Use a hosted payment link when you need one fixed charge, such as a deposit, donation, consultation, or event ticket. Stripe creates the checkout page and handles the card details away from your WordPress site. Payment Links can contain products, prices, customer fields, and completion settings.

Use WooCommerce when you need products, stock, shipping, taxes, customer accounts, or orders. Use a dedicated payment-form plugin when you need a payment form without building a full shop, particularly for one-time or recurring payments.

Create the payment account

Create and verify your Stripe account, or choose the payment processor supported by your chosen setup. Complete the business, identity, payout, and tax details requested by the processor before switching to live payments.

Keep test mode separate from live mode. Do not put secret API keys in a WordPress page, Custom HTML block, theme file, or browser-side JavaScript. A payment integration should keep sensitive credentials on the server or inside the trusted plugin connection.

Add the manual payment link

For the no-plugin route, create a Payment Link in Stripe, set the product, amount, currency, customer information, and confirmation behaviour, then copy the generated URL. Add a WordPress Button block to the payment page and paste the URL into its link field. WordPress documents the Button block as a way to link a button to an external URL.

This route is genuinely fine for a small number of fixed payments. Its drawbacks are important: the form is hosted by Stripe, WordPress does not create a native order record, and you have limited control over conditional fields, custom workflows, and on-site confirmation. A Custom HTML block can also hold payment markup, but WordPress may remove scripts or iframes for users without the required unfiltered HTML capability.

Install a payment-form plugin

For a branded form inside WordPress, install and activate WP Simple Pay Pro Plugin, then follow its setup wizard to connect your Stripe account. Create a form for a one-time or recurring payment, set the currency and amount, and add the customer fields you actually need.

Insert the generated form on a page using the plugin’s available WordPress editor or page-builder integration. Do not collect card numbers in an ordinary WordPress form. Let Stripe-hosted fields or checkout handle payment details instead.

Configure confirmation and notifications

Set the success message or return page, payment receipt options, and the email address that should receive payment notifications. Make the confirmation state clear: tell the customer whether the payment succeeded, failed, or needs another attempt.

If the integration uses webhooks for recurring payments, fulfilment, or payment records, confirm that the webhook status is enabled or configured. Webhooks can fail when a firewall, security plugin, cache layer, REST restriction, or staging URL blocks Stripe’s request.

Test before going live

Run a complete test on desktop and mobile: open the page, submit the form, complete the payment, check the success message, confirm the receipt, and verify the transaction in Stripe and WordPress. Test a declined payment and, where relevant, a recurring payment or 3D Secure authentication.

Use Stripe test mode and test payment details rather than real card numbers. Stripe specifically warns against testing live mode with real payment details, and its test cards can simulate successful payments, declines, refunds, and authentication flows.

Switch to live payments

When the test succeeds, connect the live Stripe account or switch the plugin from test mode to live mode, then repeat the checkout once with a real low-value payment if appropriate. Check the payout account, confirmation email, refund process, and the page customers see after payment.

The fast route is a payment-form plugin such as WP Simple Pay Pro Plugin: connect Stripe, build the form, place it on a page, and test it. It is a better fit than WooCommerce when you need standalone one-time or recurring payment forms rather than a complete online shop.

The fast route

Let WP Simple Pay Pro Plugin do it

Standalone Stripe payment forms with one-time and recurring payments; ideal when you need payments without a full WooCommerce store.

Get WP Simple Pay Pro Plugin

Sources

  1. docs.stripe.com /api/payment_links/payment_links/create?__=&utm_source=opena…
  2. wordpress.org /documentation/article/custom-html/?utm_source=openai
  3. woocommerce.com /document/stripe/setup-and-configuration/connecting-to-strip…
  4. docs.stripe.com /testing?numbers-or-method-or-token=tokens&utm_source=openai

Questions

Can WordPress accept payments without WooCommerce?
Yes, WordPress can accept payments without WooCommerce by linking a button to a hosted Stripe Payment Link or by using a dedicated payment-form plugin. The payment processor handles the transaction, while WordPress displays the page or form. The manual link route is suitable for simple fixed charges, but it does not provide WooCommerce’s catalogue, cart, stock, shipping, or native order-management features.
Do I need a payment plugin to accept payments on WordPress?
You do not need a plugin for a basic fixed-price Stripe Payment Link, because you can place the link behind a WordPress button. You do need a plugin or custom server-side integration for an embedded payment form, recurring billing workflows, conditional fields, order records, or automatic fulfilment. Writing that integration yourself also means handling webhooks, security, errors, and updates.
Why is my Stripe payment form not working?
A Stripe form commonly fails because the site is still in test mode, the account connection is incomplete, JavaScript is being blocked, or a firewall, cache, security plugin, or REST restriction is blocking webhook requests. Check the browser console, plugin logs, Stripe’s webhook delivery log, and whether the page works with caching and optimisation temporarily disabled. Test the form on mobile as well as desktop.
Is HTTPS required for WordPress payments?
HTTPS is required for a trustworthy payment page and is expected by payment providers and customers. Even when card details are collected in Stripe-hosted fields, your WordPress site should use a valid SSL certificate so the page, redirects, forms, and customer information are protected. After enabling HTTPS, check for mixed-content warnings and confirm that the payment success and return URLs also use HTTPS.
Should I use a payment form or WooCommerce?
Use a payment form when you sell a small number of services, memberships, bookings, donations, or fixed-price items and do not need a full shop. Use WooCommerce when you need products, stock, shipping, taxes, customer accounts, carts, and order management. A standalone Stripe form is usually the faster setup, while WooCommerce is the better foundation for a catalogue-based store.