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

# Stripe Integration

> Subscription billing, payment processing, dunning automation, and automated member lifecycle management via Stripe.

Outpost connects to the same Stripe account as your Ghost site to read subscription events and use them to drive automation, segmentation, and retention tools. Ghost handles the billing relationship with Stripe directly — Outpost reads that data and acts on it.

<Frame caption="Stripe connection settings in Core Connections showing connection status and configuration">
  <img src="https://mintcdn.com/outpost-eb0cfbad/-cSE19cqpLAJyGqt/images/integrations/stripe-settings.png?fit=max&auto=format&n=-cSE19cqpLAJyGqt&q=85&s=2ebe1c8960a1eb77bfda733167b236e4" alt="Stripe integration settings with connection status, public key, secret key, webhook URL, and currency configuration" width="1540" height="659" data-path="images/integrations/stripe-settings.png" />
</Frame>

<Info>
  For initial setup instructions, see [Connecting Stripe](/getting-started/connecting-stripe).
</Info>

***

## How billing works

Billing flows between Stripe and Ghost directly. Outpost reads the same Stripe events to drive automation:

```mermaid theme={"theme":{"light":"github-light","dark":"github-dark"}}
sequenceDiagram
    autonumber
    actor M as Member
    participant G as Ghost
    participant S as Stripe
    participant O as Outpost
    M->>G: subscribes via checkout
    G->>S: creates subscription
    S-->>G: subscription event
    G-->>M: tier access activated
    S-->>O: same subscription event
    O->>O: update member record,<br/>trigger automations
```

Stripe is the source of truth for billing. Ghost owns the subscription/tier relationship with the member. Outpost listens to the same Stripe events to drive welcome flows, segmentation, label changes, and integration syncs without sitting in the payment path.

***

## Connection settings

Stripe is configured under **Core Connections** in the left navigation.

| Field                       | Description                                                                                                               |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Connection status**       | Shows whether Stripe is connected. Use the **Connect to Stripe** button for Stripe Connect setup (recommended).           |
| **Public Key**              | Your Stripe publishable key (starts with `pk_live_` or `pk_test_`). Only needed for manual configuration.                 |
| **Secret Key**              | Your Stripe secret key (starts with `sk_live_` or `sk_test_`). Only needed for manual configuration.                      |
| **Default Currency**        | The currency for subscription pricing (e.g., USD, GBP, EUR).                                                              |
| **Webhook URL**             | Read-only URL that Outpost provides for Stripe to send events to.                                                         |
| **Webhook Secret**          | Stripe's webhook signing secret, used to verify the events Stripe sends to Outpost. Only needed for manual configuration. |
| **Return URL**              | URL where members are redirected after completing Stripe checkout.                                                        |
| **Invoice mailing address** | Address included on Stripe invoices sent to members.                                                                      |

***

## Stripe data Outpost reads

| Stripe Data               | How Outpost uses it                                                                                   |
| ------------------------- | ----------------------------------------------------------------------------------------------------- |
| **Customer**              | Linked to an Outpost member record                                                                    |
| **Subscription**          | Drives member status, tier assignment, and renewal tracking                                           |
| **Invoice**               | Tracks renewals, payment failures, and revenue                                                        |
| **Coupon**                | Created by Outpost when you configure [offers and discounts](/features/offers-and-discounts)          |
| **Subscription Schedule** | Created by Outpost for [subscription schedules](/features/subscription-schedules) (two-phase pricing) |

***

## What Outpost handles automatically

Once Stripe is connected, Outpost reacts to billing events in real time. Here's what Outpost does for each scenario:

### New subscription

When a member subscribes through your Ghost site's Stripe checkout:

* Member status is set to **active** and assigned to the correct tier
* The [welcome email flow](/features/basic-autoresponder) triggers (if configured)
* Connected integrations are notified (HubSpot, Salesforce, podcast platforms, etc.)
* The subscription appears in the member's Activity Log

### Subscription upgraded or downgraded

When a member changes their tier or billing interval:

* Member's tier assignment and renewal date update automatically
* Any active retention flow for this member is ended
* Integration syncs fire for the updated tier

