Setup guide · WordPress

Setting up Demfilz Payment Forms for Stripe

A modern, secure Stripe payment form you can drop onto any page with a shortcode. Customers pay through Stripe's hosted checkout — card details never touch your site. Here's how to install it, connect Stripe and go live.

Updated 24 June 2026~10 minWordPress 5.6+ · PHP 7.4+
1

Install

Install it from the WordPress.org plugin directory and activate it.

2

Connect

Add your Stripe Secret API key.

3

Webhook

Add the endpoint and paste the signing secret.

4

Embed

Drop the shortcode onto any page.

What this plugin does

Demfilz Payment Forms for Stripe adds a clean, mobile-friendly payment form to your WordPress site that you embed anywhere with a single shortcode. When a customer submits the form, they're sent to Stripe's hosted checkout to enter their card details and pay. Your site never sees, handles or stores a card number — Stripe does all of that.

Use it to take invoice payments, deposits, bookings, donations or one-off charges, with a fixed amount or an amount the customer enters. Every successful payment is recorded in WordPress, confirmed by a Stripe webhook, and emailed to you.

You'll need: a WordPress site (5.6+) with PHP 7.4+, and a Stripe account. No Stripe PHP SDK or extra libraries are required — the plugin talks to Stripe over its standard API. Start with your test keys, then switch to live keys when you're ready.

Step 1 — Install & activate

  • In WordPress admin, go to Plugins → Add New → Upload Plugin.
  • Or install it straight from the directory: go to Plugins → Add New, search “Demfilz Payment Forms for Stripe”, click Install Now, then Activate. (Plugin page: wordpress.org/plugins/demfilz-payment-forms-for-stripe)
  • A new Stripe Payments item appears in the admin menu — everything below is configured under Stripe Payments → Settings.

Step 2 — Add your Stripe Secret API key

  • Open Stripe Payments → Settings.
  • In your Stripe Dashboard → Developers → API keys, copy your Secret key.
  • Paste it into the Stripe Secret API Key field. Use a test key (sk_test_…) while you set things up, then swap in your live key (sk_live_…) to take real payments.
  • Save changes.

Step 3 — Configure the webhook

The webhook is how Stripe tells your site, reliably, that a payment succeeded — even if the customer closes the tab. It's strongly recommended.

  • On the plugin's settings page, copy the Webhook Endpoint URL shown there.
  • In the Stripe Dashboard → Developers → Webhooks, click Add endpoint and paste that URL.
  • Under events to send, subscribe to checkout.session.completed.
  • Save the endpoint, then open it and reveal its Signing secret (whsec_…).
  • Copy that signing secret into the plugin's Webhook Signing Secret field and save.

Step 4 — Set a notification email & currency

  • Notification Email — where a confirmation is sent each time a payment succeeds.
  • Currency — your default 3-letter currency code (e.g. aud). This can be overridden per form with a shortcode attribute.
  • Save changes.

Step 5 — Add the form to a page

Add the shortcode to any page or post — in the block editor, use a Shortcode block (or a Custom HTML/Classic block):

[dpfs_payment_form]

That's the whole setup. The form now renders on that page, and payments will start flowing into the dashboard.

Adding the form — shortcode attributes

All attributes are optional. Use them to tailor each form — for example, lock a fixed amount on an invoice page, or set the currency for a specific product.

titleHeading shown above the form.
descriptionA short line of intro text under the title.
buttonCustom label for the submit button (e.g. "Pay now").
amountA fixed amount. When set, the amount field is locked to this value.
currency3-letter currency code for this form, e.g. aud. Overrides the default.
amount_labelCustom label for the amount field (e.g. "Invoice total").
themelight, dark or auto — how the form styles itself.

Example — a fixed $150 AUD invoice payment with a custom heading:

[dpfs_payment_form title="Pay your invoice" amount="150" currency="aud"]

Form fields

The embedded form collects, before sending the customer to Stripe:

  • Name
  • Email
  • Phone
  • Reference Number — e.g. an invoice or order number, so you can match the payment.
  • Message
  • Amount — editable by the customer, or locked when you set the amount attribute.

Payments dashboard

Under Stripe Payments → Payment Summary you get an at-a-glance view of what you've taken:

  • Total collected and a this-month figure.
  • Paid and pending counts.
  • A full list of payments with the customer details and reference.
  • CSV export for your records or accounting.

