---
title: "Create External financial institution"
method: POST
path: "/accounts/{account_id}/financial-institutions/external"
tags: ["Financial Institutions"]
---

# Create External financial institution

`POST /accounts/{account_id}/financial-institutions/external`

## Request

- Base URL: `https://api.brale.xyz`
- URL: `https://api.brale.xyz/accounts/{account_id}/financial-institutions/external`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://auth.brale.xyz/oauth2/token` scopes: `financial-institutions:write`

Creates a record of an external financial institution that can be used to receive funds.

## Path parameters

- `account_id` string, required: ID of the resource

## Request body

- CreateExternalFinancialInstitutionRequest
  - `account_holder_type` 'individual' | 'business': Whether the bank account belongs to an individual or a business. Decides the ACH SEC code: PPD for an individual, CCD for a business.
  - `account_number` string, required
  - `account_type` string, required
  - `bank_address` USStreetAddress
    - `city` string, required
    - `country` string
    - `state` 'AL' | 'AK' | 'AS' | 'AZ' | 'AR' | 'CA' | 'CO' | 'CT' | 'DE' | 'DC' | 'FL' | 'GA' | 'GU' | 'HI' | 'ID' | 'IL' | 'IN' | 'IA' | 'KS' | 'KY' | 'LA' | 'ME' | 'MD' | 'MA' | 'MI' | 'MN' | 'MS' | 'MO' | 'MT' | 'NE' | 'NV' | 'NH' | 'NJ' | 'NM' | 'NY' | 'NC' | 'ND' | 'MP' | 'OH' | 'OK' | 'OR' | 'PA' | 'PR' | 'RI' | 'SC' | 'SD' | 'TN' | 'TX' | 'VI' | 'UT' | 'VT' | 'VA' | 'WA' | 'WV' | 'WI' | 'WY', required
    - `street_line_1` string, required
    - `street_line_2` string
    - `zip` string, required
  - `beneficiary_address` USStreetAddress
    - `city` string, required
    - `country` string
    - `state` 'AL' | 'AK' | 'AS' | 'AZ' | 'AR' | 'CA' | 'CO' | 'CT' | 'DE' | 'DC' | 'FL' | 'GA' | 'GU' | 'HI' | 'ID' | 'IL' | 'IN' | 'IA' | 'KS' | 'KY' | 'LA' | 'ME' | 'MD' | 'MA' | 'MI' | 'MN' | 'MS' | 'MO' | 'MT' | 'NE' | 'NV' | 'NH' | 'NJ' | 'NM' | 'NY' | 'NC' | 'ND' | 'MP' | 'OH' | 'OK' | 'OR' | 'PA' | 'PR' | 'RI' | 'SC' | 'SD' | 'TN' | 'TX' | 'VI' | 'UT' | 'VT' | 'VA' | 'WA' | 'WV' | 'WI' | 'WY', required
    - `street_line_1` string, required
    - `street_line_2` string
    - `zip` string, required
  - `date_of_birth` string: Date of birth of an individual recipient (format: YYYY-MM-DD). Cannot be sent when account_holder_type is business. Not supported on POST /accounts/{account_id}/financial-institutions/external.
  - `name` string
  - `owner` string, required
  - `ownership` 'self-owned' | 'customer-owned': Ownership type of the financial institution
  - `routing_number` string, required
  - `transfer_types` string[], required: Transfer types to support for this financial institution. When wire is included, bank_address and beneficiary_address are required. fednow_credit is available only to accounts it has been enabled for.

## Response `201`

OK

