Appearance
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 uses Stripe’s payment element (e.g. via the Stripe plugin) so the form lives inside your app.
- The customer pays without leaving your page; you control the layout and flow.
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
Quick comparison
| Stripe Checkout | Payment Intents | |
|---|---|---|
| Where does the user pay? | On Stripe’s hosted page | On your page (embedded form) |
| Setup effort | Low | Higher (form + backend + optional plugin) |
| One-time payments | Yes (mode payment) | Yes |
| Subscriptions | Yes (mode subscription) | Via Create Subscription action (no Checkout) |
| Card data | Never touches your app | Handled by Stripe.js / Stripe plugin |
Next: Stripe Checkout (step by step) or Payment Intents and subscriptions

