Payments are available on Pro and Max plans and require a project with a Convex backend (Stripe needs somewhere server-side to receive webhooks). If you don’t see the Stripe tab in your workspace, it isn’t enabled for your account yet.
How it works
Botflow uses Stripe Connect: you link your Stripe account once, and Botflow acts on its behalf to create checkout sessions, products, and payouts. A few things to know up front:- It’s your account. Customers pay you directly; you keep ownership of the account, the data, and the relationship.
- One connection, all projects. Once you’ve linked Stripe, every project you build can use it — you won’t re-authorize each time.
- Platform fee. Botflow adds a 1% fee on live transactions, on top of Stripe’s standard processing fees.
- Cards never touch your app. All card entry happens on Stripe’s hosted Checkout page. Botflow deliberately blocks card UI from being added to your app code so you stay out of PCI scope.
Connecting Stripe
Just ask the agent for what you want to build:convex/ folder and continues building what you asked for.
Before you can accept live charges, you’ll need to finish Stripe’s onboarding (business details and identity verification). You can build and test everything in test mode first — see Test mode and going live.
Products and prices
You don’t manage products by hand — the agent creates them for you on your Stripe account. Ask for what you’re selling:Checkout
When a customer clicks your buy button, your app asks the backend to create a Stripe Checkout Session and redirects them to Stripe’s hosted, secure payment page. After paying, Stripe sends them back to a success URL in your app. The generated backend code handles this for you and supports:- One-time payments — sell a product or a license
- Subscriptions — recurring billing, tied back to the signed-in user so you can unlock features for them
- Reconciliation — a way to confirm a payment landed even if the webhook is delayed
Where your billing logic lives
The agent writes two kinds of files:- Generated, read-only plumbing — the Checkout and webhook wiring. The agent won’t let you (or itself) edit these by hand, because they’re regenerated authoritatively.
- Your editable
billing.ts— this is where you decide what a payment means. “Oncheckout.session.completed, flip this user to Pro.” Ask the agent to write that logic, or edit it yourself.
The Stripe tab
Pro and Max projects get a Stripe tab in the workspace — an embedded Stripe dashboard so you don’t have to leave the IDE. From there you can:- See payments, balances, and payouts
- Check your account status — whether onboarding is complete and charges/payouts are enabled
- Toggle between test and live mode
- Disconnect the account from the project
Test mode and going live
Every connected account works in test mode first. In test mode you can run the whole flow — checkout, subscriptions, webhooks — using Stripe’s test cards (e.g.4242 4242 4242 4242) without moving real money.
When you’re ready, flip to live mode from the Stripe tab. Botflow automatically mirrors the products you created in test over to live, so your lookup keys keep working and you don’t have to recreate anything. Make sure your Stripe onboarding is complete so live charges are enabled.
Troubleshooting
- No Stripe tab — Confirm you’re on a Pro or Max plan and the project has a Convex backend. Frontend-only (“No Backend”) projects can’t use payments.
- “Connect with Stripe” never completes — The connect panel waits a few minutes for you to finish Stripe’s OAuth flow. If it times out, just ask the agent to add payments again.
- Live charges are declined / disabled — Your Stripe onboarding (KYC) isn’t finished. Open the Stripe tab and complete the account requirements.
- Payment succeeds but nothing unlocks — The logic in
billing.tsisn’t granting access. Ask the agent to handle the relevant Stripe event and update the user’s record.