- FinancialInstitutionV2
  - `account_holder_type` 'individual' | 'business', nullable: Whether the bank account belongs to an individual or a business. Null when not provided.
  - `account_number` string, nullable: Masked account number showing only last 4 digits for security (format: ****1234). Full number never returned.
  - `account_type` 'checking' | 'savings', nullable
  - `bank_address` USStreetAddress
    - `city` string, required
    - `country` string
    - `state` 'AL' | 'AK' | 'AS' | 'AZ' | 'AR' | 'CA' | 'CO' | 'CT' | 'DE' | 'DC' | 'FL' | 'GA' | 'GU' | 'HI' | 'ID' | 'IL' | 'IN' | 'IA' | 'KS' | 'KY' | 'LA' | 'ME' | 'MD' | 'MA' | 'MI' | 'MN' | 'MS' | 'MO' | 'MT' | 'NE' | 'NV' | 'NH' | 'NJ' | 'NM' | 'NY' | 'NC' | 'ND' | 'MP' | 'OH' | 'OK' | 'OR' | 'PA' | 'PR' | 'RI' | 'SC' | 'SD' | 'TN' | 'TX' | 'VI' | 'UT' | 'VT' | 'VA' | 'WA' | 'WV' | 'WI' | 'WY', required
    - `street_line_1` string, required
    - `street_line_2` string
    - `zip` string, required
  - `beneficiary_address` USStreetAddress
    - `city` string, required
    - `country` string
    - `state` 'AL' | 'AK' | 'AS' | 'AZ' | 'AR' | 'CA' | 'CO' | 'CT' | 'DE' | 'DC' | 'FL' | 'GA' | 'GU' | 'HI' | 'ID' | 'IL' | 'IN' | 'IA' | 'KS' | 'KY' | 'LA' | 'ME' | 'MD' | 'MA' | 'MI' | 'MN' | 'MS' | 'MO' | 'MT' | 'NE' | 'NV' | 'NH' | 'NJ' | 'NM' | 'NY' | 'NC' | 'ND' | 'MP' | 'OH' | 'OK' | 'OR' | 'PA' | 'PR' | 'RI' | 'SC' | 'SD' | 'TN' | 'TX' | 'VI' | 'UT' | 'VT' | 'VA' | 'WA' | 'WV' | 'WI' | 'WY', required
    - `street_line_1` string, required
    - `street_line_2` string
    - `zip` string, required
  - `created` string, date-time, required: ISO-8601 timestamp that includes date and time
  - `date_of_birth` string, nullable: Masked date of birth of the recipient showing only the year (format: YYYY-**-**). Full date never returned. Null when not provided.
  - `id` string, required: ID of the resource
  - `last_updated` string, date_time: Last update timestamp
  - `name` string, nullable, required
  - `needs_update` boolean: Whether this FI needs Plaid reauthorization
  - `owner` string, nullable: Beneficiary name for wire transfers (maps from POST request owner field)
  - `ownership` 'self-owned' | 'customer-owned': Ownership type of the financial institution
  - `routingNumber` string, required
  - `status` 'active' | 'archived', required
  - `transfer_types` string[], nullable

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `422`: Unprocessable Entity
- `500`: Unknown
- `503`: Service Unavailable

## Changes

- **2026-11-04** `3378b8f911e0`: 2 info
  - added the new optional request property `date_of_birth`
  - added the optional property `date_of_birth` to the response with the `201` status
- **2026-10-20** `5648b7f3a014`: 2 info
  - added the new optional request property `account_holder_type`
  - added the optional property `account_holder_type` to the response with the `201` status
- **2026-10-14** `81b7a9dcca32`: 2 info
  - added the non-success response with the status `422`
  - added the non-success response with the status `503`
- **2026-07-13** `d934fd29acc3`: 6 breaking
  - media type `application/vnd.api+json` was changed to a more general media type `application/json` for the response status `201`
  - media type `application/vnd.api+json` was changed to a more general media type `application/json` for the response status `401`
  - media type `application/vnd.api+json` was changed to a more general media type `application/json` for the response status `403`
  - media type `application/vnd.api+json` was changed to a more general media type `application/json` for the response status `404`
  - …2 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/brale/apis/brale-api/changes/accounts/:account_id/financial-institutions/external/post.md)

---

[API](https://skmtc.dev/brale/apis/brale-api.md) - [All operations](https://skmtc.dev/brale/apis/brale-api/llms.txt) - [OpenAPI document](https://skmtc.dev/brale/apis/brale-api/revisions/3378b8f911e0?raw)
