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

# How to Add Stripe as a Payment Method

> Set up Stripe to take payments in Upmind

[Stripe](https://stripe.com/) is a popular payment method that enables fast, secure credit and debit card payments. Upmind’s integration is easy, letting clients enter card data directly on your site (not redirected to Stripe).

A token is stored in Upmind along with card details (last four digits, card type, and expiry date). The full card information is never stored.

## Getting Stripe API credentials

1. Log in to your Stripe account.

2. Go to Developers > API Keys.

3. Copy your Secret Key (for Upmind’s API Key field) and Publishable Key (for Upmind’s Public Key field).

4. Optionally, generate a Restricted Key with write access to:

   1. PaymentIntents

   2. Customers

   3. PaymentMethods

   4. Prices

   5. SetupIntents

   6. Charges

<Frame caption="Developers > API keys">
  <img src="https://mintcdn.com/upmind/pcUdSuxUJ6LgBXnd/images/fb/9ef5a808c8f56191.png?fit=max&auto=format&n=pcUdSuxUJ6LgBXnd&q=85&s=c7ef5e65777bf56693070701ba251646" alt="Developers > API keys" data-og-width="2090" width="2090" data-og-height="1388" height="1388" data-path="images/fb/9ef5a808c8f56191.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/upmind/pcUdSuxUJ6LgBXnd/images/fb/9ef5a808c8f56191.png?w=280&fit=max&auto=format&n=pcUdSuxUJ6LgBXnd&q=85&s=fbeeddf2afda163bbf7334c34a2452fa 280w, https://mintcdn.com/upmind/pcUdSuxUJ6LgBXnd/images/fb/9ef5a808c8f56191.png?w=560&fit=max&auto=format&n=pcUdSuxUJ6LgBXnd&q=85&s=ad7c728a5facedb3157a403ee8a5ab5f 560w, https://mintcdn.com/upmind/pcUdSuxUJ6LgBXnd/images/fb/9ef5a808c8f56191.png?w=840&fit=max&auto=format&n=pcUdSuxUJ6LgBXnd&q=85&s=5ac09beafabfbd7b08338e9e4e303145 840w, https://mintcdn.com/upmind/pcUdSuxUJ6LgBXnd/images/fb/9ef5a808c8f56191.png?w=1100&fit=max&auto=format&n=pcUdSuxUJ6LgBXnd&q=85&s=a00cae1b90e549d5b8cb3d30b0f7a5bd 1100w, https://mintcdn.com/upmind/pcUdSuxUJ6LgBXnd/images/fb/9ef5a808c8f56191.png?w=1650&fit=max&auto=format&n=pcUdSuxUJ6LgBXnd&q=85&s=8b379704c49e98c1da6058f536f890f8 1650w, https://mintcdn.com/upmind/pcUdSuxUJ6LgBXnd/images/fb/9ef5a808c8f56191.png?w=2500&fit=max&auto=format&n=pcUdSuxUJ6LgBXnd&q=85&s=051eeed1dfc680bb0d8394dd1428d20e 2500w" />
</Frame>

<Frame caption="Secret key and publishable key">
  <img src="https://mintcdn.com/upmind/c5sDUwEs8YpzGbjA/images/fb/9ccff58e46955600.png?fit=max&auto=format&n=c5sDUwEs8YpzGbjA&q=85&s=3f41af27b7465611936bf4540133049d" alt="Secret key and publishable key" width="1542" height="1112" data-path="images/fb/9ccff58e46955600.png" />
</Frame>

## Adding Stripe as a payment provider

1. Go to **Settings** > **Payment Providers** in Upmind.

2. Click **Add Payment Provider** and select **Stripe**.

<Frame caption="Select payment provider">
  <img src="https://mintcdn.com/upmind/1-uICsJi9zYpvJVH/images/fb/8b557f11db2302db.png?fit=max&auto=format&n=1-uICsJi9zYpvJVH&q=85&s=f0df99a87d3528fc344ee589486e47de" alt="Select payment provider" width="1558" height="1222" data-path="images/fb/8b557f11db2302db.png" />
</Frame>

## Configuring details

1. Enter a display name. We suggest **Credit** or **Debit Card**.

2. Set **Test Mode** to *No* for live payments.

3. Enter your **Secret Key** and **Publishable Key**.

4. Choose whether to allow stored cards (for subscriptions/recurring) or one-time payments.

5. Click **Test Credentials** to verify.

6. Toggle accepted card types as needed.

7. (Optional) Add supported currencies and payment instructions.

8. Click **Create**.

### Stripe.js options

After entering your Stripe information, the next step is to add the Stripe JS. To do this, you will need a public key. This [guide](https://support.stripe.com/questions/what-are-stripe-api-keys-and-how-to-find-them) explains how to obtain it.

For each question, you can choose either yes or no. Choose options that match your business needs and the payment methods you want to support through Stripe.js on your website.

Below is a detailed explanation to help you decide:

1. **Create Customer for Non-Stored Payments**: Select yes to create a customer record for each payment without storing payment details for future transactions. Recommended: **YES**.

2. **Reuse Stripe Customer from Other Saved Methods**: Select yes to use saved payment methods linked to a customer's Stripe account for Stripe.js payments. Recommended: **YES**.

3. **Reuse Stripe Customers by Email**: Select yes to link customer payments by email in Stripe for Stripe.js transactions. Recommended: **YES**.

4. **Accept Cards?**: Choose yes to accept card payments using Stripe.js on your website. Recommended: **YES**.

5. **Accept PayPal?**: Select yes to accept PayPal payments through Stripe.js integration. For setup, see this [article](https://docs.stripe.com/payments/paypal/activate). Recommended: **YES**.

6. **Accept SEPA Debit**: Select yes only if SEPA Debit is active in your Stripe account. Otherwise, it will fail. Recommended: **NO** unless enabled.

7. **Accept iDEAL**: Enable only if iDEAL is active in your Stripe account. Otherwise, it will fail. Recommended: **NO** unless enabled.

<Frame caption="Select options">
  <img src="https://mintcdn.com/upmind/wRuKrNY12tQZY8Rr/images/fb/3895e6f3920ce34a.png?fit=max&auto=format&n=wRuKrNY12tQZY8Rr&q=85&s=ddeeb741719ab3a557161279327b614a" alt="Select options" width="1242" height="1358" data-path="images/fb/3895e6f3920ce34a.png" />
</Frame>

<Note>
  If your client is using either **iDEAL** or **SEPA**, please note the following:

  1. iDEAL is a one-time payment method, which means each payment must be authenticated by the customer.

  2. While Stripe can save the IBAN from an iDEAL payment as a SEPA Direct Debit method, in Upmind this does not happen automatically.

  3. To use SEPA for future payments in Upmind, your client needs to manually add SEPA as a payment method in their account. [<u>See the guide here</u>](/client-self-service/client-area/how-do-my-clients-add-a-payment-method).
</Note>

### Changing the Stripe statement description

You can change this under **Settings** > **Payment Options** > **Gateway Settings** > **Statement Description**.

## Indian Stripe customers

For Stripe customers in India, only INR is supported for non-sole traders due to Stripe’s regulations. The error is as follows:

<Note>
  As per Indian regulations, only registered Indian businesses (i.e., sole proprietorships, limited liability partnerships, and companies, but not individuals) can accept international payments. More info [here](https://docs.stripe.com/india-accept-international-payments).
</Note>

## Editing the payment method

Go to **Settings** > **Payment Providers**, click the three dots next to `Stripe`, and select **Edit**.

## Configure Stripe webhook

Configuring Stripe webhooks allows your Stripe account to notify Upmind when key payment and billing events occur.

1. Log in to `Stripe Dashboard` ([https://dashboard.stripe.com](https://dashboard.stripe.com))

<Frame caption="Stripe login">
  <img src="https://mintcdn.com/upmind/Lh8hC132BWHpvRbz/images/fb/4b63038538cc5a5c.png?fit=max&auto=format&n=Lh8hC132BWHpvRbz&q=85&s=b77b008da6852a753c5bac34ef2df19b" alt="Stripe login" width="1096" height="710" data-path="images/fb/4b63038538cc5a5c.png" />
</Frame>

2. In the left sidebar, click **Developers**. Under the Developers section, select **Webhooks**.

<Frame caption="Click on developers">
  <img src="https://mintcdn.com/upmind/h8h5zREaX7k8Y-3x/images/fb/12f2e9571c03b304.png?fit=max&auto=format&n=h8h5zREaX7k8Y-3x&q=85&s=fbf5388b1c1788445788e191d9001c8a" alt="Click on developers" width="428" height="930" data-path="images/fb/12f2e9571c03b304.png" />
</Frame>

<Frame caption="Select webhooks">
  <img src="https://mintcdn.com/upmind/FQ1NhxALxjSHvvWW/images/fb/a935d377f7f28b57.png?fit=max&auto=format&n=FQ1NhxALxjSHvvWW&q=85&s=235c3263355a85d2b328dcaa619dcba9" alt="Select webhooks" width="402" height="1112" data-path="images/fb/a935d377f7f28b57.png" />
</Frame>

3. Click the **+ Add destination** button to add webhooks.

<Frame caption="Add destination">
  <img src="https://mintcdn.com/upmind/1xguIfYUrfespmVI/images/fb/7cf4d057a7a4512f.png?fit=max&auto=format&n=1xguIfYUrfespmVI&q=85&s=bbeec03f515244f91cbd3ecd155a606e" alt="Add destination" width="1440" height="282" data-path="images/fb/7cf4d057a7a4512f.png" />
</Frame>

4. Select the **Events** you want to receive.

Common recommended events for payment automation and reconciliation:

* **payment\_intent.succeeded** – Payment succeeded

* **payment\_intent.payment\_failed** – Payment attempt failed

* **invoice.payment\_succeeded** – Invoice payment completed

* **charge.refunded** – Refund processed on a charge

* **mandate.updated** - Mandate details updated

* **charge.succeeded** - Charge completed successfully

Use the search bar to quickly find specific events.

<Frame caption="Choose events">
  <img src="https://mintcdn.com/upmind/1-uICsJi9zYpvJVH/images/fb/91b07c864cfd57a6.png?fit=max&auto=format&n=1-uICsJi9zYpvJVH&q=85&s=37dc1c0aa48bc40583d69bbff89d60ee" alt="Choose events" width="1022" height="812" data-path="images/fb/91b07c864cfd57a6.png" />
</Frame>

Upmind currently supports these triggers:

* charge.refunded (refund)

* mandate.updated (mandate Update)

* charge.succeeded (paid Pending)

* charge.failed (reject Pending)

5. Choose **Webhook endpoint** as the destination type.

<Frame caption="Webhook endpoint">
  <img src="https://mintcdn.com/upmind/A-RwNPXmK_xnEEqe/images/fb/782af17b44adf483.png?fit=max&auto=format&n=A-RwNPXmK_xnEEqe&q=85&s=7f5edd8c4cb798b31384d0c722143af3" alt="Webhook endpoint" width="1202" height="472" data-path="images/fb/782af17b44adf483.png" />
</Frame>

6. In the Endpoint URL field, enter your system’s webhook receiver address, which you can find under Settings > Payment Providers. Example: [https://yourdomain.com/api/stripe/webhook](https://yourdomain.com/api/stripe/webhook)

<img src="https://mintcdn.com/upmind/A-RwNPXmK_xnEEqe/images/fb/718ff3d8d0817936.png?fit=max&auto=format&n=A-RwNPXmK_xnEEqe&q=85&s=f9a392def2ef82687327907e97bad650" alt="" width="2464" height="516" data-path="images/fb/718ff3d8d0817936.png" />

If integrating with Upmind, use the dedicated webhook route specified in the Upmind documentation or module setup.

You can also write the **Destination Name** and a **Description**.

<Frame caption="Create destination">
  <img src="https://mintcdn.com/upmind/FQ1NhxALxjSHvvWW/images/fb/b584a0ca6691c186.png?fit=max&auto=format&n=FQ1NhxALxjSHvvWW&q=85&s=df5e7e8e6ec3c065dee3d9f3b64a675a" alt="Create destination" width="994" height="800" data-path="images/fb/b584a0ca6691c186.png" />
</Frame>

7. Finalise `Webhook Setup` by clicking **Create Destination**.

The new endpoint now appears in your Stripe dashboard, where you can review event delivery and replay events for testing.

<Frame caption="Review webhook">
  <img src="https://mintcdn.com/upmind/kAlrCUxI2nwYz4_i/images/fb/1e0ccc412bdb5461.png?fit=max&auto=format&n=kAlrCUxI2nwYz4_i&q=85&s=94db29b1b331bdd12f9df155e0ecccc0" alt="Review webhook" width="1576" height="310" data-path="images/fb/1e0ccc412bdb5461.png" />
</Frame>