### Member cancels auto-renewal

When a member cancels (but their current period hasn't ended yet):

* Subscription is marked as "scheduled to cancel at period end"
* The **retention email flow** triggers automatically — a configurable sequence that asks the member to reconsider before their access ends
* The member retains full access until their current billing period ends
* An admin notification is sent to the publication owner

### Subscription expires

When the billing period ends after a cancellation:

* Member is removed from the paid tier
* A "Former Paid Subscriber" label is added in Ghost (useful for segmentation and re-engagement)
* For group subscriptions, individual members may revert to complimentary status depending on configuration

### Payment failed (dunning)

When a renewal payment fails (card declined, expired, insufficient funds):

1. Member status changes to **past due** — they keep access while Stripe retries
2. Outpost triggers the [failed payment flow](/features/failed-payment-flow) — a configurable email sequence encouraging the member to update their payment method
3. Stripe retries the charge according to your [Stripe retry schedule](https://dashboard.stripe.com/settings/billing/automatic)
4. **If a retry succeeds:** member returns to active status, dunning emails stop automatically
5. **If all retries fail:** Stripe cancels the subscription, and the member is marked as cancelled with the "Former Paid Subscriber" label

Configure your dunning email sequence in **[Autoresponder](/features/basic-autoresponder)**.

<Tip>
  Members in "past due" status still have access to your content while Stripe retries their payment. This grace period helps prevent unnecessarily locking out members who just need to update an expired card.
</Tip>

### Payment method updated

When a member updates their card in Stripe, Outpost logs the event for your records. No action is needed from you.

### Checkout completed (one-time payments)

For non-subscription purchases — gifts, group subscriptions, donations, and promotional checkouts — Outpost:

* Finalizes the purchase (activates gift, seats, or records donation)
* Triggers matching email flows and automations
* Notifies connected integrations

***

## Offers and coupons

When you create an [offer](/features/offers-and-discounts) in Outpost, it creates a corresponding Stripe Coupon. When a member redeems the offer via Ghost's checkout, the coupon is applied automatically. Outpost tracks which members used which offers for reporting.

***

## Subscription schedules

Outpost supports two-phase pricing scenarios — for example, a discounted first year followed by full price. See [Subscription Schedules](/features/subscription-schedules) for details.

***

## Test mode

Outpost supports Stripe test mode so you can try payments without real charges. Use your Stripe test keys in the connection settings, and use Stripe's test card number `4242 4242 4242 4242` to simulate successful payments.

***

## Related features

<CardGroup cols={2}>
  <Card title="Ghost Integration" icon="ghost" href="/integrations/ghost">
    Ghost handles the billing relationship — Outpost reads the results.
  </Card>

  <Card title="Failed Payment Flow" icon="credit-card" href="/features/failed-payment-flow">
    Configure the dunning email sequence for failed payments.
  </Card>

  <Card title="Offers & Discounts" icon="tag" href="/features/offers-and-discounts">
    Create promotional offers backed by Stripe coupons.
  </Card>

  <Card title="Subscription Schedules" icon="calendar" href="/features/subscription-schedules">
    Set up two-phase pricing with Stripe subscription schedules.
  </Card>
</CardGroup>

***

## FAQ

<AccordionGroup>
  <Accordion title="Does Outpost process payments directly?">
    No. All billing flows between Stripe and Ghost. Outpost reads Stripe events to update member records and trigger automations, but it does not initiate charges or manage subscriptions in Stripe.
  </Accordion>

  <Accordion title="Can I use a different Stripe account than my Ghost site?">
    No. Outpost must connect to the same Stripe account as your Ghost site so that member and subscription data matches across both systems.
  </Accordion>

  <Accordion title="What happens if Stripe stops sending updates?">
    Member status updates will be delayed until the connection is restored. Check your Stripe dashboard for any delivery issues. Your Outpost connection URL is shown in Core Connections → Stripe.
  </Accordion>

  <Accordion title="How do I connect Stripe to Outpost?">
    Click "Connect to Stripe" in Core Connections. You'll be taken to Stripe to authorize the connection, then redirected back to Outpost.
  </Accordion>
</AccordionGroup>
