Driftwatch

Stripe / Stripe API /

Breakingdirection flip: their tools call this safe

reason can now return "stripe_internal_error"

What changed

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

Affects reason on issuing_authorization_request reachable from 184 operations.

New value: stripe_internal_error.

can now return "stripe_internal_error"

Who is affected

Code that reads Stripe's issuing_authorization_request objects, used by 184 Stripe operations.

Before and after

WhereBeforeAfter
issuing_authorization_request.reason"account_disabled", "card_active", "card_canceled", "card_expired", "card_inactive", "cardholder_blocked", "cardholder_inactive", "cardholder_verification_required", "insecure_authorization_method", "insufficient_funds", "network_fallback", "not_allowed", "pin_blocked", "spending_controls", "suspected_fraud", "verification_failed", "webhook_approved", "webhook_declined", "webhook_error", "webhook_timeout""account_disabled", "card_active", "card_canceled", "card_expired", "card_inactive", "cardholder_blocked", "cardholder_inactive", "cardholder_verification_required", "insecure_authorization_method", "insufficient_funds", "network_fallback", "not_allowed", "pin_blocked", "spending_controls", "stripe_internal_error", "suspected_fraud", "verification_failed", "webhook_approved", "webhook_declined", "webhook_error", "webhook_timeout"

Code that breaks

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

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