PostHog Handbook Library / Growth

1,894 words. Estimated reading time: 9 min.

Refunds

Auto TL;DR

At a Glance

This long page covers these main areas. The list is generated from the article headings, so it updates with every handbook rebuild.

  1. Learning curve
  2. Unexpected stardom
  3. Under attack
  4. Wrong setup
  5. Eligibility criteria
  6. Repeat incidents
  7. Request channels and processing
  8. Processing credits or refunds

We know things happen and sometimes you might need to issue a refund. Here’s how we handle common scenarios:

Learning curve

Just got off of the startup plan/new client accidentally used us a lot.

We issue refunds or credits in this category if this is the first bill >$1 and/or they meet eligibility criteria as explained below.

Unexpected stardom

Side project sudden volume spike

We issue refunds or credits in this category if this is the first bill >$1 and/or usage spiked by >200% compared to their average usage over the past three months, and the company doesn't have any revenue, or is a hobby project.

Under attack

Bot spike/abusive user drove traffic which in turn increased PostHog usage

We flag accounts with unusual activity spikes for review, and refund or issue credits to cover the overage amount once the issue has been resolved. The issued amount covers any amount exceeding the average usage of the three months preceding the spike.

Wrong setup

New feature trial with incorrect configuration

We issue refunds or credits in this category if the customer was charged for features they didn't intend to use due to default settings or configuration errors, and this is the first occurrence of unintended usage charges.

Eligibility criteria

Customer must meet the following criteria to get a refund:

Repeat incidents

For first incident response, we follow standard policy above and provide guidance for preventing future incidents (e.g. ask them to implement billing limits)

Subsequent incidents:

Request channels and processing

Refund requests can come through different channels:

In-app ticket

Contact sales form or email to sales@posthog.com Account Executives can direct these to the Support team using the ticket emoji in the #website-contact-sales Slack channel to auto-create a Zendesk ticket

Large account requests

Processing credits or refunds

How to calculate overage amount

Review customer usage

Before doing a refund, review customer's usage. Some useful sources:

What's "normal" vs "weird" usage:

Identify baseline usage

Calculate overage

For event-specific overages (optional):

If you want more precision when a single event type is inflated, use the 'Event counts by type last X days' insight in the Metabase dashboard:

  1. Change the lookback days to find the baseline period before the spike
  2. Identify the inflated event type and compare its spike volume to the baseline
  3. The difference is your overage amount for that event type

Calculate the amount to refund/credit

Refund or credit?

How to issue refunds or credits

Prerequisites

You need Support specialist level access to Stripe, ask Simon for access.

Issuing credits

  1. Go to billing admin
  2. Next to 'Credits', click on 'Add'
  3. In the 'Customer' field, use the drop-down menu to find your customer
  4. In the 'Amount' field, set an amount of credits you wish to issue for this customer
  5. In the 'Reason' field, select a reason which best describes why you're issuing the credits
  6. Add an optional note in the 'Notes' field
  7. Include an optional link in the 'Reference link' field, e.g. Zendesk ticket, Slack message link, etc.
  8. Click 'Save and view'
  9. Confirm that the credits were successfully added to the customer's balance in Stripe under 'Customer invoice balance'

Issuing a refund

Refunds are now initiated through Billing Admin and finalized in Stripe via a credit note.

There are two ways to reach the Add Refund screen.

Option A:

  1. Navigate to Billing Admin → Customers.
  2. Find the right Customer (search by organization ID or customer ID).
  3. Once in the Customer view, scroll down to _Related invoices_ section. Find the right one (you can identify it by its id, dates or amount).
  4. Click on "Start refund"

Option B:

  1. Navigate to Billing Admin → Invoices.
  2. Find the right invoice (search by invoice ID, organization ID, etc).
  3. Click and open the invoice view.
  4. Once in the view, click on the top right button "Start refund"

Once you do that (through any of the two options), you'll land on the "Add refund" screen. From there, you can continue with the refund:

  1. Allocate refund amounts per product. Refunds must be issued per product. Enter the refund amount for each affected product. You may need to do more math here: for an event spike refund may span Product Analytics, Person Profiles, and Group Analytics. Billing Admin does not automatically split refunds across products, you must do the math and allocate amounts manually. As you enter per product amounts, the total refund amount updates automatically.
  2. Select refund reasons: Choose a Stripe refund reason (required) and select an internal reason (used for internal reporting and analysis)
  3. Add any relevant notes or context (e.g. Zendesk ticket, Slack link, short explanation)
  4. Once you review everything and all looks good save the refund in Billing Admin. This will issue a Stripe credit note, which is processed as a refund to the customer’s default payment method. Stripe automatically sends a notification email to the customer.

Fixed fee product refunds

For fixed-fee subscriptions (e.g. Boost plan), Stripe’s default proration behavior can cause double crediting.

Example: A customer subscribes to a fixed fee add on by accident and requests a refund. After we issue a credit note, they cancel their subscription. When this happens, Stripe automatically creates a prorated “unused time” line item on the next upcoming invoice. This results in the customer being credited twice:

To prevent overcrediting, we need to manually delete the pending invoice item that Stripe creates after the subscription cancellation.

Steps:

  1. Find customer profile in Stripe (you can search by organization id)
  2. Locate the proration adjustment under Pending Invoice Items.
  3. Manually delete the line item.
  4. Add a note in Zendesk documenting that the proration line was removed to avoid double crediting.

Spotting suspicious stuff - watch out for:

When to escalate to RevOps

Tag Mine Kansu in Zendesk and share what you checked, what you think we should do, and any other relevant context. RevOps will review usage trends and customer lifecycle (e.g. new client, high-value account) to figure out next steps.

Our approach

We'd rather fix unexpected usage issues than have customers pay one massive invoice and then reduce spending or leave us. The goal is to maintain a fair, transparent relationship that works for everyone in the long term.

Trial periods and usage spikes

Canonical URL: https://posthog.com/handbook/growth/sales/refunds

GitHub source: contents/handbook/growth/sales/refunds.md

Content hash: 9baddec5d6f3ba75

Static reader notes
  • MDX_COMPONENT_STATIC_ADAPTER: Adapted interactive MDX components for static reading: TeamMember.