# `Stripe.Services.AccountExternalAccountService`
[🔗](https://github.com/jeffhuen/tiger_stripe/blob/main/lib/stripe/services/account_external_account_service.ex#L2)

AccountExternalAccount API operations.

# `create`

```elixir
@spec create(Stripe.Client.t(), String.t(), map(), keyword()) ::
  {:ok, term()} | {:error, Stripe.Error.t()}
```

Create an external account

Create an external account for a given account.

# `delete`

```elixir
@spec delete(Stripe.Client.t(), String.t(), String.t(), map(), keyword()) ::
  {:ok, term()} | {:error, Stripe.Error.t()}
```

Delete an external account

Delete a specified external account for a given account.

# `list`

```elixir
@spec list(Stripe.Client.t(), String.t(), map(), keyword()) ::
  {:ok, term()} | {:error, Stripe.Error.t()}
```

List all external accounts

List external accounts for an account.

# `retrieve`

```elixir
@spec retrieve(Stripe.Client.t(), String.t(), String.t(), map(), keyword()) ::
  {:ok, term()} | {:error, Stripe.Error.t()}
```

Retrieve an external account

Retrieve a specified external account for a given account.

# `update`

```elixir
@spec update(Stripe.Client.t(), String.t(), String.t(), map(), keyword()) ::
  {:ok, term()} | {:error, Stripe.Error.t()}
```

Updates the metadata, account holder name, account holder type of a bank account belonging to
a connected account and optionally sets it as the default for its currency. Other bank account
details are not editable by design.

You can only update bank accounts when [account.controller.requirement_collection](https://docs.stripe.com/api/accounts/object#account_object-controller-requirement_collection) is `application`, which includes [Custom accounts](https://stripe.com/connect/custom-accounts).

You can re-enable a disabled bank account by performing an update call without providing any
arguments or changes.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
