Get External Bank Accounts
The GET /api/financialAccounts/external/v2 endpoint retrieves a list of all external bank accounts linked to the authenticated user's profile. Each account record includes masked account details, bank name, account type, balance information, and the provider used to connect the account (such as Finicity or Plaid). This endpoint enables partners to present users with a unified view of their external financial accounts within the platform.
Endpoint
GET /api/financialAccounts/external/v2
Authentication
Bearer token required. Obtain via:
POST https://api.banking.netevia.dev/api/auth/v2
Include in header: Authorization: Bearer {token}
Token lifetime: 10 minutes. Refresh via POST /api/auth/refresh.
When to use
Use this endpoint when displaying a summary or management view of all external accounts a user has connected through Finicity or Plaid. It is useful when building account selection UIs for ACH transfers, verifying which external accounts are active, or auditing the external accounts associated with a profile before initiating financial operations.
Response
200 OK
Returns an array of external financial account objects.
externalfinancialaccount object
| Field | Type | Description |
|---|---|---|
| typename | string | The type name classification of the external account object |
| externalBankAccountType | integer (enum) | Numeric type code for the external bank account (0 = standard external account) |
| id | string | Unique identifier for the external bank account record |
| name | string | Display name of the external bank account |
| externalBankAccountDetails | object | Nested object containing masked account and routing details (see below) |
| provider | string | The aggregation provider used to link the account (e.g., Finicity, Plaid) |
| createdAt | string (date-time) | ISO 8601 timestamp when the external account was linked |
| accountStatus | string | Current status of the external account (e.g., ACTIVE, INACTIVE) |
| updatedAt | string (date-time) | ISO 8601 timestamp of the last update to the external account record |
| bankName | string | Name of the external bank institution |
| owners | any | Account owner information, if available |
| balanceInfo | object | Nested object containing balance details (see below) |
externalBankAccountDetails object
| Field | Type | Description |
|---|---|---|
| last4 | string | Last 4 digits of the external account number |
| type | string | Account type at the external institution (e.g., checking, savings) |
| routingNumber | string | ABA routing number of the external bank |
| createdAt | string (date-time) | ISO 8601 timestamp when the account details record was created |
| updatedAt | string (date-time) | ISO 8601 timestamp when the account details record was last updated |
| accountNumber | string | Full account number (masked in responses for security) |
balanceInfo object
| Field | Type | Description |
|---|---|---|
| date | string (date-time) | Date and time of the last balance snapshot |
| value | number (double) | Balance amount at the time of the last snapshot |
| currency | string | Currency code for the balance (e.g., USD) |
[
{
"typename": "ExternalBankAccount",
"externalBankAccountType": 0,
"id": "ext-acct-0a1b2c3d-4e5f-6789-abcd-ef0123456789",
"name": "My Chase Checking",
"externalBankAccountDetails": {
"last4": "7890",
"type": "checking",
"routingNumber": "021000021",
"createdAt": "2025-03-10T14:22:00Z",
"updatedAt": "2025-11-01T09:05:00Z",
"accountNumber": "XXXXXXXXXX"
},
"provider": "Plaid",
"createdAt": "2025-03-10T14:22:00Z",
"accountStatus": "ACTIVE",
"updatedAt": "2025-11-01T09:05:00Z",
"bankName": "Chase Bank",
"owners": null,
"balanceInfo": {
"date": "2026-06-07T18:00:00Z",
"value": 4250.75,
"currency": "USD"
}
},
{
"typename": "ExternalBankAccount",
"externalBankAccountType": 0,
"id": "ext-acct-9f8e7d6c-5b4a-3210-fedc-ba9876543210",
"name": "Wells Fargo Savings",
"externalBankAccountDetails": {
"last4": "3456",
"type": "savings",
"routingNumber": "121042882",
"createdAt": "2025-07-18T10:11:00Z",
"updatedAt": "2026-01-20T16:45:00Z",
"accountNumber": "XXXXXXXXXX"
},
"provider": "Finicity",
"createdAt": "2025-07-18T10:11:00Z",
"accountStatus": "ACTIVE",
"updatedAt": "2026-01-20T16:45:00Z",
"bankName": "Wells Fargo",
"owners": null,
"balanceInfo": {
"date": "2026-06-07T18:00:00Z",
"value": 12800.00,
"currency": "USD"
}
}
]Error Codes
| Code | When it happens |
|---|---|
| 401 | Token missing, expired, or invalid |
| 403 | Insufficient permissions to access external accounts for this profile |
| 404 | No profile found for the authenticated user |
| 500 | Internal server error |
Common Mistakes
- Calling this endpoint without a valid Bearer token results in a 401 error; ensure the token has not expired (10-minute lifetime) and refresh via
POST /api/auth/refreshwhen needed. - External accounts are only available for personal customers who have connected accounts via Finicity or Plaid; calling this endpoint for a profile with no linked external accounts returns an empty array, not a 404.
- The
accountNumberfield inexternalBankAccountDetailsis masked in the response for security; do not rely on it for full account number retrieval. - The
balanceInfo.valuereflects the last cached balance snapshot, not a real-time balance; thebalanceInfo.datefield indicates when the snapshot was taken.
Related Endpoints
POST /api/financialAccounts/external— Link a new external bank account via Finicity or PlaidDELETE /api/financialAccounts/external/{id}— Remove a linked external bank accountGET /api/financialAccounts/v2— Retrieve the list of internal Netevia financial accountsPOST /api/transfers/ach— Initiate an ACH transfer to or from a linked external account
Example
curl -X GET https://api.banking.netevia.dev/api/financialAccounts/external/v2 \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json"