Driftwatch

APIs / Stripe

Stripe API changes

Breaking changes, deprecations and new fields in the Stripe API, as they ship.

Stripe · bcfd59f41 breaking

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

    type can now return "final_payment_failure", "first_payment_failure"

    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 · 2bab97681 additive
  • Additive

    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 · c8faccbd24 breaking117 additive

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

    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.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

    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_link.payment_method_types[], payment_method.type, payment_intent.excluded_payment_method_types[], setup_intent.excluded_payment_method_types[]
    Code that breaks
    switch (response.type) {
      // existing branches …
      // no branch for "paypay"
      // no branch for "sequra"
      default:
        throw new Error("unexpected type");
    }
  • Breaking

    type is now required

    Partial payloads are rejected.

    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
    Code that breaks
    await client.post("/v1/subscriptions/{subscription}/resume", {
      // …
      type: /* now required */,
    });
  • Breakingdirection flip: their tools call this safe

    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: setup_intent.allowed_payment_method_types[], payment_intent.allowed_payment_method_types[]
    Code that breaks
    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

    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[]
    Code that breaks
    switch (response.payment_method_types[0]) {
      // existing branches …
      // no branch for "blik"
      default:
        throw new Error("unexpected payment_method_types");
    }
  • Breakingdirection flip: their tools call this safe

    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_usage
    Code that breaks
    switch (response.setup_future_usage) {
      // existing branches …
      // no branch for "off_session"
      default:
        throw new Error("unexpected setup_future_usage");
    }
  • Breakingdirection flip: their tools call this safe

    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[]
    Code that breaks
    switch (response.network) {
      // existing branches …
      // no branch for "rtp"
      default:
        throw new Error("unexpected network");
    }
  • Breakingdirection flip: their tools call this safe

    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_type
    Code that breaks
    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

    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 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

    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 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

    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 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

    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 operations
    Code that breaks
    switch (response.version) {
      // existing branches …
      // no branch for "2.3.0"
      // no branch for "2.3.1"
      default:
        throw new Error("unexpected version");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.ui_mode) {
      // existing branches …
      // no branch for "form"
      default:
        throw new Error("unexpected ui_mode");
    }
  • Breakingdirection flip: their tools call this safe

    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 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

    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 sites
    Code that breaks
    await client.post("/v1/checkout/sessions", {
      // payment_method_types is now ignored, not rejected
      payment_method_types: value,
    });
  • Breaking

    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
    Code that breaks
    // response.igic is now undefined
    const igic = response.igic;
  • Breaking

    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
    Code that breaks
    // response.countries is now undefined
    const countries = response.countries;
  • Breakingdirection flip: their tools call this safe

    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 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

    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 operations
    Code that breaks
    switch (response.sourcing) {
      // existing branches …
      // no branch for "performance"
      default:
        throw new Error("unexpected sourcing");
    }
  • Breakingdirection flip: their tools call this safe

    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 sites
    Code that breaks
    await client.post("/v1/financial_connections/sessions", {
      // countries is now ignored, not rejected
      countries: value,
    });
  • Breaking

    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
    Code that breaks
    // payload.billing_cycle_anchor
    // was: string
    // now: object
  • Breakingdirection flip: their tools call this safe

    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 operation
    Code that breaks
    switch (response.type) {
      // existing branches …
      // no branch for "rerouted"
      default:
        throw new Error("unexpected type");
    }
  • Breakingdirection flip: their tools call this safe

    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
    Code that breaks
    // response.score may now be absent or null
    const score = response.score ?? fallback;
  • Breakingdirection flip: their tools call this safe

    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} · payto
    Code that breaks
    await client.post("/v1/payment_methods/{payment_method}", {
      // payto is now ignored, not rejected
      payto: value,
    });
  • Additive

    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
  • Additive

    /v1/apps/installs added

    No action needed.

    /v1/apps/installs
  • Additive

    /v1/product_catalog/trial_offers/{id} added

    No action needed.

    /v1/product_catalog/trial_offers/{id}
  • Additive

    /v1/apps/installs/{id} added

    No action needed.

    /v1/apps/installs/{id}
  • Additive

    /v1/apps/installs/{id}/uninstall added

    No action needed.

    /v1/apps/installs/{id}/uninstall
  • Additive

    /v1/product_catalog/trial_offers added

    No action needed.

    /v1/product_catalog/trial_offers
  • Additive

    /v1/subscriptions/{subscription}/pause added

    No action needed.

    /v1/subscriptions/{subscription}/pause
  • Additive

    /v1/tax/locations added

    No action needed.

    /v1/tax/locations
  • Additive

    /v1/tax/locations/{location} added

    No action needed.

    /v1/tax/locations/{location}
  • Additive

    /v1/three_d_secure/authentications added

    No action needed.

    /v1/three_d_secure/authentications
  • Additive

    /v1/three_d_secure/authentications/{authentication} added

    No action needed.

    /v1/three_d_secure/authentications/{authentication}
  • Additive

    /v1/three_d_secure/authentications/{authentication}/cancel added

    No action needed.

    /v1/three_d_secure/authentications/{authentication}/cancel
  • Additive

    /v1/three_d_secure/authentications/{authentication}/submit added

    No action needed.

    /v1/three_d_secure/authentications/{authentication}/submit
