> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fernhq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# External Bank Account

> Learn how to create external bank accounts for your customers to enable fiat payments

<Info>
  **Prerequisites**: Before creating external bank accounts, ensure you have:

  * A verified Fern developer account with API key configured
  * An existing customer account with appropriate KYC verification
  * Valid bank account details from your customer
</Info>

## Overview

External bank accounts allow your customers to receive fiat payments directly to their existing bank accounts. This endpoint creates a payment account linked to an external bank account that your customer owns, supporting various payment methods including ACH, Wire transfers, SEPA, and many regional payment rails.

## Account Types

Fern supports external bank accounts for different use cases:

**1. Personal Bank Accounts**: Individual customer accounts (checking, savings)

**2. Business Bank Accounts**: Corporate accounts with business verification

**3. Multi-Currency Support**: Bank accounts in various supported currencies (USD, EUR, GBP, etc.)

<Info>
  The API flow remains consistent across all account types - only the request parameters and validation requirements change.

  For more details on supported countries and currencies, check the [Coverage: Countries & Currencies](/coverage/countries-currencies)
</Info>

## Account Setup Flow

<Steps>
  <Step title="Verify Customer">
    Ensure customer exists with required KYC/KYB verification
  </Step>

  <Step title="Collect Bank Details">
    Gather bank account information and owner details securely
  </Step>

  <Step title="Create Payment Account">
    Submit bank account details via API
  </Step>

  <Step title="Handle Verification">
    Complete additional verification if account status is PENDING
  </Step>
</Steps>

## Implementation Guide

### Step 1: Prerequisites

Before creating an external bank account, ensure you have:

1. **Customer Account** - Create a verified customer following the [Customer Creation Guide](/guides/create-and-verify-customers/api-verification)
2. **Bank Account Details** - Collect all required banking information from your customer
3. **Owner Information** - Gather complete beneficiary details including address

<Note>
  Bank account validation requirements vary by country and currency. Ensure you collect the appropriate banking identifiers for the target region.
</Note>

### Step 2: Create External Bank Account

Submit the bank account details to create a new payment account. The system will validate the bank information and create either an active account or return a form link for additional verification.

#### Request

```json theme={null}
POST /v1/payment-accounts
// Reference: CreatePaymentAccountRequestSchema
{
  "paymentAccountType": "EXTERNAL_BANK_ACCOUNT",
  "customerId": "customer_uuid",
  "nickname": "Primary Checking Account",
  "externalBankAccount": {
    "bankName": "Wells Fargo NA",
    "bankAccountCurrency": "USD",
    "bankAccountType": "CHECKING",
    "bankAccountPaymentMethod": "WIRE",
    "routingNumber": "111111111",
    "accountNumber": "1111111111",
    "bankAccountOwner": {
      "email": "johndoe@example.com",
      "type": "PERSONAL",
      "firstName": "John",
      "lastName": "Doe",
      "address": {
        "addressLine1": "111 Hope St",
        "city": "New York",
        "state": "NY",
        "postalCode": "10001",
        "country": "US"
      }
    },
    "bankAddress": {
      "addressLine1": "420 Montgomery Street",
      "city": "San Francisco",
      "state": "CA",
      "postalCode": "94104",
      "country": "US"
    }
  }
}
```

#### Response

**Active Account:**

```json theme={null}
// Reference: PaymentAccountResponseSchema
{
  "paymentAccountId": "11111111-2222-3333-4444-555555555555",
  "paymentAccountType": "EXTERNAL_BANK_ACCOUNT",
  "nickname": "Wells Fargo Checking", 
  "createdAt": "2025-10-30T12:00:00Z",
  "customerId": "ad995c64-28b7-47a3-a628-e21973597186",
  "paymentAccountStatus": "ACTIVE",
  "externalBankAccount": {
    // Reference: ExternalBankAccountResponseSchema
    "bankAccountType": "CHECKING",
    "bankAccountOwnerName": "John Doe",
    "bankAccountOwnerEmail": "johndoe@example.com", 
    "bankName": "Wells Fargo NA",
    "bankAccountCurrency": { "label": "USD" },
    "bankAccountMask": "***1111",
    "bankAccountPaymentMethod": "WIRE"
  },
  "isThirdParty": false
}
```

