Formidable Stripe - WordPress Plugin
Integrate your WordPress forms with Stripe to process your one-time and recurring payments. Stripe forms enhance the user experience by allowing users to stay on your site while securely making a payment.

Plugin Features
The plugin seamlessly integrates a payment gateway within Formidable Forms, streamlining transactions for users. With its robust features, users can securely handle payments directly through the form submissions. It offers a user-friendly experience, ensuring a smooth payment process without the hassle of redirections or complex setups.
Enhancing the functionality of the forms, the plugin empowers users to collect payments efficiently without compromising security. By leveraging its advanced payment processing capabilities, businesses can easily set up and manage payments within their forms, providing a seamless experience for both administrators and customers. This results in enhanced productivity and convenience for handling transactions.
By enabling direct payment processing within Formidable Forms, Formidable Stripe offers a versatile solution for businesses looking to streamline their payment collection processes. Its intuitive features empower users to create custom payment forms tailored to their specific needs, allowing for easy customization and integration with existing forms. This flexibility ensures a smooth and personalized payment experience for users.
The plugin boasts a range of customizable options, allowing users to tailor the payment forms to align with their branding and requirements effortlessly. This customization feature enables businesses to maintain a consistent look and feel across their payment forms, enhancing brand identity and user experience. Additionally, the plugin offers flexibility in setting up various payment methods, catering to diverse needs and preferences.
Incorporating secure payment processing capabilities, the plugin prioritizes data protection and adherence to industry standards. By encrypting sensitive information and ensuring PCI compliance, it offers a secure environment for handling transactions. This focus on security instills trust and confidence among users, reinforcing the reliability of the payment processing system integrated with Formidable Forms.
Specifications:
| Release date: | 11-10-2020 | |
| Last updated: | 17-09-2026 | |
| Type: | Paid | |
| License: | GPL | |
| Subject: | e-Commerce for Formidable Forms | |
| Compatibility: | W5.x W6.x | |
| Includes: | Plugin | |
| Language packs: |
|
|
| Developer: | Formidable Forms | |
| Rating: | ||
Share with your friends!
How to Set Up Formidable Stripe for WordPress Payment Forms
Formidable Stripe is not just there to add a payment field to a form. In a real project, it ties together the Formidable Forms builder, your Stripe account, the amount pulled from form fields, payment events, notifications, and result verification inside the WordPress admin. This guide focuses on a practical working setup: how to prepare the site, connect Stripe, configure the payment action, test a payment, save the status, and avoid losing a submission because of a form logic mistake.
This guide is for a site owner, WordPress administrator, or webmaster who already understands the purpose of the form: collecting payment for a service, registration, a donation, a subscription, a request with a calculated total, or access to content. It does not repeat the general product overview. Instead, it gives you a practical walkthrough of how to use Formidable Stripe carefully and how to confirm that payments are actually working as expected.
One important limitation up front: you cannot validate payment forms by appearance alone. A payment field may look fine on the page, but that does not mean the amount is reaching Stripe, the status is returning to Formidable, or the email is being sent after a successful payment. That is why this guide is built around the chain setup - test submission - payment status - post-payment action.
When This Plugin Actually Solves the Problem
Formidable Stripe works best when you need a flexible form with payment, not a full WooCommerce cart. Typical examples include a consultation request with a fixed price, event registration, a donation with a custom amount, course payment, a service request with a calculated total, or a subscription where the user chooses a plan directly in the form.
The main value of combining Formidable Forms with Stripe is that payment becomes part of the form itself. The user fills out fields, sees the amount, enters payment details through the Stripe Element, submits the form, and the administrator receives the entry, the payment status, and can trigger follow-up actions after payment. That is different from a simple Payment Link, where the form and the payment often live separately.
This plugin is especially useful if the site already uses Formidable Views, calculated fields, conditional logic, hidden fields, post creation, or event-based emails. In that kind of system, payment is not just a separate button. It becomes the condition for the next step: send an email, publish a post, display a subscription, grant access, or save a status to a field.
Good Use Cases
- Collecting payment for a service after the user completes a detailed request form.
- Event registration with multiple pricing tiers, discounts, or attendee counts.
- A donation where the amount is chosen by the user or calculated from several fields.
- A recurring subscription for a membership, gated section, support plan, or maintenance service.
- An order form without a shopping cart, when WooCommerce would be excessive.
- Paid post submission, where the post should move from draft to published only after payment.
When Another Approach Is Better
If you need a full online store with a product catalog, inventory, shipping, tax zones, coupons, order statuses, and a customer account area, it is usually more practical to build the process with WooCommerce and a Stripe payment gateway for WooCommerce. If all you need is a single payment button without a form, Stripe Payment Link or a separate WordPress plugin for simple Stripe forms may be a better fit.
Formidable Stripe can also be unnecessary if your entire payment workflow is already handled by an external service. In that case, adding another payment layer inside WordPress only increases the number of failure points: the form, Stripe Connect, email, cache, security, admin permissions, and status handling.
What to Check Before Installing and Connecting Stripe
A payment plugin should not be installed on a bare, unprepared site. It belongs in an environment where roles, security, and the testing process are already clear. Preparation should not turn into bureaucracy. Its purpose is simply to reduce the risk that a test form accidentally accepts a real payment, or that a live form remains stuck in test mode.
Start by making sure Formidable Forms itself is installed and up to date, and that the form you need already exists at least in draft form. Then confirm that the site runs over HTTPS. The official Formidable documentation states that Stripe forms require SSL, even though testing may work on an unencrypted connection. For public payments, you should not rely on that testing exception.
Minimum Checklist Before the First Launch
- Formidable Forms is active on the site, and the required form has been created in the admin panel.
- The administrator has access to both WordPress and a Stripe account with a role that allows connecting the account through Stripe Connect.
- The site is available over HTTPS, and payment pages are not breaking because of mixed content.
- You know what amount will be charged: fixed, user-entered, or calculated by the form.
- You know what should happen after payment: an email, a post, a subscription, publication, a notification, or a status display.
- There is a test page hidden from random visitors where you can submit the form without risking real users.
Practical rule: do not connect Formidable Stripe directly to a live form until you have decided where the payment status will be stored and which action should run after a successful payment.
Compatibility with the Theme, Cache, and Security Layer
Payment forms are sensitive to scripts. If the theme aggressively optimizes JavaScript, the cache plugin delays scripts, and the site security layer inspects POST requests too aggressively, the form may look normal while still failing to process payment. You do not need to turn everything off before testing. It is enough to know in advance where the cache settings, page exclusions, and error logs are located.
For a payment page, it is usually wise to avoid aggressive script combining, deferral, or relocation if Stripe Element stops loading afterward. That does not mean the entire site has to run without optimization. Payment page optimization should be tested separately: first make sure payment works reliably, then gradually reintroduce performance tweaks.
Installation, Activation, and Connection Through Stripe Connect
Installation starts in WordPress, but the key step happens not in a field for secret keys, but in the Stripe Connect connection flow. According to the current Formidable Stripe documentation, the integration uses Stripe Connect so the administrator does not have to store raw API keys manually inside the site. That reduces the risk of copy-paste mistakes and makes the connection easier to manage.
The overall path looks like this: install Formidable Forms, enable the Stripe integration or separate Stripe add-on, go to the global payment settings, open the Stripe tab, and click Connect to Stripe. The connection must be completed separately for test mode and live mode. That is useful because you can run test payments first, then switch the form to the live environment only after everything has been verified.
How to Tell the Connection Worked
After authenticating with Stripe, the user returns to the site. Formidable settings should show a clear connection status. Do not assume everything is fine just because the button disappeared or the page closed. Check the actual connection status and confirm which mode you are in. For a payment form, it is especially important not to mix up the test and live connections.
- Open
Formidable→Global Settings→Payments. - Go to the
Stripetab. - Check the connection status and the selected mode.
- For testing, enable test mode and save the settings.
- After verification, repeat the connection for live mode if the form is meant to accept real payments.
The Formidable documentation specifically notes that webhooks are handled automatically in this integration and do not require manual setup. That does not eliminate troubleshooting: if the payment status is not coming back, you still need to inspect the Formidable log, the Stripe log, and the site state. But for a basic launch, the administrator does not need to create an endpoint manually.
What Not to Do During Connection
Do not paste secret keys into the form, do not share access with contractors unless necessary, and do not store users' payment details in regular form fields. Payment details should be processed by Stripe. In Formidable, you can store the entry, amount, status, payment ID, and other internal details, but never the full card number.
If the connection button does not open Stripe or hangs, first check whether the server can make outbound requests, whether cURL is enabled, and whether your hosting environment is blocking communication with Formidable services. The official documentation associates these failures with network restrictions, corporate firewalls, or server-side blocking.
How to Build a Payment Form Without an Unnecessary Cart
Once Stripe is connected, the main work moves into the form itself. In the Formidable editor, add the fields that explain what the user is paying for: name, email, plan selection, quantity, comment, a hidden internal status, or a calculated amount. Then add the Payment field. The documentation emphasizes that the automatically added Payment method field is required for payment processing, so it must not be removed or broken with conditional logic.
In Formidable Stripe, the amount can be fixed or pulled from a form field. If the amount is calculated, it must be numeric. The error "Please specify an amount for the payment" often appears when the amount field contains currency symbols, commas, text, or the wrong shortcode. That is why it helps to validate the amount separately before connecting the payment action: does the total change correctly when options are selected, and does it remain a number?
Fields You Usually Need
- An email field, because it helps identify the user, send confirmation, and trigger Stripe Link.
- A plan or service selection field if the amount depends on the chosen option.
- A quantity field if the user can pay for multiple seats, tickets, or service units.
- A calculated field if the amount is based on multiple conditions.
- A hidden payment status field if you later need to filter entries or display the result through a View.
- The Payment field, which handles payment input and should not be removed after the Stripe action is created.
Amount: Fixed or Calculated
A fixed amount is simpler. It works well for a single service, one ticket, a standard fee, or payment for a request. A calculated amount is more flexible when the user chooses a plan, the number of participants, add-ons, or a custom donation. But a calculated amount requires more testing, especially if Apple Pay, Google Pay, Stripe Link, or a multi-page form is involved.
For dynamic amounts, it is safer to use a separate visible total field so the user clearly sees what will be charged. If the total is hidden, the administrator may not notice a formula error until the first complaint arrives. A good payment form should always answer three questions: what the user is paying for, how much will be charged, and what happens after payment.
How to Validate the Calculation Before Connecting Payment
Before tying the Stripe action to the amount, submit the form without a real payment flow or preview it and test there. Change plan options, quantity, and add-ons, then confirm that the total remains numeric. If the field displays a nicely formatted string like "$49.00" or "49 dollars," that may be helpful to the user, but the Amount setting in the payment action may need a clean numeric value.
A good practice is to separate display from the internal amount. The visible field can explain the calculation to the user, while the internal field passes a number to Stripe without extra symbols. If you do not have that setup, at least test every option manually, especially edge cases: a zero amount, a discount, a maximum quantity, and a scenario with multiple add-on services.
The Payment Action: Amount, Description, Currency, and When the Charge Happens
The payment action is created in the form settings: Settings → Actions & Notifications. In the eCommerce section, choose the Stripe action. This action is what links the form fields to the payment: it defines the name, description, amount, payment type, currency, customer data, conditional logic, and post-payment behavior.
The action name is visible in the admin area, so do not give every action the same name. If the form includes several scenarios, use clear internal labels such as "One-Time Consultation Payment," "Membership Subscription," "Donation," or "Card Payment Only." That makes troubleshooting much easier when you need to locate a payment action ID or understand which action actually ran.
Key Action Settings
| Parameter | Why It Matters | How to Verify It |
|---|---|---|
| Action Name | Helps distinguish multiple payment actions inside the same form. | Open the form and confirm that the name describes the real scenario. |
| Description | Sends a clear payment description to Stripe. | Use a short text or a field value if you need to distinguish submissions. |
| Amount | Determines how much will be charged. | Make sure the value is numeric and does not contain currency symbols. |
| Payment Type | Selects a one-time payment or a recurring scenario. | Match the payment type to the business goal, not just a familiar default setting. |
| After Payment | Lets you save a status, update a field, or trigger the next step. | Create a hidden status field and verify it after a test payment. |
When to Use Conditional Logic
Conditional logic is useful when the payment action should not run every time. For example, the user chooses either "Pay by card" or "Pay in cash." In that case, do not hide the Payment method field with complex logic unless you fully understand the consequences. It is more reliable to set the condition on the Stripe action itself so the action runs only when card payment is selected.
If the form includes multiple payment plans, each action should have its own condition. Otherwise, you may end up with duplicate charges or the wrong scenario being triggered. One form can be complex, but each payment action should have a clear execution rule.
When the Entry Gets Processed
Stripe settings include an option that determines when one-time payments are processed: before the entry is created or after it is created. For some conditional scenarios, Formidable documentation recommends the after entry is created option. The practical reason is simple: if the form depends on entry data, status values, conditional actions, or later processing, you need to understand at what point the entry already exists.
Do not change this setting experimentally on a live form. First repeat the full scenario on a test form: submission, payment, the entry in Formidable, status in Payments, and the email after successful payment. If changing the processing order causes the email or the entry to disappear, revert to the previous setting and review the event chain.
What Counts as a Safe Rollback
A safe rollback does not mean deleting the Stripe action from a live form in the middle of testing. Save the current configuration first, then change only one parameter: processing timing, amount, launch condition, or After Payment. If the test gets worse, revert only that parameter. This approach is especially important for forms with multiple pricing branches, because fixing one path can quietly break another.
If the form is already accepting real submissions, it is better to create a copy of both the form and the page. In the copy, you can test a new processing order, a new amount, or Link without risking current payments. Once the test succeeds, transfer the changes to the main form from a checklist, not from memory.
Recurring Payments, Stripe Link, and Additional Payment Methods
Formidable Stripe supports more than one-time payments. The documentation covers recurring payments, a trial period, recurring payment limits, Stripe Link, additional payment methods, and even manual payment capture for scenarios where the charge should be completed later. These features are useful, but they require stricter validation than a simple one-time payment.
A recurring setup makes sense for memberships, subscriptions, maintenance services, recurring donations, or access to a restricted section. In the settings, you need to choose the payment type, the billing interval, and, if needed, a limit on the number of charges. If the form is tied to user access, be sure to decide how the user will see their subscription status and how they will update their card.
Stripe Link
Stripe Link speeds up repeat payments by using saved payment details in the Link network. In Formidable, it can be enabled in the Stripe action together with additional payment methods. The documentation warns that the Link action is not compatible with other Stripe actions in the same form, so you should not build a form with multiple parallel Stripe actions if Link is enabled.
In multilingual or international projects, it is especially important to verify Link availability and behavior by region. Stripe notes that payment method support depends on the country, currency, Stripe product, and usage scenario. You should not promise users that every wallet or bank method will be available in every country or for every subscription.
Manual Payment Capture
In some workflows, the payment is authorized first and captured later. This is useful for bookings, service requests that need review, pre-orders, or cases where the administrator must confirm readiness before charging. In Formidable, this is part of the more advanced feature set. After authorization, the payment appears with a status that must be manually completed later.
This mode should not be enabled just in case. If the team does not regularly review authorized payments, money may never be captured in time. The form, the emails, and the internal workflow should make it clear who performs the capture and when.
Practical Example: Consultation Payment with Confirmation After Payment
Let’s look at a real-world example that can easily be adapted for a service, event registration, a site audit, or a paid review. The goal is to create a form where the user chooses the consultation type, sees the final amount, pays through Stripe, and the administrator receives an email only after a successful payment. This is much more useful than sending the notification immediately after the entry is created, because an incomplete payment should not start the actual workflow.
Goal
The target is a form called "Consultation Payment" with name, email, format selection, final amount, a payment field, and a hidden payment status field. After a successful payment, the status is saved in the entry and the administrator receives an email with the request details. If the payment fails, the "ready to process" email is not sent.
Preparation
- Formidable Forms is installed and connected to Stripe in test mode.
- A test page has been created and the form is published there.
- The form includes service options such as a short consultation, an extended review, and a rush request.
- The amount is calculated by the form or defined in the Stripe action through the selected field.
Setup Steps
- Create a new form or open an existing request form.
- Add the
Name,Email, consultation format selection, and final amount fields. - Add a hidden field called "Payment Status" to store the value after payment.
- Add the Payment field and save the form.
- Open
Settings→Actions & Notificationsand add a Stripe action. - In the
Amountfield, use the calculated field or a fixed amount. - In
After Payment, add a rule so that when the payment status isCompleted, the hidden field is updated with the valuecompleted. - Create an email action for the administrator and tie it to the successful payment event, if that option is available in your configuration.
- Publish the form on the test page and run a test submission.
Verification
After submitting the form, open Formidable → Payments. The test entry should show the payment, test mode, amount, and status. Then open the form entry itself and check the hidden status field. If the email is supposed to be sent after a successful payment, make sure it is not sent when the payment is incomplete.
Expected result: the entry is created, the test payment appears in Formidable Payments, the amount matches the form, the status is updated, and the operational email is sent only after payment is confirmed.
A Detail That Often Gets in the Way
If you added conditional logic to the Payment method field or removed the automatically created field, Stripe may not receive the required data. In that case, the logs may show the status requires_payment_method, or the payment may not be created at all. The fix usually starts not in Stripe, but by restoring the payment field and recreating the Stripe action.
How to Verify the Result Before Publishing the Form
Formidable Stripe should be verified in two places: the user-facing form and the admin panel. The front end shows that the form is visible, the payment field loads, the amount is clear, and the post-submission message is not misleading. The admin panel shows that Formidable created the entry, Stripe processed the payment, the status came back, and the follow-up actions ran at the correct time.
Test Payment
In Stripe test mode, you can use the test cards listed in the official Stripe documentation. Formidable also describes a basic test flow using the card number 4242 4242 4242 4242, a future date, and any CVC. Do not use real cards in test mode, and do not test a live form with random visitors.
- Enable test mode in the Stripe settings for Formidable.
- Open the form page as a regular user.
- Fill out the fields so the amount is above the minimum test value.
- Enter the test card and submit the form.
- Check the entry in Formidable Entries.
- Check the payment in
Formidable→Payments. - Check the event or payment in the Stripe Dashboard.
What Counts as a Successful Verification
Success is not just a "form submitted" message. A successful verification means the amount did not change unexpectedly, the payment status is clear, the required emails were sent after payment, and no extra actions were triggered. If the form includes a subscription, also verify how the subscription is displayed to the user, the [frm-subscriptions] shortcode, the View filter, or the Stripe Customer Portal link if you use it for card updates.
If the form uses multiple payment actions, test each path separately. A one-time payment, a subscription, a trial, Link, and cash payment are all different scenarios. One successful test does not prove that the other branches of the form work correctly.
After Payment: Emails, Statuses, Views, and Safe Automations
The strongest part of Formidable Stripe is what happens after payment. This is where the form stops being just a payment field and becomes a workflow: an email is sent after a successful payment, a post is published only after the payment is complete, the status is saved to a hidden field, and the user can view subscriptions through a View or shortcode.
The official Formidable documentation describes a range of events: successful payment, failed payment, processing payment, canceled subscription, refunded payment, and other statuses. That makes it possible to avoid sending confirmation too early. For example, with some payment methods, the status may be processing, and the form should clearly tell the user that the payment was submitted but is not yet complete.
Saving the Status to a Field
A hidden status field is a simple and useful technique. It helps you filter entries, show the result to the user through a View, and trigger additional actions. In the After Payment setting, you can write a value to the field when the status is Completed, and if needed add values for refunded or canceled. This is especially useful when a site editor needs to see the request state without switching to Stripe.
Emails After Payment
For a payment form, the "request received" email should usually be tied to a successful payment event, not to entry creation. Otherwise, the administrator may start working on a request the user never paid for. For recurring payments, the logic is even more nuanced: a successful renewal, a failed charge, and a canceled subscription may each require different emails.
A Safe Developer Snippet for an Internal Notification
If you need a small amount of technical control, you can use the documented hook frm_payment_status_complete. Below is a developer example that sends an internal email to the administrator only for a specific payment action ID. Add it through Code Snippets or a child theme. Do not modify WordPress core, Formidable Forms, or Formidable Stripe.
add_action( 'frm_payment_status_complete', 'site_notify_paid_formidable_entry' );
function site_notify_paid_formidable_entry( $atts ) {
$target_action_id = 450; // Replace with the ID of the required Stripe action.
if ( empty( $atts['payment'] ) || $target_action_id !== (int) $atts['payment']->action_id ) {
return;
}
if ( 'complete' !== $atts['payment']->status ) {
return;
}
wp_mail(
get_option( 'admin_email' ),
'Formidable payment complete',
'Payment completed for entry ID: ' . (int) $atts['payment']->item_id
);
}
Test the snippet only in test mode: submit the form, make sure the email arrives once, then test another payment action and confirm that it does not trigger this notification. The rollback is simple: disable the snippet in Code Snippets or remove the code from the child theme. If you are not sure about the action ID, find it in the Stripe action settings as described in the Formidable documentation.
Most sites do not need code-level customization. If the task can be solved through an email action, After Payment, and hidden fields, it is better not to add PHP. A snippet only makes sense when the internal workflow requires a very specific automation.
Payment Methods, Amounts, and Limitations You Cannot Ignore
Stripe supports many payment methods, but the availability of a specific method depends on the country, currency, Stripe product, and payment type. Formidable Stripe can display additional payment methods and Link, but that does not mean every method is appropriate for recurring billing or for your audience. Stripe documentation clearly separates support by product and scenario.
For an administrator, the takeaway is simple: if you enable additional payment methods, do not test only the card flow. Also test how the form behaves with wallets, bank methods, redirect-based flows, and processing statuses, if they are available in your account. Some methods do not complete instantly, which means your emails and statuses must account for an intermediate state.
Dynamic Amounts and Wallets
The Formidable documentation describes a specific case: when the amount is dynamically calculated and Stripe Link is enabled, Apple Pay or Google Pay may display an incorrect amount. The suggested workaround is to use a multi-page form with a page break between the amount and the Payment field so that Link and the payment field initialize only after the final amount has been calculated. This is a good example of why a complex form cannot be validated with one quick click.
Storing Payment Data
Sensitive card data should not be stored in regular form fields. Formidable states that with the Stripe integration, payment input is handled inside a Stripe iframe and Stripe takes care of the compliance side. Formidable stores the entries, payments, statuses, and internal identifiers. For an administrator, that means one thing: do not add manual "card number" fields and do not ask the user to submit payment details through ordinary text inputs.
Formidable Stripe Errors and Payment Troubleshooting
Payment problems often look the same: the user says the form failed, the administrator sees an entry without a payment, Stripe shows an incomplete intent, and emails go out at the wrong time. Troubleshooting works best when it follows symptoms, not guesses. Below are the most common issues for Formidable Stripe and WordPress payment forms.
Stripe Token is missing
Symptom: the form reports that the Stripe Token is missing, or no payment is created. Possible causes include a missing Payment field, an incorrect Stripe connection, multiple payment forms on the page, another Stripe plugin conflicting with scripts, or outdated versions of Formidable or the add-on.
Check that the Payment field exists, verify the Stripe connection status, review plugin updates, and confirm how many payment forms are on the page. If there are multiple Stripe forms on one page, temporarily leave only one and run the test again. If another plugin also loads Stripe Elements, test for a conflict on a site copy or in safe mode.
No such plan
Symptom: a recurring payment fails and Stripe reports that the plan cannot be found. Formidable documentation links this to situations where the form settings were created in one Stripe account or mode and the account was later changed. Go back to the Stripe action settings, save them again, and make a small edit so the plugin recreates the plan in the current account.
No such customer
Symptom: a logged-in user who has paid before gets an error saying the customer does not exist. The cause may be a changed Stripe account or a deleted customer in Stripe. In most cases, the next attempt may work after the old customer ID is unlinked, but user metadata should only be changed by a developer or an experienced administrator.
requires_payment_method in Stripe logs
Symptom: the Stripe logs show that the PaymentIntent requires a payment method. A common cause is that the automatically added Payment Method field was removed, modified, or hidden by conditional logic. The fix is to remove the broken Payment field and Stripe action pairing on a test copy, recreate it, and avoid putting conditional logic on the internal field unless you fully understand the consequences.
The Amount Is Not Passed or an Amount Error Appears
Symptom: the form asks for an amount or charges the wrong value. Check that the Amount setting in the Stripe action receives a number, not a string with a currency symbol, comma, or text. If the amount comes from a field with separate values, use the value itself, not the option label. After fixing it, run tests for each pricing path.
No Payments in Formidable Payments
Symptom: the form submits, but no payments appear in Formidable → Payments. Check whether the Payment method field was removed, whether conditional logic is applied in the wrong place, whether the server is blocking creation of the payments table, and whether there are errors in wp-content/plugins/formidable-stripe/formidable-payments/log/results.log.
Connect to Stripe Does Not Work
Symptom: the connection button does not open Stripe or the request hangs. Check cURL, the server's outbound connections, and any blockage affecting communication with formidableforms.com. If the site is behind corporate security or a strict hosting filter, you may need help from the hosting provider or Formidable support.
Incorrect Amount in Apple Pay or Google Pay
Symptom: a wallet shows a placeholder or incorrect amount when the form uses a dynamic total. For this case, Formidable recommends moving the Payment field to the next page of a multi-page form after the amount calculation step. After making that change, test every pricing option and keep the previous form version as a backup.
A Minimal Troubleshooting Sequence Without Chaos
If the error is unclear, do not start by reinstalling the plugin. First determine where the chain breaks: the form loads, the entry is created, the Payment field is present, the intent appears in Stripe, the status returns to Formidable, and the email is sent. That sequence reveals the real failure point much faster.
Then change only one layer at a time. If the payment field does not load, inspect scripts, the theme, cache, and Stripe plugin conflicts. If the field is there but the status does not return, inspect Formidable Payments, the Stripe Dashboard, and the logs. If the status exists but the email did not arrive, check the email action trigger and SMTP. One check - one system layer, otherwise it is easy to create a new symptom and lose the original cause.
When to roll back a setting: if payments disappear after changing the payment action, statuses stop updating, or the form starts submitting without payment, restore the previous working configuration and repeat testing one change at a time.
Safe Launch on a Live Site
After successful testing, you can prepare the form for publication. But moving to live mode is a separate stage, not just the last click in the settings. You need to make sure the live Stripe account is connected, test mode is off, the real page is not being aggressively cached, emails are configured for the correct recipients, and the user sees a clear message after payment.
Publishing Sequence
- Create a backup of the form or export the configuration if that is part of your workflow.
- Make sure the test form is not indexed and not accessible to random users.
- Connect live Stripe mode and verify the connection status.
- Turn off test mode only after all fields, amounts, and notifications have been verified.
- Publish the form on the target page and test it as a regular visitor.
- Check the entry, payment, and email after the first controlled live payment.
If the site uses caching, exclude the payment page from the most aggressive rules. You do not have to disable cache sitewide. You only need to confirm that Stripe and Formidable scripts are not breaking and that users are not seeing a stale form state.
At this point, it makes sense to move to the download section and get the installation file if you have not yet added the plugin to your test environment: download the installation file. Test it on a site copy first, then move the verified configuration into the live form.
Questions About Setting Up and Using Formidable Stripe
Can I use Formidable Stripe without WooCommerce?
Yes. That is one of the main reasons to use Formidable payment forms in the first place. If you need a payment form for a service, request, donation, or subscription without a product catalog and cart, Formidable Stripe may be more convenient than WooCommerce. But if you need products, shipping, tax zones, and full order management, WooCommerce is usually the more logical choice.
Why did a Payment method field appear in the form, and can I remove it?
You should not remove it. Formidable documentation states that the Payment method field is added automatically and is required to process Stripe payments. If it is removed, modified, or hidden with the wrong logic, the payment may never reach Stripe.
Do I need to set up webhooks manually in Stripe?
For the basic Formidable Stripe connection flow, the documentation says webhooks are handled automatically. But if the payment status does not return, you should still check Formidable Payments, the Stripe Dashboard, plugin logs, site security, and server limitations.
Can it accept subscriptions?
Yes. Recurring payments are covered in the Formidable Stripe documentation. Configure the payment type, billing interval, and, if needed, a payment limit or trial. Before going live, test not only the initial payment but also how the user sees the subscription and how the administrator will handle cancellations or failed renewals.
Why did the test payment succeed, but the email was not sent?
Check which event the email is tied to. If the email should be sent after payment, it should not be configured only for entry creation. Also check WordPress mail delivery, SMTP, the payment status, and the conditional logic of the email action.
What should I do if Stripe Link shows the wrong amount?
If the amount is calculated dynamically and you are using Apple Pay, Google Pay, or Link, review Formidable's recommendation for a multi-page form: the amount should be fully calculated before the Payment field loads. After that, test every pricing option.
Can I store the card number in Formidable?
No. You should not do that, and it is unsafe. Payment data should be handled by Stripe through secure elements. In Formidable, store the entry, amount, status, payment ID, and internal fields, but never the full card number.
Who might find Formidable Stripe not suitable?
It may be unnecessary for a full store with a shopping cart, for a project that only needs one simple payment button, or for a team that already uses another form builder with mature Stripe workflows. The choice should be based on the workflow, not just on whether Stripe appears in the integrations list.
When Formidable Stripe Is the Right Choice
Formidable Stripe is a good choice when payment needs to be built into the form rather than live separately from the request. Its strength is the connection between the amount, form fields, conditional logic, payment status, emails, subscriptions, and follow-up actions. That is why it works so well for service requests, registrations, donations, calculated forms, and membership-style workflows without an unnecessary cart.
Before going live, verify three things: the form creates the correct entry, Stripe receives the correct amount, and Formidable returns a clear payment status. If those three points work, you can move on to emails, Views, post publication, and additional scenarios. If even one of those points is unstable, do not hide the issue behind a nice-looking success message after form submission.
A good payment form should not make users guess what they are paying for, and it should not force the administrator to manually figure out whether payment went through. Formidable Stripe helps you build that kind of process if the setup is done in order: preparation, connection, action, test, status check, troubleshooting, and only then publication.