56 new response fields
  • payment_method.paypay
  • payment_method.sequra
  • payment_intent.payment_record
  • account_capabilities.blik_recurring_payments
  • account_capabilities.paypay_payments
  • account_capabilities.sequra_payments
  • account_settings.paypay_payments
  • account_business_profile.specified_commercial_transactions_act_url
  • subscription.status_details
  • payment_method_details.paypay
  • payment_method_details.sequra
  • invoice.status_details
  • subscription_schedule.pause_schedules
  • subscriptions_resource_pending_update.cancel_at_period_end
  • subscription_item.current_trial
  • setup_attempt_payment_method_details.blik
  • subscriptions_resource_trial_settings_end_behavior.billing_cycle_anchor
  • payment_intent_payment_method_options.paypay
  • payment_intent_payment_method_options.sequra
  • subscriptions_resource_payment_method_options.blik
  • payment_intent_payment_method_options_blik.mandate_options
  • payment_method_options_billie.company_details
  • payment_method_options_billie.reference
  • payment_intent_next_action_swish_qr_code.expires_at
  • invoices_payment_method_options.blik
  • product.tax_details
  • subscription_payment_method_options_billie.company_details
  • tax_code.requirements
  • invoice_payment_method_options_billie.company_details
  • invoice_payment_method_options_billie.reference
  • payments_primitives_payment_records_resource_payment_method_details.momo
  • payments_primitives_payment_records_resource_payment_method_details.paypay
  • payments_primitives_payment_records_resource_payment_method_details.sequra
  • payment_method_details_card.electronic_commerce_indicator
  • payment_method_details_payment_record_link.funding_source_group
  • mandate_payment_method_details.blik
  • payments_primitives_payment_records_resource_payment_method_card_details_resource_wallet.link
  • setup_intent_payment_method_options.blik
  • checkout.session.allowed_payment_method_types
  • checkout_session_payment_method_options.sequra
  • tax_product_registrations_resource_country_options_united_states.admissions_tax
  • tax_product_registrations_resource_country_options_united_states.attendance_tax
  • invoiceitem.invoicing_rules
  • payment_method_configuration.paypay
  • payment_method_configuration.sequra
  • tax_product_registrations_resource_country_options_united_states.gross_receipts_tax
  • tax_product_registrations_resource_country_options_united_states.hospitality_tax
  • tax_product_registrations_resource_country_options_united_states.luxury_tax
  • tax_product_registrations_resource_country_options_united_states.resort_tax
  • tax_product_registrations_resource_country_options_united_states.tourism_tax
  • tax_product_registrations_resource_country_options_united_states.entertainment_tax
  • tax.calculation_line_item.performance_location
  • confirmation_tokens_resource_payment_method_preview.paypay
  • confirmation_tokens_resource_payment_method_preview.sequra
  • insights_resources_payment_evaluation_signals.early_fraud_warning
  • insights_resources_payment_evaluation_signals.fraudulent_dispute
48 new request properties
  • payment_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
  • sequra
  • line_items[].price_data.product_data.tax_details
  • payment_method_options.billie.company_details
  • payment_method_options.billie.reference
  • payment_method_options.blik.mandate_options
  • payment_method_options.paypay
  • paypay
  • current_trial
  • business_profile.specified_commercial_transactions_act_url
  • capabilities.blik_recurring_payments
  • capabilities.paypay_payments
  • capabilities.sequra_payments
  • settings.paypay_payments
  • filters.country
  • payment_settings.payment_method_options.billie.reference
  • lines[].price_data.product_data.tax_details
  • canceled
  • tax_details
  • pause_schedules
  • billing_cycle_anchor.type
  • settings.sepa_debit_payments
  • allowed_payment_method_types
  • invoicing_rules
  • subscription_details.billing_cycle_anchor.timestamp
  • subscription_details.billing_cycle_anchor.type
  • subscription_details.items[].current_trial
  • subscription_details.pause
  • price_data.product_data.tax_details
  • product.tax_details
  • product_data.tax_details
  • payment_behavior
  • line_items[].performance_location
  • country_options.us.admissions_tax
  • country_options.us.attendance_tax
  • country_options.us.entertainment_tax
  • country_options.us.gross_receipts_tax
  • country_options.us.hospitality_tax
  • country_options.us.luxury_tax
  • country_options.us.resort_tax
  • country_options.us.tourism_tax
Stripe · 30d3391c4 breaking56 additive

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

    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[]
    Code that breaks
    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 flip: their tools call this safe

    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[]
    Code that breaks
    switch (response.payment_method_types[0]) {
      // existing branches …
      // no branch for "billie"
      default:
        throw new Error("unexpected payment_method_types");
    }
  • Breaking

    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
    Code that breaks
    // response.cryptogram is now undefined
    const cryptogram = response.cryptogram;
  • Breakingdirection flip: their tools call this safe

    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 operation
    Code that breaks
    switch (response.type) {
      // existing branches …
      // no branch for "customer_update"
      default:
        throw new Error("unexpected type");
    }
  • Additive

    /v1/billing/feedback_options added

    No action needed.

    /v1/billing/feedback_options
  • Additive

    /v1/billing/feedback_options/{id} added

    No action needed.

    /v1/billing/feedback_options/{id}
  • Additive

    /v1/billing/feedback_options/{id}/deactivate added

    No action needed.

    /v1/billing/feedback_options/{id}/deactivate
