# Update an account

Updates the details of an Account.

## Request

```curl
curl -X POST https://api.stripe.com/v2/core/accounts/{{ACCOUNT_ID}} \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-08-26.dahlia" \
  --json '{
    "defaults": {
        "profile": {
            "business_url": "http://accessible.stripe.com",
            "doing_business_as": "FurEver",
            "product_description": "Saas pet grooming platform at furever.dev using Connect embedded components"
        }
    },
    "identity": {
        "business_details": {
            "structure": "sole_proprietorship",
            "id_numbers": [
                {
                    "type": "us_ein",
                    "value": "000000000"
                }
            ]
        }
    },
    "include": [
        "defaults",
        "identity"
    ]
  }'
```

### Response

```json
{
  "id": "acct_1Nv0FGQ9RKHgCVdK",
  "object": "v2.core.account",
  "applied_configurations": [
    "customer",
    "merchant"
  ],
  "contact_email": "furever@example.com",
  "created": "2024-11-26T16:33:03.000Z",
  "dashboard": "full",
  "identity": {
    "business_details": {
      "id_numbers": [
        {
          "type": "us_ein"
        }
      ],
      "registered_name": "Furever",
      "structure": "sole_proprietorship"
    },
    "country": "us",
    "entity_type": "company"
  },
  "defaults": {
    "currency": "usd",
    "locales": [],
    "profile": {
      "business_url": "http://accessible.stripe.com",
      "doing_business_as": "FurEver",
      "product_description": "Saas pet grooming platform at furever.dev using Connect embedded components"
    },
    "responsibilities": {
      "fees_collector": "stripe",
      "losses_collector": "stripe",
      "requirements_collector": "stripe"
    }
  },
  "display_name": "Furever",
  "livemode": true,
  "metadata": {}
}
```

## Parameters

- `account_token` (string, optional)
  The account token generated by the account token API.

