Stripe payment platform
Contents
When using revenue analytics, you can connect Stripe to PostHog as a source of revenue data. Revenue analytics will automatically use the data from Stripe to build your revenue dashboard.
If you already have a Stripe-connected source, you can access the revenue analytics settings page and turn on the Stripe toggle to connect to your Stripe data.


The Stripe connector syncs your Stripe data into PostHog, including charges, customers, invoices, products, subscriptions, and more.
Adding a data source
- In PostHog, go to the Data pipeline page and select the Sources tab.
- Click + New source and select Stripe by clicking the Link button.
- Choose your authentication method:
Option 1: OAuth (recommended)
- Select OAuth connection as the authentication type.
- Click the Connect button and follow the prompts to authorize PostHog with your Stripe account.
- Optional: Add your Stripe Account ID. You can find it by going to Settings > Business, selecting the Account details tab, and clicking your Account ID or pressing
⌘+Ito copy your ID. - Optional: Add a prefix to your table names.
- Click Next.
Option 2: Restricted API key
If you prefer not to use OAuth, you can connect using a restricted API key instead.
- Select Restricted API key as the authentication type.
- Head to your Stripe dashboard > Developers > API keys, under Restricted keys, click + Create a restricted key. You need to give your API key the following Read permissions:
| Resource Type | Required Read Permissions |
|---|---|
| Core | Balance transaction sources, Charges and refunds, Customers, Disputes, Payment methods, Payouts, Products |
| Billing | Credit notes, Invoices, Prices, Subscriptions |
| Connect | Click Read in the Connect header |
If you aren't concerned with giving us more permissions than necessary, you can also simply click Read on the Core, Billing, and Connect headers to give us the necessary permissions.
If your Stripe account is in a language other than English, we suggest you update it to English before following the steps above to guarantee the correct permissions are set.
- Paste your API key into PostHog.
- Optional: Add your Stripe Account ID. You can find it by going to Settings > Business, selecting the Account details tab, and clicking your Account ID or pressing
⌘+Ito copy your ID. - Optional: Add a prefix to your table names.
- Click Next.
For Stripe tables, incremental syncs only sync new records and don't update existing records. This is a limitation of the Stripe API. To get real-time updates including changes to existing records, set up webhooks.
The data warehouse then starts syncing your Stripe data. You can see details and progress in the data pipeline sources tab.
Setting up webhooks for real-time syncing
By default, Stripe data syncs on a schedule. You can set up webhooks to get real-time updates instead, including changes to existing records.
To set up a webhook:
- Go to your Stripe source in the data pipeline sources tab.
- Click the Webhook tab.
- Click Create webhook.
PostHog automatically creates and registers the webhook on your Stripe account. Once set up, you can view the webhook status, including both PostHog's internal status and the Stripe-side webhook status, from the Webhook tab.
How is the data stored?
Your data will be imported and transformed into a set of managed views. Revenue analytics will use these views to build your revenue dashboard automatically.
You can also use these views in the SQL editor to run custom queries and visualize the data.
Deferred revenue
PostHog will automatically defer revenue recognition to match your accounting practices. This means we spread the revenue across all the months a charge is relevant for. You can read more about this on the deferred revenue page.
Connect to customers
You can link your Stripe customers to your persons and groups in PostHog. This helps you identify your top customers and see how much revenue they're generating.
You can learn more about this on the connect to customers page.