15 new response fields
  • cancellation_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
  • invoiceitem.frozen_fields
  • tax_product_registrations_resource_country_options_europe.igic
  • bank_connections_resource_link_account_session_filters.country
  • confirmation_token.metadata
  • customer_session_resource_components.customer_portal
  • connect_embedded_account_session_create_components.payment_method_settings
  • customer_session_resource_components.active_entitlements
  • portal_flows_flow.customer_update
38 new request properties
  • payment_settings.payment_method_options.billie
  • cancellation_details.feedback_option
  • features.subscription_cancel.cancellation_reason.feedback_options
  • country_options.dk.igic
  • components.payment_method_settings
  • payment_method_options.card.restrictions.funding_types_blocked
  • components.active_entitlements
  • components.customer_portal
  • application_fee_amount
  • application_fee_percent
  • on_behalf_of
  • transfer_data
  • country_options.at.igic
  • country_options.be.igic
  • country_options.bg.igic
  • country_options.cy.igic
  • country_options.cz.igic
  • country_options.de.igic
  • country_options.es.igic
  • country_options.fi.igic
  • country_options.fr.igic
  • country_options.gr.igic
  • country_options.hr.igic
  • country_options.hu.igic
  • country_options.ie.igic
  • country_options.lu.igic
  • country_options.lv.igic
  • country_options.mt.igic
  • country_options.nl.igic
  • country_options.pl.igic
  • country_options.pt.igic
  • country_options.ro.igic
  • country_options.se.igic
  • country_options.sk.igic
  • country_options.ee.igic
  • country_options.lt.igic
  • country_options.si.igic
  • country_options.it.igic
Stripe · af5309ca10 breaking43 additive

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

    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: tax_id.type, invoices_resource_invoice_tax_id.type, payment_pages_checkout_session_tax_id.type, tax_product_resource_customer_details_resource_tax_id.type
    Code that breaks
    switch (response.type) {
      // existing branches …
      // no branch for "ic_nif"
      default:
        throw new Error("unexpected type");
    }
  • Breakingdirection flip: their tools call this safe

    tax_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_rate.tax_type, 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
    Code that breaks
    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

    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_charge.result, three_d_secure_details.result
    Code that breaks
    switch (response.result) {
      // existing branches …
      // no branch for "data_share_only"
      default:
        throw new Error("unexpected result");
    }
  • Breakingdirection flip: their tools call this safe

    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: subscriptions_resource_payment_settings.payment_method_types[], invoices_payment_settings.payment_method_types[]
    Code that breaks
    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");
    }
  • Breaking

    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
    Code that breaks
    // response.iin is now undefined
    const iin = response.iin;
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.supported_networks[0]) {
      // existing branches …
      // no branch for "chaps"
      default:
        throw new Error("unexpected supported_networks");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.reason) {
      // existing branches …
      // no branch for "stripe_internal_error"
      default:
        throw new Error("unexpected reason");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.carrier) {
      // existing branches …
      // no branch for "correos"
      default:
        throw new Error("unexpected carrier");
    }
  • Breaking

    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
    Code that breaks
    // sending "custom" for manual_entry.mode is now rejected
  • Breakingdirection flip: their tools call this safe

    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_registration
    Code that breaks
    await client.post("/v1/accounts", {
      // proof_of_registration is now ignored, not rejected
      proof_of_registration: value,
    });
  • Additive

    /v1/accounts/{account}/unreject added

    No action needed.

    /v1/accounts/{account}/unreject
  • Additive

    /v1/payment_records added

    No action needed.

    /v1/payment_records
22 new response fields
  • setup_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
  • payment_flows_private_payment_methods_payco_payment_method_options.setup_future_usage
  • payment_flows_private_payment_methods_samsung_pay_payment_method_options.setup_future_usage
  • topup.initiated_by
  • topup.payment_method
  • topup.payment_method_options
  • issuing_card_shipping.business_name
  • checkout_payco_payment_method_options.setup_future_usage
  • checkout_samsung_pay_payment_method_options.setup_future_usage
  • bank_connections_resource_link_account_session_manual_entry.mode
  • tax_product_registrations_resource_country_options_united_states.mass_transit_parking_tax
  • tax_product_registrations_resource_country_options_united_states.parking_tax
  • connect_embedded_payment_disputes_features.smart_disputes_management
  • connect_embedded_payments_features.smart_disputes_management
  • connect_embedded_disputes_list_features.smart_disputes_management
19 new request properties
  • allowed_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
  • components.payment_details.features.smart_disputes_management
  • components.payment_disputes.features.smart_disputes_management
  • components.payments.features.smart_disputes_management
  • settings.sepa_debit_payments
  • payouts_action
  • subscription_details.metadata
  • consent_collection
  • country_options.us.mass_transit_parking_tax
  • country_options.us.parking_tax
  • account.company.administrative_address
  • account.company.principal_place_of_business
