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
| Where | Before | After |
|---|---|---|
| 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.