> ## Documentation Index
> Fetch the complete documentation index at: https://docs.instaforge.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Online payments

> Connect the client's own Stripe account once for deposits, the shop, and packages and gift cards.

Customers can pay online with a card for deposits, shop orders, and packages and gift cards. Payments go through the client's own Stripe account, so the money goes straight to the client, never through the agency. Card details never reach InstaForge: customers pay on Stripe's own page.

The connection belongs to the client: all of the client's assistants share it, with one webhook address.

<Frame caption="Online payments: the Stripe account (1), the webhook in Stripe (2) and what uses it (3)">
  <img src="https://mintcdn.com/instaforge/VmM-7msTvRzCAXLt/images/online-payments.png?fit=max&auto=format&n=VmM-7msTvRzCAXLt&q=85&s=90149110489d683877529e4ff7e5a231" alt="Online payments: the Stripe account (1), the webhook in Stripe (2) and what uses it (3)" width="2600" height="2400" data-path="images/online-payments.png" />
</Frame>

## Connect Stripe

In the assistant's menu, open **Business → Payments**. Admins and editors can change it; the business owner doesn't see this page.

<Steps>
  <Step title="Paste the secret key (1)">
    In the client's Stripe dashboard, open **Developers → API keys** and copy the secret key. A restricted key with write access to Checkout Sessions and Refunds also works. Click **Save**.
  </Step>

  <Step title="Add the webhook in Stripe (2)">
    In Stripe, open **Developers → Webhooks** and add an endpoint. Paste the **Webhook address** from the page and choose the event `checkout.session.completed`.
  </Step>

  <Step title="Paste the signing secret">
    Stripe shows a signing secret for the new webhook. Paste it into **Signing secret** and click **Save**.
  </Step>

  <Step title="Check it">
    Click **Check the connection**. InstaForge asks Stripe whether the key works and shows the account it belongs to.
  </Step>
</Steps>

<Warning>
  Without the webhook and its signing secret, customers can pay but InstaForge never hears about it: appointments stay held, orders stay unpaid and gift card codes aren't sent.
</Warning>

## What uses it (3)

Each feature is switched on and set up on its own page. The list shows which ones are on.

| Feature | Where it's set up |
| - | - |
| Deposits to hold an appointment | **Bookings**, under Deposit to hold the time. See [Confirmations, no-shows and deposits](/bookings/confirmations-and-no-shows) |
| Paying for shop orders online | **Shop**. See [Shop and orders](/grow-sales/shop-and-orders) |
| Buying packages and gift cards in the chat | **Packages and gift cards**. See [Packages and gift cards](/grow-sales/packages-and-gift-cards) |

Without Stripe, shop orders are paid on pickup or delivery, and the team arranges payment for packages and gift cards.

## Test mode

A key that starts with `sk_test_` connects Stripe's test mode, and the page shows a **Test mode** badge. Use it to try a payment with Stripe's test cards, then replace it with the live key.

## Disconnect

**Disconnect Stripe** removes the keys. Turn deposits off first: they can't work without Stripe.

<Info>
  Agency fees are separate: what a client pays the agency is set on the [Billing](/running-the-agency/billing) page, with your own payment link.
</Info>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.