Step 1
Create a new account on Stripe and activate payments
Step 2
In your [Settings], [Public Details], add your website URL.
Step 3
In your [Settings], [Branding], add your logo & colors
Step 4
In your [Settings], [Customer Emails], turn on emails for successful payments & refunds
Step 5
In your [Settings], [Customer Portal], activate link to customer portal (in case you need later)
Step 6
In the search box, type 'rules' and click [Fraud Prevention > Rules] , make sure the first 3DS rule is enabled. I also turn on the second one (recommended). Make sure to block payments if CVC fails (check below)
Step 7
Turn ON Test Mode
Step 8
Create a new product and copy the price ID (price_1ju5GD464564) in config.stripe.plans[0].priceId
in the config.ts
file.
Step 9
In your [Developers], copy your public & private keys and add them to STRIPE_SECRET_KEY & STRIPE_PUBLIC_KEY
in .env.local
Step 10
To set up the webhook locally, follow the steps in [Developers], [Webhook], [Test in local environment]. After login to Stripe CLI, use the command below to forward webhook events to our API:
stripe listen --forward-to localhost:3000/api/webhook/stripe
Copy the signing secret and add it to STRIPE_WEBHOOK_SECRET in .env.local
Create a checkout
From the front-end, use the ButtonCheckout to automatically create a checkout session (one-time payment or subscription)
Stripe webhooks & subscription handling
Our API listens to Stripe selected webhooks events & update the user accordingly. It turns boolean hasAccess (or has_access in Supabase) to true/false based on whether the user should have access to a paid resource or not.
You can add your own business logic to the STRIPE_SECRET_KEY & STRIPE_PUBLIC_KEY
in /api/webhook/stripe
API endpoint (add credits to a user, send email with a paid e-book etc.)