Stripe Production Setup Guide

Step-by-step instructions to configure Stripe for your live environment

What You Will Set Up

This guide walks you through configuring Stripe in live mode so your application can accept real payments. You will:

  • Get your live API keys from Stripe
  • Create the product with volume-tiered pricing (monthly & yearly)
  • Optionally create coupon codes for promotions
  • Update your production environment variables
  • Verify everything works end-to-end
Before You Start Make sure your Stripe account has been fully activated (business details, bank account, identity verification completed). You cannot process live payments until Stripe has approved your account.
1

Switch to Live Mode & Get API Keys

  1. Go to dashboard.stripe.com and log in.
  2. In the top-right corner, toggle the switch from "Test mode" to "Live mode" (or turn off "Test mode").
  3. Navigate to Developers → API keys.
  4. Copy your Publishable key (starts with pk_live_).
  5. Click "Reveal live key" to copy your Secret key (starts with sk_live_).
Keep Your Secret Key Safe! Never share your secret key publicly, commit it to git, or expose it in frontend code. It should only be stored in your production server's environment variables.

Save these two keys — you will need them in Step 5.

2

Create the Product & Monthly Price

In this step, you will create the product and set up the Monthly price with volume tiers — all on the same "Add a product" screen.

  1. In the Stripe Dashboard (live mode), go to Product catalog → + Add product.
  2. Fill in the product details at the top of the form:
    • Name: Effect Healthcare License
    • Description: (optional) "Comprehensive healthcare solution for hospital specialties"
    • Image: (optional) Upload a product image if you have one

Configure the Pricing Section

  1. In the Pricing section, make sure "Recurring" is selected (not "One-off").
  2. You will see a pricing model selector with these options:
    • Flat rate
    • Package pricing
    • Tiered pricing ← Select this one
    • Usage-based
  3. After selecting "Tiered pricing", you will be asked to choose between:
    • Volume — "All units price based on final tier reached" ← Select this one
    • Graduated — "Tiers apply progressively as quantity increases" ← Do NOT select this
  1. Set the currency to EUR (€).
  2. Set the billing period to Monthly.

Fill in the Tier Table

Stripe will show a tier table with columns: First unit, Last unit, Per unit, and Flat fee. By default it shows 2 rows. Here's how to fill it:

Note: The "First unit" column is auto-calculated — you cannot edit it. It automatically updates based on the previous row's "Last unit" value. You only need to fill in Last unit and Per unit.

Row 1 (already exists):

Field Value
First unit 1 (auto-filled, cannot change)
Last unit 4
Per unit 100.00
Flat fee 0.00 (leave as default)

Row 2 (already exists — "First unit" auto-updates to 5):

Field Value
First unit 5 (auto-filled)
Last unit 9
Per unit 90.00
Flat fee 0.00

Row 3 (click "+ Add tier" to add this row):

Field Value
First unit 10 (auto-filled)
Last unit (infinity — leave as default for the last row)
Per unit 80.00
Flat fee 0.00

Final Result — Monthly Tier Table

When filled correctly, your price screen should look like this:

Stripe monthly price configuration screenshot
  1. Click Save product.
  2. After saving, click on the Monthly price to view its details. Copy the Price ID (starts with price_). Save this as your Monthly Price ID.
3

Add the Yearly Price

Now add a second price on the same product for yearly billing.

  1. Open the product you just created (Effect Healthcare License).
  2. Click "+ Add another price".
  3. Select "Recurring".
  4. Select "Tiered pricing", then "Volume".
  5. Set currency to EUR (€).
  6. Set billing period to Yearly.
  7. Fill in the tier table exactly as before, but with yearly prices:
First unit Last unit Per unit Flat fee
1 4 €1,000.00 €0.00
5 9 €900.00 €0.00
10 €800.00 €0.00

When filled correctly, your price screen should look like this:

Stripe yearly price configuration screenshot
  1. Click Save price.
  2. Copy the Price ID. Save this as your Yearly Price ID.
You should now have two Price IDs saved:
1. Monthly Price ID: price_...
2. Yearly Price ID: price_...
You will need both in Step 5.
4

