Driftwatch

Stripe / Stripe API /

Breakingdirection flip: their tools call this safe

replacement_reason can now return "fulfillment_error"

What changed

Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.

Affects replacement_reason on issuing.card reachable from 199 operations.

New value: fulfillment_error.

can now return "fulfillment_error"

Who is affected

Code that reads Stripe's issuing.card objects, used by 199 Stripe operations.

Before and after

WhereBeforeAfter
issuing.card.replacement_reason"damaged", "expired", "lost", "stolen""damaged", "expired", "fulfillment_error", "lost", "stolen"
issuing.card.cancellation_reason"design_rejected", "lost", "stolen""design_rejected", "fulfillment_error", "lost", "stolen"

Code that breaks

switch (response.replacement_reason) {
  // existing branches …
  // no branch for "fulfillment_error"
  default:
    throw new Error("unexpected replacement_reason");
}

Based on Stripe’s published API specification. How severity is decided.