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

# FastSpring payment integration

> Integrate FastSpring as your payment provider in FunnelFox. Step-by-step setup for web subscriptions, checkouts, and recurring billing.

FastSpring is an all-in-one merchant of record and payment integration for FunnelFox that provides global
payment processing and subscription management.

## Key features

The FunnelFox integration with FastSpring supports the following payment
methods and transaction types:

| Transaction type               | Cards | Apple Pay | Google Pay | PayPal |
| ------------------------------ | :---: | :-------: | :--------: | :----: |
| **Subscriptions**              |       |           |            |        |
| Subscriptions                  |   ✅   |     ✅     |      ✅     |    ✅   |
| Free & paid trials             |   ✅   |     ✅     |      ✅     |    ✅   |
| **Upsells**                    |       |           |            |        |
| One-time products              |   ✅   |     ✅     |      ✅     |    ✅   |
| Subscription upsells (2nd sub) |   ✅   |     ✅     |      ✅     |    ✅   |
| **Offers**                     |       |           |            |        |
| Intro offers                   |   ✅   |     ✅     |      ✅     |    ✅   |

Learn more about [configuring each transaction type](/integrations/payments/fastspring#subscription-configuration) in your funnel.

## Setup

You need an active FastSpring account to integrate with FunnelFox.

Keep both FunnelFox and FastSpring dashboards open during setup—you'll
switch between them several times.

### 1. API keys

1. Go to **Developer Tools > APIs > API Credentials** in
   [FastSpring](https://app.fastspring.com/).
2. Click **Create** or **Reset Credentials** to get your API Username and
   Password.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-reset.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=f1b8da848ea926aeb0c4c4b6a841162c" width="1920" height="989" data-path="assets/fastspring-reset.png" />
</Frame>

3. Copy your **Username**.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-copy-username.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=d7b6de8000e097eb3035ffe0c8a6e9db" width="1920" height="989" data-path="assets/fastspring-copy-username.png" />
</Frame>

4. Go to **Integrations > FastSpring** in FunnelFox.

5. Paste your Username into the **API Username** fields under both
   **Production** and **Sandbox** sections.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-paste-username.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=2c34ee93408b9b4f3926c04e12a4b8ad" width="1920" height="989" data-path="assets/fastspring-paste-username.png" />
</Frame>

6. Go back to your credentials in FastSpring and copy your **Password**.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-copy-pass.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=04ea299f716bc5a5e98791d937d2397b" width="1920" height="989" data-path="assets/fastspring-copy-pass.png" />
</Frame>

7. Paste your Password into the **API Password** fields under both
   **Production** and **Sandbox** sections in FunnelFox.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-paste-pass.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=e95dd9e061e2541c26ea7988a1eff1bb" width="1920" height="989" data-path="assets/fastspring-paste-pass.png" />
</Frame>

<Info>Don't close your FastSpring integration settings in FunnelFox and proceed with the next section.</Info>

### 2. Webhook keys

1. Go to **Developer Tools > Webhooks > Configuration** in FastSpring.
2. Click **Add Webhook**.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-add-webhook.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=174ee91195e92a1723f1945e2d8b5d45" width="1920" height="989" data-path="assets/fastspring-add-webhook.png" />
</Frame>

3. Configure the webhook and click **Add**:

* **Title**: Name your webhook.
* **Get webhooks from**: Live and Test orders.
* **Webhook expansion**: Keep disabled.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-webhook-configuration.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=3a2c165ef2411e67f5bb3e745b8311f3" width="1920" height="989" data-path="assets/fastspring-webhook-configuration.png" />
</Frame>

4. Click **Add URL Endpoint** on the webhook you just created.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-add-url.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=737ce0d7fbb76bb2023d323f701f7767" width="1920" height="989" data-path="assets/fastspring-add-url.png" />
</Frame>

5. Go back to your integration settings in FunnelFox and copy your
   **Webhook URL**.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-copy-url.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=72873abf4080e913db1f0e0d2b74330b" width="1920" height="989" data-path="assets/fastspring-copy-url.png" />
</Frame>

6. Proceed with webhook configuration in FastSpring and click **Add**:

* **URL**: Paste your webhook URL from FunnelFox.
* **HMAC SHA256 Secret**: Generate your own webhook secret and paste
  here. Keep your secret saved — you'll also need it later in
  FunnelFox.

<Info>You only need one secret. The same secret is used for both sandbox and production setups.</Info>

* Select the following **Events**:
* `order.completed`
* `subscription.activated`
* `subscription.canceled`
* `subscription.deactivated`
* `subscription.updated`
* `subscription.uncanceled`
* `subscription.charge.completed`
* `subscription.charge.failed`
* `subscription.paused`
* `subscription.resumed`
* `return.created`
* `chargeback.created`

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-webhook-events.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=306f9d8b0fed75c11d24e0836a369af6" width="1920" height="989" data-path="assets/fastspring-webhook-events.png" />
</Frame>

7. Go back to FunnelFox and paste your webhook secret into the
   **Webhook HMAC Secret** fields under both **Production** and
   **Sandbox** sections.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-paste-secret.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=bddbb68e44177e9a538b56e6c2d15975" width="1920" height="989" data-path="assets/fastspring-paste-secret.png" />
</Frame>

### 3. Domains

1. Go to **Checkouts > Popup Checkouts** in FastSpring.

<Info>Based on the checkout type needed, you can proceed with Embedded checkout instead. Learn about [Checkout types](/integrations/payments/fastspring#checkout-types).</Info>

2. Click **Create Popup Checkout**.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-create-checkout.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=bc088c46761abae9d903143fcaba9226" width="1920" height="989" data-path="assets/fastspring-create-checkout.png" />
</Frame>

3. Enter a unique ID for your new checkout without spaces or special
   characters. This ID becomes part of your checkout URL.
4. Click **Create**.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-enter-id.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=1bb4e19c08e9144ed61e3e6a24e72ca5" width="1920" height="989" data-path="assets/fastspring-enter-id.png" />
</Frame>

5. Click **No Website Domains Allowed** badge on the checkout you just created.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-no-domains.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=d8a86f1d04a96cd414b7e929238a248a" width="1920" height="989" data-path="assets/fastspring-no-domains.png" />
</Frame>

6. Paste the following domains and click **Save**:

* Your project domain from
  [Settings > Domains](https://app.funnelfox.com/settings/domains)
  in FunnelFox.
* `http://app.funnelfox.com/` to use your checkout in funnel preview
  mode.
* If you have a custom domain, add it as well.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-paste-domains.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=152e2e4e455ef00dc77d04dbdb82bd6d" width="1920" height="989" data-path="assets/fastspring-paste-domains.png" />
</Frame>

7. Click **Place on your website** on the checkout you just created.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-place-website.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=b9d118093fc1f3826805e3d84d42ebc1" width="1920" height="989" data-path="assets/fastspring-place-website.png" />
</Frame>

8. Copy your account subdomain from: `data-storefront="YOUR_ACCOUNT_SUBDOMAIN.test.onfastspring.com/popup-demo"`.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-copy-subdomain.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=4f3a5b34de34c5568a0f5125ac879ccc" width="1920" height="989" data-path="assets/fastspring-copy-subdomain.png" />
</Frame>

9. Go back to FunnelFox and paste your checkout ID into the
   **Account subdomain** and **Account subdomain (sandbox)** fields.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-paste-subdomains.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=82ce56ef551cd253661184713ba9625d" width="1920" height="989" data-path="assets/fastspring-paste-subdomains.png" />
</Frame>

10. Click **Save changes**.

<Check>Your FastSpring integration is now active! Remember to republish your funnels to apply the changes.</Check>

## Checkout types

FunnelFox supports two FastSpring checkout types:

* **Popup**: A modal checkout that opens over your funnel.
* **Embedded**: A checkout embedded directly into your page layout.

Configure each checkout type before using it in the Editor:

1. Go to **Checkouts > Popup Checkouts / Embedded Checkouts** in FastSpring.
2. Create new checkout of the type needed.
3. Click **No Website Domains Allowed** badge on the checkout you just created.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-no-domains.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=d8a86f1d04a96cd414b7e929238a248a" width="1920" height="989" data-path="assets/fastspring-no-domains.png" />
</Frame>

4. Paste the following domains and click **Save**:

* Your project domain from
  [Settings > Domains](https://app.funnelfox.com/settings/domains)
  in FunnelFox.
* `http://app.funnelfox.com/` to use your checkout in funnel preview
  mode.
* If you have a custom domain, add it as well.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-paste-domains.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=152e2e4e455ef00dc77d04dbdb82bd6d" width="1920" height="989" data-path="assets/fastspring-paste-domains.png" />
</Frame>

## Subscription configuration

<Warning>Due to FastSpring limitation, you need to collect customer email before the paywall screen with Checkout element. Add an Email input before configuring products.</Warning>

After setup, FunnelFox automatically creates webhooks in your FastSpring
account and syncs your products.

To make each FastSpring product available in the Checkout element, you need:

* **Checkout ID**: Go to **Checkouts > Popup Checkouts / Embedded Checkouts** in FastSpring and copy the ID of the checkout to configure (e.g. `Popup / YOUR_CHECKOUT_ID`).

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-checkout-id.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=d8673f1f9de2134e207fc4d4b5ee31d2" width="1920" height="989" data-path="assets/fastspring-checkout-id.png" />
</Frame>

* **Product path**: Go to **Catalog > Subscription Plans** in FastSpring and copy the path of product to configure.

<Frame>
  <img src="https://mintcdn.com/funnelfox/JZ6Tq4bG2LMFSJTU/assets/fastspring-product-path.png?fit=max&auto=format&n=JZ6Tq4bG2LMFSJTU&q=85&s=b22817bb36517a615e76277ea5c422c7" width="1920" height="989" data-path="assets/fastspring-product-path.png" />
</Frame>

Use the Checkout ID and Product path values to proceed with product configuration in your [Checkout element](/elements/checkout#subscription-configuration).

## Testing

Test your FastSpring integration with simulated payments before going
live.

1. Configure the test in your Checkout element's **Sandbox** section.
2. Open your funnel in **Preview** mode.
3. Use these FastSpring test cards with any future expiry date and the CVV from the product page in FastSpring:

| Card Number         | Result          |
| ------------------- | --------------- |
| 4242 4242 4242 4242 | Success         |
| 4000 0000 0000 0002 | Generic decline |

## Next steps

* [Set up checkout element](/elements/checkout) in your funnel
