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

# Connected Account Stripe Test/Live Webhook Set Up [Client Facing]

> Set up live and test Stripe webhooks for your Salesforce org, then hand the signing secrets to fusionSpan.

This guide walks you through creating the Stripe webhooks that connect your own Stripe account to your Salesforce org.

A few terms used below:

* **Stripe** is the payment processor that charges cards and bank accounts.
* **Salesforce** is the platform fusionCore runs inside.
* A **webhook** is a URL that Stripe calls to push events back to your org — for example, when a payment succeeds or a refund updates. Without it, fusionCore never hears back from Stripe and payment records stay out of date.
* A **signing secret** is a value Stripe generates for each webhook. fusionCore uses it to confirm that an incoming webhook really came from Stripe.

You set up two webhooks: one for **live** payments and one for **test** payments. When you finish, you send the signing secret for each webhook to the fusionSpan team, who use it to complete your Payment Provider Account configuration in fusionCore.

## Prerequisites

* Access to your organization's Stripe account.
* Your Salesforce org's site URL, in the form `[yourURL].my.salesforce-sites.com`. The fusionSpan team can provide this if you do not have it.

## Set Up Live Webhooks for Your Salesforce Org

<Steps>
  <Step title="Log into Stripe">
    Log into your Stripe account on the Stripe website. Confirm that you are in the correct account using the account name shown at the top left.
  </Step>

  <Step title="Open Developers → Webhooks">
    Click **Developers**, then click **Webhooks**.

    <Frame caption="Developers menu in Stripe">
      <img src="https://mintcdn.com/fusionspan/EW_gg4_8FJ-921wF/images/end-user-guides/4107206657/Screenshot_2025-01-28_at_10.44.31-AM-20250128-164451.png?fit=max&auto=format&n=EW_gg4_8FJ-921wF&q=85&s=a7aaa6d01cd3c4ad9451e3597a2e869c" alt="The Stripe dashboard with Developers open and Webhooks in the submenu" width="3390" height="1738" data-path="images/end-user-guides/4107206657/Screenshot_2025-01-28_at_10.44.31-AM-20250128-164451.png" />
    </Frame>
  </Step>

  <Step title="Create the event destination">
    Click **Create an event destination**.

    <Frame caption="Create an event destination in Stripe">
      <img src="https://mintcdn.com/fusionspan/EW_gg4_8FJ-921wF/images/end-user-guides/4107206657/Screenshot_2025-01-28_at_10.47.08-AM-20250128-164726.png?fit=max&auto=format&n=EW_gg4_8FJ-921wF&q=85&s=6713c74fc8028dfc29db3e38c7a1ccb7" alt="The Stripe Webhooks page with the Create an event destination button" width="3406" height="1722" data-path="images/end-user-guides/4107206657/Screenshot_2025-01-28_at_10.47.08-AM-20250128-164726.png" />
    </Frame>
  </Step>

  <Step title="Build the endpoint URL">
    Your Salesforce site URL is in the form `[yourURL].my.salesforce-sites.com`.

    Append it with `/services/apexrest/FCORE_PSTRIPE/Stripe`.

    The final endpoint URL resembles `https://example-org.my.salesforce-sites.com/services/apexrest/FCORE_PSTRIPE/Stripe`.

    <Warning>
      Enter the URL exactly, with no extra slashes or spaces. A malformed URL means Stripe events never reach your org.
    </Warning>

    Paste the final URL into the endpoint URL field.

    <Frame caption="Endpoint URL field in Stripe">
      <img src="https://mintcdn.com/fusionspan/EW_gg4_8FJ-921wF/images/end-user-guides/4107206657/Screenshot_2025-01-28_at_10.38.01-AM-20250128-164002.png?fit=max&auto=format&n=EW_gg4_8FJ-921wF&q=85&s=a030afee144242d24456ca0a1efd572c" alt="The Stripe event destination form with the endpoint URL field" width="3420" height="1724" data-path="images/end-user-guides/4107206657/Screenshot_2025-01-28_at_10.38.01-AM-20250128-164002.png" />
    </Frame>
  </Step>

  <Step title="Select the events to listen for">
    Click **Select events** (above the **Add endpoint** button) and add the following events:

    * `charge.refund.updated`
    * `payment_intent.canceled`
    * `payment_intent.payment_failed`
    * `payment_intent.processing`
    * `payment_intent.requires_action`
    * `payment_intent.succeeded`
    * `customer.created`
    * `customer.updated`
    * `setup_intent.canceled`
    * `setup_intent.requires_action`
    * `setup_intent.setup_failed`
    * `setup_intent.succeeded`
    * `payment_method.updated`
    * `payment_method.automatically_updated`
    * `payment_method.detached`

    <Frame caption="Selecting the events to listen for in Stripe">
      <img src="https://mintcdn.com/fusionspan/EW_gg4_8FJ-921wF/images/end-user-guides/4107206657/image-20250128-170229.png?fit=max&auto=format&n=EW_gg4_8FJ-921wF&q=85&s=5550b6771d6371d4283f1b3ebcf8e8b3" alt="The Stripe event selection list with the fusionCore webhook events being added" width="3408" height="1736" data-path="images/end-user-guides/4107206657/image-20250128-170229.png" />
    </Frame>
  </Step>

  <Step title="Add the endpoint">
    Click **Add endpoint** at the bottom left.

    <Frame caption="Adding the webhook endpoint in Stripe">
      <img src="https://mintcdn.com/fusionspan/EW_gg4_8FJ-921wF/images/end-user-guides/4107206657/image-20250128-170423.png?fit=max&auto=format&n=EW_gg4_8FJ-921wF&q=85&s=5f76d5139ad00ef36d27e904459911d0" alt="The Stripe Add endpoint button at the bottom left of the event destination form" width="1024" height="533" data-path="images/end-user-guides/4107206657/image-20250128-170423.png" />
    </Frame>
  </Step>

  <Step title="Copy the signing secret">
    Open the webhook you just created and copy its **signing secret**. You hand this to the fusionSpan team in the next steps so they can finish setup.

    <Frame caption="Locating the webhook signing secret in Stripe">
      <img src="https://mintcdn.com/fusionspan/EW_gg4_8FJ-921wF/images/end-user-guides/4107206657/Request_Signing_secret.png?fit=max&auto=format&n=EW_gg4_8FJ-921wF&q=85&s=360aee34bd39d5e007dee7b55407807f" alt="The Stripe webhook detail page showing where to reveal and copy the signing secret" width="3356" height="1644" data-path="images/end-user-guides/4107206657/Request_Signing_secret.png" />
    </Frame>
  </Step>