Stripe · 7061322c2 breaking28 additive

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

    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_fpx.bank, payment_method_details_fpx.bank
    Code that breaks
    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

    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_rates
    Code that breaks
    await client.post("/v1/checkout/sessions", {
      // dynamic_tax_rates is now ignored, not rejected
      dynamic_tax_rates: value,
    });
14 new response fields
  • invoice_setting_subscription_schedule_setting.description
  • invoice_setting_subscription_schedule_setting.footer
  • invoice_setting_subscription_schedule_setting.custom_fields
  • invoice_setting_subscription_schedule_phase_setting.description
  • invoice_setting_subscription_schedule_phase_setting.footer
  • invoice_setting_subscription_schedule_phase_setting.custom_fields
  • dispute_payment_method_details_card.network
  • invoice_setting_quote_setting.footer
  • invoice_setting_quote_setting.custom_fields
  • invoice_setting_quote_setting.description
  • financial_connections.session.bank_account_token
  • financial_connections.session.limits
  • financial_connections.session.manual_entry
  • bank_connections_resource_link_account_session_filters.require_payment_method_support
14 new request properties
  • filters.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
  • default_settings.invoice_settings.footer
  • phases[].invoice_settings.custom_fields
  • phases[].invoice_settings.description
  • phases[].invoice_settings.footer
  • payment_intent_data.setup_future_usage
  • shipping_options
Stripe · f4ac6d9a10 breaking31 additive

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

    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[]
    Code that breaks
    switch (response.payment_method_types[0]) {
      // existing branches …
      // no branch for "satispay"
      default:
        throw new Error("unexpected payment_method_types");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.type) {
      // existing branches …
      // no branch for "tax_fund"
      default:
        throw new Error("unexpected type");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.network) {
      // existing branches …
      // no branch for "sui"
      default:
        throw new Error("unexpected network");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.token_currency) {
      // existing branches …
      // no branch for "usdsui"
      default:
        throw new Error("unexpected token_currency");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.enhanced_eligibility_types[0]) {
      // existing branches …
      // no branch for "mastercard_compliance"
      default:
        throw new Error("unexpected enhanced_eligibility_types");
    }
  • Breaking

    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
    Code that breaks
    // response.description is now undefined
    const description = response.description;
  • Breaking

    Response field iin removed

    payments_primitives_payment_records_resource_payment_method_card_details.iin · reachable from 99 operations
    Code that breaks
    // response.iin is now undefined
    const iin = response.iin;
  • Breaking

    Response field issuer removed

    payments_primitives_payment_records_resource_payment_method_card_details.issuer · reachable from 99 operations
    Code that breaks
    // response.issuer is now undefined
    const issuer = response.issuer;
  • Breaking

    Response field stored_credential_usage removed

    payments_primitives_payment_records_resource_payment_method_card_details.stored_credential_usage · reachable from 99 operations
    Code that breaks
    // response.stored_credential_usage is now undefined
    const stored_credential_usage = response.stored_credential_usage;
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.status) {
      // existing branches …
      // no branch for "validated"
      default:
        throw new Error("unexpected status");
    }
19 new response fields
  • payment_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
  • payment_method_options_satispay.setup_future_usage
  • setup_attempt_payment_method_details_pix.fingerprint
  • payment_method_details_bizum.buyer_id
  • payment_method_details_card.transaction_link_id
  • payment_method_details_pix.fingerprint
  • dispute_enhanced_eligibility.mastercard_compliance
  • dispute_enhanced_evidence.mastercard_compliance
  • payment_method_details_payment_record_bizum.buyer_id
  • checkout_session_payment_method_options.sunbit
  • checkout_session_payment_method_options.wechat_pay
  • financial_connections.account.status_details
12 new request properties
  • card.swipe_data
  • card.network_token
  • card.encrypted
  • payment_method_options.sunbit
  • invoice_settings.custom_fields
  • invoice_settings.description
  • invoice_settings.footer
  • payment_method_options.satispay.setup_future_usage
  • evidence.enhanced_evidence.mastercard_compliance
  • subscription_data.billing_cycle_anchor_config
  • payment_method
  • payment_method_options
