✅ Match S01 · Flat monthly subscription verified 2026-10-20 Re-run live in Stripe
✅ Match S02 · Annual plan verified 2026-10-20 Re-run live in Stripe
✅ Match S03 · Per-seat x5 verified 2026-10-20 Re-run live in Stripe
✅ Match S04 · 14-day trial moves the anchor verified 2026-10-20 Re-run live in Stripe
✅ Match S05 · Upgrade day 17 of 31, prorations on next invoice verified 2026-10-20 Re-run live in Stripe
✅ Match S06 · Downgrade day 17 of 31 verified 2026-10-20 Re-run live in Stripe
✅ Match S07 · February: mid-month upgrade is exactly half verified 2026-10-20 Re-run live in Stripe
✅ Match S08 · Leap-year February verified 2026-10-20 Re-run live in Stripe
✅ Match S09 · Add 3 seats mid-cycle verified 2026-10-20 Re-run live in Stripe
✅ Match S10 · SAVE20 once verified 2026-10-20 Re-run live in Stripe
✅ Match S11 · SAVE20 applied twice right after subscribing discounts the next invoice once verified 2026-10-20 Re-run live in Stripe
✅ Match S12 · FOREVER25 on Pro verified 2026-10-20 Re-run live in Stripe
✅ Match S13 · $10 off for 3 months verified 2026-10-20 Re-run live in Stripe
✅ Match S14 · amount_off larger than invoice is capped, not carried verified 2026-10-20 Re-run live in Stripe
✅ Match S15 · 10% exclusive tax verified 2026-10-20 Re-run live in Stripe
✅ Match S16 · 20% inclusive VAT verified 2026-10-20 Re-run live in Stripe
✅ Match S17 · Coupon then exclusive tax verified 2026-10-20 Re-run live in Stripe
✅ Match S18 · JPY zero-decimal upgrade verified 2026-10-20 Re-run live in Stripe
✅ Match S19 · EUR locale display verified 2026-10-20 Re-run live in Stripe
✅ Match S20 · Upgrade with always_invoice verified 2026-10-20 Re-run live in Stripe
✅ Match S21 · Monthly to annual resets anchor, invoices now verified 2026-10-20 Re-run live in Stripe
✅ Match S22 · Cancel at period end: no further invoices verified 2026-10-20 Re-run live in Stripe
✅ Match S23 · Graduated metered usage 12,346 calls verified 2026-10-20 Re-run live in Stripe
✅ Match S26 · Price change during a trial does not prorate verified 2026-10-20 Re-run live in Stripe
✅ Match S27 · Downgrade with always_invoice creates a credit balance verified 2026-10-20 Re-run live in Stripe
✅ Match S28 · Upgrade under a forever 25% coupon: prorations are pre-discounted, not re-discounted verified 2026-10-20 Re-run live in Stripe
✅ Match S30 · Seat increase after a used-up 'once' coupon: the credit refunds the discounted price actually paid verified 2026-10-20 Re-run live in Stripe
✅ Match S31 · Changing the price without a quantity resets 5 seats to quantity 1 (Stripe item semantics) verified 2026-10-20 Re-run live in Stripe
✅ Match S32 · Changing the price with quantity 5 keeps all 5 seats verified 2026-10-20 Re-run live in Stripe
✅ Match S33 · Two seat changes in one period after a used-up 'once' coupon: each credit refunds the rate it was charged at verified 2026-10-20 Re-run live in Stripe
✅ Match S34 · Coupon applied mid-period, then an upgrade: January was paid in full, so its credit is full price verified 2026-10-20 Re-run live in Stripe
✅ Match S35 · A period made free by an amount_off coupon refunds nothing when it is changed verified 2026-10-20 Re-run live in Stripe
✅ Match S36 · Seat increase under a repeating amount_off coupon: both proration lines are net of the $10 verified 2026-10-20 Re-run live in Stripe
✅ Match S37 · A once coupon applied mid-period is used up by the proration it prices verified 2026-10-20 Re-run live in Stripe
✅ Match S38 · Changing to the same quantity or the same price is a no-op verified 2026-10-20 Re-run live in Stripe
✅ Match S39 · Cancel at period end bills pending prorations on a final invoice, with negative tax verified 2026-10-20 Re-run live in Stripe
✅ Match S40 · always_invoice change at the exact renewal instant: separate invoices, the credit pays the renewal verified 2026-10-20 Re-run live in Stripe
✅ Match S41 · Switching to a yearly price during a trial issues a new $0 trial invoice verified 2026-10-20 Re-run live in Stripe
✅ Match S42 · Proration charge under a percent coupon is rounded in two steps verified 2026-10-20 Re-run live in Stripe
✅ Match S43 · A no-op change with always_invoice still invoices earlier pending prorations now verified 2026-10-20 Re-run live in Stripe
✅ Match S44 · proration_behavior none: no lines now; a later proration credits the item as it is then, not what was paid verified 2026-10-20 Re-run live in Stripe
✅ Match S45 · Ending a trial early bills the first period now, resets the anchor, and the once coupon applies to it verified 2026-10-20 Re-run live in Stripe
✅ Match S46 · Immediate cancel: no final invoice and pending prorations are dropped; a new subscription starts clean verified 2026-10-20 Re-run live in Stripe
✅ Match S47 · Undoing a scheduled cancel keeps renewing verified 2026-10-20 Re-run live in Stripe
✅ Match S48 · Interval change with proration_behavior none: invoices the new interval now without a credit verified 2026-10-20 Re-run live in Stripe
✅ Match S49 · After a none change, an always_invoice change credits the current quantity at the coupon rate verified 2026-10-20 Re-run live in Stripe
✅ Match S50 · A repeating coupon lasts its months in calendar time, not a count of invoices (yearly -> monthly) verified 2026-10-20 Re-run live in Stripe
✅ Match S51 · Reset the billing anchor mid-period (billing_cycle_anchor=now): credit unused time, bill a full new period today verified 2026-10-20 Re-run live in Stripe
✅ Match S52 · Anchor reset with proration none still sweeps earlier pending prorations into the invoice, without a credit verified 2026-10-20 Re-run live in Stripe
✅ Match S53 · Removing a forever coupon: later invoices are full price, but the next credit refunds what was paid (discounted) verified 2026-10-20 Re-run live in Stripe
✅ Match S54 · Two interval changes under an amount-off coupon: the second credit refunds the discounted yearly charge verified 2026-10-20 Re-run live in Stripe
✅ Match S55 · A half-cent tie that is not a tie: Stripe prorates the unit price to 12 decimals before multiplying by seats (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S56 · The same 12-decimal unit proration on a single seat: 7900 x 19/30 x 75% credits 3752, not 3753 verified 2026-10-20 Re-run live in Stripe
✅ Match S57 · A coupon applied at the exact renewal instant discounts the next invoice, not that renewal (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S58 · Flexible: two interval changes keep the anchor and credit each original debit (no invoice until the monthly renewal) verified 2026-10-20 Re-run live in Stripe
✅ Match S59 · Flexible: a metered subscription gets no $0 invoice at creation verified 2026-10-20 Re-run live in Stripe
✅ Match S60 · Flexible: a price change during a trial issues a new $0 trial invoice right away verified 2026-10-20 Re-run live in Stripe
✅ Match S61 · Flexible: billing_cycle_anchor=now nets the overlap and debits only the time past the old period end verified 2026-10-20 Re-run live in Stripe
✅ Match S62 · Flexible: credits round gross and discount apart; an anchor reset with none debits nothing, so nothing is credited later verified 2026-10-20 Re-run live in Stripe
✅ Match S63 · Flexible: the credit's gross and discount are each rounded from the 12-decimal prorated unit price verified 2026-10-20 Re-run live in Stripe
✅ Match S64 · Flexible: after a none change, the next proration credits what was originally debited, not the item as it is verified 2026-10-20 Re-run live in Stripe
✅ Match S65 · Flexible: always_invoice after a none change credits the original 2-seat debit at its coupon verified 2026-10-20 Re-run live in Stripe
✅ Match S66 · Flexible: a proration debit is credited from its rounded gross and rounded discount, not its net (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S67 · Cancel now with a refund (prorate + invoice_now): the final invoice carries pending prorations and the unused-time credit verified 2026-10-20 Re-run live in Stripe
✅ Match S68 · Flexible: cancelling a taxed yearly plan with a refund creates a credit balance that pays the next subscription verified 2026-10-20 Re-run live in Stripe
✅ Match S69 · An amount due below Stripe's $0.50 minimum is not charged; it is carried onto the next invoice (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S70 · Flexible: after a none yearly -> monthly change, a later change credits the yearly debit only to the monthly period end (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S71 · cancel_at inside the current period: a final invoice on that date credits the unused time at the discounted rate verified 2026-10-20 Re-run live in Stripe
✅ Match S72 · Flexible: cancel_at in a later period cuts the last renewal short, priced as gross minus discount each rounded verified 2026-10-20 Re-run live in Stripe
✅ Match S73 · cancel_at sweeps pending prorations onto the final invoice with the credit for the seats as they are verified 2026-10-20 Re-run live in Stripe
✅ Match S74 · Bill on a fixed day: billing_cycle_anchor at creation prorates the time until the first billing date over one interval from the start verified 2026-10-20 Re-run live in Stripe
✅ Match S75 · A once coupon is used up by the first-billing-date proration; the first full invoice is full price verified 2026-10-20 Re-run live in Stripe
✅ Match S76 · Flexible: an upgrade before the first billing date credits the stub debit over its own days verified 2026-10-20 Re-run live in Stripe
✅ Match S77 · First-billing-date stub is prorated over one interval counted from the start (05-31 -> 06-30), not the period ending on the anchor (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S78 · Flexible: a period made free by an amount_off coupon is still credited, as a $0 line (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S79 · A percent coupon on a proration charge comes off the rounded gross: 28542 x 25% = 7135.5 -> 7136 (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S80 · Flexible: pause mid-period, resume a month later; the unused-time credit rides on the resumption invoice and the cycle restarts verified 2026-10-20 Re-run live in Stripe
✅ Match S81 · Flexible: resume with billing_cycle_anchor unchanged; nothing is invoiced at resume, the rest of the cycle is prorated onto the next renewal verified 2026-10-20 Re-run live in Stripe
✅ Match S82 · Flexible: pause with invoicing_behavior invoice; the credit is its own invoice and becomes customer balance verified 2026-10-20 Re-run live in Stripe
✅ Match S83 · Flexible: pause without crediting unused time (bill_for.unused_time_from none) verified 2026-10-20 Re-run live in Stripe
✅ Match S84 · Flexible: pausing a discounted, multi-seat subscription mid-day credits gross and discount rounded apart verified 2026-10-20 Re-run live in Stripe
✅ Match S85 · Flexible: a first-billing-date stub divides by the anchor-aligned period ending on the anchor, not one interval from the start (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S86 · Flexible: after an unprorated price change, resuming in the same period charges nothing for the rest of it (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S87 · Flexible: after an unprorated change, resuming in a later period charges the rest of that period as usual verified 2026-10-20 Re-run live in Stripe
✅ Match S88 · Flexible: the charge for resuming with an unchanged anchor takes a percent discount off the unrounded gross (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S89 · Flexible: a proration charge takes its percent discount off the unrounded gross (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S90 · Inclusive tax at an exact tie rounds half away from zero: 387 incl. 20% VAT is 64.5 -> 65 verified 2026-10-20 Re-run live in Stripe
✅ Match S91 · Flexible: after a pause that credited nothing, resuming restarts the cycle but bills only the time the old debit does not cover (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S92 · Flexible: a pause that credited nothing, resumed in the same period with the anchor unchanged, charges nothing verified 2026-10-20 Re-run live in Stripe
✅ Match S93 · Flexible: inclusive tax is rounded at the invoice level from 12-decimal taxable amounts, 13892 where round(83355/6) = 13893 (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S94 · Flexible: exclusive tax is one computation on the invoice total, not per line (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S95 · A renewal claims a once coupon when it is drafted, so a plan change at that same instant is not discounted by it (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S96 · Trial ends without a card, end behavior cancel: the subscription is canceled at trial end and nothing is invoiced verified 2026-10-20 Re-run live in Stripe
✅ Match S97 · Classic: trial ends without a card into a pause; resuming with anchor unchanged prorates the rest of the cycle onto the next renewal verified 2026-10-20 Re-run live in Stripe
✅ Match S98 · Flexible: trial ends without a card into a pause; resuming with anchor now invoices a full new period at once and moves the anchor verified 2026-10-20 Re-run live in Stripe
✅ Match S99 · Classic: resuming a trial pause two cycles later charges only the part of the current cycle that is left verified 2026-10-20 Re-run live in Stripe
✅ Match S100 · Resuming charges the rest of the cycle with a once coupon, which uses it up: the next renewal is not discounted (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S101 · Flexible: a resume charge an amount_off coupon makes free is still a $0 debit and uses up the once coupon (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S102 · Flexible: switching to yearly with no proration before the first billing date renews the yearly price on that date (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S103 · A customer balance credit is applied to the next invoice verified 2026-10-20 Re-run live in Stripe
✅ Match S104 · Balance debits and credits net out; a credit larger than an invoice carries to the next one verified 2026-10-20 Re-run live in Stripe
✅ Match S105 · An invoice created within the hour after a renewal is finalized before the renewal draft, which then takes its carried cent (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S106 · A first-billing-date stub an amount_off coupon makes free is still invoiced at $0 and uses up the once coupon (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S107 · Flexible: resuming with an unchanged month-end anchor prorates that period in monthly segments from its start day (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S108 · Flexible: an anchor reset's remaining-time charge uses up a once coupon, so the next renewal is full price (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S109 · Inclusive tax at an exact half-cent tie with a credit line: each line's tax is truncated at 12 decimals, so 849.5 rounds to 850 (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S110 · Inclusive tax at an exact half-cent tie on a negative invoice: lines are rounded down at 12 decimals, so -12150.5 rounds to -12151 (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S111 · Canceling with a final invoice at the renewal instant finalizes the renewal draft first: it is paid in full and the final credit stays on the customer balance (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S112 · A first-billing-date stub a once coupon made free is credited at what was paid, $0, not at full price (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S113 · Flexible: a month-end first billing date prorates its stub in monthly segments from the shorter month (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S114 · Flexible: pausing with always_invoice when nothing is left to credit opens no invoice (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S115 · Flexible: resuming with an unchanged anchor exactly on a billing date charges the whole period with the next renewal (Stripe probe) verified 2026-10-20 Re-run live in Stripe
✅ Match S116 · Flexible: after an anchor reset with proration none, an unchanged resume in the new period charges nothing (found by fuzzing) verified 2026-10-20 Re-run live in Stripe
✅ Match S117 · Flexible: a once coupon applied while paused prices the resume charge and is used up by it (Stripe probe) verified 2026-10-20 Re-run live in Stripe
✅ Match S118 · Metered usage inside the second tier: no line for the untouched third tier (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S119 · Metered with no usage: one 0-unit tier-1 line (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S120 · Metered to licensed on day 20: no unused-time line, the usage is dropped (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S121 · Licensed to metered on day 20: credit only, then usage at renewal (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S122 · Metered cancel_now with always_invoice invoices the usage so far (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S123 · Flexible: metered cancel_now with always_invoice invoices the usage so far (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S124 · Metered cancel at period end bills the period's usage on the final invoice (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S125 · Volume tiers: 5000 units all at the second tier rate (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S126 · Volume tiers: 12346 units all at the third tier rate, half a cent each (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S127 · Volume tiers with no usage: one 0-unit tier-1 line (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S128 · Tier flat fees: no usage still pays the first tier's $5 (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S129 · Tier flat fees on all three tiers at 12346 units (Stripe probe) verified 2026-10-22 Re-run live in Stripe
✅ Match S130 · Metered cancel at period end with no usage in the last period: a $0 final invoice (fuzz seed 9002) verified 2026-10-22 Re-run live in Stripe