Stripe: Update a bank account — accounts post Accounts Account External Accounts Id
Stripe accounts.postAccountsAccountExternalAccountsId: arguments, response, policy and SDK examples.
← Accounts operations · Get started
Operation stripe.postaccountsaccountexternalaccountsid
Provider route: POST /v1/accounts/{account}/external_accounts/{id}. Alter supplies the connection’s credentials and routing.
Call through Alter
Section titled “Call through Alter”Install @alter-ai/sdk @alter-ai/stripe with npm, or alter-sdk-stripe with pip. Supply your connected customer’s grant ID and the arguments described below.
import { App } from "@alter-ai/sdk";import { StripeIntegration } from "@alter-ai/stripe";
async function execute(input: Parameters<StripeIntegration["accounts"]["postAccountsAccountExternalAccountsId"]>[0]) { const app = new App({ apiKey: process.env.ALTER_API_KEY! }); try { const provider = new StripeIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! }); const call = await provider.accounts.postAccountsAccountExternalAccountsId(input); const result = await call.wait(); return result.bodyJson(); } finally { await app.close(); }}import osfrom alter_sdk import Appfrom alter_sdk_stripe import StripeIntegration
async def execute(arguments): async with App(api_key=os.environ["ALTER_API_KEY"]) as app: provider = StripeIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]}) call = await provider.accounts.post_accounts_account_external_accounts_id(arguments) result = await call.wait() return result.body_json()| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Additional keys: not allowed |
path | object | Required within parent | Additional keys: not allowed |
path.account | string | Required within parent | Maximum length: 5000 |
path.id | string | Required within parent | |
headers | object | Optional | Additional keys: not allowed |
headers.Idempotency-Key | string | Optional | Minimum length: 1 Maximum length: 255 |
body | Model | Optional | Expand Update a bank account — external Accounts post External Accounts Id — request body — body |
Referenced models: Update a bank account — external Accounts post External Accounts Id — request body — body
Response
Section titled “Response”Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | Model | Root | Expand Update a bank account — external Accounts post External Accounts Id — response body |
Referenced models: Update a bank account — external Accounts post External Accounts Id — response body
Schemas
Section titled “Schemas”703 more schemas are linked from the tables above, on the schema pages.
Update a bank account — external Accounts post External Accounts Id — response body
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | JSON | Root | |
$ (anyOf 1) | Model | Alternative | Expand Retrieve a bank account — response body |
$ (anyOf 2) | Model | Alternative | Expand Retrieve a card — customers get Customers Customer Cards Id — response body |
Referenced models: Retrieve a bank account — response body, Retrieve a card — customers get Customers Customer Cards Id — response body
Update a bank account — external Accounts post External Accounts Id — request body — body
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Additional keys: not allowed |
account_holder_name | string | Optional | The name of the person or business that owns the bank account. Maximum length: 5000 |
account_holder_type | string | Optional | The type of entity that holds the account. This can be either `individual` or `company`. One of: , company, individual Maximum length: 5000 |
account_type | string | Optional | The bank account type. This can only be `checking` or `savings` in most countries. In Japan, this can only be `futsu` or `toza`. One of: checking, futsu, savings, toza Maximum length: 5000 |
address_city | string | Optional | City/District/Suburb/Town/Village. Maximum length: 5000 |
address_country | string | Optional | Billing address country, if provided when creating card. Maximum length: 5000 |
address_line1 | string | Optional | Address line 1 (Street address/PO Box/Company name). Maximum length: 5000 |
address_line2 | string | Optional | Address line 2 (Apartment/Suite/Unit/Building). Maximum length: 5000 |
address_state | string | Optional | State/County/Province/Region. Maximum length: 5000 |
address_zip | string | Optional | ZIP or postal code. Maximum length: 5000 |
default_for_currency | boolean | Optional | When set to true, this becomes the default external account for its currency. |
documents | object | Optional | Documents that may be submitted to satisfy various informational requests. |
documents.bank_account_ownership_verification | object | Optional | |
documents.bank_account_ownership_verification.files | array | Optional | |
documents.bank_account_ownership_verification.files[] | string | Each item | Maximum length: 500 |
exp_month | string | Optional | Two digit number representing the card’s expiration month. Maximum length: 5000 |
exp_year | string | Optional | Four digit number representing the card’s expiration year. Maximum length: 5000 |
expand | array | Optional | Specifies which fields in the response should be expanded. |
expand[] | string | Each item | Maximum length: 5000 |
metadata | JSON | Optional | Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`. |
metadata (anyOf 1) | object | Alternative | Additional keys: see wildcard field |
metadata (anyOf 1).* | string | Additional keys | |
metadata (anyOf 2) | string | Alternative | One of: |
name | string | Optional | Cardholder name. Maximum length: 5000 |
Delete a customer — response body
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
deleted | boolean | Required within parent | Always true for a deleted object Known values: True |
id | string | Required within parent | Unique identifier for the object. Maximum length: 5000 |
object | string | Required within parent | String representing the object's type. Objects of the same type share the same value. Known values: customer |
Retrieve a bank account — response body — requirements value currently due, errors, past due, pending verification
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
currently_due | JSON | Optional | |
currently_due (anyOf 1) | array | Alternative | Fields that need to be resolved to keep the external account enabled. If not resolved by `current_deadline`, these fields will appear in `past_due` as well, and the account is disabled. |
currently_due (anyOf 1)[] | string | Each item | Maximum length: 5000 |
currently_due (anyOf 2) | null | Alternative | |
errors | JSON | Optional | |
errors (anyOf 1) | array | Alternative | Fields that are `currently_due` and need to be collected again because validation or verification failed. |
errors (anyOf 1)[] | Model | Each item | Expand Update an Account Capability — response body — requirements errors item |
errors (anyOf 2) | null | Alternative | |
past_due | JSON | Optional | |
past_due (anyOf 1) | array | Alternative | Fields that haven't been resolved by `current_deadline`. These fields need to be resolved to enable the external account. |
past_due (anyOf 1)[] | string | Each item | Maximum length: 5000 |
past_due (anyOf 2) | null | Alternative | |
pending_verification | JSON | Optional | |
pending_verification (anyOf 1) | array | Alternative | Fields that are being reviewed, or might become required depending on the results of a review. If the review fails, these fields can move to `eventually_due`, `currently_due`, `past_due` or `alternatives`. Fields might appear in `eventually_due`, `currently_due`, `past_due` or `alternatives` and in `pending_verification` if one verification fails but another is still pending. |
pending_verification (anyOf 1)[] | string | Each item | Maximum length: 5000 |
pending_verification (anyOf 2) | null | Alternative |
Referenced models: Update an Account Capability — response body — requirements errors item
Retrieve a card — customers get Customers Customer Cards Id — response body — networks
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
preferred | JSON | Optional | |
preferred (anyOf 1) | string | Alternative | The preferred network for co-branded cards. Can be `cartes_bancaires`, `mastercard`, `visa` or `invalid_preference` if requested network is not valid for the card. Maximum length: 5000 |
preferred (anyOf 2) | null | Alternative |
Create an account — response body — groups The groups associated with the account payments pricing
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
payments_pricing | JSON | Optional | |
payments_pricing (anyOf 1) | string | Alternative | The group the account is in to determine their payments pricing, and null if the account is on customized pricing. [See the Platform pricing tool documentation](https://docs.stripe.com/connect/platform-pricing-tools) for details. Maximum length: 5000 |
payments_pricing (anyOf 2) | null | Alternative |
Create an account — response body — tos acceptance
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
date | JSON | Optional | |
date (anyOf 1) | JSON | Alternative | |
date (anyOf 1) (anyOf 1) | integer | Alternative | The Unix timestamp marking when the account representative accepted their service agreement Format: unix-time |
date (anyOf 1) (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
date (anyOf 2) | null | Alternative | |
ip | JSON | Optional | |
ip (anyOf 1) | string | Alternative | The IP address from which the account representative accepted their service agreement Maximum length: 5000 |
ip (anyOf 2) | null | Alternative | |
service_agreement | string | Optional | The user's service agreement type Maximum length: 5000 |
user_agent | JSON | Optional | |
user_agent (anyOf 1) | string | Alternative | The user agent of the browser from which the account representative accepted their service agreement Maximum length: 5000 |
user_agent (anyOf 2) | null | Alternative |
Create an account — response body — controller
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
fees | Model | Optional | Expand Create an account — response body — controller fees |
is_controller | boolean | Optional | `true` if the Connect application retrieving the resource controls the account and can therefore exercise [platform controls](https://docs.stripe.com/connect/platform-controls-for-standard-accounts). Otherwise, this field is null. |
losses | Model | Optional | Expand Create an account — response body — controller losses |
requirement_collection | string | Optional | A value indicating responsibility for collecting requirements on this account. Only returned when the Connect application retrieving the resource controls the account. Known values: application, stripe |
stripe_dashboard | Model | Optional | Expand Create an account — response body — controller stripe dashboard |
type | string | Required within parent | The controller type. Can be `application`, if a Connect application controls the account, or `account`, if the account controls itself. Known values: account, application |
Referenced models: Create an account — response body — controller fees, Create an account — response body — controller losses, Create an account — response body — controller stripe dashboard
Policy, approvals and errors
Section titled “Policy, approvals and errors”SDK function policy ID: stripe.postaccountsaccountexternalaccountsid. Catalog operation: PostAccountsAccountExternalAccountsId. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.
Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.
Pinned headers: {"Stripe-Version": "2026-09-30.endive"}