Get up to 50% off your Jotform plan through my partner linkClaim discount
Payment · Integration Guide

Jotform Stripe integration

Jotform plus Stripe, built so payments clear, subscriptions don't leak, and webhooks don't surprise you.

Stripe is the payment layer for most Jotform automations I build. Event registration, deposits, donations, subscriptions, one-off purchases - the form collects structured data, Stripe handles the money, Jotform glues them together. Done well, the customer sees one smooth flow and the business gets clean transaction records. Done poorly, payments clear but the form submission doesn't record, or submissions record but payments never clear.

Jotform's native Stripe integration handles one-time payments and recurring subscriptions, with support for Stripe Checkout, Payment Elements, and the legacy Card Element. For most teams, the defaults work. The problems show up at scale: failed payments that leave orphan form submissions, subscription lifecycle events (cancel, pause, upgrade) that Stripe knows about but Jotform doesn't, and webhook logic that has to be rock-solid because it's touching money.

This page covers how the integration works in practice, the payment flows that hold up, and the subscription and webhook patterns that separate a working setup from one that silently loses revenue.

How it works

How Jotform and Stripe connect.

  1. 01

    Authenticate via Stripe Connect or API keys

    Jotform connects to Stripe via OAuth (Stripe Connect) or by pasting in your restricted API key. OAuth is simpler for most teams. Use live keys only on production forms - keep test keys on staging or draft forms to avoid accidental real charges during setup.

  2. 02

    Pick the payment type

    Choose one-time payment, recurring subscription, or product catalog. One-time is the most common (event tickets, deposits). Subscriptions handle recurring billing (memberships, retainers). Product catalog is for multiple items on one form, each priced individually.

  3. 03

    Configure pricing and totals

    Price can be static (fixed amount), dynamic (calculated from form fields), or product-driven (pulled from your Stripe product catalog). For dynamic pricing, use Jotform's calculation fields and pass the final number to the Stripe field. Validate the calculation server-side - don't trust a client-side total.

  4. 04

    Handle success, failure, and webhook events

    On successful payment, Jotform marks the submission as paid and can trigger downstream actions (send receipt email, create Salesforce lead, update sheet). On failed payment, the submission is saved but flagged. For subscription lifecycle (renewals, cancellations), set up a Stripe webhook to a custom endpoint or use a middleware like Make or Zapier.

Common workflows

What Jotform plus Stripe is actually good at.

  • 01

    Event registration with deposit and balance

    Registration form collects attendee details and charges a $100 deposit via Stripe. The form records the submission; Stripe handles the money. A follow-up form (sent via email link) collects the balance two weeks before the event. Both payments post to the same Stripe customer record.

  • 02

    Nonprofit recurring donation with upgrade path

    Donor form offers one-time, monthly, or annual donation options. Stripe subscription is created for recurring; Stripe customer metadata carries donor fields (name, tax receipt email, preferred frequency). Donor can upgrade via a magic-link form that creates a new subscription and cancels the old one.

  • 03

    Agency deposit plus subscription retainer

    Project kickoff form charges a one-time deposit for onboarding work and starts a monthly subscription for the retainer. Two Stripe actions on one form submit. Invoices for each live in QuickBooks via the QuickBooks integration; client sees a single checkout experience.

  • 04

    Membership signup with trial

    Membership form takes payment details but doesn't charge for 14 days (Stripe trial period). First charge fires at day 14; members who don't cancel are on the subscription. Cancellation flow is a separate form that hits the Stripe API to cancel at period end.

What breaks

Edge cases that bite in production.

Risk 01

Form submits but payment fails

Jotform saves the submission regardless of payment outcome. A submission marked 'unpaid' is still in your inbox, your integrations still fire, and downstream systems may treat the lead as real. Filter every downstream action on payment status or you'll be onboarding customers who didn't actually pay.

Risk 02

Subscription lifecycle events don't flow back to Jotform

When a Stripe subscription is cancelled, paused, or fails to renew, Jotform doesn't know. The original form submission still looks 'paid' forever. For accurate member rosters, sync Stripe subscription status to a database or CRM via Stripe webhooks - don't rely on Jotform as the source of truth for active subscriptions.

Risk 03

Refunds and chargebacks leave inconsistent state

Refunding a payment in Stripe doesn't flag the Jotform submission. A form submission tied to a refunded payment still reads as paid and still triggers downstream actions. For accurate accounting and customer records, handle refund logic with Stripe webhooks, not Jotform flags.

Risk 04

Dynamic pricing can be manipulated client-side

If your form uses a calculation field to determine the Stripe charge amount, a determined user can edit the form HTML and submit with a modified total. For anything where price matters (not just event tickets), validate the total server-side or use Stripe's Price objects with server-side amount lookup.

When not to use

When Jotform plus Stripeisn't the right call.

If you're selling physical products at volume, Shopify, BigCommerce, or WooCommerce will handle inventory, shipping, taxes, and fulfillment better than Jotform plus Stripe. For full subscription management with dunning, proration, and MRR reporting, dedicated tools (Stripe Billing UI, Chargebee, Recurly) give you what Jotform won't. And for high-volume e-commerce (thousands of transactions per day), the direct Stripe API with a custom front-end is more performant than a form platform.

Frequently asked

Questions I get before setting this up.

  • Does Jotform charge a fee on Stripe transactions?

    Jotform takes a small platform fee on Stripe payments for free and some paid plans - check your plan's payment terms. Starter and higher plans typically remove the platform fee. Stripe's own processing fees (2.9% + 30 cents in the US) apply regardless of Jotform plan.

  • Can I handle recurring subscriptions with Jotform and Stripe?

    Yes. Jotform's Stripe integration supports creating Stripe subscriptions at form submit, with configurable billing interval (daily, weekly, monthly, annually) and trial period. For lifecycle management (upgrades, downgrades, cancellations), you'll need a separate mechanism - either a separate cancellation form, Stripe's customer portal, or API calls from your own backend.

  • What happens when a Stripe subscription fails to renew?

    Stripe retries per its default retry schedule and, after final failure, marks the subscription as past_due or canceled. Jotform doesn't know about this unless you wire up a Stripe webhook to a backend that updates the form submission or another record. For membership businesses, this webhook is not optional - it's what keeps the active roster accurate.

  • Is Jotform plus Stripe PCI compliant?

    Jotform's Stripe integration uses Stripe's hosted payment elements, meaning card data goes directly to Stripe and never touches Jotform's servers. This qualifies as PCI SAQ-A, the lowest compliance tier. For HIPAA workflows that also involve payment, Jotform's HIPAA plan paired with Stripe is the standard setup.

Want this wired up without the reading?

Free 20-minute call. I'll tell you which workflow fits, if a kit covers it, or what a custom Stripe setup would take.