</Steps>

## Set Up Test Webhooks for Your Salesforce Org

The test webhook is identical to the live webhook, except you create it in Stripe's test mode.

<Steps>
  <Step title="Log into Stripe">
    Log into your Stripe account and confirm that you are in the correct account using the account name at the top left.
  </Step>

  <Step title="Switch to test mode">
    Switch test mode on at the top left: click your **Account**, then **Switch to sandbox**, then **Test mode**.

    <Frame caption="Switching to test mode in Stripe">
      <img src="https://mintcdn.com/fusionspan/EW_gg4_8FJ-921wF/images/end-user-guides/4107206657/image-20250630-200837.png?fit=max&auto=format&n=EW_gg4_8FJ-921wF&q=85&s=06e45eae55bd9bd1af79ea573cf84294" alt="The Stripe account menu showing Switch to sandbox and Test mode options" width="1840" height="845" data-path="images/end-user-guides/4107206657/image-20250630-200837.png" />
    </Frame>
  </Step>

  <Step title="Repeat the live webhook steps">
    With test mode on, follow the same steps you used to create the live webhook above. The only difference is that you create this one in test mode.

    Copy the test webhook's **signing secret** as well — it is separate from the live signing secret.
  </Step>
</Steps>

## Limitations and Common Pitfalls

<Warning>
  **Use your connected account, not the fusionSpan platform account.** Set the webhook up on the Stripe account that will receive the payments. If the webhook is created on the fusionSpan/fusionCore platform account instead, the Credit Card/ACH payment modal hangs on a loading state and payments will not work.
</Warning>

* **The endpoint URL must be exact.** Stripe sees a successful HTTP response even when fusionCore ignores an event, so a wrong URL, a stray slash, or a missing event subscription fails silently — Stripe will not retry and you will not see an obvious error. Double-check the URL and the event list before clicking **Add endpoint**.
* **Subscribe to all 15 listed events and no others.** fusionCore only processes the events above. Subscribing to other event types adds noise and can produce processing errors, so keep the subscription to exactly this list.
* **Live and test webhooks have separate signing secrets.** Each Stripe environment generates its own secret. Keep them distinct and never reuse a webhook endpoint or signing secret between live and test.
* **Stripe may show an extra event.** In test mode, Stripe sometimes auto-adds `payment_method.card_automatically_updated`, so you may see 16 events instead of 15. This is expected and does not need to be removed.

## Next Steps

Once both webhooks are set up, notify the fusionSpan team that setup is complete and securely transfer the signing secret for each webhook (live and test). The fusionSpan team uses these secrets to finish configuring your Payment Provider Accounts in fusionCore.

<Tip>
  Send signing secrets through a secure channel. Treat them like passwords — do not email them in plain text or post them in chat.
</Tip>
