WPForms Stripe - WordPress Plugin
The WPForms Stripe addon allows you to connect your WordPress site with Stripe to easily collect payments, donations, and online orders.

Plugin Features
Are you looking to collect payments on your website? Whether you’re collecting donations or selling products and services, WPForms can help.
Stripe addon allows you to easily integrate your WordPress site with Stripe.
Once the user is done filling out the form, you can automatically prompt them to enter their credit card information and process the transaction using Stripe.
You can choose from our pre-built donation and billing order form templates, or you can start from scratch with a blank form.
Our drag & drop builder makes it really easy for you to customize the form, add and remove fields with a simple point and click.
Advanced payment fields allow you to add multiple items and display the total amount before the user orders, so they know exactly what they are paying for.
In the case of donations, users can easily choose from a donation amount or enter a custom amount to proceed with their donation.
Specifications:
| Release date: | 11-10-2020 | |
| Last updated: | 08-05-2025 | |
| Type: | Paid | |
| License: | GPL | |
| Subject: | e-Commerce for WPForms | |
| Compatibility: | W5.x W6.x | |
| Includes: | Plugin | |
| Language packs: |
|
|
| Developer: | WPForms | |
| Rating: | ||
Share with your friends!
How to Set Up WPForms Stripe for Payment Forms in WordPress
WPForms Stripe is useful not as a standalone "pay button," but as a working combination of a form, a payment field, Stripe Connect, test mode, and transaction verification. In this guide, we will walk through a calm, practical setup process: what to check before installation, which fields to add to the form, where to enable payments, how to avoid mixing up test mode and live mode, how to verify the result, and where to look if a payment fails.
This article is written for site owners, WordPress administrators, web professionals, or anyone who needs to accept payments through a form: payment for a service, a simple order, a contribution, a donation, a booking, or a subscription. This is not a rewrite of the product sales page. The main goal is to show the practical chain from site preparation to confident payment verification.
We will also look at where the basic WPForms Lite scenario ends and where the Pro addon features begin: conditional payment logic, delayed notifications after successful payment, subscription management, and more flexible workflows. If a feature depends on the version or on Stripe settings, it will be described carefully, without assuming it works the same way on every site.
What problem this form-and-Stripe payment setup solves
WPForms Stripe is ideal for situations where a site does not need a full online store, but does need controlled payments directly inside a form. This works well for one-time services, consultations, inquiries with a deposit, simple orders, voluntary contributions, event registration, and subscription payments. The goal is not to replace WooCommerce, but to remove unnecessary ecommerce overhead when a form with an amount, customer details, and secure Stripe payment handling is enough.
A typical workflow looks like this: a form is created in WPForms, customer fields, payment items, and the Stripe Credit Card field are added, then the Payments - Stripe section is opened in the form settings, payment processing is enabled, a payment description is set, an email field is selected for the receipt, and recurring payments are configured if needed. After that, the form is embedded on a page and tested with a trial payment.
The key difference between this setup and a standard contact form is that submission now has a financial status. It is not enough to see a "form submitted" message. You need to confirm that the payment was created, the status synced correctly, the test transaction appears in WPForms, and, when necessary, in the Stripe dashboard. That is why this guide spends so much time on result verification and webhooks.
It is important not to mix up these three layers:
- The WPForms form handles fields, validation, notifications, confirmation messages, and front-end display.
- Stripe handles payment entry, payment confirmation, payment methods, and financial events.
- Webhooks send status updates, refunds, subscriptions, and other changes back to WordPress so the administrator sees the current state.
When these layers are configured separately and then tested together, the payment form becomes predictable. When one layer is skipped, the usual symptoms appear: the card field does not display, test payments do not show up, an email is sent before payment is completed, a subscription is created with the wrong email, or the administrator cannot tell whether the payment was actually successful.
Who WPForms Stripe is a good fit for, and when another option makes more sense
A payment form built with WPForms works well when selling or collecting money starts with a questionnaire. For example, the customer selects a service type, enters their name and email, adds a comment, chooses a pricing option or amount, and then pays. In that scenario, the form is more useful than a product page because it collects the information needed to fulfill the order.
Good use cases
It works best for simple payment flows where the administrator does not need a complex catalog, shopping cart, inventory, or shipping workflow. WPForms Stripe is worth considering for the following cases:
- Payment for a consultation, audit, booking, or one-time service.
- A donation form with a fixed amount or several amount options using payment fields.
- Registration for a webinar, workshop, or small event with paid attendance.
- Collecting a deposit through an inquiry form when the final work is handled manually.
- A subscription or recurring contribution, if the confirmed feature set in your WPForms version and Stripe setup supports the required billing frequency.
In these cases, the user does not go through a full store experience. They see a form, understand the amount, enter payment details through Stripe, and receive confirmation. For smaller sites, this is often simpler than deploying a separate ecommerce system.
When the plugin may be the wrong tool
If you have dozens of products, variations, coupons, shipping, order statuses, inventory tracking, and customer accounts, it is better to look at WooCommerce or a dedicated ecommerce system. WPForms Stripe should not be turned into a store by manually imitating cart behavior. It is strongest when the form itself is the main interaction point.
There is also the opposite case: if you only need a single payment link without a form, Stripe Payment Links or a lightweight payment plugin may be easier. WPForms makes sense when you need to collect structured data along with payment, configure notifications, show different amount options, or tie the payment to an inquiry.
Practical rule of thumb: if the administrator needs to read the user's answers after payment and act on them, a form is the right fit. If payment only needs to trigger delivery of a digital product, create an order, and show shipping status, the form may not be the best center of the workflow.
What to check before installing and connecting Stripe
A payment plugin should not be tested like a decorative block. Before enabling payments, make sure the site is ready both technically and operationally. This saves time during troubleshooting because some errors look like WPForms issues even though the real cause is HTTPS, Stripe mode, caching, blocked requests, or the wrong form structure.
HTTPS and the form page
Stripe requires a secure page for live payments. Check that the page where the form will appear opens over https://, the browser shows no mixed-content warnings, and the redirect from http:// to https:// works reliably. If the page loads insecure images, scripts, or styles, fix that first and only then test payments.
Test Mode and Live Mode
In WPForms, the test mode setting applies to WPForms payments. It does not automatically switch other payment plugins on the site. If the site already uses WooCommerce, another Stripe plugin, or a separate payment form, check those modes independently. For WPForms, you should go through two cycles: first connect and test in test mode, then set up a separate connection for live mode.
Required fields for a clear payment form
For a Stripe workflow, you usually need an email field, a payment item, and a card field. Email matters not only for contacting the customer, but also for receipts and subscription scenarios. The payment item gives WPForms the amount, and the Stripe Credit Card field provides the Stripe payment input. If the form only collects a name and message but has no payment field and no amount, enabling Stripe in the settings will not turn it into a payment form.
Cache, protection, and script optimization
Payment forms are sensitive to aggressive JavaScript optimization. If the site uses script combining, deferred loading, strict bot protection, or web application firewall rules, plan to test the form page without those optimizations. You do not need to disable the entire site cache right away. Start by excluding the payment page and see whether the card field appears and the test submission succeeds.
| What to check | Why it matters | How to tell everything is fine |
|---|---|---|
| HTTPS on the form page | Payment data must be sent over a secure connection. | The browser shows no warnings, and the page opens over https://. |
| WPForms test mode | Lets you test payments without charging a real card. |
Test Mode is enabled under Payments, and the Stripe connection is confirmed. |
| Form fields | Stripe needs an amount, an email, and payment input. | The form includes an email field, a payment item, and Stripe Credit Card. |
| AJAX submission | WPForms documentation states that the Stripe field requires AJAX form submission. |
Enable AJAX form submission is enabled in Settings - General - Advanced. |
| Excluded from aggressive optimization | Script optimization can break the payment field or the submission flow. | There are no JavaScript errors on the payment page, the card field is visible, and the test succeeds. |
Installation, Stripe connection, and the first verification pass
If WPForms is already installed, go straight to the payment settings check. If not, install the plugin from the WordPress directory or upload the ZIP file you already have through Plugins - Add New - Upload Plugin. After activation, do not start by building a complicated form. First make sure WordPress recognizes WPForms, the admin area works without errors, and the settings page opens correctly.
You connect Stripe under WPForms - Settings - Payments. There you choose the currency, enable or disable test mode, and start the connection through Connect with Stripe. When you return to WordPress, check that a green indicator appears next to the connection status. This does not prove that a specific form can already accept payments, but it confirms the first layer of the setup.
Why Test and Live must be connected separately
One common trap is assuming that a successful test means live mode is ready. If the site was connected to Stripe while Test Mode was enabled, you need to disable test mode, reconnect, and save the settings before launching the form. That is a normal part of the process, not an error. It is how WPForms and Stripe keep test and live environments separate.
Do not run the first live payment test on a public page without checking it first. It is better to create a private or restricted page, place the form there, run the test scenario, then switch to live mode and perform a minimal real-world verification according to your business rules. If your payment policy does not allow testing live charges with an internal card, use the verification procedure approved by your finance policy and Stripe.
Webhooks as a separate checkpoint
Webhooks are needed to sync Stripe events with WPForms: statuses, refunds, subscriptions, and other updates. In current WPForms versions, they are usually configured automatically when the account is connected, but the documentation still includes a manual path in case automatic setup fails. For the administrator, the rule is simple: if the payment succeeds in Stripe but the status does not update in WordPress, check webhook delivery, not just the form.
In a manual setup, do not mix up test keys and live keys. Test mode uses test credentials, and live mode uses live credentials. If an endpoint is created in one mode while the site expects the other, events may never appear where you are looking for them. That is why every troubleshooting step should clearly note which mode WPForms is in, which mode the Stripe Dashboard is showing, and which events are being checked.
Quick recap: after installation, you should have more than just an active plugin. You need a confirmed chain: WordPress sees WPForms, WPForms is connected to Stripe, the mode was chosen intentionally, webhook syncing is not being ignored, and the form will be tested on a separate page.
Configuring the payment form: fields, amount, receipt, and metadata
Once Stripe is connected globally, you need to configure the specific form. This is a separate step because one site may have different forms: one for a one-time contribution, another for a paid service, and a third for a subscription. Global settings give WPForms access to Stripe, but payment is enabled inside each form.
Fields that define the payment
In the WPForms builder, add the fields that collect user details and the amount. WPForms documentation points to email, a payment field, and Stripe Credit Card. Supported payment fields include Single Item, Multiple Items, Checkbox Items, and Dropdown Items. The right choice depends on the use case: a fixed-price service, a set of plans, add-on options, or a list of choices.
For a service payment form, a name, email, service selection, final amount, and card field are usually enough. A donation form may also need an amount selector, a comment, and agreement to terms. An event registration form may include the attendee's name, contact details, number of seats, and internal questions. Do not overload a payment form with fields that are not needed to process the payment: the longer the form, the more places there are for errors and drop-off.
Enabling Stripe inside the form
In the form builder, open Payments - Stripe and enable Enable one-time payments if you need a one-time payment. Once enabled, additional settings appear. You can leave them empty during early testing, but for a real form it is better to fill in at least a clear payment description and the customer's email. That makes operations easier to understand both in Stripe and in the WPForms payment panel.
Payment description and receipt email
Payment Description helps distinguish transactions in statements and in the Stripe Dashboard. Keep it short and clear: for example, the service name, the form type, or an internal category code. Do not place personal user data there unless it is truly needed in the payment description. For linking the payment back to the original inquiry, metadata is usually the better tool.
The Stripe Payment Receipt field connects the Stripe receipt to the email field in the form. The Customer Email field helps Stripe associate the payment with the customer, and it is especially important for subscriptions. If the form contains multiple email fields, such as the payer's email and the attendee's email, choose the one that actually belongs to the person making the payment.
Metadata as a way to preserve context
The Custom Meta section lets you send extra values from the form to Stripe. This is useful if you want Stripe to show an inquiry number, service type, selected plan, or internal category. Metadata does not replace payment fields, but it helps the administrator quickly match a payment to the original request.
A good practice is to pass only the values needed for support and reconciliation. Do not send unnecessary personal data, long comments, medical details, passwords, internal notes, or every single form field as metadata. The less unnecessary data you store in the payment system, the easier it is to maintain order and privacy.
Where conditional logic may be useful
In the basic Stripe setup, the form usually handles one type of payment. In Pro scenarios, conditional logic can make it smarter: for example, the user chooses a one-time payment or a recurring contribution, and the form handles Stripe differently based on that choice. WPForms documentation separately describes conditional logic for Stripe Pro. It can be used for selecting a payment method, making payment optional, switching between one-time and recurring flows, and sending notifications only after payment is completed.
Do not enable conditional logic just for the sake of "flexibility." Every conditional scenario should be testable: what the user selects, which payment should be created, which notification gets sent, what appears in WPForms - Payments, and what shows up in Stripe. If a rule cannot be explained in one sentence, it will be hard to maintain.
One-time payments, subscriptions, and recurring plans
WPForms Stripe can handle both one-time payments and recurring charges, as long as the selected mode and product version support the scenario you need. From the user's point of view, it is one payment input. From the administrator's point of view, these are different processes: a one-time payment ends with a single transaction, while a subscription creates an ongoing relationship between the customer, the plan, and future Stripe events.
One-time payment
One-time payments are the easiest to test and maintain. The form has an amount, the user pays, and after successful processing the administrator sees the transaction. This mode works well for a service, ticket, one-time contribution, deposit, or simple order. If you offer several amounts, make them clear through payment fields instead of asking the user to enter a free-form value with no guidance.
Verification for a one-time payment should include more than the form itself. The user should understand what happened after submission: the payment was accepted, the request was sent, and any next steps are clearly explained. If the success screen only shows a generic "thank you," add wording that does not promise immediate fulfillment if the request will still be processed manually.
Recurring payments
For a subscription setup, enable Enable recurring subscription payments, then define the plan name, billing period, and customer email. WPForms documentation lists interval options such as daily, weekly, monthly, quarterly, semi-yearly, and yearly. For this article, it is less important to memorize the list than to choose a billing period that matches the actual service. If the service is delivered monthly, do not create a weekly subscription just because the option exists.
The plan name should make reconciliation easier. A poor name is "Plan 1." A good name is "Monthly support," "Annual membership," or a short internal code your team understands. If you create several plans, keep the naming logic consistent. This matters especially when the administrator needs to search for payments and subscriptions in Stripe.
What to verify with subscriptions
A subscription requires a longer verification cycle than a one-time payment. After a test submission, make sure the customer email is mapped correctly, the plan was created with the right interval, the status appears in WPForms payments, and webhook events are not being blocked. If you later cancel the subscription manually or issue a refund, confirm that the change syncs back to WordPress.
Do not turn a subscription into a hidden charge. The form should make it clear that the user is choosing a recurring payment, how often it will happen, and what they receive in exchange. The form text, confirmation message, and notifications should match the actual payment model.
Practical example: a consultation payment form with transaction verification
Below is a sample scenario you can adapt for a service, a small booking, or a paid inquiry. It does not require a store, but it does require a well-structured form and careful result verification. The goal is to build a form where the visitor chooses a consultation format, enters contact details, pays, and receives a clear confirmation.
Goal
Create a working "Consultation Payment" form where the user chooses one of two formats, enters a name and email, pays through Stripe, and the administrator sees both the payment and the inquiry details. This is a useful example because it includes an amount, contact data, confirmation, testing, and a clear result.
Preparation
- WPForms is installed and opens without errors.
- Stripe is connected under
WPForms-Settings-Payments. -
Test Modeis enabled for the first verification pass. - The form page loads over HTTPS or is being tested in a secure environment.
- The payment page is excluded from aggressive JavaScript optimization if that optimization breaks the payment input.
Setup steps
- Create a new form in WPForms and choose a blank form or a payment template if one is available in your installation.
- Add the
NameandEmailfields. Make the email field required because it will be used for the receipt and customer matching. - Add a
Multiple ItemsorDropdown Itemsfield with consultation options. Use clear names and amounts. - Add the
Stripe Credit Cardfield. Do not hide it behind conditional logic during the first test. - Open
Payments-Stripeand enableEnable one-time payments. - In
Payment Description, enter a short label such asConsultation payment. - In
Stripe Payment ReceiptandCustomer Email, select the customer's email field. - Add metadata such as consultation type and customer name if that helps with reconciliation. Do not include a long customer comment if Stripe does not need it.
- Check under
Settings-General-Advancedthat AJAX submission is enabled. - Save the form and publish it on a private page or use preview mode.
Verification
Fill out the form with test data and use a Stripe test payment method from the Stripe documentation. After submission, check three places: the on-page message shown to the user, WPForms - Payments with test data viewing enabled, and the Stripe Dashboard in test mode. If the payment is visible in only one place, do not treat the scenario as complete.
Expected result
The user sees a clear confirmation, the administrator sees the payment in WPForms, Stripe shows the test transaction, and the selected consultation format can be matched to the payment. If notifications are enabled, confirm that the email does not create the false impression of a successful payment before payment confirmation actually happens.
Important nuance
If the form submits but the payment field behaves inconsistently, first check AJAX submission, JavaScript errors, and page caching. If the payment succeeds in Stripe but the status does not change in WPForms, move on to webhook verification. Those two problems can look similar to the administrator, but they are solved in different places.
Verifying the result before launching the live form
Launching a payment form without testing is risky. Even if the card field appears, that still does not prove the correct mode is selected, the email is attached to the customer, payment events are syncing, or the administrator will be able to find the transaction a week later. The verification process should be short, but complete.
What to check in WPForms
In WPForms - Payments, review the test transactions. WPForms documentation specifically mentions the Test Data switch that helps display test transactions. This matters because administrators often look for a test payment in the regular list and incorrectly conclude that the payment was never saved.
Check the status, amount, email, and the form that generated the payment. If you use several payment forms, give them clear names. Otherwise, after some time it becomes difficult to understand which payment belongs to which page and which workflow.
What to check in Stripe
In the Stripe Dashboard, open the correct mode: test mode for tests, live mode for real transactions. Confirm that the test payment actually appears, the amount matches the selected option, the customer email was passed correctly, and the metadata provides enough context. If you are using subscriptions, review not just the first payment but the subscription object itself.
How to switch to live mode safely
When testing is complete, disable Test Mode in WPForms, reconnect Stripe for live mode, save the settings, and reopen the form page. Do not leave test hints on a public page, and do not use test wording in the real payment description. After switching, confirm that the form is not being served from cache in its old state.
Result verification should answer four questions: does the user see a clear outcome, does WordPress see the payment, does Stripe see the payment, and can the administrator link the payment to the original request?
Careful styling and compatibility adjustments
The payment form should look polished, but the Stripe payment field should not be treated like a regular HTML input. Part of the payment UI may run through secure Stripe elements, so it is not a good idea to forcibly rewrite its internal markup. It is safer to style the form container, spacing, buttons, helper text, and overall page rhythm, while leaving the payment field within the boundaries of the official output.
A small CSS snippet for the payment page
If the form lives on a dedicated page, you can add CSS through Appearance - Customize - Additional CSS, a child theme, or your standard custom CSS tool. The example below does not interfere with payment logic. It simply makes the form more compact, improves the button appearance, and highlights the total amount.
.wpforms-form .wpforms-field {
margin-bottom: 18px;
}
.wpforms-form .wpforms-submit {
border-radius: 6px;
padding: 12px 22px;
font-weight: 600;
}
.wpforms-form .wpforms-field-total {
padding: 12px 14px;
border: 1px solid #d9e2ef;
border-radius: 6px;
background: #f7fbff;
}
After adding the CSS, open the page on desktop and mobile, run a test submission, and make sure the button is not obscured, the card field is not cramped, validation errors are visible, and the total amount is easy to read. Rolling it back is simple: remove this snippet from wherever you added it.
What not to do
Do not add JavaScript that interferes with the card field, do not hide the payment field with arbitrary classes, do not move form elements after the page loads, and do not disable AJAX just to make a visual tweak. If you need to change labels inside the Stripe field, check the WPForms documentation first: for some Stripe modes, this is limited because the payment element is loaded through a secure iframe.
For cache compatibility, start by excluding the payment page only. If the problem disappears after exclusion, adjust optimization carefully: do not defer critical Stripe scripts, do not merge them with untested theme scripts, and do not enable aggressive minification on the form without retesting.
Practical ways to use WPForms Stripe on different kinds of sites
The same payment mechanism can solve very different tasks if you choose the right form fields and verify the result correctly. Below are several scenarios based on confirmed WPForms capabilities: payment fields, Stripe, email, metadata, subscriptions, and, if your version supports it, conditional logic.
Service with a deposit
The form collects a name, email, service type, comment, and a fixed deposit amount. You can pass the selected service type as metadata. After payment, the user receives confirmation, and the administrator links the payment to the request and continues processing it manually. A quick check is whether the payment appears in WPForms and whether the selected service makes it clear what was paid for.
Donation or membership contribution
The user selects the amount through a payment field. If you are using recurring contributions, configure a subscription plan with a clear name and interval. For these forms, it is especially important not to hide the recurring nature of the payment: the form labels and confirmation message should be transparent. If you need options such as "one-time or monthly," confirm whether conditional logic is available in your version.
Event registration
The form can collect attendee details, ticket type, and payment. Metadata is especially useful here: ticket type, event date, or group code if those values exist in the form. After testing, check not just the payment, but also the admin notification email. It should include enough detail that you do not need to open Stripe for every organizational question.
Paid application without a store
Sometimes a site is not selling a product but accepting an application that a staff member reviews later. A payment form works well if you need to charge a fixed service fee or processing fee. But if the application can be rejected, think through the refund policy and notifications in advance. Technically, the form can accept payment, but the business logic still needs to be fair to the user.
Why the payment form may not work and how to diagnose it
WPForms Stripe issues usually happen at the boundary between several systems. The user sees one form, but behind it are WordPress, the theme, WPForms, Stripe, cache, the browser, and sometimes hosting security rules. That is why troubleshooting should follow symptoms, not random clicks through every setting.
The card field does not appear
Symptom: the form is visible, but the payment field is empty, inactive, or never appears. Possible causes include AJAX submission being disabled, a JavaScript error, an optimization conflict, the Stripe script being blocked, the wrong form structure, or a payment-field mode issue.
What to check
- Make sure the form includes both the
Stripe Credit Cardfield and a payment field with an amount. - Check whether
Enable AJAX form submissionis enabled in the advanced form settings. - Look for JavaScript errors in the browser console.
- Check whether script combining, deferred loading, or minification is breaking the page.
- Confirm that the page opens over HTTPS.
Start with the simplest fix: save the form, temporarily exclude the page from optimization, verify AJAX, and then run the test again. If the field appears after optimization is disabled, reintroduce optimization gradually.
The test payment works, but the live form is not ready
Symptom: everything worked in test mode, but after switching to live mode the payments fail or the connection looks incomplete. A common cause is that test mode and live mode were not connected separately. In WPForms, you need to turn off Test Mode, run Connect with Stripe again, and save the settings.
Also check that the Stripe Dashboard is open in the same mode you are testing on the site. A test payment will not appear in the live list, and live events will not show up in the test section.
The payment exists in Stripe, but the status does not update in WordPress
Symptom: Stripe shows a successful transaction, but in WPForms the status is missing, delayed, or does not change after a refund or subscription event. In that case, look at webhooks. Automatic setup usually works in current WPForms versions, but the endpoint may be unavailable because of the current mode, security rules, a URL error, the wrong secret, or a hosting-side block.
Check the delivery log in Stripe, the endpoint mode, whether test and live keys match correctly, whether the webhook URL is reachable, and whether any rules are blocking Stripe requests. If the site sits behind a firewall or strict protection, make sure incoming webhook requests are not being cut off before they reach WordPress.
An email is sent before payment is confirmed
Symptom: the administrator or user receives a notification even though the payment is not yet complete or has failed. For more complex payment flows, this is risky because the team may start processing an unpaid request. In Pro scenarios, WPForms documents notifications that trigger only for completed Stripe payments. If your version does not include that feature, write notifications carefully: "request received" is not the same as "payment confirmed."
The amount or selected option does not match expectations
Symptom: the user selected one option, but a different amount appears in payments, or the administrator cannot tell what was actually paid for. Check the payment fields, conditional rules, total field, and metadata. If you use several options, test each one, not just the first. For recurring payments, verify the plan name and interval separately.
When it is better to roll back a setting
Roll back the latest changes if the payment field disappears, the test stops working, webhook events stop arriving, or the form starts sending incorrect notifications. The safest rollback order is this: remove custom CSS or JS, revert cache settings, disable new conditional rules, and test the basic form with a single payment option. Once the base flow works again, add complexity back one piece at a time.
Questions worth resolving before launching the form
Can WPForms Stripe be used with the free version?
The official WPForms documentation describes Stripe support for Lite users along with specific limitations. At the same time, some advanced features, such as conditional logic for Stripe payments, belong to Pro scenarios. Before launch, verify which features are available in your exact installation and plan instead of relying on old reviews.
Why does Stripe Credit Card require AJAX submission?
WPForms states that AJAX form submission must be enabled for Stripe to work correctly. In practice, this reduces the risk of an incorrect page reload during the payment flow. If the card field is not working, AJAX is one of the first things to check.
Do webhooks need to be configured manually?
In current WPForms installations, webhooks are usually configured automatically when Stripe is connected. But if status syncing is not working, the documentation provides a manual method for setting up the endpoint in Stripe and transferring the ID and secret into WPForms. The important part is not to mix up test and live values.
Can you accept Apple Pay and Google Pay?
WPForms documentation ties Apple Pay and Google Pay support to the Stripe Payment Element and Stripe's own requirements. So the answer depends not only on WPForms, but also on whether Stripe's conditions are met for the specific site, domain, and payment method. If the method does not appear, check Stripe's requirements and payment method settings.
Why does Stripe show the payment, but the user did not receive a receipt?
In test mode, Stripe may not send receipts automatically. For live mode, check which email field is selected in the form settings and review the receipt settings in Stripe. Also make sure the customer's email is actually filled in and passed to the correct field.
Can payment be made optional?
Yes, but that is already a conditional-logic scenario and it needs to be designed carefully. If you simply hide the payment field while the field remains required, the form may break for some users. Use documented conditional logic in a version that supports it, and test every option path.
Will a payment form affect site speed?
A payment form adds scripts and external Stripe interaction to the page where it appears. That is usually fine for a dedicated checkout or payment page, but there is no reason to place a payment form on every page of the site. For performance, it matters more to keep the form on a targeted page, avoid breaking the scripts through optimization, and retest the page after enabling caching.
When WPForms Stripe is the right choice
WPForms Stripe is worth using when payment needs to be part of a clear, structured form: the customer selects an option, enters details, pays, and the administrator receives the full context of the request. It is not the most powerful route for a large store, but it is a practical tool for services, donations, events, deposits, and straightforward subscription scenarios.
Before launch, verify the basics: HTTPS, test mode, a separate live connection, email and payment fields, AJAX submission, test transaction visibility in WPForms and Stripe, webhook operation, and clear notifications. If all of those pass, you can move into live use and only then carefully add conditional logic, metadata, and visual refinements.
If, after reading this, you can see that what you need is payment through a form rather than a store or a standalone payment link, you can download the ZIP archive, deploy it on a test copy of the site, and walk through the scenario described here until you reach your first verified transaction.
The most reliable approach is not to launch a complex form immediately. Start with a minimal payment flow, confirm the payment, verify the statuses, and only then add subscriptions, conditional rules, and extra fields. That keeps WPForms Stripe a manageable tool instead of a source of hidden errors on the payment page.


