Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
subscriptions_resource_paused_status_details_subscription.type · reachable from 467 operations
Code that breaks
switch (response.type) {
// existing branches …
// no branch for "final_payment_failure"
// no branch for "first_payment_failure"
default:
throw new Error("unexpected type");
}
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
27 places: POST /v1/tax/registrations · country_options.cz.igic, POST /v1/tax/registrations · country_options.de.igic, POST /v1/tax/registrations · country_options.dk.igic, POST /v1/tax/registrations · country_options.ee.igic, POST /v1/tax/registrations · country_options.es.igic, POST /v1/tax/registrations · country_options.fi.igic +21 more
Code that breaks
await client.post("/v1/tax/registrations", {
// igic is now ignored, not rejected
igic: value,
});
Breakingdirection flip: their tools call this safe
3 places: POST /v1/subscriptions/{subscription}/resume · billing_cycle_anchor.type, POST /v1/invoices/create_preview · subscription_details.billing_cycle_anchor.type, POST /v1/subscriptions/{subscription_exposed_id} · billing_cycle_anchor.type
switch (response.allowed_payment_method_types[0]) {
// existing branches …
// no branch for "card_present"
// no branch for "interac_present"
default:
throw new Error("unexpected allowed_payment_method_types");
}
Breakingdirection flip: their tools call this safe
switch (response.tax_type) {
// existing branches …
// no branch for "admissions_tax"
// no branch for "attendance_tax"
// no branch for "digital_excise_tax"
// no branch for "entertainment_tax"
// no branch for "gross_receipts_tax"
// no branch for "hospitality_tax"
// no branch for "luxury_tax"
// no branch for "recycling_fee"
// no branch for "resort_tax"
// no branch for "tourism_tax"
// no branch for "utility_users_tax"
default:
throw new Error("unexpected tax_type");
}
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
account_requirements_error.code · reachable from 575 operations
Code that breaks
switch (response.code) {
// existing branches …
// no branch for "invalid_address_cmra_address"
// no branch for "invalid_address_registered_agent_address"
default:
throw new Error("unexpected code");
}
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
balance_transaction.type · reachable from 553 operations
Code that breaks
switch (response.type) {
// existing branches …
// no branch for "issuing_dispute_provisional_credit"
// no branch for "issuing_dispute_provisional_credit_reversal"
default:
throw new Error("unexpected type");
}
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
tax_rate.tax_type · reachable from 543 operations
Code that breaks
switch (response.tax_type) {
// existing branches …
// no branch for "digital_excise_tax"
// no branch for "utility_users_tax"
default:
throw new Error("unexpected tax_type");
}
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
bank_connections_resource_account_number_details.status · reachable from 14 operations
Code that breaks
switch (response.status) {
// existing branches …
// no branch for "expired"
// no branch for "pending"
default:
throw new Error("unexpected status");
}
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
tax_product_registrations_resource_country_options_united_states.type · reachable from 4 operations
Code that breaks
switch (response.type) {
// existing branches …
// no branch for "admissions_tax"
// no branch for "attendance_tax"
// no branch for "entertainment_tax"
// no branch for "gross_receipts_tax"
// no branch for "hospitality_tax"
// no branch for "luxury_tax"
// no branch for "resort_tax"
// no branch for "tourism_tax"
default:
throw new Error("unexpected type");
}
Breakingdirection flip: their tools call this safe
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
switch (response.tax_type) {
// existing branches …
// no branch for "mass_transit_parking_tax"
// no branch for "parking_tax"
default:
throw new Error("unexpected tax_type");
}
Breakingdirection flip: their tools call this safe
switch (response.payment_method_types[0]) {
// existing branches …
// no branch for "alipay"
// no branch for "mb_way"
default:
throw new Error("unexpected payment_method_types");
}
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
switch (response.bank) {
// existing branches …
// no branch for "bnp_paribas"
// no branch for "citibank"
// no branch for "mbsb_bank"
default:
throw new Error("unexpected bank");
}
Breakingdirection flip: their tools call this safe
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
7 places: POST /v1/terminal/refunds · amount, POST /v1/terminal/refunds · charge, POST /v1/terminal/refunds · metadata, POST /v1/terminal/refunds · payment_intent, POST /v1/terminal/refunds · reason, POST /v1/terminal/refunds · refund_application_fee +1 more
Code that breaks
await client.post("/v1/terminal/refunds", {
// amount is now ignored, not rejected
amount: value,
});
Breakingdirection flip: their tools call this safe
switch (response.device_type) {
// existing branches …
// no branch for "simulated_verifone_m425"
// no branch for "simulated_verifone_p630"
// no branch for "simulated_verifone_ux700"
// no branch for "simulated_verifone_v660p"
// no branch for "verifone_m425"
// no branch for "verifone_p630"
// no branch for "verifone_ux700"
// no branch for "verifone_v660p"
default:
throw new Error("unexpected device_type");
}
Breakingdirection flip: their tools call this safe
A tighter guarantee, not a break. Every value you can receive now was already possible, so existing handling still covers it; a null check here may now be dead code.
payments_primitives_payment_records_resource_payment_method_alma_details_resource_installments.count · reachable from 49 operations
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
switch (response.type) {
// existing branches …
// no branch for "fo_vat"
// no branch for "gi_tin"
// no branch for "it_cf"
// no branch for "py_ruc"
default:
throw new Error("unexpected type");
}
Breakingdirection flip: their tools call this safe
switch (response.payment_method_types[0]) {
// existing branches …
// no branch for "pix"
// no branch for "upi"
default:
throw new Error("unexpected payment_method_types");
}
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
balance_transaction.type · reachable from 530 operations
Code that breaks
switch (response.type) {
// existing branches …
// no branch for "fee_credit_funding"
// no branch for "inbound_transfer"
// no branch for "inbound_transfer_reversal"
default:
throw new Error("unexpected type");
}
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
payment_method_details_crypto.token_currency · reachable from 262 operations
Code that breaks
switch (response.token_currency) {
// existing branches …
// no branch for "phantom_cash"
// no branch for "usdt"
default:
throw new Error("unexpected token_currency");
}
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
insights_resources_payment_evaluation_signal_v2.risk_level · reachable from 1 operation
Code that breaks
switch (response.risk_level) {
// existing branches …
// no branch for "low"
// no branch for "not_assessed"
// no branch for "unknown"
default:
throw new Error("unexpected risk_level");
}
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
// sending "custom" for ui_mode is now rejected
// sending "embedded" for ui_mode is now rejected
// sending "form" for ui_mode is now rejected
// sending "hosted" for ui_mode is now rejected
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
2 places: POST /v1/test_helpers/issuing/authorizations · risk_assessment.card_testing_risk.level, POST /v1/test_helpers/issuing/authorizations · risk_assessment.merchant_dispute_risk.level
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
2 places: POST /v1/test_helpers/issuing/authorizations · risk_assessment.card_testing_risk.risk_level, POST /v1/test_helpers/issuing/authorizations · risk_assessment.merchant_dispute_risk.risk_level
Code that breaks
await client.post("/v1/test_helpers/issuing/authorizations", {
// risk_level is now ignored, not rejected
risk_level: value,
});
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
checkout.session.ui_mode · reachable from 15 operations
Code that breaks
switch (response.ui_mode) {
// existing branches …
// no branch for "elements"
// no branch for "embedded_page"
// no branch for "form"
// no branch for "hosted_page"
default:
throw new Error("unexpected ui_mode");
}
Breakingdirection flip: their tools call this safe
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
switch (response.device_type) {
// existing branches …
// no branch for "simulated_stripe_s710"
// no branch for "stripe_s710"
default:
throw new Error("unexpected device_type");
}
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
file.purpose · reachable from 547 operations
Code that breaks
switch (response.purpose) {
// existing branches …
// no branch for "terminal_wifi_certificate"
// no branch for "terminal_wifi_private_key"
default:
throw new Error("unexpected purpose");
}
A tighter guarantee, not a break. Every value you can receive now was already possible, so existing handling still covers it; a null check here may now be dead code.
payment_method_details_payment_record_us_bank_account.expected_debit_date · reachable from 99 operations
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
balance_transaction.type · reachable from 531 operations
Code that breaks
switch (response.type) {
// existing branches …
// no branch for "reserve_hold"
// no branch for "reserve_release"
default:
throw new Error("unexpected type");
}
Stripe's published spec describes its newest API version. Accounts are pinned to the version they signed up on, so a change like this reaches your integration when you upgrade that version, not the day Stripe ships it.
Breakingdirection flip: their tools call this safe