**Pending with Form Link:**

```json theme={null}
// Reference: CreatePaymentAccountResponseSchema  
{
  "paymentAccountId": "11111111-2222-3333-4444-555555555555",
  "paymentAccountType": "EXTERNAL_BANK_ACCOUNT",
  "nickname": "Wells Fargo Checking",
  "customerId": "ad995c64-28b7-47a3-a628-e21973597186", 
  "paymentAccountStatus": "PENDING",
  "isThirdParty": false,
  "bankAccountFormLink": "https://forms.fernhq.com/payment-account/11111111-80fa-465f-8b95-040a6c6b7470"
}
```

## Step 3: Handle Verification

When the account status is `PENDING`, direct your customer to complete additional verification:

<Steps>
  <Step title="Redirect to Form">
    Use the `bankAccountFormLink` to redirect customers to our hosted verification form
  </Step>

  <Step title="Monitor Status">
    Poll the [Get Payment Account API](/api-reference/payment-accounts/get) or use webhooks to monitor status changes
  </Step>

  <Step title="Handle Completion">
    Once verification is complete, the account status will change to `ACTIVE`
  </Step>
</Steps>

## Step 4: Use the Account

After the account is `ACTIVE`, you can:

* [Create transactions](/api-reference/transactions/create) to send funds to the account
* [Check account balance](/api-reference/payment-accounts/get-balance) (for Fern-managed accounts)
* [List all transactions](/api-reference/transactions/list) for the account

## Additional Information

#### Banking Identifiers

Different countries require specific banking identifiers. Include the appropriate fields based on your target region:

<AccordionGroup>
  <Accordion title="United States">
    ```json theme={null}
    {
      "routingNumber": "111000025",
      "accountNumber": "1234567890",
      "wireRoutingNumber": "026009593" // Optional, for wire transfers
    }
    ```
  </Accordion>

  <Accordion title="United Kingdom">
    ```json theme={null}
    {
      "sortCode": "123456",
      "accountNumber": "12345678",
      "iban": "GB29NWBK60161331926819" // Optional
    }
    ```
  </Accordion>

  <Accordion title="European Union (SEPA)">
    ```json theme={null}
    {
      "iban": "DE89370400440532013000",
      "bicSwift": "COBADEFFXXX"
    }
    ```
  </Accordion>

  <Accordion title="Canada">
    ```json theme={null}
    {
      "transitNumber": "12345",
      "institutionNumber": "111",
      "accountNumber": "1234567"
    }
    ```
  </Accordion>

  <Accordion title="Australia">
    ```json theme={null}
    {
      "bsbNumber": "123-456",
      "accountNumber": "123456789"
    }
    ```
  </Accordion>

  <Accordion title="Other Regions">
    **India:** `ifscCode`\
    **Mexico:** `clabeNumber`\
    **China:** `cnapsCode`\
    **Nigeria:** `nubanNumber`\
    **Brazil:** `pixCode`, `taxNumber`\
    **Hong Kong:** `clearingCode`
  </Accordion>
</AccordionGroup>

## Webhooks

Set up webhooks to receive real-time notifications about account status changes:

## Related Resources

<CardGroup cols={2}>
  <Card title="API Reference" icon="code" href="/api-reference/payment-accounts/create-payment-account">
    Complete payment accounts API documentation
  </Card>

  <Card title="Customer Creation" icon="user-plus" href="/guides/create-and-verify-customers">
    Guide for onboarding customers with verification
  </Card>

  <Card title="Transactions" icon="exchange-alt" href="/api-reference/transactions/create-transaction">
    Create and manage transactions to bank accounts
  </Card>

  <Card title="Supported Regions" icon="globe" href="/coverage/fiat-currency-support">
    Full list of supported countries and currencies
  </Card>
</CardGroup>

## Support

Use the [Support](/help-and-support) page to contact us.

<Note>
  Please include these details to help our team debug issues faster:

  * paymentAccountId
  * customerId
  * Error response (if any)
  * Target country/currency
</Note>
