- Additiveresponse.property.added
Response field india added
No action needed unless you validate responses against a closed schema.
card_mandate_payment_method_details.india · reachable from 126 operations
Stripe
19 spec versions tracked, back to 2025-11-12. 224 published breaking changes. Provider docs.
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 fliprequest.property.removed
igic is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
27 places: POST /v1/tax/registrations · country_options.at.igic, POST /v1/tax/registrations · country_options.be.igic, POST /v1/tax/registrations · country_options.bg.igic, POST /v1/tax/registrations · country_options.cy.igic, POST /v1/tax/registrations · country_options.cz.igic, POST /v1/tax/registrations · country_options.de.igic +21 moreawait client.post("/v1/tax/registrations", { // igic is now ignored, not rejected igic: value, }); - Breakingdirection flipresponse.enum.value-added
type can now return "paypay", "sequra"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "paypay", "sequra"
5 places: confirmation_tokens_resource_payment_method_preview.type, payment_intent.excluded_payment_method_types[], payment_link.payment_method_types[], payment_method.type, setup_intent.excluded_payment_method_types[]switch (response.type) { // existing branches … // no branch for "paypay" // no branch for "sequra" default: throw new Error("unexpected type"); } - Breakingrequest.property.became-required
type is now required
Partial payloads are rejected.
3 places: POST /v1/invoices/create_preview · subscription_details.billing_cycle_anchor.type, POST /v1/subscriptions/{subscription_exposed_id} · billing_cycle_anchor.type, POST /v1/subscriptions/{subscription}/resume · billing_cycle_anchor.typeawait client.post("/v1/invoices/create_preview", { // … type: /* now required */, }); - Breakingdirection flipresponse.enum.value-added
allowed_payment_method_types can now return "card_present", "interac_present"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "card_present", "interac_present"
2 places: payment_intent.allowed_payment_method_types[], setup_intent.allowed_payment_method_types[]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 flipresponse.enum.value-added
payment_method_types can now return "blik"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "blik"
2 places: invoices_payment_settings.payment_method_types[], subscriptions_resource_payment_settings.payment_method_types[]switch (response.payment_method_types[0]) { // existing branches … // no branch for "blik" default: throw new Error("unexpected payment_method_types"); } - Breakingdirection flipresponse.enum.value-added
setup_future_usage can now return "off_session"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "off_session"
2 places: checkout_bancontact_payment_method_options.setup_future_usage, payment_intent_payment_method_options_blik.setup_future_usageswitch (response.setup_future_usage) { // existing branches … // no branch for "off_session" default: throw new Error("unexpected setup_future_usage"); } - Breakingdirection flipresponse.enum.value-added
network can now return "rtp"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "rtp"
2 places: treasury.received_credit.network, treasury_financial_accounts_resource_financial_address.supported_networks[]switch (response.network) { // existing branches … // no branch for "rtp" default: throw new Error("unexpected network"); } - Breakingdirection flipresponse.enum.value-added
tax_type can now return "admissions_tax", "attendance_tax", "digital_excise_tax", "entertainment_tax", "gross_receipts_tax", "hospitality_tax", "luxury_tax", "recycling_fee", "resort_tax", "tourism_tax", "utility_users_tax"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "admissions_tax", "attendance_tax", "digital_excise_tax", "entertainment_tax", "gross_receipts_tax", "hospitality_tax", "luxury_tax", "recycling_fee", "resort_tax", "tourism_tax", "utility_users_tax"
2 places: tax_product_resource_line_item_tax_rate_details.tax_type, tax_product_resource_tax_rate_details.tax_typeswitch (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 flipresponse.enum.value-added
code can now return "invalid_address_cmra_address", "invalid_address_registered_agent_address"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
account_requirements_error.code · reachable from 575 operationsswitch (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 flipresponse.enum.value-added
type can now return "issuing_dispute_provisional_credit", "issuing_dispute_provisional_credit_reversal"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
balance_transaction.type · reachable from 553 operationsswitch (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 flipresponse.enum.value-added
tax_type can now return "digital_excise_tax", "utility_users_tax"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
tax_rate.tax_type · reachable from 543 operationsswitch (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 flipresponse.enum.value-added
version can now return "2.3.0", "2.3.1"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
payments_primitives_payment_records_resource_payment_method_card_details_resource_three_d_secure.version · reachable from 143 operationsswitch (response.version) { // existing branches … // no branch for "2.3.0" // no branch for "2.3.1" default: throw new Error("unexpected version"); } - Breakingdirection flipresponse.enum.value-added
ui_mode can now return "form"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
checkout.session.ui_mode · reachable from 15 operationsswitch (response.ui_mode) { // existing branches … // no branch for "form" default: throw new Error("unexpected ui_mode"); } - Breakingdirection flipresponse.enum.value-added
status can now return "expired", "pending"
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 operationsswitch (response.status) { // existing branches … // no branch for "expired" // no branch for "pending" default: throw new Error("unexpected status"); } - Breakingdirection fliprequest.property.removed
payment_method_types is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/checkout/sessions · payment_method_types · 6 call sitesawait client.post("/v1/checkout/sessions", { // payment_method_types is now ignored, not rejected payment_method_types: value, }); - Breakingresponse.property.removed
Response field countries removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
bank_connections_resource_link_account_session_filters.countries · reachable from 4 operations// response.countries is now undefined const countries = response.countries;
- Breakingresponse.property.removed
Response field igic removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
tax_product_registrations_resource_country_options_europe.igic · reachable from 4 operations// response.igic is now undefined const igic = response.igic;
- Breakingdirection flipresponse.enum.value-added
type can now return "admissions_tax", "attendance_tax", "entertainment_tax", "gross_receipts_tax", "hospitality_tax", "luxury_tax", "resort_tax", "tourism_tax"
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 operationsswitch (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 flipresponse.enum.value-added
sourcing can now return "performance"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
tax_product_resource_line_item_tax_breakdown.sourcing · reachable from 3 operationsswitch (response.sourcing) { // existing branches … // no branch for "performance" default: throw new Error("unexpected sourcing"); } - Breakingdirection fliprequest.property.removed
countries is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/financial_connections/sessions · filters.countries · 2 call sitesawait client.post("/v1/financial_connections/sessions", { // countries is now ignored, not rejected countries: value, }); - Breakingrequest.property.type-changed
billing_cycle_anchor changed type
Serialization mismatch. Integer-to-string moves are the usual cause and the usual outage.
POST /v1/subscriptions/{subscription_exposed_id} · billing_cycle_anchor · 2 call sites// payload.billing_cycle_anchor // was: string // now: object
- Breakingdirection flipresponse.property.became-optional
Response field score is no longer guaranteed
Producer-side tools call this non-breaking. For a consumer it is a null dereference on an unknown future date.
insights_resources_payment_evaluation_signal_v2.score · reachable from 1 operation// response.score may now be absent or null const score = response.score ?? fallback;
- Breakingdirection flipresponse.enum.value-added
type can now return "rerouted"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
insights_resources_payment_evaluation_outcome.type · reachable from 1 operationswitch (response.type) { // existing branches … // no branch for "rerouted" default: throw new Error("unexpected type"); } - Breakingdirection fliprequest.property.removed
payto is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/payment_methods/{payment_method} · paytoawait client.post("/v1/payment_methods/{payment_method}", { // payto is now ignored, not rejected payto: value, }); - Additiverequest.enum.constraint-removed
Value restriction lifted
A relaxation, not a break. Everything you could send before still works, and more is accepted now.
POST /v1/subscriptions/{subscription_exposed_id} · billing_cycle_anchor · 2 call sites - Additivepath.added
/v1/apps/installs added
No action needed.
/v1/apps/installs - Additivepath.added
/v1/product_catalog/trial_offers/{id} added
No action needed.
/v1/product_catalog/trial_offers/{id} - Additivepath.added
/v1/apps/installs/{id} added
No action needed.
/v1/apps/installs/{id} - Additivepath.added
/v1/apps/installs/{id}/uninstall added
No action needed.
/v1/apps/installs/{id}/uninstall - Additivepath.added
/v1/product_catalog/trial_offers added
No action needed.
/v1/product_catalog/trial_offers - Additivepath.added
/v1/subscriptions/{subscription}/pause added
No action needed.
/v1/subscriptions/{subscription}/pause - Additivepath.added
/v1/tax/locations added
No action needed.
/v1/tax/locations - Additivepath.added
/v1/tax/locations/{location} added
No action needed.
/v1/tax/locations/{location} - Additivepath.added
/v1/three_d_secure/authentications added
No action needed.
/v1/three_d_secure/authentications - Additivepath.added
/v1/three_d_secure/authentications/{authentication} added
No action needed.
/v1/three_d_secure/authentications/{authentication} - Additivepath.added
/v1/three_d_secure/authentications/{authentication}/cancel added
No action needed.
/v1/three_d_secure/authentications/{authentication}/cancel - Additivepath.added
/v1/three_d_secure/authentications/{authentication}/submit added
No action needed.
/v1/three_d_secure/authentications/{authentication}/submit
Additive56 new response fieldspayment_method.paypay, payment_method.sequra, payment_intent.payment_record, account_capabilities.blik_recurring_payments, account_capabilities.paypay_payments, account_capabilities.sequra_payments, account_business_profile.specified_commercial_transactions_act_url, account_settings.paypay_payments +48 more
Additive48 new request propertiespayment_method_data.paypay, payment_method_data.sequra, payment_settings.payment_method_options.billie.company_details, payment_settings.payment_method_options.blik, payment_method_options.blik, payment_method_options.sequra, items[].current_trial, trial_settings.end_behavior.billing_cycle_anchor +40 more
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 flipresponse.enum.value-added
allowed_payment_method_types can now return "touch_n_go"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "touch_n_go"
2 places: payment_intent.allowed_payment_method_types[], setup_intent.allowed_payment_method_types[]switch (response.allowed_payment_method_types[0]) { // existing branches … // no branch for "touch_n_go" default: throw new Error("unexpected allowed_payment_method_types"); } - Breakingdirection flipresponse.enum.value-added
payment_method_types can now return "billie"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "billie"
2 places: invoices_payment_settings.payment_method_types[], subscriptions_resource_payment_settings.payment_method_types[]switch (response.payment_method_types[0]) { // existing branches … // no branch for "billie" default: throw new Error("unexpected payment_method_types"); } - Breakingresponse.property.removed
Response field cryptogram removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
payments_primitives_payment_records_resource_payment_method_card_details_resource_three_d_secure.cryptogram · reachable from 48 operations// response.cryptogram is now undefined const cryptogram = response.cryptogram;
- Breakingdirection flipresponse.enum.value-added
type can now return "customer_update"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
portal_flows_flow.type · reachable from 1 operationswitch (response.type) { // existing branches … // no branch for "customer_update" default: throw new Error("unexpected type"); } - Additivepath.added
/v1/billing/feedback_options added
No action needed.
/v1/billing/feedback_options - Additivepath.added
/v1/billing/feedback_options/{id} added
No action needed.
/v1/billing/feedback_options/{id} - Additivepath.added
/v1/billing/feedback_options/{id}/deactivate added
No action needed.
/v1/billing/feedback_options/{id}/deactivate
Additive15 new response fieldscancellation_details.feedback_option, subscriptions_resource_payment_method_options.billie, invoices_payment_method_options.billie, payment_method_details_link.funding_source_group, payment_method_details_card_wallet_link.funding_source_group, payment_pages_private_card_payment_method_options_resource_restrictions.funding_types_blocked, portal_subscription_cancellation_reason.feedback_options, bank_connections_resource_link_account_session_filters.country +7 more
Additive38 new request propertiespayment_settings.payment_method_options.billie, cancellation_details.feedback_option, features.subscription_cancel.cancellation_reason.feedback_options, components.payment_method_settings, payment_method_options.card.restrictions.funding_types_blocked, components.active_entitlements, components.customer_portal, application_fee_amount +30 more
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 flipresponse.enum.value-added
type can now return "ic_nif"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "ic_nif"
4 places: invoices_resource_invoice_tax_id.type, payment_pages_checkout_session_tax_id.type, tax_id.type, tax_product_resource_customer_details_resource_tax_id.typeswitch (response.type) { // existing branches … // no branch for "ic_nif" default: throw new Error("unexpected type"); } - Breakingdirection flipresponse.enum.value-added
type can now return "mass_transit_parking_tax", "parking_tax"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "mass_transit_parking_tax", "parking_tax"
4 places: tax_product_registrations_resource_country_options_united_states.type, tax_product_resource_line_item_tax_rate_details.tax_type, tax_product_resource_tax_rate_details.tax_type, tax_rate.tax_typeswitch (response.type) { // existing branches … // no branch for "mass_transit_parking_tax" // no branch for "parking_tax" default: throw new Error("unexpected type"); } - Breakingdirection flipresponse.enum.value-added
result can now return "data_share_only"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "data_share_only"
3 places: payments_primitives_payment_records_resource_payment_method_card_details_resource_three_d_secure.result, three_d_secure_details.result, three_d_secure_details_charge.resultswitch (response.result) { // existing branches … // no branch for "data_share_only" default: throw new Error("unexpected result"); } - Breakingdirection flipresponse.enum.value-added
payment_method_types can now return "alipay", "mb_way"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "alipay", "mb_way"
2 places: invoices_payment_settings.payment_method_types[], subscriptions_resource_payment_settings.payment_method_types[]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"); } - Breakingresponse.property.removed
Response field iin removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
card.iin · reachable from 572 operations// response.iin is now undefined const iin = response.iin;
- Breakingdirection flipresponse.enum.value-added
supported_networks can now return "chaps"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
funding_instructions_bank_transfer_financial_address.supported_networks[] · reachable from 399 operationsswitch (response.supported_networks[0]) { // existing branches … // no branch for "chaps" default: throw new Error("unexpected supported_networks"); } - Breakingdirection flipresponse.enum.value-added
reason can now return "stripe_internal_error"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
issuing_authorization_request.reason · reachable from 184 operationsswitch (response.reason) { // existing branches … // no branch for "stripe_internal_error" default: throw new Error("unexpected reason"); } - Breakingdirection flipresponse.enum.value-added
carrier can now return "correos"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
issuing_card_shipping.carrier · reachable from 165 operationsswitch (response.carrier) { // existing branches … // no branch for "correos" default: throw new Error("unexpected carrier"); } - Breakingrequest.enum.value-removed
mode no longer accepts "custom"
A value you may have hardcoded is now rejected.
POST /v1/financial_connections/sessions · manual_entry.mode · 2 call sites// sending "custom" for manual_entry.mode is now rejected
- Breakingdirection fliprequest.property.removed
proof_of_registration is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/accounts · documents.proof_of_registrationawait client.post("/v1/accounts", { // proof_of_registration is now ignored, not rejected proof_of_registration: value, }); - Additivepath.added
/v1/accounts/{account}/unreject added
No action needed.
/v1/accounts/{account}/unreject - Additivepath.added
/v1/payment_records added
No action needed.
/v1/payment_records
Additive22 new response fieldssetup_intent.allowed_payment_method_types, payment_intent.allowed_payment_method_types, legal_entity_company.administrative_address, legal_entity_company.principal_place_of_business, refund.payment_method, refund.customer, refund.customer_account, subscription_schedule_phase_configuration.trial +14 more
Additive19 new request propertiesallowed_payment_method_types, payment_method_options.payco.setup_future_usage, payment_method_options.samsung_pay.setup_future_usage, company.administrative_address, company.principal_place_of_business, shipping.business_name, radar_options.referrer, components.disputes_list.features.smart_disputes_management +11 more
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 flipresponse.enum.value-added
bank can now return "bnp_paribas", "citibank", "mbsb_bank"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "bnp_paribas", "citibank", "mbsb_bank"
2 places: payment_method_details_fpx.bank, payment_method_fpx.bankswitch (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 fliprequest.property.removed
dynamic_tax_rates is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/checkout/sessions · line_items[].dynamic_tax_ratesawait client.post("/v1/checkout/sessions", { // dynamic_tax_rates is now ignored, not rejected dynamic_tax_rates: value, });
Additive14 new response fieldsinvoice_setting_subscription_schedule_setting.custom_fields, invoice_setting_subscription_schedule_setting.description, invoice_setting_subscription_schedule_setting.footer, invoice_setting_subscription_schedule_phase_setting.custom_fields, invoice_setting_subscription_schedule_phase_setting.description, invoice_setting_subscription_schedule_phase_setting.footer, dispute_payment_method_details_card.network, invoice_setting_quote_setting.custom_fields +6 more
Additive14 new request propertiesfilters.require_payment_method_support, limits, manual_entry, invoice_settings.custom_fields, invoice_settings.description, invoice_settings.footer, default_settings.invoice_settings.custom_fields, default_settings.invoice_settings.description +6 more
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 flipresponse.enum.value-added
payment_method_types can now return "satispay"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "satispay"
2 places: invoices_payment_settings.payment_method_types[], subscriptions_resource_payment_settings.payment_method_types[]switch (response.payment_method_types[0]) { // existing branches … // no branch for "satispay" default: throw new Error("unexpected payment_method_types"); } - Breakingdirection flipresponse.enum.value-added
type can now return "tax_fund"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
balance_transaction.type · reachable from 530 operationsswitch (response.type) { // existing branches … // no branch for "tax_fund" default: throw new Error("unexpected type"); } - Breakingdirection flipresponse.enum.value-added
network can now return "sui"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
payment_method_details_crypto.network · reachable from 262 operationsswitch (response.network) { // existing branches … // no branch for "sui" default: throw new Error("unexpected network"); } - Breakingdirection flipresponse.enum.value-added
token_currency can now return "usdsui"
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 operationsswitch (response.token_currency) { // existing branches … // no branch for "usdsui" default: throw new Error("unexpected token_currency"); } - Breakingdirection flipresponse.enum.value-added
enhanced_eligibility_types can now return "mastercard_compliance"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
dispute.enhanced_eligibility_types[] · reachable from 169 operationsswitch (response.enhanced_eligibility_types[0]) { // existing branches … // no branch for "mastercard_compliance" default: throw new Error("unexpected enhanced_eligibility_types"); } - Breakingresponse.property.removed
Response field description removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
payments_primitives_payment_records_resource_payment_method_card_details.description · reachable from 99 operations// response.description is now undefined const description = response.description;
- Breakingresponse.property.removed
Response field iin removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
payments_primitives_payment_records_resource_payment_method_card_details.iin · reachable from 99 operations// response.iin is now undefined const iin = response.iin;
- Breakingresponse.property.removed
Response field issuer removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
payments_primitives_payment_records_resource_payment_method_card_details.issuer · reachable from 99 operations// response.issuer is now undefined const issuer = response.issuer;
- Breakingresponse.property.removed
Response field stored_credential_usage removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
payments_primitives_payment_records_resource_payment_method_card_details.stored_credential_usage · reachable from 99 operations// response.stored_credential_usage is now undefined const stored_credential_usage = response.stored_credential_usage;
- Breakingdirection flipresponse.enum.value-added
status can now return "validated"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
verification_session_redaction.status · reachable from 6 operationsswitch (response.status) { // existing branches … // no branch for "validated" default: throw new Error("unexpected status"); }
Additive19 new response fieldspayment_method_bizum.buyer_id, payment_method_blik.buyer_id, payment_method_pix.fingerprint, subscriptions_resource_subscription_invoice_settings.custom_fields, subscriptions_resource_subscription_invoice_settings.description, subscriptions_resource_subscription_invoice_settings.footer, setup_attempt_payment_method_details.satispay, payment_intent_payment_method_options.sunbit +11 more
Additive12 new request propertiescard.network_token, card.encrypted, card.swipe_data, payment_method_options.sunbit, invoice_settings.custom_fields, invoice_settings.description, invoice_settings.footer, payment_method_options.satispay.setup_future_usage +4 more
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 flipresponse.enum.value-added
type can now return "bizum", "scalapay"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "bizum", "scalapay"
4 places: confirmation_tokens_resource_payment_method_preview.type, payment_intent.excluded_payment_method_types[], payment_method.type, setup_intent.excluded_payment_method_types[]switch (response.type) { // existing branches … // no branch for "bizum" // no branch for "scalapay" default: throw new Error("unexpected type"); } - Breakingdirection flipresponse.enum.value-added
payment_method_types can now return "twint"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "twint"
2 places: invoices_payment_settings.payment_method_types[], subscriptions_resource_payment_settings.payment_method_types[]switch (response.payment_method_types[0]) { // existing branches … // no branch for "twint" default: throw new Error("unexpected payment_method_types"); } - Breakingdirection flipresponse.enum.value-added
setup_future_usage can now return "off_session"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "off_session"
2 places: checkout_twint_payment_method_options.setup_future_usage, payment_method_options_twint.setup_future_usageswitch (response.setup_future_usage) { // existing branches … // no branch for "off_session" default: throw new Error("unexpected setup_future_usage"); } - Breakingdirection flipresponse.enum.value-added
device_type can now return "simulated_verifone_m425", "simulated_verifone_p630", "simulated_verifone_ux700", "simulated_verifone_v660p", "verifone_m425", "verifone_p630", "verifone_ux700", "verifone_v660p"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "simulated_verifone_m425", "simulated_verifone_p630", "simulated_verifone_ux700", "simulated_verifone_v660p", "verifone_m425", "verifone_p630", "verifone_ux700", "verifone_v660p"
2 places: deleted_terminal.reader.device_type, terminal.reader.device_typeswitch (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 flipresponse.enum.value-added
payment_method_types can now return "bizum"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
payment_link.payment_method_types[] · reachable from 19 operationsswitch (response.payment_method_types[0]) { // existing branches … // no branch for "bizum" default: throw new Error("unexpected payment_method_types"); } - Breakingdirection flipresponse.enum.value-added
type can now return "print_content"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
terminal_reader_reader_resource_reader_action.type · reachable from 15 operationsswitch (response.type) { // existing branches … // no branch for "print_content" default: throw new Error("unexpected type"); } - Breakingdirection flipresponse.enum.value-added
network can now return "mastercard"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
issuing.settlement.network · reachable from 4 operationsswitch (response.network) { // existing branches … // no branch for "mastercard" default: throw new Error("unexpected network"); } - Breakingdirection fliprequest.property.removed
metadata is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/terminal/refunds · metadataawait client.post("/v1/terminal/refunds", { // metadata is now ignored, not rejected metadata: value, }); - Breakingdirection fliprequest.property.removed
amount is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/terminal/refunds · amountawait client.post("/v1/terminal/refunds", { // amount is now ignored, not rejected amount: value, }); - Breakingdirection fliprequest.property.removed
charge is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/terminal/refunds · chargeawait client.post("/v1/terminal/refunds", { // charge is now ignored, not rejected charge: value, }); - Breakingdirection fliprequest.property.removed
payment_intent is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/terminal/refunds · payment_intentawait client.post("/v1/terminal/refunds", { // payment_intent is now ignored, not rejected payment_intent: value, }); - Breakingdirection fliprequest.property.removed
reason is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/terminal/refunds · reasonawait client.post("/v1/terminal/refunds", { // reason is now ignored, not rejected reason: value, }); - Breakingdirection fliprequest.property.removed
refund_application_fee is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/terminal/refunds · refund_application_feeawait client.post("/v1/terminal/refunds", { // refund_application_fee is now ignored, not rejected refund_application_fee: value, }); - Breakingdirection fliprequest.property.removed
reverse_transfer is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/terminal/refunds · reverse_transferawait client.post("/v1/terminal/refunds", { // reverse_transfer is now ignored, not rejected reverse_transfer: value, }); - Additiveresponse.property.type-narrowed
Response type narrowed
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 - Additiverequest.param.optional-added
active is now optional
No action needed.
GET /v1/payment_method_configurations · active
Additive43 new response fieldspayment_method.bizum, payment_method.scalapay, account_capabilities.bizum_payments, account_capabilities.scalapay_payments, subscription.billing_schedules, payment_method_details.bizum, payment_method_details.scalapay, invoice.amount_paid_off_stripe +35 more
Additive24 new request propertiespayment_method_data.bizum, payment_method_data.scalapay, payment_method_options.bizum, add_invoice_items[].discountable, payment_method_options.scalapay, transfer_data.description, bizum, scalapay +16 more
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 flipresponse.enum.value-added
type can now return "sunbit"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "sunbit"
5 places: confirmation_tokens_resource_payment_method_preview.type, payment_intent.excluded_payment_method_types[], payment_link.payment_method_types[], payment_method.type, setup_intent.excluded_payment_method_types[]switch (response.type) { // existing branches … // no branch for "sunbit" default: throw new Error("unexpected type"); } - Breakingdirection flipresponse.enum.value-added
type can now return "fo_vat", "gi_tin", "it_cf", "py_ruc"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "fo_vat", "gi_tin", "it_cf", "py_ruc"
4 places: invoices_resource_invoice_tax_id.type, payment_pages_checkout_session_tax_id.type, tax_id.type, tax_product_resource_customer_details_resource_tax_id.typeswitch (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 flipresponse.enum.value-added
payment_method_types can now return "pix", "upi"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "pix", "upi"
2 places: invoices_payment_settings.payment_method_types[], subscriptions_resource_payment_settings.payment_method_types[]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 flipresponse.enum.value-added
setup_future_usage can now return "off_session"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "off_session"
2 places: checkout_pix_payment_method_options.setup_future_usage, payment_method_options_pix.setup_future_usageswitch (response.setup_future_usage) { // existing branches … // no branch for "off_session" default: throw new Error("unexpected setup_future_usage"); } - Breakingdirection flipresponse.enum.value-added
cancellation_reason can now return "fulfillment_error"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "fulfillment_error"
2 places: issuing.card.cancellation_reason, issuing.card.replacement_reasonswitch (response.cancellation_reason) { // existing branches … // no branch for "fulfillment_error" default: throw new Error("unexpected cancellation_reason"); } - Breakingdirection flipresponse.enum.value-added
type can now return "fee_credit_funding", "inbound_transfer", "inbound_transfer_reversal"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
balance_transaction.type · reachable from 530 operationsswitch (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 flipresponse.enum.value-added
capture_method can now return "automatic_delayed"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
payment_intent_type_specific_payment_method_options_client.capture_method · reachable from 404 operationsswitch (response.capture_method) { // existing branches … // no branch for "automatic_delayed" default: throw new Error("unexpected capture_method"); } - Breakingdirection flipresponse.enum.value-added
token_currency can now return "phantom_cash", "usdt"
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 operationsswitch (response.token_currency) { // existing branches … // no branch for "phantom_cash" // no branch for "usdt" default: throw new Error("unexpected token_currency"); } - Breakingdirection flipresponse.enum.value-added
item_type can now return "account"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
radar.value_list.item_type · reachable from 4 operationsswitch (response.item_type) { // existing branches … // no branch for "account" default: throw new Error("unexpected item_type"); } - Breakingdirection flipresponse.enum.value-added
risk_level can now return "low", "not_assessed", "unknown"
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 operationswitch (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"); }
Additive36 new response fieldspayment_method.sunbit, setup_intent.managed_payments, payment_intent.managed_payments, account_capabilities.app_distribution, account_capabilities.sunbit_payments, subscription.managed_payments, payment_method_details.sunbit, setup_attempt_payment_method_details.pix +28 more
Additive14 new request propertiespayment_method_data.sunbit, payment_settings.payment_method_options.pix, payment_settings.payment_method_options.upi, payment_method_options.pix.mandate_options, spending_controls.allowed_card_presences, spending_controls.blocked_card_presences, sunbit, payment_method_options.pix +6 more
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.
- Breakingrequest.enum.value-removed
ui_mode no longer accepts "custom", "embedded", "form", "hosted"
A value you may have hardcoded is now rejected.
POST /v1/checkout/sessions · ui_mode// 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
- Additiveresponse.property.added
Response field presentment_details added
No action needed unless you validate responses against a closed schema.
subscription.presentment_details · reachable from 548 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 flipresponse.enum.value-added
type can now return "upi"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "upi"
5 places: confirmation_tokens_resource_payment_method_preview.type, payment_intent.excluded_payment_method_types[], payment_link.payment_method_types[], payment_method.type, setup_intent.excluded_payment_method_types[]switch (response.type) { // existing branches … // no branch for "upi" default: throw new Error("unexpected type"); } - Breakingrequest.property.became-required
level is now required
Partial payloads are rejected.
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.levelawait client.post("/v1/test_helpers/issuing/authorizations", { // … level: /* now required */, }); - Breakingdirection fliprequest.property.removed
risk_level is no longer accepted
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_levelawait client.post("/v1/test_helpers/issuing/authorizations", { // risk_level is now ignored, not rejected risk_level: value, }); - Breakingdirection flipresponse.enum.value-added
reason can now return "canceled_by_retention_policy"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
cancellation_details.reason · reachable from 488 operationsswitch (response.reason) { // existing branches … // no branch for "canceled_by_retention_policy" default: throw new Error("unexpected reason"); } - Breakingdirection flipresponse.enum.value-added
network can now return "tempo"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
payment_method_details_crypto.network · reachable from 262 operationsswitch (response.network) { // existing branches … // no branch for "tempo" default: throw new Error("unexpected network"); } - Breakingdirection flipresponse.property.became-optional
Response field card_reference_id is no longer guaranteed
Producer-side tools call this non-breaking. For a consumer it is a null dereference on an unknown future date.
issuing_network_token_visa.card_reference_id · reachable from 147 operations// response.card_reference_id may now be absent or null const card_reference_id = response.card_reference_id ?? fallback;
- Breakingdirection flipresponse.property.became-optional
Response field brand is no longer guaranteed
Producer-side tools call this non-breaking. For a consumer it is a null dereference on an unknown future date.
payments_primitives_payment_records_resource_payment_method_card_details.brand · reachable from 99 operations// response.brand may now be absent or null const brand = response.brand ?? fallback;
- Breakingdirection flipresponse.property.became-optional
Response field exp_month is no longer guaranteed
Producer-side tools call this non-breaking. For a consumer it is a null dereference on an unknown future date.
payments_primitives_payment_records_resource_payment_method_card_details.exp_month · reachable from 99 operations// response.exp_month may now be absent or null const exp_month = response.exp_month ?? fallback;
- Breakingdirection flipresponse.property.became-optional
Response field exp_year is no longer guaranteed
Producer-side tools call this non-breaking. For a consumer it is a null dereference on an unknown future date.
payments_primitives_payment_records_resource_payment_method_card_details.exp_year · reachable from 99 operations// response.exp_year may now be absent or null const exp_year = response.exp_year ?? fallback;
- Breakingdirection flipresponse.property.became-optional
Response field funding is no longer guaranteed
Producer-side tools call this non-breaking. For a consumer it is a null dereference on an unknown future date.
payments_primitives_payment_records_resource_payment_method_card_details.funding · reachable from 99 operations// response.funding may now be absent or null const funding = response.funding ?? fallback;
- Breakingdirection flipresponse.property.became-optional
Response field last4 is no longer guaranteed
Producer-side tools call this non-breaking. For a consumer it is a null dereference on an unknown future date.
payments_primitives_payment_records_resource_payment_method_card_details.last4 · reachable from 99 operations// response.last4 may now be absent or null const last4 = response.last4 ?? fallback;
- Breakingdirection flipresponse.enum.value-added
ui_mode can now return "elements", "embedded_page", "form", "hosted_page"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
checkout.session.ui_mode · reachable from 15 operationsswitch (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 flipresponse.enum.value-added
removal_pathway can now return "marine_carbon_removal"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
climate.supplier.removal_pathway · reachable from 9 operationsswitch (response.removal_pathway) { // existing branches … // no branch for "marine_carbon_removal" default: throw new Error("unexpected removal_pathway"); } - Breakingdirection flipresponse.enum.value-added
item_type can now return "crypto_fingerprint"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
radar.value_list.item_type · reachable from 4 operationsswitch (response.item_type) { // existing branches … // no branch for "crypto_fingerprint" default: throw new Error("unexpected item_type"); } - Breakingdirection flipresponse.property.became-optional
Response field insights is no longer guaranteed
Producer-side tools call this non-breaking. For a consumer it is a null dereference on an unknown future date.
radar.payment_evaluation.insights · reachable from 1 operation// response.insights may now be absent or null const insights = response.insights ?? fallback;
- Breakingresponse.property.removed
Response field insights removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
radar.payment_evaluation.insights · reachable from 1 operation// response.insights is now undefined const insights = response.insights;
Additive24 new response fieldspayment_method.upi, account_capabilities.upi_payments, payment_method_details.upi, setup_attempt_payment_method_details.upi, payment_intent_next_action.upi_handle_redirect_or_display_qr_code, payment_intent_payment_method_options.upi, line_item.quantity_decimal, mandate_payment_method_details.upi +16 more
Additive14 new request propertiespayment_method_options.upi, payment_method_data.upi, lines[].metadata, quantity_decimal, upi, capabilities.upi_payments, lines[].quantity_decimal, payment_method_options.crypto +6 more
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 flipresponse.enum.value-added
device_type can now return "simulated_stripe_s710", "stripe_s710"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "simulated_stripe_s710", "stripe_s710"
2 places: deleted_terminal.reader.device_type, terminal.reader.device_typeswitch (response.device_type) { // existing branches … // no branch for "simulated_stripe_s710" // no branch for "stripe_s710" default: throw new Error("unexpected device_type"); } - Additiveresponse.property.added
Response field stripe_s710 added
No action needed unless you validate responses against a closed schema.
terminal.configuration.stripe_s710 · reachable from 4 operations - Additiverequest.property.added
Request property stripe_s710 added
No action needed unless it is required.
POST /v1/terminal/configurations · stripe_s710 · 2 call sites
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 flipresponse.enum.value-added
type can now return "lk_vat"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "lk_vat"
4 places: invoices_resource_invoice_tax_id.type, payment_pages_checkout_session_tax_id.type, tax_id.type, tax_product_resource_customer_details_resource_tax_id.typeswitch (response.type) { // existing branches … // no branch for "lk_vat" default: throw new Error("unexpected type"); } - Breakingdirection flipresponse.enum.value-added
payment_method_types can now return "pay_by_bank"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "pay_by_bank"
2 places: invoices_payment_settings.payment_method_types[], subscriptions_resource_payment_settings.payment_method_types[]switch (response.payment_method_types[0]) { // existing branches … // no branch for "pay_by_bank" default: throw new Error("unexpected payment_method_types"); } - Breakingdirection flipresponse.enum.value-added
purpose can now return "terminal_wifi_certificate", "terminal_wifi_private_key"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
file.purpose · reachable from 547 operationsswitch (response.purpose) { // existing branches … // no branch for "terminal_wifi_certificate" // no branch for "terminal_wifi_private_key" default: throw new Error("unexpected purpose"); } - Breakingpath.removed
/v1/fabric/service/integration_config removed
Requests to this path now 404.
/v1/fabric/service/integration_config// Was: await client.request("GET", "/v1/fabric/service/integration_config"); // Now: 404 - Breakingresponse.property.removed
Response field card_issuer_decline removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
insights_resources_payment_evaluation_insights.card_issuer_decline · reachable from 1 operation// response.card_issuer_decline is now undefined const card_issuer_decline = response.card_issuer_decline;
- Breakingpath.removed
/v1/fabric/service/subscribe removed
Requests to this path now 404.
/v1/fabric/service/subscribe// Was: await client.request("GET", "/v1/fabric/service/subscribe"); // Now: 404 - Additiveresponse.property.type-narrowed
Response type narrowed
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 - Additivepath.added
/v1/terminal/refunds added
No action needed.
/v1/terminal/refunds
Additive11 new response fieldspayment_method_details_card_present.location, payment_method_details_card_present.reader, payment_intent_payment_method_options_us_bank_account.transaction_purpose, payment_method_details_interac_present.location, payment_method_details_interac_present.reader, mandate_bacs_debit.display_name, mandate_bacs_debit.service_user_number, tax_product_registrations_resource_country_options.lk +3 more
Additive5 new request propertiespayment_method_options.us_bank_account.transaction_purpose, cellular, payment_behavior, optional_items, country_options.lk
- Additiveresponse.property.added
Response field adjustable_quantity added
No action needed unless you validate responses against a closed schema.
item.adjustable_quantity · reachable from 30 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 flipresponse.enum.value-added
type can now return "pl_nip"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "pl_nip"
4 places: invoices_resource_invoice_tax_id.type, payment_pages_checkout_session_tax_id.type, tax_id.type, tax_product_resource_customer_details_resource_tax_id.typeswitch (response.type) { // existing branches … // no branch for "pl_nip" default: throw new Error("unexpected type"); } - Breakingdirection flipresponse.enum.value-added
bank can now return "adyen"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "adyen"
3 places: payment_method_details_ideal.bank, payment_method_ideal.bank, setup_attempt_payment_method_details_ideal.bankswitch (response.bank) { // existing branches … // no branch for "adyen" default: throw new Error("unexpected bank"); } - Breakingdirection flipresponse.enum.value-added
bic can now return "ADYBNL2A"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "ADYBNL2A"
3 places: payment_method_details_ideal.bic, payment_method_ideal.bic, setup_attempt_payment_method_details_ideal.bicswitch (response.bic) { // existing branches … // no branch for "ADYBNL2A" default: throw new Error("unexpected bic"); } - Breakingdirection flipresponse.enum.value-added
version can now return "2.3.0", "2.3.1"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "2.3.0", "2.3.1"
2 places: three_d_secure_details.version, three_d_secure_details_charge.versionswitch (response.version) { // existing branches … // no branch for "2.3.0" // no branch for "2.3.1" default: throw new Error("unexpected version"); } - Breakingdirection flipresponse.enum.value-added
balance_type can now return "risk_reserved"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
balance_transaction.balance_type · reachable from 531 operationsswitch (response.balance_type) { // existing branches … // no branch for "risk_reserved" default: throw new Error("unexpected balance_type"); } - Breakingdirection flipresponse.enum.value-added
type can now return "reserve_hold", "reserve_release"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
balance_transaction.type · reachable from 531 operationsswitch (response.type) { // existing branches … // no branch for "reserve_hold" // no branch for "reserve_release" default: throw new Error("unexpected type"); } - Breakingresponse.property.removed
Response field preferred_settlement_speed removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
payment_intent_payment_method_options_us_bank_account.preferred_settlement_speed · reachable from 405 operations// response.preferred_settlement_speed is now undefined const preferred_settlement_speed = response.preferred_settlement_speed;
- Breakingresponse.property.removed
Response field bgn removed
Reads of this field return undefined, and the failure surfaces wherever that value is used rather than at the call.
terminal_configuration_configuration_resource_tipping.bgn · reachable from 4 operations// response.bgn is now undefined const bgn = response.bgn;
- Breakingdirection fliprequest.property.removed
preferred_settlement_speed is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/payment_intents · payment_method_options.us_bank_account.preferred_settlement_speed · 3 call sitesawait client.post("/v1/payment_intents", { // preferred_settlement_speed is now ignored, not rejected preferred_settlement_speed: value, }); - Breakingdirection fliprequest.property.removed
bgn is no longer accepted
Usually ignored rather than rejected, so the call succeeds and does something subtly different.
POST /v1/terminal/configurations · tipping.bgn · 2 call sitesawait client.post("/v1/terminal/configurations", { // bgn is now ignored, not rejected bgn: value, }); - Additivepath.added
/v1/radar/payment_evaluations added
No action needed.
/v1/radar/payment_evaluations - Additiverequest.property.added
Request property enforce_arithmetic_validation added
No action needed unless it is required.
POST /v1/payment_intents · amount_details.enforce_arithmetic_validation · 5 call sites
Additive2 new response fieldspayment_flows_amount_details.error, treasury_received_debits_resource_linked_flows.topup
- Additiveresponse.property.added
Response field subtotal added
No action needed unless you validate responses against a closed schema.
line_item.subtotal · reachable from 423 operations
Additive7 new response fieldspayment_method_details_acss_debit.expected_debit_date, payment_method_details_au_becs_debit.expected_debit_date, payment_method_details_bacs_debit.expected_debit_date, payment_method_details_nz_bank_account.expected_debit_date, payment_method_details_sepa_debit.expected_debit_date, payment_method_details_us_bank_account.expected_debit_date, payment_method_details_payment_record_us_bank_account.expected_debit_date
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 flipresponse.enum.value-added
type can now return "payto"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "payto"
7 places: confirmation_tokens_resource_payment_method_preview.type, invoices_payment_settings.payment_method_types[], payment_intent.excluded_payment_method_types[], payment_link.payment_method_types[], payment_method.type, setup_intent.excluded_payment_method_types[] +1 moreswitch (response.type) { // existing branches … // no branch for "payto" default: throw new Error("unexpected type"); } - Breakingdirection flipresponse.enum.value-added
bank can now return "mollie"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "mollie"
3 places: payment_method_details_ideal.bank, payment_method_ideal.bank, setup_attempt_payment_method_details_ideal.bankswitch (response.bank) { // existing branches … // no branch for "mollie" default: throw new Error("unexpected bank"); } - Breakingdirection flipresponse.enum.value-added
bic can now return "MLLENL2A"
Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.
can now return "MLLENL2A"
3 places: payment_method_details_ideal.bic, payment_method_ideal.bic, setup_attempt_payment_method_details_ideal.bicswitch (response.bic) { // existing branches … // no branch for "MLLENL2A" default: throw new Error("unexpected bic"); } - Additiverequest.param.optional-added
customer_account is now optional
No action needed.
GET /v1/invoices · customer_account · 14 call sites - Additivepath.added
/v1/fabric/service/integration_config added
No action needed.
/v1/fabric/service/integration_config - Additiverequest.param.optional-added
invoice is now optional
No action needed.
GET /v1/customers/{customer}/balance_transactions · invoice - Additiverequest.param.optional-added
related_customer_account is now optional
No action needed.
GET /v1/identity/verification_sessions · related_customer_account - Additiverequest.param.optional-added
allow_redisplay is now optional
No action needed.
GET /v1/payment_methods · allow_redisplay - Additivepath.added
/v1/fabric/service/subscribe added
No action needed.
/v1/fabric/service/subscribe
Additive53 new response fieldscustomer.customer_account, payment_method.customer_account, payment_method.payto, setup_intent.customer_account, payment_intent.customer_account, account_capabilities.payto_payments, tax_id.customer_account, discount.customer_account +45 more
Additive14 new request propertiescustomer_account, payment_method_options.payto, payment_method_data.payto, payment_settings.payment_method_options.payto, account_holder.customer_account, payto, capabilities.payto_payments, documents.proof_of_registration.signer +6 more