## TL;DR

Changing a subscription's billing_cycle_anchor can create proration invoices for the stub period, surprise customers with mid-cycle charges, or silently reset the anchor on update. The safe move is to decide the money behavior first: set proration_behavior to none when the anchor change should be free, or create_pending_invoice_items when you want the stub billed. Then update the anchor, verify the upcoming invoice, and only then tell the customer. Preview everything with the upcoming-invoice endpoint before committing.

## The query

```text
Stripe billing cycle anchor: changing it without proration surprises
```

## Use this when

- Aligning subscription billing dates to the 1st of the month
- Moving a billing anchor after a plan change without a surprise charge
- Previewing what an anchor change will bill

## Not for

- Changing the plan itself (anchor is a separate decision)
- One-off credits or discounts (different mechanism)

## Steps

1. Fetch the upcoming invoice with the proposed anchor and default proration to see the money impact.
   Expected output: You see the stub-period line items before anything is final.
2. Choose proration_behavior explicitly: none for a free alignment, create_pending_invoice_items to bill the stub.
   Expected output: The money behavior is a decision, not an accident.
3. Apply the anchor update with that proration behavior set.
   Expected output: The subscription's anchor moves with the chosen billing outcome.
4. Re-check the upcoming invoice to confirm the next invoice matches expectations.
   Expected output: No surprise line items survive.
5. Notify the customer of the new billing date and the exact amount of the next invoice.
   Expected output: The change lands without a confused reply.

## Variant phrasings

### Stripe change billing cycle anchor proration

### Stripe billing_cycle_anchor update without charging

### align subscription billing date Stripe

## Root cause

The anchor is just a date until proration gives it money: Stripe's default proration bills the gap between old and new anchors. Naming the proration behavior up front is what separates an intentional stub charge from a billing incident.

## Edge cases

- Setting the anchor to now with proration none still resets the cycle date; confirm that is wanted
- Schedules and anchors interact: a subscription schedule can re-anchor on each phase

## Provenance

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