Stripe · 6a1ea0ab8 breaking69 additive

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

    amount is no longer accepted

    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

    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: payment_method.type, confirmation_tokens_resource_payment_method_preview.type, payment_intent.excluded_payment_method_types[], setup_intent.excluded_payment_method_types[]
    Code that breaks
    switch (response.type) {
      // existing branches …
      // no branch for "bizum"
      // no branch for "scalapay"
      default:
        throw new Error("unexpected type");
    }
  • Breakingdirection flip: their tools call this safe

    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[]
    Code that breaks
    switch (response.payment_method_types[0]) {
      // existing branches …
      // no branch for "twint"
      default:
        throw new Error("unexpected payment_method_types");
    }
  • Breakingdirection flip: their tools call this safe

    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: payment_method_options_twint.setup_future_usage, checkout_twint_payment_method_options.setup_future_usage
    Code that breaks
    switch (response.setup_future_usage) {
      // existing branches …
      // no branch for "off_session"
      default:
        throw new Error("unexpected setup_future_usage");
    }
  • Breakingdirection flip: their tools call this safe

    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_type
    Code that breaks
    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

    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 operations
    Code that breaks
    switch (response.payment_method_types[0]) {
      // existing branches …
      // no branch for "bizum"
      default:
        throw new Error("unexpected payment_method_types");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.type) {
      // existing branches …
      // no branch for "print_content"
      default:
        throw new Error("unexpected type");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.network) {
      // existing branches …
      // no branch for "mastercard"
      default:
        throw new Error("unexpected network");
    }
  • Additive

    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
  • Additive

    active is now optional

    No action needed.

    GET /v1/payment_method_configurations · active
43 new response fields
  • payment_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
  • subscriptions_resource_pending_update.discount
  • subscriptions_resource_pending_update.discounts
  • subscriptions_resource_pending_update.metadata
  • subscription_item.billed_until
  • setup_attempt_payment_method_details.twint
  • transfer_data.description
  • transfer_data.metadata
  • transfer_data.payment_data
  • payment_intent_next_action.blik_authorize
  • payment_intent_payment_method_options.scalapay
  • payment_intent_payment_method_options.bizum
  • subscription_schedule_add_invoice_item.discountable
  • payment_method_details_twint.mandate
  • refund_destination_details.scalapay
  • mandate_payment_method_details.twint
  • setup_intent_next_action.blik_authorize
  • setup_intent_payment_method_options.bizum
  • payments_primitives_payment_records_resource_payment_method_details.scalapay
  • payments_primitives_payment_records_resource_payment_method_details.bizum
  • payment_method_details_payment_record_twint.mandate
  • payment_link.payment_method_options
  • checkout_session_payment_method_options.scalapay
  • terminal_reader_reader_resource_reader_action.api_error
  • terminal_reader_reader_resource_reader_action.print_content
  • payment_method_configuration.bizum
  • payment_method_configuration.scalapay
  • proration_details.credited_items
  • terminal.configuration.verifone_m425
  • terminal.configuration.verifone_p630
  • terminal.configuration.verifone_ux700
  • terminal.configuration.verifone_v660p
  • balance_settings_resource_payouts.automatic_transfer_rules_by_currency
  • balance_settings_resource_settlement_timing.start_of_day
  • confirmation_tokens_resource_payment_method_preview.bizum
  • confirmation_tokens_resource_payment_method_preview.scalapay
24 new request properties
  • payment_method_data.bizum
  • payment_method_data.scalapay
  • payment_method_options.bizum
  • payment_method_options.scalapay
  • add_invoice_items[].discountable
  • transfer_data.description
  • bizum
  • scalapay
  • capabilities.scalapay_payments
  • capabilities.bizum_payments
  • transfer_data.metadata
  • transfer_data.payment_data
  • payment_method_options
  • phases[].add_invoice_items[].discountable
  • billing_schedules
  • verifone_m425
  • verifone_p630
  • verifone_ux700
  • verifone_v660p
  • schedule_details.phases[].add_invoice_items[].discountable
  • subscription_details.billing_schedules
  • payments.payouts.automatic_transfer_rules_by_currency
  • payments.settlement_timing.start_of_day
  • customer
Stripe · d771243f10 breaking50 additive

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

    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: payment_method.type, setup_intent.excluded_payment_method_types[], confirmation_tokens_resource_payment_method_preview.type, payment_intent.excluded_payment_method_types[], payment_link.payment_method_types[]
    Code that breaks
    switch (response.type) {
      // existing branches …
      // no branch for "sunbit"
      default:
        throw new Error("unexpected type");
    }
  • Breakingdirection flip: their tools call this safe

    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, tax_id.type, payment_pages_checkout_session_tax_id.type, tax_product_resource_customer_details_resource_tax_id.type
    Code that breaks
    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

    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[]
    Code that breaks
    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

    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_usage
    Code that breaks
    switch (response.setup_future_usage) {
      // existing branches …
      // no branch for "off_session"
      default:
        throw new Error("unexpected setup_future_usage");
    }
  • Breakingdirection flip: their tools call this safe

    replacement_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.replacement_reason, issuing.card.cancellation_reason
    Code that breaks
    switch (response.replacement_reason) {
      // existing branches …
      // no branch for "fulfillment_error"
      default:
        throw new Error("unexpected replacement_reason");
    }
  • Breakingdirection flip: their tools call this safe

    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 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

    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 operations
    Code that breaks
    switch (response.capture_method) {
      // existing branches …
      // no branch for "automatic_delayed"
      default:
        throw new Error("unexpected capture_method");
    }
  • Breakingdirection flip: their tools call this safe

    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 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

    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 operations
    Code that breaks
    switch (response.item_type) {
      // existing branches …
      // no branch for "account"
      default:
        throw new Error("unexpected item_type");
    }
  • Breakingdirection flip: their tools call this safe

    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 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");
    }
