```mdx
TL;DR
pricing field within Invoice line items, specifically the anyOf subschemas for BillingBilling* types, which affects how pricing data is resolved across subscription flows.BankAccount → Customer → subscriptions → latest_invoice → lines → pricing resolution chain is the common thread — any code that traverses this path in response objects may encounter structural differences.---
Editor's Note: We want to be direct: this is not a routine patch. The breadth of 100 breaking changes across a single commit — all tracing back to a schema restructuring of the pricing anyOf subschemas on invoice line items — signals a deliberate, coordinated API model refactor rather than an incremental feature addition. This fits a pattern we've observed in Stripe's OpenAPI spec history where pricing model expansions (such as the introduction of multi-currency or usage-based billing primitives) ripple upward through deeply nested response schemas. Our practical tip: regenerate your OpenAPI client immediately in a non-production environment and run your full integration test suite against the new spec before promoting any changes — the nested path depth here makes manual inspection unreliable.
---
What Changed
Breaking
All 100 changes are breaking. They share a common schema modification: the pricing field within Invoice.lines.data[].pricing has had its anyOf subschema composition altered. Specifically, subschema #1 (previously or newly referencing a BillingB* type — truncated in the diff as BillingB) has changed in a way that is not backward-compatible with the prior shape.
This change propagates through every endpoint that can return a BankAccount object with an expanded customer, because the Customer object embeds subscriptions, which embed latest_invoice, which embeds lines, which embed pricing. The affected endpoints include:
Account & Identity endpoints
/v1/account — 2 breaking changes/v1/account_links — 2 breaking changes/v1/account_sessions — 2 breaking changes/v1/accounts — 4 breaking changes/v1/accounts/{account} — 6 breaking changes/v1/accounts/{account}/capabilities and /v1/accounts/{account}/capabilities/{capability}/v1/accounts/{account}/people, /v1/accounts/{account}/people/{person}/v1/accounts/{account}/persons, /v1/accounts/{account}/persons/{person}/v1/accounts/{account}/login_links/v1/accounts/{account}/rejectBank Account & External Account endpoints
/v1/accounts/{account}/bank_accounts — 4 breaking changes, including changes to both the root response schema (/anyOf[subschema #1: BankAccount]/...) and the error/source path/v1/accounts/{account}/bank_accounts/{id} — multiple breaking changes across both response and error source paths/v1/accounts/{account}/external_accounts/v1/accounts/{account}/external_accounts/{id}Apple Pay & Application Fee endpoints
/v1/apple_pay/domains and /v1/apple_pay/domains/{domain}/v1/application_fees, /v1/application_fees/{id}, /v1/application_fees/{id}/refund, /v1/application_fees/{id}/refunds/v1/application_fees/{fee}/refunds/{id}Two distinct schema paths are affected within each endpoint:
1. error/source/anyOf[subschema #1: BankAccount]/... — the error response object, meaning error payloads that include an expanded source bank account are also structurally changed.
2. /anyOf[subschema #1: BankAccount]/... — the primary success response object for endpoints that return BankAccount directly.
---
Who's Impacted
If you use Stripe's OpenAPI spec to generate typed API clients (e.g., via openapi-generator, kiota, or custom tooling), you will likely encounter compilation errors or silent type mismatches until models are regenerated from the updated spec at commit ed93b94259c5.
If you expand the customer object on BankAccount responses and then traverse into subscriptions[].latest_invoice.lines.data[].pricing, your deserialization logic may fail or return unexpected null values depending on how your client handles anyOf schema changes.
If your integration handles error responses that include an expanded source field of type BankAccount, the error.source schema has also changed — meaning error-handling code that inspects pricing-related fields on the source object is equally affected.
If you operate a Connect platform and call /v1/accounts/{account}/bank_accounts or /v1/accounts/{account}/external_accounts with customer expansion enabled, both the success and error response shapes for those endpoints have changed.
---
Action Checklist
ed93b94259c55782b8b04e01f4ffdaa2872e9bcd into your local toolchaininvoice.lines.data[*].pricing and audit the field access patternsBankAccount.customer is expanded and the resulting Customer object is traversed into subscriptionserror.source when the source is a BankAccount — the schema for this path has changedexpand[] parameters that include customer, subscriptions, latest_invoice, or linespricing anyOf subschemas on invoice line itemsInvoice objects — if your handler expands line items and reads pricing, it may be affected/v1/account_links and /v1/account_sessions) are not broken by the error response schema change/v1/accounts/{account}/capabilities and /v1/accounts/{account}/capabilities/{capability} endpoints explicitly, as they carry 6 breaking changes across the {account} resource group/v1/apple_pay/domains) still behave as expected, since these endpoints are included in the affected set/v1/application_fees/{id}/refunds, /v1/application_fees/{fee}/refunds/{id}) in your test environment/v1/accounts/{account}/people and /v1/accounts/{account}/persons endpoint responses if your integration reads person objects with expanded bank account data14a40f813acc → ed93b94259c5) in your internal changelog so downstream teams are aware of the boundarypricing anyOf structure---
Verification
14a40f813acc3a6a8f75bf80b2c06955f5d574d7 and head commit ed93b94259c55782b8b04e01f4ffdaa2872e9bcd: [https://github.com/stripe/openapi/compare/14a40f813acc3a6a8f75bf80b2c06955f5d574d7...ed93b94259c55782b8b04e01f4ffdaa2872e9bcd](https://github.com/stripe/openapi/compare/14a40f813acc3a6a8f75bf80b2c06955f5d574d7...ed93b94259c55782b8b04e01f4ffdaa2872e9bcd)Last verified: 2026-02-22T06:40:28Z
```