Create Coupon Codes (Optional)

If you want to offer promotional discounts (separate from volume pricing), create coupons in Stripe:

  1. Go to Product catalog → Coupons → + Create coupon.
  2. Configure your coupon:
    • Name: A display name (e.g., "Launch Offer 20% Off")
    • ID: The code customers will use (e.g., LAUNCH20) — this is what gets entered in the coupon field or passed via URL
    • Type: Percentage off or Fixed amount off
    • Duration: Once, repeating (X months), or forever
    • Redemption limits: (optional) Max number of times it can be used, or expiration date
  3. Click Create coupon.
How Coupons Work in the App Customers can apply coupons in two ways:
1. Entering a code during checkout in the coupon field.
2. Visiting the pricing page with the code in the URL: yourdomain.com/pricing?code=LAUNCH20
5

Update Production Environment Variables

Update the following environment variables in your production server/hosting environment (not in the code). Replace the placeholder values with the keys and IDs you collected in the previous steps.

# ── Stripe API Keys ──
STRIPE_SECRET_KEY=sk_live_your_secret_key_here
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_your_publishable_key_here

# ── Price IDs (from Step 3) ──
NEXT_PUBLIC_STRIPE_PRICE_INDIVIDUAL_MONTHLY=price_live_monthly_id_here
NEXT_PUBLIC_STRIPE_PRICE_INDIVIDUAL_YEARLY=price_live_yearly_id_here

# ── Subscription Settings ──
NEXT_PUBLIC_STRIPE_TRIAL_DAYS=1
MAX_LICENSE_ACTIVATIONS=5

# ── Application URL (production, no "test." prefix) ──
NEXT_PUBLIC_CLIENT_APP_ACTIVATION_URL=https://www.intuitive-pathways.app/
Trial Days NEXT_PUBLIC_STRIPE_TRIAL_DAYS controls how many free trial days new subscribers get. Set to 0 to disable trials. The test environment uses 1 day for testing — adjust this to your desired production value.
6

Verify & Test

After deploying with the new environment variables, verify everything works:

  • Visit the pricing page — confirm prices display correctly (€100/€90/€80 per license tiers)
  • Toggle between Monthly and Yearly — both should show correct pricing
  • Change license quantity — volume discounts should appear at 5+ and 10+ licenses
  • Click "Get Started" — should redirect to Stripe Checkout with the correct total
  • Complete a purchase with a real card — verify the charge appears in Stripe Dashboard (live mode)
  • Confirm the subscription appears in the customer's account page
  • Test license key generation — user should be able to generate and activate a key
  • If you created coupons: test applying a coupon code during checkout
  • If you created coupons: test the URL coupon flow (/pricing?code=YOUR_CODE)
  • Verify the activation URL points to production (not test) in the license activation email/link
All Done! Once all checklist items pass, your Stripe integration is live and ready to accept payments.

Quick Reference — Pricing Summary

Licenses Monthly (per license) Yearly (per license) Discount
1 – 4 €100.00 €1,000.00
5 – 9 €90.00 €900.00 10% off
10+ €80.00 €800.00 20% off

Environment Variables Checklist

Variable Where to Find
STRIPE_SECRET_KEY Stripe Dashboard → Developers → API keys → Secret key
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY Stripe Dashboard → Developers → API keys → Publishable key
NEXT_PUBLIC_STRIPE_PRICE_INDIVIDUAL_MONTHLY Stripe Dashboard → Product → Monthly price → Price ID
NEXT_PUBLIC_STRIPE_PRICE_INDIVIDUAL_YEARLY Stripe Dashboard → Product → Yearly price → Price ID
NEXT_PUBLIC_STRIPE_TRIAL_DAYS Your choice (e.g., 0, 7, 14)
MAX_LICENSE_ACTIVATIONS Your choice (currently 5)
NEXT_PUBLIC_CLIENT_APP_ACTIVATION_URL Your production app URL
Effect Healthcare — Stripe Setup Guide • Generated March 2026