Browse documentation

Connect Stripe

For stores charging in EUR, GBP, USD — or INR. Restricted keys, the webhook, and the one behavioural difference from Razorpay.

Stripe is the provider for any store not charging in rupees, and works for INR too. Like Razorpay, it settles into your own Stripe account — your keys, your money, no platform wallet in between.

Supported currencies: INR, EUR, GBP, USD. Which payment methods a shopper is offered is decided by Stripe from your account's country and the order's currency, not by your store.

Get your API keys

Open the Stripe Dashboard

Go to dashboard.stripe.com and sign in.

Stay in Test mode

Use the toggle at the top right. Test keys carry _test_ in the middle and charge nobody.

Copy the keys

Developers → API keys. You need the Publishable key (pk_test_…) and a secret. Reveal the secret key to copy it.

Prefer a restricted key

Stripe's standard secret key (sk_…) can do everything your Stripe account can. Your store needs two capabilities: write PaymentIntents and write Refunds.

Create a restricted key

Developers → API keys → Create restricted key.

Grant two write permissions

Set PaymentIntents and Refunds to Write. Leave everything else at None.

Use it as your secret

A restricted key starts rk_test_… or rk_live_… and is accepted anywhere the secret key is.

A leaked restricted key can charge and refund. A leaked full secret key can read your customers, payouts and balance. Same setup effort, much smaller blast radius.

Paste them into your store

Settings → Payments → Stripe.

FieldWhat goes in itLooks like
Publishable keyThe public halfpk_test_…
Secret keyYour secret or restricted keysk_test_… or rk_test_…

Save, then choose Use Stripe for checkout. The Test/Live badge is read off your key's prefix, so it can't disagree with reality. Your secret is encrypted before it's stored and is never sent to the shopper app.

Test the flow

Place a real order in the app against your test keys, using Stripe's test cards:

4242 4242 4242 4242 — any future expiry, any CVC, any postal code.

A successful order appears under Orders, shows as placed in the shopper's My Orders, and sends a notification.

Set up the refund webhook

Refunds settle asynchronously. Without the webhook, a refund sits at Pending in the console until you complete it by hand.

Copy your store's webhook URL

Shown in Settings → Payments → Stripe webhook. It's per-store — don't reuse another store's.

Add the endpoint in Stripe

Developers → Webhooks → Add endpoint. Paste the URL and subscribe to charge.refunded, refund.updated and refund.failed.

Paste the signing secret back

Stripe generates it — it starts whsec_…. Put it in the console's Webhook Secret field. Every incoming call is verified against it.

The one difference from Razorpay

Worth knowing if you've read the Razorpay guide: Stripe has no client-side payment signature. Razorpay hands the app a signed confirmation your store can check locally; Stripe doesn't.

It changes less than it sounds. Both providers are asked directly what was paid, and neither is trusted on the app's word — Razorpay just has one extra check on top. Same guarantee, and nothing you configure differently.

See Payment flows for what actually happens at each step, including where the two differ.

Go live

Repeat with Stripe in Live mode and paste the pk_live_ / rk_live_ pair over the test one. Live mode requires a completed Stripe account activation (business details, bank account) — start that early, since verification isn't instant.

Live keys charge real cards. Place at least one successful test order and one deliberate decline first.

Which key goes in which field?

Publishable (pk_) is public and goes in the first field. Secret (sk_) or restricted (rk_) goes in the second. Swapping them fails at checkout — Stripe rejects a publishable key on a server call.

Can I switch from Razorpay to Stripe later?

Yes. Both providers' keys are kept independently, so connecting Stripe doesn't erase Razorpay and switching is one click. Existing orders keep recording which provider took the money, so support lookups still point at the right dashboard.

Next