Pricing and payments
You will connect your Stripe account, create prices and check payment with a test purchase before launch.
Before you start
- A Stripe account: buyers' money goes straight to it.
- Only the project owner connects and changes keys. An admin can create prices too.
- If you answered “On your own” at project creation, skip this page: what that choice changes — Payment settings.
Step 1. Connect Stripe
Open “Settings” → “Payments” → “Connections”. At the top, the “How you take payments” choice must be “Through us”.
- Turn on the Stripe row toggle — a form opens.
- Enter the publishable key and secret key. Both are in Stripe, “Developers” → keys page.
- Click “Connect”.
We create the endpoint for Stripe's payment reports ourselves — nothing to set up in Stripe.
After connecting, acceptance is on and the payment environment reads “Auto”: the server picks it by your keys until you switch it.
Which keys to start with
Start with test keys (pk_test_… and sk_test_…): no money is charged. The cost: a Pro or Business plan and a domain (payment works only on a published funnel, step 3), plus re-creating prices before going live (step 4).
Step 2. Create a price
Prices live in two places, not in “Payments”:
- In the editor — start here. On the paywall, place a “Payment” group block (“Price block”, “Buy button” or “Plan selector”), and at its “Stripe price” field click “+ New price”. It fills the block at once. A buy button needs its own price while its screen has no “Plan selector”: a price block beside it is no substitute — Prices and payment.
- In “Store” → “Products” → “Create a product” — the project's full price list is there too.
The two windows label fields differently:
| In the editor | In the “Store” | What to enter |
|---|---|---|
| Product name | Name | Tells apart prices with the same amount. |
| Amount | Amount | In whole currency, not cents: 9.99 is nine dollars ninety-nine cents. |
| Currency | Currency | USD, EUR or GBP. |
| Billing period: per month, per year, per week, per day, one-time | Interval: “Month”, “Year”, “One-time” | Create weekly and daily prices in the editor. |
| Trial, days | Trial, days | The trial period. Works only for a recurring price. Empty — no trial. |
| Access length, days | Access period (days) | Works only for a one-time price and only if your developer's server makes the charges. For payment on the paywall, leave empty. |
In the “Store”, trial and access period show for any interval — fill them per the table.
Prices made in the Stripe dashboard need importing: “Store” → “Products” → “Import from Stripe”. In the editor this button is only for the project owner.
Step 3. Check payment with a test purchase
Optional. Needs test keys — add them in “Key management”.
Payment works only on a published funnel: the editor preview and the funnel menu's “Preview” do not start it; the buy button shows “This is a preview. Publish the paywall to accept payments.”
- While the payment environment is test, publish the funnel — Publish a funnel.
- Open the funnel address, reach the paywall and pay with Stripe's test card
4242 4242 4242 4242: any future expiry, any three-digit CVC. Nothing is charged. - Find the purchase: “Store” → “Customers”, turn on “Show test payments”.
Step 4. Switch to the live environment
When ready, switch “Payment environment” in the Stripe row to live. Live keys must already be connected, or the switch is rejected: “Key management” in the same row → “Connect” in the “Live keys” row.
Then test prices leave the selection: create live ones, select them in the blocks and republish — until then payment fails.
Why a price may drop out of the selection
Valid prices belong to the project's current environment and Stripe account. A price drops out if:
- you changed the payment environment, and the price is from the other;
- you reconnected Stripe with another account's keys;
- the price was archived in the cabinet or deleted in Stripe.
In the editor a banner replaces it, asking for a new choice. Such a funnel will not publish.
Subscription rules
Optional — both rules already apply. Open “Settings” → “Payments” → “Rules and money” → “Subscription rules”. Only the project owner changes the rules.
- “Grant the trial only once” — on from the start. Anyone who had a trial here pays at once on a new subscription.
- “Grace period after a failed payment” — how many days the buyer keeps access when a subscription charge fails. Three days by default; if Stripe scheduled a retry later — until then, but at most 21 days, set in the “Grace period cap, days” field.
The neighboring “Customer money” group matters only if your developer's server itself charges saved cards, refunds or manages subscriptions; its toggles open from Pro. Details — Money from the app.
Change a price or take it off sale
An existing price's amount and period cannot change — create a new price:
- Create a price with the new amount (step 2) and select it in the pricing blocks.
- If buyers get access in your app, give the new price the old one's access level — otherwise the app will not recognize it and paid content will not open. How — Handoff to a developer, step 5.
- Republish the funnel — until then visitors see the old price.
- Once the old price is on no paywall — its name's tag shows this — take it off sale: “Store” → “Products”, “Archive” in its row. An archived price cannot be paid.
Old-price subscriptions keep renewing at the old amount.
The cabinet cannot return an archived price to sale, though its hint promises otherwise. Reactivate it in Stripe — “Unarchive price” in the product catalog (Stripe docs); the cabinet picks it up.
A price's access period changes in its “Products” row: “Access period” column → “Edit”.
Next
- Publish a funnel — the domain, pre-release checks and going live.
- Handoff to a developer — what to give the engineer so the buyer returns to the app after paying.
- Payment settings — turn off acceptance, change keys, disconnect Stripe and what happens to subscriptions.
- Store — who paid how much, cancellations and refunds.