36 new response fields
  • payment_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
  • payment_intent_next_action.klarna_display_qr_code
  • subscriptions_resource_payment_method_options.pix
  • subscriptions_resource_payment_method_options.upi
  • payment_method_options_pix.mandate_options
  • invoices_payment_method_options.pix
  • invoices_payment_method_options.upi
  • payment_method_details_klarna.location
  • payment_method_details_klarna.reader
  • payment_method_details_pix.mandate
  • mandate_multi_use.amount
  • mandate_multi_use.currency
  • mandate_payment_method_details.pix
  • issuing.authorization.card_presence
  • issuing_card_authorization_controls.allowed_card_presences
  • issuing_card_authorization_controls.blocked_card_presences
  • issuing_cardholder_authorization_controls.allowed_card_presences
  • issuing_cardholder_authorization_controls.blocked_card_presences
  • setup_intent_next_action.pix_display_qr_code
  • setup_intent_payment_method_options.pix
  • payments_primitives_payment_records_resource_payment_method_details.sunbit
  • payment_method_details_payment_record_pix.mandate
  • payment_link.managed_payments
  • checkout.session.managed_payments
  • checkout_pix_payment_method_options.mandate_options
  • payment_method_configuration.sunbit
  • confirmation_tokens_resource_payment_method_preview.sunbit
  • connect_embedded_account_session_create_components.balance_report
  • connect_embedded_account_session_create_components.payout_reconciliation_report
14 new request properties
  • payment_method_data.sunbit
  • payment_settings.payment_method_options.upi
  • payment_settings.payment_method_options.pix
  • payment_method_options.pix.mandate_options
  • spending_controls.allowed_card_presences
  • spending_controls.blocked_card_presences
  • sunbit
  • payment_method_options.pix
  • capabilities.app_distribution
  • capabilities.sunbit_payments
  • managed_payments
  • components.balance_report
  • components.payout_reconciliation_report
  • amount_to_confirm
Stripe · a54c38881 breaking1 additive

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.

  • Breaking

    ui_mode no longer accepts "custom", "embedded", "form", "hosted"

    A value you may have hardcoded is now rejected.

    POST /v1/checkout/sessions · ui_mode
    Code that breaks
    // 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
  • Additive

    Response field presentment_details added

    No action needed unless you validate responses against a closed schema.

    subscription.presentment_details · reachable from 548 operations
Stripe · cfe95bf411 breaking38 additive

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

    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: payment_method.type, confirmation_tokens_resource_payment_method_preview.type, payment_intent.excluded_payment_method_types[], payment_link.payment_method_types[], setup_intent.excluded_payment_method_types[]
    Code that breaks
    switch (response.type) {
      // existing branches …
      // no branch for "upi"
      default:
        throw new Error("unexpected type");
    }
  • Breakingdirection flip: their tools call this safe

    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.

    no longer guaranteed present; can now be null

    5 places: payments_primitives_payment_records_resource_payment_method_card_details.funding, payments_primitives_payment_records_resource_payment_method_card_details.last4, payments_primitives_payment_records_resource_payment_method_card_details.brand, payments_primitives_payment_records_resource_payment_method_card_details.exp_year, payments_primitives_payment_records_resource_payment_method_card_details.exp_month
    Code that breaks
    // response.funding may now be absent or null
    const funding = response.funding ?? fallback;
  • Breaking

    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.level
    Code that breaks
    await client.post("/v1/test_helpers/issuing/authorizations", {
      // …
      level: /* now required */,
    });
  • Breakingdirection flip: their tools call this safe

    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_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

    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 operations
    Code that breaks
    switch (response.reason) {
      // existing branches …
      // no branch for "canceled_by_retention_policy"
      default:
        throw new Error("unexpected reason");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.network) {
      // existing branches …
      // no branch for "tempo"
      default:
        throw new Error("unexpected network");
    }
  • Breakingdirection flip: their tools call this safe

    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
    Code that breaks
    // response.card_reference_id may now be absent or null
    const card_reference_id = response.card_reference_id ?? fallback;
  • Breakingdirection flip: their tools call this safe

    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 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

    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 operations
    Code that breaks
    switch (response.removal_pathway) {
      // existing branches …
      // no branch for "marine_carbon_removal"
      default:
        throw new Error("unexpected removal_pathway");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.item_type) {
      // existing branches …
      // no branch for "crypto_fingerprint"
      default:
        throw new Error("unexpected item_type");
    }
  • Breaking

    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
    Code that breaks
    // response.insights is now undefined
    const insights = response.insights;
24 new response fields
  • payment_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
  • issuing.card.lifecycle_controls
  • setup_intent_next_action.upi_handle_redirect_or_display_qr_code
  • setup_intent_payment_method_options.upi
  • payments_primitives_payment_records_resource_payment_method_details.upi
  • payments_primitives_payment_records_resource_payment_method_card_details_resource_three_d_secure.electronic_commerce_indicator
  • payments_primitives_payment_records_resource_payment_method_card_details_resource_three_d_secure.cryptogram
  • payments_primitives_payment_records_resource_payment_method_card_details_resource_three_d_secure.exemption_indicator
  • payments_primitives_payment_records_resource_payment_method_card_details_resource_three_d_secure.exemption_indicator_applied
  • checkout.session.integration_identifier
  • checkout_session_payment_method_options.upi
  • credit_note_line_item.metadata
  • invoiceitem.quantity_decimal
  • payment_method_configuration.upi
  • confirmation_tokens_resource_payment_method_preview.upi
  • radar.payment_evaluation.recommended_action
  • radar.payment_evaluation.signals
