# `PaperTiger.Resources.BankAccount`
[🔗](https://github.com/EnaiaInc/paper_tiger/blob/v1.2.2/lib/paper_tiger/resources/bank_account.ex#L1)

Handles BankAccount resource endpoints.

## Endpoints

- POST   /v1/customers/:customer_id/bank_accounts      - Create bank account
- GET    /v1/customers/:customer_id/bank_accounts/:id  - Retrieve bank account
- POST   /v1/customers/:customer_id/bank_accounts/:id  - Update bank account
- DELETE /v1/customers/:customer_id/bank_accounts/:id  - Delete bank account
- GET    /v1/customers/:customer_id/bank_accounts      - List bank accounts

## BankAccount Object

    %{
      id: "ba_...",
      object: "bank_account",
      created: 1234567890,
      customer: "cus_...",
      account_holder_name: "John Doe",
      account_holder_type: "individual",
      bank_name: "Chase Bank",
      country: "US",
      currency: "usd",
      fingerprint: "abcdef1234567890",
      last4: "6789",
      routing_number: "110000000",
      status: "verified",
      metadata: %{},
      # ... other fields
    }

# `create`

```elixir
@spec create(Plug.Conn.t()) :: Plug.Conn.t()
```

Creates a new bank account.

## Required Parameters

- customer - Customer ID this bank account belongs to
- routing_number - Bank routing number
- account_number - Bank account number

## Optional Parameters

- account_holder_name - Name of account holder
- account_holder_type - Type of account holder ("individual" or "company")
- bank_name - Name of the bank
- country - Country code (default: "US")
- currency - Currency code (default: "usd")
- metadata - Key-value metadata

# `delete`

```elixir
@spec delete(Plug.Conn.t(), String.t()) :: Plug.Conn.t()
```

Deletes a bank account.

Returns a deletion confirmation object.

# `list`

```elixir
@spec list(Plug.Conn.t()) :: Plug.Conn.t()
```

Lists all bank accounts for a customer with pagination.

## Parameters

- limit - Number of items (default: 10, max: 100)
- starting_after - Cursor for pagination
- ending_before - Reverse cursor

# `retrieve`

```elixir
@spec retrieve(Plug.Conn.t(), String.t()) :: Plug.Conn.t()
```

Retrieves a bank account by ID.

# `update`

```elixir
@spec update(Plug.Conn.t(), String.t()) :: Plug.Conn.t()
```

Updates a bank account.

## Updatable Fields

- account_holder_name
- account_holder_type
- metadata

---

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