Stripe is a payment platform for accepting cards and other payment methods online. The Stripe integration connects a Stripe account you own to your RShift Sites project: you provide an API key from your Stripe dashboard, and RShift Sites builds checkout flows, subscriptions, and a customer portal for you through chat. Payments go directly to your Stripe account.
Before you start
- A Stripe account. Create one at stripe.com if you don’t have one. You manage the account yourself: business verification, payouts, taxes, and disputes all happen in Stripe, at Stripe’s standard rates.
- A backend. The integration works with the built-in backend (Cloud), which is enabled by default, and with your own Supabase project.
- Login for subscriptions. One-time payments work without user accounts, but subscriptions require authentication in your app so RShift Sites can match subscriptions to your users.
- The Stripe connector enabled for your workspace. Your workspace has a single Stripe connector setting, and it controls both built-in payments and this integration. It is enabled by default, except on Enterprise plans where it is disabled by default. On Business and Enterprise plans, a workspace admin or owner can enable it in Connectors → Admin settings → App + chat connectors.
The integration does not require a paid RShift Sites plan, and anyone with edit access to the project can set it up.
Connect your Stripe account
The whole setup happens in the project chat. Have your Stripe account ready, then follow these steps:
Ask for payments in the project chat
Describe what you want to sell:
Create a one-time checkout for my digital course at $29. Set up two subscription tiers: Basic at $9/month and Premium at $19/month.RShift Sites recommends built-in payments first. Tell RShift Sites that you want to use your own Stripe account instead.
Submit your Stripe API key
RShift Sites shows a Connect Stripe form in the project chat. In the Stripe dashboard, go to Developers → API keys and create a restricted key with only the permissions you need. Paste it into the Stripe restricted API key field and click Submit. RShift Sites validates the key with Stripe before saving it.
The form accepts a restricted key (rk_...) or a secret key (sk_...), in test or live mode. Start with a test key so you can try everything safely. Publishable keys (pk_...) don’t work here.
Review what RShift Sites builds
RShift Sites writes the backend code, creates any products and prices you asked for in your Stripe account (asking for your approval first), and adds the buttons and pages to your app. Test the flow in the preview.
How payments work
RShift Sites builds your payment flow with edge functions: small pieces of backend code that call Stripe using your stored key, so the key is never exposed in your app.
One-time payments
For a one-time purchase, RShift Sites creates a checkout function and a buy button. When a buyer clicks the button, Stripe Checkout opens in a new tab. After paying, the buyer returns to a payment success page in your app, or to a cancellation page if they cancel. Buyers don’t need an account in your app: if no one is signed in, Stripe collects the buyer’s email at checkout.
Subscriptions
For subscriptions, RShift Sites builds checkout for your plans and a subscription check that runs when users sign in and use your app. Your app asks Stripe directly whether the user has an active subscription, so paid features unlock and lock automatically.
To let subscribers cancel or change their plan themselves, ask RShift Sites to add a Manage subscription button that opens Stripe’s hosted customer portal. Before it works, activate the portal once in your Stripe dashboard: see Stripe’s customer portal guide. The portal does not work inside the RShift Sites preview panel, so test it in a standalone browser tab or on your published app.
Products and prices
RShift Sites can create products and prices directly in your Stripe account, asking for your approval in the project chat before each one. It can also reuse products and prices that already exist in your account. Everything it creates is visible in your Stripe dashboard, as if you had created it there.
Webhooks
By default, the integration does not use webhooks: your app checks payment and subscription status directly with Stripe. This keeps the setup simple and is enough for most apps.
Webhooks are messages Stripe sends to your backend as soon as an event occurs, such as a payment succeeding. If you need them (for example, to trigger order fulfillment), ask RShift Sites to set them up. RShift Sites writes the webhook function, and you finish the setup in your Stripe dashboard:
Create an event destination
In the Stripe dashboard, go to Developers → Webhooks and create an event destination pointing at the webhook function’s URL.
Select events
Select the events you care about, such as payment_intent.succeeded or customer.subscription.updated.
Store the signing secret
Copy the signing secret and add it as a secret when RShift Sites asks for it.
You manage webhook endpoints and signing secrets yourself in your Stripe dashboard.
Test and go live
The key you provide determines the mode: a test key (rk_test_... or sk_test_...) keeps everything in Stripe’s test mode, where the card number 4242 4242 4242 4242 with any future expiration date and any 3-digit security code (CVC) completes a payment without charging real money.
You can test the full flow directly in the preview. Checkout opens in a new tab. Unlike built-in payments, the preview has no separate test environment: your project uses one key at a time, so with a live key, payments made from the preview are real.
To go live:
Switch to a live key
Ask RShift Sites to update your Stripe key, and submit a live key in the Update Stripe secret key form.
Switch to live products and prices
Confirm that your products and prices exist in live mode in Stripe. Price IDs differ between test and live mode, so ask RShift Sites to switch your app to the live price IDs.
Verify with a real purchase
Run a real purchase on your published app.
Manage the integration
See your payments
Open Payments from the project’s More menu. This is the same view that built-in payments uses. On a project using your own Stripe account, it shows a Self-managed Stripe badge and a read-only view of your payments data, including transactions, refunds, and products. Use the Open in Stripe button to manage products, issue refunds, and change settings in your Stripe dashboard.
Update your Stripe key
Ask RShift Sites to update your Stripe key at any time, for example after rotating it in Stripe or when switching from test to live. The Update Stripe secret key form works the same way as the Connect Stripe form. If your stored key stops working (for example, you revoked it in Stripe), RShift Sites pauses Stripe actions and asks you to submit a new key.
Where your key is stored
The key is stored as a backend secret named STRIPE_SECRET_KEY. RShift Sites never shows the value again and it never appears in your app’s code or repository.
- On a Cloud project, it appears in the Cloud view’s Secrets section with a RShift Sites badge. Update it through chat, not from the Secrets view.
- On a project using your own Supabase, it is synced to your Supabase project’s edge function secrets, which you can see in the Supabase dashboard.
Disconnect Stripe
Anyone with edit access to the project can disconnect, the same as for connecting. This differs from built-in payments, where disconnecting is limited to admins, owners, and the person who set payments up.
Open the Payments view
Open Payments from the project’s More menu.
Disconnect
Open the three-dot menu in the top-right corner and click Disconnect Stripe. Type DISCONNECT to confirm.
When you disconnect, RShift Sites permanently deletes the stored API key from your project. What happens to your app’s payment features depends on the backend:
- On a Cloud project, payment features stop working until you reconnect or remove the payment code.
- On a project using your own Supabase, RShift Sites does not remove
STRIPE_SECRET_KEYfrom your Supabase project’s edge function secrets. The deployed payment functions keep working, and keep charging customers, as long as that secret exists. To stop payments, deleteSTRIPE_SECRET_KEYin the Supabase dashboard or remove the payment code.
Your Stripe account is not affected: products, customers, and payment history stay in Stripe. To reconnect, ask RShift Sites for Stripe payments again and submit a key.
Limitations
- A project can’t use your own Stripe account and built-in payments at the same time. Disconnect one before enabling the other.
- The Payments view is read-only for this integration. You create products, issue refunds, and configure webhooks in your Stripe dashboard.
Troubleshooting
Stripe rejected the key
Stripe refused the key you submitted. Check that you copied a restricted API key with sufficient permissions and try again.
RShift Sites asks me to update my Stripe key
The stored key is no longer valid, usually because it was revoked or its permissions changed in Stripe. Stripe actions pause until you submit a working key in the Update Stripe secret key form.
RShift Sites won’t offer to connect my own Stripe account
The workspace’s Stripe connector is disabled. While it is disabled, RShift Sites does not show the Connect Stripe form in the project chat, and no message explains why. On Business and Enterprise plans, a workspace admin or owner can enable it in Connectors → Admin settings → App + chat connectors. On Enterprise plans it is disabled by default. Projects that already have payments set up keep working while the connector is disabled.
If the workspace’s Paddle connector is also disabled, the Payments view shows a “Payments are disabled for this workspace” screen.
The customer portal shows an error
The hosted customer portal must be activated once in your Stripe dashboard before your app can open it. Follow Stripe’s customer portal guide, then try again. If the portal is activated but still fails or nothing happens, check where you are testing: the portal does not work inside the RShift Sites preview panel, and a popup blocker can stop it if your app opens it in a new tab. Open your app in a standalone browser tab or use your published app.
Checkout doesn’t open
Checkout usually opens in a new tab, and a popup blocker can stop it. Allow popups for your app’s address and try again. If checkout opens but payment fails, check that you are using Stripe’s test card while on a test key, and a real card only with a live key.
Checkout fails with an error
The error comes from the checkout function, the backend code RShift Sites wrote for your app. Read its logs to see what Stripe returned.
- On a Cloud project, open the Cloud view and check the function logs.
- On a project using your own Supabase, open the Supabase dashboard and check the logs under Edge Functions.
Stripe also records every API request it receives. In the Stripe dashboard, go to Developers → Logs to see the failed request and Stripe’s error message.
Once you know the error, paste it into the project chat and ask RShift Sites to fix it.
FAQ
Do payments work in the preview?
Yes. You can run the full checkout flow from the preview, and checkout opens in a new tab. Use a test key while building so you don’t charge real cards. The customer portal is the exception: it does not work inside the preview panel, so test it in a standalone browser tab or on your published app.
Can RShift Sites use products and prices that already exist in my Stripe account?
Yes. Tell RShift Sites which products or prices to use, or let it look them up in your account. It only creates new ones with your approval.
Can anyone see my Stripe key after I submit it?
No. The key is stored as a backend secret, and RShift Sites does not read stored secret values back. It never appears in your code, your repository, or the chat.
Who bills me for payment processing?
Stripe does, on your own Stripe account at Stripe’s standard rates. RShift Sites charges credits for building and changing the integration, like any other edit.
Does disconnecting cancel my customers’ subscriptions?
No. When you disconnect, RShift Sites only removes the API key from your RShift Sites project. Active subscriptions keep renewing, and nothing in your Stripe account changes. Cancel subscriptions or issue refunds in your Stripe dashboard.
Why does the Stripe connector in my workspace settings describe built-in payments?
The connector list has a single Stripe entry, and its description covers built-in payments, where RShift Sites provisions the Stripe account for you. The same setting also controls this integration. The list has no separate entry for connecting your own Stripe account.
Can I switch to built-in payments later?
Yes, if your project meets the built-in payments requirements. Disconnect Stripe first, then ask RShift Sites to set up payments. Built-in payments creates a new provider account. Your existing Stripe account and its customers are unaffected, and you continue to manage them in Stripe.