14 new request properties
  • payment_method_data.upi
  • payment_method_options.upi
  • lines[].metadata
  • quantity_decimal
  • upi
  • capabilities.upi_payments
  • lines[].quantity_decimal
  • payment_method_options.crypto
  • subscription_data.pending_invoice_item_interval
  • integration_identifier
  • invoice_items[].quantity_decimal
  • lifecycle_controls
  • risk_assessment.card_testing_risk.level
  • risk_assessment.merchant_dispute_risk.level
Stripe · da3eadb21 breaking2 additive

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

    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_type
    Code that breaks
    switch (response.device_type) {
      // existing branches …
      // no branch for "simulated_stripe_s710"
      // no branch for "stripe_s710"
      default:
        throw new Error("unexpected device_type");
    }
  • Additive

    Response field stripe_s710 added

    No action needed unless you validate responses against a closed schema.

    terminal.configuration.stripe_s710 · reachable from 4 operations
  • Additive

    Request property stripe_s710 added

    No action needed unless it is required.

    POST /v1/terminal/configurations · stripe_s710 · 2 call sites
Stripe · 0aaf9a656 breaking18 additive

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

    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, tax_id.type, payment_pages_checkout_session_tax_id.type, tax_product_resource_customer_details_resource_tax_id.type
    Code that breaks
    switch (response.type) {
      // existing branches …
      // no branch for "lk_vat"
      default:
        throw new Error("unexpected type");
    }
  • Breakingdirection flip: their tools call this safe

    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[]
    Code that breaks
    switch (response.payment_method_types[0]) {
      // existing branches …
      // no branch for "pay_by_bank"
      default:
        throw new Error("unexpected payment_method_types");
    }
  • Breakingdirection flip: their tools call this safe

    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 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");
    }
  • Breaking

    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
    Code that breaks
    // response.card_issuer_decline is now undefined
    const card_issuer_decline = response.card_issuer_decline;
  • Breaking

    /v1/fabric/service/subscribe removed

    Requests to this path now 404.

    /v1/fabric/service/subscribe
    Code that breaks
    // Was:
    await client.request("GET", "/v1/fabric/service/subscribe");
    // Now: 404
  • Breaking

    /v1/fabric/service/integration_config removed

    Requests to this path now 404.

    /v1/fabric/service/integration_config
    Code that breaks
    // Was:
    await client.request("GET", "/v1/fabric/service/integration_config");
    // Now: 404
  • Additive

    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
  • Additive

    /v1/terminal/refunds added

    No action needed.

    /v1/terminal/refunds
11 new response fields
  • payment_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
  • terminal.configuration.cellular
  • deleted_terminal.reader.device_type
  • deleted_terminal.reader.serial_number
5 new request properties
  • payment_method_options.us_bank_account.transaction_purpose
  • cellular
  • payment_behavior
  • optional_items
  • country_options.lk
Stripe · 7d73d55910 breaking4 additive

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

    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: tax_product_resource_customer_details_resource_tax_id.type, invoices_resource_invoice_tax_id.type, payment_pages_checkout_session_tax_id.type, tax_id.type
    Code that breaks
    switch (response.type) {
      // existing branches …
      // no branch for "pl_nip"
      default:
        throw new Error("unexpected type");
    }
  • Breakingdirection flip: their tools call this safe

    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.bank
    Code that breaks
    switch (response.bank) {
      // existing branches …
      // no branch for "adyen"
      default:
        throw new Error("unexpected bank");
    }
  • Breakingdirection flip: their tools call this safe

    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, setup_attempt_payment_method_details_ideal.bic, payment_method_ideal.bic
    Code that breaks
    switch (response.bic) {
      // existing branches …
      // no branch for "ADYBNL2A"
      default:
        throw new Error("unexpected bic");
    }
  • Breakingdirection flip: their tools call this safe

    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.version
    Code that breaks
    switch (response.version) {
      // existing branches …
      // no branch for "2.3.0"
      // no branch for "2.3.1"
      default:
        throw new Error("unexpected version");
    }
  • Breakingdirection flip: their tools call this safe

    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 operations
    Code that breaks
    switch (response.balance_type) {
      // existing branches …
      // no branch for "risk_reserved"
      default:
        throw new Error("unexpected balance_type");
    }
  • Breakingdirection flip: their tools call this safe

    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 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");
    }
  • Breaking

    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
    Code that breaks
    // response.preferred_settlement_speed is now undefined
    const preferred_settlement_speed = response.preferred_settlement_speed;
  • Breaking

    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
    Code that breaks
    // response.bgn is now undefined
    const bgn = response.bgn;
  • Breakingdirection flip: their tools call this safe

    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 sites
    Code that breaks
    await client.post("/v1/payment_intents", {
      // preferred_settlement_speed is now ignored, not rejected
      preferred_settlement_speed: value,
    });
  • Breakingdirection flip: their tools call this safe

    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 sites
    Code that breaks
    await client.post("/v1/terminal/configurations", {
      // bgn is now ignored, not rejected
      bgn: value,
    });
  • Additive

    /v1/radar/payment_evaluations added

    No action needed.

    /v1/radar/payment_evaluations
  • Additive

    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
