Identity API

Bank Accounts

Operations for managing bank accounts

Retrieve bank account

Returns a single bank account by ID. The number field contains the full account number — use this endpoint when you need the complete value for payment processing or verification. For reconciliation use cases where only the last four digits are sufficient, prefer GET /v2/bank-accounts which returns all accounts with numbers masked to ****<last4>.

Returns 404 if the bank account does not exist or is not visible to the authenticated customer. A 403 is returned only when the caller’s token lacks the required scope; cross-customer access returns 404, not 403.

get

Path Parameters

bankAccountIdstring(uuid)required

The unique identifier for the bank account

Example:550e8400-e29b-41d4-a716-446655440000

Response

application/json

Bank account retrieved successfully.

BankAccountFullResponse

Bank account resource returned by the single-resource GET endpoint. The number field contains the full account number. In all other endpoints number is masked to ****<last4>.

idstring(uuid)requiredread-only

The unique identifier for the bank account.

Example:550e8400-e29b-41d4-a716-446655440000

typestringrequired

The type of bank account

Allowed values:SAVINGSCHECKING

Example:CHECKING

holderNamestringrequired

Name of the account holder.

Example:Jane Doe

numberstringrequiredread-only

Full bank account number.

Example:1234567890

routingNumberstringrequiredread-only

Bank routing number.

Example:021000021

bankNamestringrequired

Name of the bank.

Example:Chase Bank

nicknamestring

Optional nickname for the bank account.

Example:Main

primaryAccountbooleanrequired

Indicates if this is the primary bank account.

Example:true

createdAtstring(date-time)requiredread-only

RFC3339 UTC timestamp when the bank account was created.

Example:2024-01-15T10:30:00Z

updatedAtstring | null(date-time)read-only

RFC3339 UTC timestamp when the bank account was last updated.

Example:2024-01-15T14:45:00Z

get/v2/bank-accounts/{bankAccountId}
 
application/json

Delete bank account

Permanently deletes a bank account. Returns 404 if the bank account does not exist or is not accessible to the caller.

delete

Path Parameters

bankAccountIdstring(uuid)required

The unique identifier for the bank account

Example:550e8400-e29b-41d4-a716-446655440000

Response

Bank account deleted successfully

delete/v2/bank-accounts/{bankAccountId}
 

Update bank account

Updates an existing bank account scoped to the authenticated customer. Returns the updated record with the account number masked.

put

Path Parameters

bankAccountIdstring(uuid)required

The unique identifier for the bank account

Example:550e8400-e29b-41d4-a716-446655440000

Body

application/json

UpdateBankAccountRequest

typestringrequired

The type of bank account

Allowed values:SAVINGSCHECKING

Example:CHECKING

holderNamestringrequired

Name of the account holder

Example:Jane Doe

numberstringrequired

Bank account number (4-17 digits)

Match pattern:^\d{4,17}$

>= 4 characters<= 17 characters

Example:9876543210

routingNumberstringrequired

Bank routing number (exactly 9 digits)

Match pattern:^\d{9}$

>= 9 characters<= 9 characters

Example:021000021

bankNamestringrequired

Name of the bank

Example:Wells Fargo

nicknamestring

Optional nickname for the bank account

Example:Secondary

primaryAccountboolean | null

Whether this should become the owner’s primary bank account. Setting true demotes any existing primary for the same owner. An existing primary account cannot be demoted directly by omitting or setting this to false — set another account as primary instead. null is treated the same as omitted.

Default:false

Example:false

Response

application/json

Bank account updated successfully

BankAccountResponse

idstring(uuid)read-only

The unique identifier for the bank account

Example:550e8400-e29b-41d4-a716-446655440000

typestring

The type of bank account

Allowed values:SAVINGSCHECKING

Example:CHECKING

holderNamestring

Name of the account holder

Example:Jane Doe

numberstringread-only

Masked bank account number (last 4 digits visible)

Example:****7890

routingNumberstringread-only

Bank routing number

Example:021000021

bankNamestring

Name of the bank

Example:Chase Bank

nicknamestring

Optional nickname for the bank account

Example:Main

primaryAccountboolean

Indicates if this is the primary bank account

Example:true

createdAtstring(date-time)read-only

Timestamp when the bank account was created

Example:2024-01-15T10:30:00Z

updatedAtstring | null(date-time)read-only

Timestamp when the bank account was last updated

Example:2024-01-15T14:45:00Z

put/v2/bank-accounts/{bankAccountId}

Body

{ "type": "CHECKING", "holderName": "Jane Doe", "number": "9876543210", "routingNumber": "021000021", "bankName": "Wells Fargo" }
 
application/json

List bank accounts for the authenticated customer

Returns every bank account (person-owned or firm-owned) visible to the authenticated customer, paginated by opaque continuation token. Use this endpoint to reconcile bank accounts across all producers in a customer’s account without iterating known producer IDs. Account numbers are masked to ****; the unmasked value is reachable only via GET /v2/bank-accounts/{id} behind an elevated scope.

get

Query Parameters

page_tokenstring

Opaque continuation token returned by the previous response’s page.nextToken. Omit on the first request. Format is server-controlled and may change without an API version bump.

page_sizeinteger(int32)

Requested number of items in the response. Defaults to 25 when omitted; values outside [1, 250] are rejected with 400 (not clamped). The actual size returned is reflected in page.size and may be smaller (last page or empty result).

Default:25

>= 1<= 250

updated_sincestring(date-time)

RFC3339 UTC timestamp (e.g. 2026-05-21T12:00:00Z). When supplied, filters to bank accounts whose underlying record was modified at or after this instant.

Example:2026-05-01T00:00:00Z

Response

application/json

A page of bank accounts visible to the authenticated customer.

itemsarray[object]required

Per-row shape returned by V2 bank-account list endpoints. Carries owner context (personId or firmId, plus the producer NPN where known) for reconciliation use cases. The account number is always masked here; the unmasked value is reachable only via GET /v2/bank-accounts/{id} behind an elevated scope.

Show Child Parameters
pageobjectrequired

Page metadata for a token-based list response.

Show Child Parameters
get/v2/bank-accounts
 
application/json