Skip to content

Updating visuals

If you see any images containing outdated UI, please bear with us.

We are updating all content as quickly as possible to mirror our new UI.

Choose how to collect payments ​

You have two main ways to collect payments in WeWeb. Pick the one that fits how you want your app to look and how much you want to build.

Stripe Checkout (hosted page) ​

Best for: Getting payments live quickly with minimal setup.

  • Your backend creates a Checkout Session (with line items, success/cancel URLs, and mode: payment or subscription).
  • You send the customer to Stripe’s page (redirect to the session url).
  • Stripe shows the payment form, collects the payment, and redirects the customer back to your success or cancel URL.
  • You never see or handle card numbers in your app.

Use Checkout when: You’re fine with customers leaving your site for a Stripe-hosted page and you want the least amount of custom UI.

Learn more: Stripe Checkout

Payment Intents (custom form) ​

Best for: Keeping the user on your site with a payment form that matches your design.

  • Your backend creates a Payment Intent and returns a client_secret.
  • Your interface renders Stripe’s payment form with Stripe.js, so the form lives inside your app. This part is custom code.
  • The customer pays without leaving your page; you control the layout and flow.
  • Your backend drives the whole payment: create it, confirm it, capture it later for manual-capture flows, cancel it, and retrieve it again to read why a card was declined.

Use Payment Intents when: You want the payment form embedded in your own pages and a fully custom experience.

Learn more: Payment Intents and subscriptions

A MIDDLE GROUND

Checkout is not only a hosted page. Setting ui_mode to embedded_page shows the Stripe form inside your own page, while your backend stays a single Create Checkout Session action instead of the full Payment Intent lifecycle. See the ui_mode rules →

Quick comparison ​

Stripe CheckoutPayment Intents
Where does the user pay?On Stripe’s hosted pageOn your page (embedded form)
Setup effortLowHigher (backend, plus custom code for the form)
One-time paymentsYes (mode payment)Yes
SubscriptionsYes (mode subscription)Via Create Subscription action (no Checkout)
Card dataNever touches your appNever touches your app (Stripe.js collects it)
Backend controlCreate, retrieve, list, and expire the sessionFull lifecycle: create, confirm, capture, cancel, search

Next: Stripe Checkout (step by step) or Payment Intents and subscriptions