2 new response fields
  • payment_flows_amount_details.error
  • treasury_received_debits_resource_linked_flows.topup
Stripe · 03af40461 additive
  • Additive

    Response field subtotal added

    No action needed unless you validate responses against a closed schema.

    line_item.subtotal · reachable from 423 operations
Stripe · ed93b9427 additive
7 new response fields
  • 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_acss_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 · 14a40f813 breaking73 additive

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

    excluded_payment_method_types 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: payment_intent.excluded_payment_method_types[], confirmation_tokens_resource_payment_method_preview.type, invoices_payment_settings.payment_method_types[], payment_link.payment_method_types[], payment_method.type, setup_intent.excluded_payment_method_types[] +1 more
    Code that breaks
    switch (response.excluded_payment_method_types[0]) {
      // existing branches …
      // no branch for "payto"
      default:
        throw new Error("unexpected excluded_payment_method_types");
    }
  • Breakingdirection flip: their tools call this safe

    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, setup_attempt_payment_method_details_ideal.bank, payment_method_ideal.bank
    Code that breaks
    switch (response.bank) {
      // existing branches …
      // no branch for "mollie"
      default:
        throw new Error("unexpected bank");
    }
  • Breakingdirection flip: their tools call this safe

    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.bic
    Code that breaks
    switch (response.bic) {
      // existing branches …
      // no branch for "MLLENL2A"
      default:
        throw new Error("unexpected bic");
    }
  • Additive

    customer_account is now optional

    No action needed.

    GET /v1/billing/credit_balance_summary · customer_account · 14 call sites
  • Additive

    invoice is now optional

    No action needed.

    GET /v1/customers/{customer}/balance_transactions · invoice
  • Additive

    related_customer_account is now optional

    No action needed.

    GET /v1/identity/verification_sessions · related_customer_account
  • Additive

    allow_redisplay is now optional

    No action needed.

    GET /v1/payment_methods · allow_redisplay
  • Additive

    /v1/fabric/service/integration_config added

    No action needed.

    /v1/fabric/service/integration_config
  • Additive

    /v1/fabric/service/subscribe added

    No action needed.

    /v1/fabric/service/subscribe
53 new response fields
  • customer.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
  • subscription.customer_account
  • discount.customer_account
  • cash_balance.customer_account
  • payment_method_details.payto
  • promotion_code.customer_account
  • invoice.customer_account
  • subscription_schedule.customer_account
  • setup_attempt.customer_account
  • setup_attempt_payment_method_details.payto
  • payment_intent_payment_method_options.payto
  • deleted_discount.customer_account
  • subscriptions_resource_payment_method_options.payto
  • payment_intent_type_specific_payment_method_options_client.mandate_options
  • invoices_payment_method_options.payto
  • payment_record.reported_by
  • mandate_payment_method_details.payto
  • tax_i_ds_owner.customer_account
  • customer_cash_balance_transaction.customer_account
  • setup_intent_payment_method_options.payto
  • payments_primitives_payment_records_resource_payment_method_details.payto
  • payments_primitives_payment_records_resource_payment_method_card_details.authorization_code
  • payments_primitives_payment_records_resource_payment_method_card_details.description
  • payments_primitives_payment_records_resource_payment_method_card_details.iin
  • payments_primitives_payment_records_resource_payment_method_card_details.installments
  • payments_primitives_payment_records_resource_payment_method_card_details.network_decline_code
  • payments_primitives_payment_records_resource_payment_method_card_details.stored_credential_usage
  • payments_primitives_payment_records_resource_payment_method_card_details.network_advice_code
  • payments_primitives_payment_records_resource_payment_method_card_details.issuer
  • billing.credit_grant.customer_account
  • setup_intent_type_specific_payment_method_options_client.mandate_options
  • item.metadata
  • checkout.session.customer_account
  • checkout_session_payment_method_options.payto
  • bank_connections_resource_accountholder.customer_account
  • credit_note.customer_account
  • customer_balance_transaction.customer_account
  • quote.customer_account
  • identity.verification_session.related_customer_account
  • portal_subscription_update.billing_cycle_anchor
  • invoiceitem.customer_account
  • payment_method_configuration.payto
  • confirmation_tokens_resource_payment_method_preview.customer_account
  • confirmation_tokens_resource_payment_method_preview.payto
  • customer_session.customer_account
  • billing_portal.session.customer_account
  • billing.credit_balance_summary.customer_account
14 new request properties
  • customer_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
  • documents.proof_of_ultimate_beneficial_ownership.signer
  • features.subscription_update.billing_cycle_anchor
  • owner.customer_account
  • line_items[].metadata
  • line_items
  • related_customer_account