# Stripe

> Connect your Stripe account — where to find the keys, test and live mode, the webhook ESTAGE adds for you, and turning Stripe on for your products.

Source: https://support.estage.com/commerce-payments-stripe
Part of the ESTAGE Support help center (https://support.estage.com). Full knowledge base: https://support.estage.com/llms-full.txt

---

**Stripe** takes card payments on your order forms, paid meetings and online store, straight into
your own Stripe account. It needs no Business Details, and it's the one gateway that refunds a
cancelled paid booking automatically.

Where Stripe works in ESTAGE:

| Where | What Stripe does |
| --- | --- |
| **[Order forms](https://support.estage.com/order-forms)** | One-time products, subscriptions, free trials and coupons. Returning buyers can pay with a [saved card](https://support.estage.com/order-forms-buyer-experience#saved-cards-returning-buyers). |
| **[Paid meetings](https://support.estage.com/rooms-meeting-booking)** | The booking is paid on the page. A cancelled booking is refunded through Stripe automatically — always when you cancel it, and by the meeting type's refund policy when the invitee does. |
| **[Online store](https://support.estage.com/store)** | The storefront checkout. **Stripe Tax** can work out store tax with the same keys — see [Shipping & tax](https://support.estage.com/store-shipping#tax). |

## Before you start

- **A Stripe account.** To take real money, it has to be able to accept live payments in Stripe.
- **Test or live.** Stripe gives every account a sandbox (test) pair of keys — `pk_test_…` and
  `sk_test_…` — and a live pair, `pk_live_…` and `sk_live_…`. ESTAGE takes either. Copy both keys
  from the same mode.
- **Business Details** aren't required for Stripe, but they appear on receipts, so fill them in
  anyway — see [Business Details](https://support.estage.com/project-settings-business-details).

## Getting your keys

1. Sign in to the Stripe Dashboard and open the **API keys** page (**Developers → API keys**).
2. Pick sandbox or live mode at the top of the page.
3. Under **Standard keys**, copy the **Publishable key**.
4. Reveal and copy the **Secret key**. A live secret key you create yourself is shown only once,
   so keep a copy somewhere safe.

Use the secret key from **Standard keys**, not a restricted key. ESTAGE creates products, prices,
customers, subscriptions and a webhook endpoint in your account, and a restricted key can't do
all of that unless you grant every one of those permissions. Stripe's guide to the page:
[API keys](https://docs.stripe.com/keys).

## Connecting Stripe

1. In Genesis, open **Settings → Payment Processing**.
2. On the **Stripe** card, select **Connect**.
3. Paste the **Publishable Key** and the **Secret Key**.
4. Select **Connect My Account**.

*Stripe connected* appears and the card shows **ACTIVE**. A key Stripe doesn't accept — a typo, a
stray space, a deleted key — gives *Failed to connect Stripe* with *Invalid API Key provided*.

You can do the same from your CRM: **Settings → Payments**, **Connect** on Stripe, the same two
fields, then **Connect**.

## The webhook

ESTAGE registers a webhook endpoint on your Stripe account as you connect — one per project, in
the same mode as your keys. You'll see it in your Stripe Dashboard among your webhooks. Through it
ESTAGE records:

- subscription renewals, and renewals that failed;
- refunds you make in Stripe;
- subscriptions that end;
- the outcome of disputes.

Leave the endpoint as it is. Without it, renewals, refunds and cancellations made in Stripe never
reach your orders. Disconnecting Stripe removes the endpoint; connecting again creates a new one.

## Turning Stripe on for products

1. In the CRM, open **Products** and then the product.
2. On the **Pricing** tab, add **Stripe** under **Payment providers**.
3. Pick the price and currency, then select **Update**. Saving creates the product and its price
   in your Stripe account.
4. In the [order form](https://support.estage.com/order-forms-configuring), tick **Stripe** in step 2.

Stripe can charge in **AUD, BGN, CAD, CHF, CNY, CZK, DKK, EUR, GBP, HKD, HUF, JPY, MXN, NOK, NZD,
PHP, PLN, RON, SEK, SGD** and **USD**. With other providers chosen too, the **Currency** menu keeps
only the currencies they all share.

## Making a test purchase

1. Connect Stripe with your sandbox keys and turn it on for a product, as above.
2. On your published site, buy the product with one of
   [Stripe's test cards](https://docs.stripe.com/testing#cards).
3. Check the order in the CRM under **Orders**, and the payment in your Stripe Dashboard.

## Going live

1. In **Settings → Payment Processing**, select **Disconnect** on Stripe and confirm.
2. Select **Connect** again and paste your live keys.
3. Open each product that sells through Stripe, add **Stripe** under **Payment providers** again
   and select **Update**. This sets the product up in your live account.
4. Make a small real purchase, then refund it in Stripe.

> **Caution**
>
> Until step 3 is done, those products can't be paid through Stripe. Do it right after you switch,
> and check every order form and paid meeting type that sells them.

## Things worth knowing

- **Refund in Stripe.** The order is marked refunded and the product's **Action upon refund**
  runs — see [After a purchase](https://support.estage.com/commerce-catalog#after-a-purchase).
- **Cancel a subscription in Stripe.** When it ends, the order is closed and **Action upon cancel**
  runs.
- **One Stripe account on several projects** works. Each project adds its own webhook endpoint to
  the account, so you'll see one per project.
- **Test orders stay in your CRM.** Orders placed with sandbox keys remain in **Orders** after you
  go live.

Related: [Payment Processing](https://support.estage.com/commerce-payments) · [PayPal](https://support.estage.com/commerce-payments-paypal) ·
[Orders](https://support.estage.com/commerce-orders)
