## TL;DR

A Stripe coupon with duration_in_months discounts exactly that many invoice cycles and then drops off; forever keeps discounting until removed. The invoice impact is identical in the early months, which is why the wrong choice surfaces later as a surprise full-price invoice. Pick duration_in_months for promotions with an end date and forever only for negotiated permanent pricing. Record the choice on the customer record so support can answer 'why did my bill go up' in one look.

## The query

```text
Stripe coupon "duration_in_months" vs "forever": invoice impact
```

## Use this when

- Promo pricing that should end after N months
- A customer complaining their bill went up after a promo ended
- Deciding coupon duration for a negotiated deal

## Not for

- One-off credits (use customer balance or invoice-level discounts)
- Trials (use trial periods, not coupons)

## Steps

1. Decide the commercial intent: fixed-term promo or permanent negotiated price.
   Expected output: The choice maps to duration_in_months or forever.
2. Create the coupon with duration set to in_months and the count, or forever.
   Expected output: The coupon object encodes the intended lifespan.
3. Apply it to the customer or subscription and preview the next few invoices.
   Expected output: You see the discount fall off at the right cycle.
4. Note the coupon and its end date on the customer record or in your CRM.
   Expected output: Support can explain future bill changes instantly.
5. Set a reminder or webhook check before the final discounted invoice.
   Expected output: The customer is warned before the price steps up.

## Variant phrasings

### Stripe coupon duration_in_months vs forever

### coupon expires after N months Stripe invoice

### Stripe promo pricing end date

## Root cause

The duration lives on the coupon because Stripe applies the same coupon object across invoices over time; it needs to know when to stop. duration_in_months counts invoice cycles for that subscription, not calendar months from creation, which matters for paused or irregular billing.

## Edge cases

- A coupon applied at the customer level affects all their subscriptions; scope it if needed
- Removing a forever coupon mid-negotiation requires an explicit removal; it never self-expires

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_4w0XvroKPmXoyeZ3tVulTA
