Create payment intents, confirm purchases, build custom checkout experiences, and more.

The Stripe integration lets you manage the full payment flow:

Stripe provides the payment infrastructure while WeWeb gives you full control over the user experience.
You can define when payments start, how users move through the flow, and how your app responds to successful or failed transactions.
Everything is built visually, so you can adjust layouts, conditions, and logic without giving up flexibility.
Perfect for:
And more…

Integrating Stripe with WeWeb is straightforward:
Learn more about WeWeb x Stripe integration
Add Stripe in Integrations from the Data & API tab, and then add the Stripe Payment element or Checkout flow to your page.
From there, create a workflow that either creates a Payment Intent (for Elements) or calls a backend endpoint that creates a Checkout Session and returns a URL to redirect the user.
Subscriptions are not handled end‑to‑end by the frontend: you can use Stripe Billing plus a backend (WeWeb native, Xano, Supabase, custom API) to create and manage subscriptions and webhooks.
The frontend's role is to trigger backend endpoints (e.g., “start subscription”, “cancel plan”) and then display the status stored in your database.
Stripe Checkout can be easier to maintain: your backend creates a Checkout Session and WeWeb simply redirects the user to the hosted page.
Use Stripe Elements in WeWeb when you need an embedded payment form, but expect to wire Payment Intents, client secrets, and error handling yourself via the backend.
Store the Stripe customer ID on your user record (in WeWeb native backend, Supabase, Xano, etc.) and always pass that customer ID when creating Payment Intents or Checkout Sessions. On successful payment, handle the Stripe webhook in your backend, update the user’s plan or credits, and let WeWeb read that data through its normal data collections.
It’s recommended to implement Connect flows (platform accounts, payouts, multi‑vendor marketplaces) in your backend. The usual pattern is: backend integrates Stripe Connect and exposes clean endpoints, while WeWeb calls those endpoints and renders balances, onboarding state, or payout status.
Use Stripe’s hosted Customer Portal by creating a portal session in your backend and redirecting to the returned URL from a WeWeb workflow.
After changes, rely on webhooks or backend wrappers to sync subscription status back into your user or subscription tables so WeWeb can show the current plan, next billing date, and cancellation state.
Typical setups use Supabase for auth and data, Stripe Billing for products and prices, and Supabase Edge Functions to create Checkout Sessions, handle webhooks, and map Stripe IDs to local records. WeWeb stays as the UI layer, calling those Edge Functions and reading from Supabase tables that already contain subscription, customer, and invoice information.
Common causes are missing or invalid client secrets, mis‑named query variables, or using live keys on a test payment (or vice versa).
Check that your payment_intent_client_secret is correctly passed via URL or workflow variable and that conditional rendering only shows the Stripe Element once that variable is defined.
Yes, if you model subscriptions in a separate table (user_id → stripe_subscription_id, plan, status) and let your backend create and update them via Stripe Billing APIs. WeWeb then queries this table to show all active subscriptions and surface actions like upgrade, downgrade, or cancel as buttons that hit backend endpoints.
The integration is designed for secure, simple payments and works well as the UI wrapper for Stripe’s official APIs. For use cases like seat‑based plans, trials, proration, Connect, tax you should treat Stripe as a backend concern and use WeWeb's frontend mainly for triggering flows and visualizing state.