- [`configuration`](https://docs.stripe.com/api/v2/core/accounts/update.md?query=configuration) (object, optional)
  An Account Configuration which allows the Account to take on a key persona across Stripe products.

- `contact_email` (string, optional)
  The primary contact email address for the Account.

- `contact_phone` (string, optional)
  The default contact phone for the Account.

- `dashboard` (enum, optional)
  A value indicating the Stripe dashboard this Account has access to. This will depend on which configurations are enabled for this account.
Possible enum values:
  - `express`
    The Account has access to the Express hosted dashboard.

  - `full`
    The Account has access to the full Stripe hosted dashboard.

  - `none`
    The Account does not have access to any Stripe hosted dashboard.

- [`defaults`](https://docs.stripe.com/api/v2/core/accounts/update.md?query=defaults) (object, optional)
  Default values to be used on Account Configurations.

- `display_name` (string, optional)
  A descriptive name for the Account. This name will be surfaced in the Stripe Dashboard and on any invoices sent to the Account.

- [`identity`](https://docs.stripe.com/api/v2/core/accounts/update.md?query=identity) (object, optional)
  Information about the company, individual, and business represented by the Account.

- `include` (array of enums, optional)
  Additional fields to include in the response.
Possible enum values:
  - `configuration.customer`
    Include parameter to expose `configuration.customer` on an Account.

  - `configuration.merchant`
    Include parameter to expose `configuration.merchant` on an Account.

  - `configuration.recipient`
    Include parameter to expose `configuration.recipient` on an Account.

  - `defaults`
    Include parameter to expose `defaults` on an Account.

  - `future_requirements`
    Include parameter to expose `future_requirements` on an Account.

  - `identity`
    Include parameter to expose `identity` on an Account.

  - `requirements`
    Include parameter to expose `requirements` on an Account.

- `metadata` (map, optional)
  Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.

## Returns

Returns an [Account object](https://docs.stripe.com/api/v2/core/accounts/object.md).

## Error Codes

| HTTP status code | Code | Description |
| --- | --- | --- |
| 400 | account_capability_not_supported | Requested capability is not available. |
| 400 | account_configuration_not_supported | The requested configuration is not available for the account. |
| 400 | account_controller_express_dash_without_application_losses_or_fees | If `dashboard` is `express`, `fees_collector` must be `application` and `losses_collector` must be `application`. |
| 400 | account_controller_stripe_pricing_platform_liable | If `losses_collector` is `application`, `fees_collector` must also be `application`. |
| 400 | account_controller_unsupported_configuration | Connect integration combination is not supported when UA beta is disabled. |
| 400 | account_controller_unsupported_configuration_private_preview | Responsibility combinations is not supported in private preview. |
| 400 | account_country_unsupported_currency | Currency is not allowed for the account’s country. |
| 400 | account_not_yet_compatible_with_v2 | Account is not yet compatible with V2 APIs. |
| 400 | account_terms_of_service_not_accepted | Terms of service must be accepted before adding merchant configuration. |
| 400 | account_token_required | Account token required for platforms in mandated countries (e.g., France). |
| 400 | accounts_v2_access_blocked | Accounts v2 is not enabled for your merchant. |
| 400 | address_characters_invalid | Invalid characters are provided for address fields. |
| 400 | address_country_identity_country_mismatch | Address country doesn’t match identity country. |
| 400 | address_postal_code_invalid | Address postal code is invalid. |
| 400 | address_state_invalid | Address state is invalid. |
| 400 | address_town_invalid | Address town is invalid. |
| 400 | attach_payment_method_to_customer | Default payment method is added to the customer config before attaching it to the account using `/v1/payment_methods`. |
| 400 | bgn_bank_accounts_unsupported | Creating accounts with the BGN currency is no longer supported, as Bulgaria is now using the Euro as of 2026-01-01. |
| 400 | can_create_platform_owned_onboarding_accounts_required | Dormant accounts cannot create accounts where requirements collector is application (this is an account takeover prevention measure). |
| 400 | cannot_add_connect_due_to_incompatible_default_payout_method | A v2 account cannot have a Connect configuration applied because a default payout method is not supported in Connect. |
| 400 | cannot_use_validate_location_on_customer_create | Cannot set `automatic_indirect_tax.validate_location` when initially creating a customer configuration. |
| 400 | capability_cannot_be_unrequested_due_to_other_capability_requirement | Feature cannot be unrequested due to being a requirement for another feature. |
| 400 | capability_not_available_for_dashboard_type | Feature cannot be requested for the dashboard type. |
| 400 | capability_not_available_for_entity_type_in_country | Requested feature is not available for the entity type in your country. |
| 400 | capability_not_available_for_loss_collector | A v2 Account cannot have both the specified capability and Stripe-owned loss liability. |
| 400 | capability_not_available_in_country | Requested capability is not available in your country. |
| 400 | capability_not_available_in_platform_country | Feature cannot be requested given the platform’s country. |
| 400 | capability_not_available_without_other_capability | Requested feature is not available without also requesting a different feature. |
| 400 | capability_not_available_without_other_capability_in_country | Requested feature is not available without also requesting a different feature in your country. |
| 400 | configuration_cannot_be_deactivated | Configuration cannot be deactivated. |
| 400 | configuration_cannot_be_deactivated_due_to_other_capability_requirement | Configuration cannot be deactivated due to a dependency with another capability. |
| 400 | configuration_cannot_be_deactivated_due_to_other_configuration | Cannot deactivate a configuration due to another configuration depending on it. |
| 400 | configuration_cannot_be_updated_while_deactivated | Configuration cannot be updated while deactivated. |
| 400 | configuration_creation_invalid | Cannot create an account with an invalid configuration. |
| 400 | cross_border_connected_account_creation_not_allowed | Cross-border connected account creation is not allowed for this platform/account country combination. |
| 400 | custom_account_beta | Custom accounts cannot be created in certain countries. |
| 400 | customer_invalid_tax_location | Invalid customer tax location. |
| 400 | date_of_birth_age_restriction | Representative date of birth does not meet the age limit. |
| 400 | date_of_birth_invalid | Representative date of birth is provided an invalid date or a future date. |
| 400 | default_currency_immutable | Cannot change `defaults.currency` post account activation. |
| 400 | default_outbound_destination_invalid | Outbound Destination ID is invalid. |
| 400 | default_payment_method_invalid | Default payment method provided for a customer does not exist or is otherwise invalid. |
| 400 | document_invalid | Provided file tokens for documents are invalid, not found, deleted, or belong to a different account. |
| 400 | document_purpose_invalid | Provided file tokens for documents are of the wrong purpose. |
| 400 | duplicate_person_not_allowed | Duplicate person is added to an account. |
| 400 | email_domain_invalid_for_recipient | Email contains unsupported domain. |
| 400 | email_invalid | Incorrect email is provided. |
| 400 | entity_type_not_supported_in_country | The `identity.entity_type` value is not supported in a given `identity.country`. |
| 400 | high_risk_activities_none_cant_be_combined_with_other_options | NONE is combined with another value in the HighRiskActivities list. |
| 400 | id_number_invalid | Provided ID number is of the wrong format for the given type. |
| 400 | identity_country_required | The `identity.country` value is required but not provided. |
| 400 | immutable_identity_param | Identity param has been made immutable due to the state of the account. |
| 400 | incompatible_default_payout_method | A `defaults.payout_methods` value is not supported as a default payout method in Connect. |
| 400 | incorrect_id_number_for_country | Incorrect ID number is provided for a country. |
| 400 | incorrect_token_wrong_type | The incorrect token type is provided . |
| 400 | invalid_id_number_for_structure | ID number is provided that is not permitted for the Identity’s entity type and business structure. |
| 400 | invalid_id_number_registrar | The `identity.business_details.id_numbers.registrar` value is an invalid DE registrar. |
| 400 | invalid_konbini_payments_support_hours | Konbini Payments Support Hours is Invalid. |
| 400 | invalid_konbini_payments_support_phone_number | Konbini Payments Support Phone Number is Invalid. |
| 400 | invalid_timezone | Timezone provided in account defaults is invalid. |
| 400 | ip_address_invalid | Invalid IP address is provided. |
| 400 | mcc_invalid | MCC is invalid for `configuration.merchant.mcc`. |
| 400 | non_connect_platform_accounts_v2_access_blocked | Needs to use the newer API version or onboard to Connect. |
| 400 | non_jp_kana_kanji_address | Kana Kanji script addresses must have JP country. |
| 400 | param_alongside_account_token | Parameter cannot be passed alongside account_token. |
| 400 | payout_method_incompatible_type | A v1 External Account ID was passed as a `defaults.payout_methods` value, which is not supported in Accounts v2. |
| 400 | person_percent_ownership_invalid | Error returned when relationship.owner is set to true but the ownership percentage is set to 0%. |
| 400 | phone_invalid | Phone number is invalid. |
| 400 | platform_registration_required | The direct merchant has not signed up for Connect and cannot create connected accounts. |
| 400 | postal_code_required_for_jp_address | Postal code is required for Japanese addresses. |
| 400 | purpose_of_funds_description_must_be_empty_for_non_other_purpose_of_funds | PurposeOfFundsDescription is not empty while PurposeOfFunds is not OTHER. |
| 400 | registration_date_invalid | Registration date must be in the past. |
| 400 | script_characters_invalid | Provided script characters are invalid for the script. |
| 400 | shipping_address_required | Shipping address is required within the shipping hash. |
| 400 | shipping_name_required | Shipping name is required within the shipping hash. |
| 400 | statement_descriptor_invalid | Statement descriptor is invalid. |
| 400 | structure_incompatible_for_entity_type_country | The `business_details.structure` value is not valid for `identity.country` and `identity.entity_type`. |
| 400 | test_clock_disallowed_on_live_mode | Cannot set a test clock on a livemode customer. |
| 400 | test_clock_invalid | Test clock does not exist or is otherwise invalid. |
| 400 | token_already_used | The token is re-used with a different idempotency key. |
| 400 | token_expired | Token has expired. |
| 400 | tos_acceptance_on_behalf_not_allowed | TOS cannot be accepted on behalf of accounts when requirement collection is `stripe`. |
| 400 | total_person_ownership_exceeded | Total ownership percentages of all Persons on the account exceeds 100%. |
| 400 | unsupported_field_for_configs | Cannot set responsibilities on the current configurations. |
| 400 | unsupported_identity_field_for_configs | Cannot set identity fields when the Account is only configured as a customer. |
| 400 | unsupported_postal_code | Address is in an unsupported postal code. |
| 400 | unsupported_state | Address is in an unsupported state. |
| 400 | url_invalid | URL is invalid. |
| 400 | v1_account_instead_of_v2_account | V1 Account ID cannot be used in V2 Account APIs. |
| 400 | v1_customer_instead_of_v2_account | V1 Customer ID cannot be used in V2 Account APIs. |
| 400 | v1_token_invalid_in_v2 | A v1 token ID is passed in v2 APIs. |
| 403 | invalid_account_token | Invalid account token. |
| 404 | not_found | The resource wasn’t found. |
| 409 | idempotency_error | An idempotent retry occurred with different request parameters. |
| 429 | account_rate_limit_exceeded | Account cannot exceed a configured concurrency rate limit on updates. |
