---
title: "Create Internal Account"
method: POST
path: "/byob/internal_accounts"
---

# Create Internal Account

`POST /byob/internal_accounts`

This endpoint enables you to create a new internal account, which can represent a bank account or a wallet. Internal Accounts can be used to originate payment orders and receive inbound payments. Please note that if you are bringing your own bank, this endpoint may not be supported for your bank.

## Request body

- object
  - `connection_id` string, required — The UUID of the `Connection` this account should be associated with. If you only have 1 connection, you do not need to supply this field.
  - `name` string — The name of the account. Only required for bring your own bank integrations.
  - `currency` string, required — Follow ISO 4217 currency codes
  - `metadata` string, json — Set of key-value pairs that will be attached to the object and can be used to store additional data.
  - `external_id` string — An optional user-defined 180 character unique identifier
  - `party_address` object — The address associated with the owner or null.
    - `line1` string, required
    - `line2` string
    - `locality` string, required — Locality or City. Use the full city name rather than an abbreviation (e.g. San Francisco).
    - `region` string, required — Region or State. This field is free-form; for US states, we recommend a two-letter code (e.g. CA). Full state names are also accepted.
    - `postal_code` string, required — The postal code of the address.
    - `country` string, required — Country code conforms to [ISO 3166-1 alpha-2]
  - `legal_entity_id` string — The Legal Entity associated to this account. Not required for bring your own bank integrations.
  - `debitable` boolean, nullable — Whether this account can receive ACH debits. Defaults to `false` and is only configurable on creation. Please reach out to your customer success manager if you are interested in activating this functionality.
  - `party_name` string — The legal name of the entity which owns the account.
  - `parent_account_id` string — The UUID of the parent `InternalAccount` this account should be a child of. This field should only be set if you are creating balance-holding virtual accounts at your bank. **Currently not available in sandbox.**
  - `counterparty_id` string — The UUID of the `Counterparty` that this account refers to. This field should only be set for nested internal accounts that have a `parent_account_id` specified.
  - `account_capabilities` object[] — An array of objects containing payment originator identifiers tied to the payment type and direction for the account.
    - `direction` '"debit"' | '"credit"' — The direction of the capability
    - `identifier` string — A unique reference assigned by your bank for tracking and recognizing payment files. It is important this is formatted exactly how the bank assigned it.
    - `payment_type` string — Select type from the list at [Payment Orders](https://docs.moderntreasury.com/platform/reference/payment-order-object)
  - `vendor_attributes` string, json — Vendor specific attributes. Required for a limited number of banks.

## Response `201`

201

- object
  - `id` string
  - `object` string
  - `live_mode` boolean
  - `account_type` unknown
  - `party_name` string
  - `party_type` unknown
  - `party_address` object
    - `id` string
    - `object` string
    - `live_mode` boolean
    - `line1` string
    - `line2` string
    - `locality` string
    - `region` string
    - `postal_code` string
    - `country` string
    - `created_at` string
    - `updated_at` string
  - `account_details` object[]
    - `id` string
    - `object` string
    - `live_mode` boolean
    - `account_number_safe` string
    - `account_number_type` string
    - `discarded_at` unknown
    - `created_at` string
    - `updated_at` string
  - `routing_details` object[]
    - `id` string
    - `object` string
    - `live_mode` boolean
    - `payment_type` unknown
    - `routing_number` string
    - `routing_number_type` string
    - `bank_name` string
    - `bank_address` object
      - `id` string
      - `object` string
      - `live_mode` boolean
      - `line1` string
      - `line2` unknown
      - `locality` string
      - `region` string
      - `postal_code` string
      - `country` string
      - `created_at` string
      - `updated_at` string
    - `discarded_at` unknown
    - `created_at` string
    - `updated_at` string
  - `name` string
  - `metadata` object
  - `connection` object
    - `id` string
    - `object` string
    - `live_mode` boolean
    - `vendor_id` string
    - `vendor_name` string
    - `vendor_customer_id` unknown
    - `discarded_at` unknown
    - `created_at` string
    - `updated_at` string
  - `currency` string
  - `parent_account_id` string
  - `counterparty_id` string
  - `created_at` string
  - `updated_at` string
  - `external_id` string, nullable
  - `debitable` boolean, nullable

---

[API](https://skmtc.net/modern-treasury/apis/modern-treasury-api.md) · [All operations](https://skmtc.net/modern-treasury/apis/modern-treasury-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/modern-treasury/modern-treasury-api/versions/ed0431a2dcd0/schema)