A payment is marked successful when Stripe confirms it via the checkout.session.completed webhook, with an on-page confirmation as a fallback if the webhook is briefly delayed. A notification email is sent at the same time.

Security

  • Card details are entered only on Stripe's hosted checkout — never on a form hosted by your site.
  • Your site never sees or stores card numbers, which keeps your PCI scope to a minimum.
  • Incoming webhooks are verified with the signing secret, so only genuine events from Stripe are trusted.
  • Payment records are written server-side in WordPress, not derived from anything the browser can tamper with.

FAQ

Do I need to install the Stripe PHP SDK?

No. The plugin communicates with Stripe over its standard API and bundles everything it needs — there's no Composer step and no separate library to install.

Is the webhook required?

It's strongly recommended. The webhook is the reliable signal that a payment succeeded, even if the customer closes the tab on the way back. There's an on-page fallback confirmation, but the webhook is what makes the records dependable, so you should set it up.

Where is card data handled?

Entirely on Stripe's hosted checkout. Your WordPress site never sees, processes or stores card numbers — it only records that a payment was made, along with the details the customer entered on your form (name, email, reference and so on).

Which currencies are supported?

Any currency your Stripe account supports. Set a site-wide default in Settings, and override it per form with the currency attribute using a 3-letter code such as aud, usd or gbp.

This plugin is independent and not affiliated with, endorsed by, or sponsored by Stripe. "Stripe" is a trademark of its respective owner.

← Back to plugins Need a hand setting it up?
FAQs

Common questions

Can I accept Stripe payments in WordPress without WooCommerce?

Yes — Demfilz Payment Forms for Stripe is a standalone payment form plugin, so you don't need WooCommerce or any ecommerce setup. All it requires is WordPress 5.6+, PHP 7.4+ and a Stripe account, with no Stripe PHP SDK or extra libraries to install. You drop the form onto any page with a shortcode and customers pay through Stripe's hosted checkout.

How do I add a Stripe payment form to a WordPress page with a shortcode?

Place the [dpfs_payment_form] shortcode on any page or post — in the block editor, use a Shortcode block. Optional attributes tailor each form: for example, [dpfs_payment_form title="Pay your invoice" amount="150" currency="aud"] renders a form with a custom heading and a locked $150 AUD amount. The form then renders on that page and payments flow into the plugin's dashboard.

Is Stripe Checkout PCI compliant when used with this plugin?

Card details are entered only on Stripe's hosted checkout — never on a form hosted by your site. Your WordPress site never sees, processes or stores card numbers, which keeps your PCI scope to a minimum. Incoming webhooks are verified with the signing secret, so only genuine events from Stripe are trusted.

How do I test Stripe payments in WordPress before going live?

Use Stripe's test mode: paste a test Secret key (sk_test_…) into Stripe Payments → Settings while you set things up, then swap in your live key (sk_live_…) when you're ready to take real payments. That lets you run the whole flow — the form, the hosted checkout and the webhook — without taking real money.

Can I take simple donations through a Stripe form on WordPress?

Yes — the plugin suits invoice payments, deposits, bookings, donations and one-off charges. Leave the amount field open so donors enter what they like, or lock it to a fixed value with the amount shortcode attribute. Every successful payment is recorded in WordPress, confirmed by a Stripe webhook and emailed to you.

How do I set up the Stripe webhook in WordPress?

Copy the Webhook Endpoint URL shown on the plugin's settings page, then in the Stripe Dashboard under Developers → Webhooks click Add endpoint and paste that URL. Subscribe to the checkout.session.completed event, then copy the endpoint's signing secret (whsec_…) into the plugin's Webhook Signing Secret field and save. The webhook is the reliable signal that a payment succeeded, even if the customer closes the tab.

Where do I download Demfilz Payment Forms for Stripe?

It's free on the official WordPress.org plugin directory (wordpress.org/plugins/demfilz-payment-forms-for-stripe). In your WordPress admin go to Plugins → Add New, search “Demfilz Payment Forms for Stripe”, click Install Now, then Activate. A Stripe Payments item then appears in the admin menu where everything is configured.

Want a WordPress plugin like this?

Payments, shipping, integrations or something custom — tell us what you need and we'll come back with a plan and a fixed quote.