Retrieve a list of external accounts associated with specific users

Retrieve External Accounts Report

This endpoint retrieves a list of external financial accounts linked to users or agents within the Netevia banking system. It supports flexible filtering by profile, agent, bank name, account name, and active status. Pagination is built in via skip and take parameters to handle large datasets efficiently.

Endpoint

POST /Report/externalAccounts

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 you need to audit or display the external accounts (linked via Finicity or Plaid) that are associated with one or more user profiles or agents. It is particularly useful for compliance reporting, account status monitoring, and verifying which external accounts have completed underwriting verification. Partners can call this endpoint periodically to reconcile external account linkages and detect accounts that have been deactivated or failed verification.

Request Body

FieldTypeRequiredDescription
namestring | nullNoFilter by the name associated with the external account.
bankNamestring | nullNoFilter by the name of the external bank.
profileIdsarray of int32 | nullNoList of profile IDs to filter results to specific user profiles.
agentIdsarray of int32 | nullNoList of agent IDs to filter results to specific agents.
activeboolean | nullNoFilter by active status. true returns only active accounts; false returns only inactive accounts; omit or null returns all.
skipint32YesNumber of records to skip for pagination. Use 0 to start from the beginning.
takeint32YesNumber of records to return per page.
{
  "name": null,
  "bankName": "Chase",
  "profileIds": [1042, 1087],
  "agentIds": null,
  "active": true,
  "skip": 0,
  "take": 25
}

Response

200 OK

Returns an array of external account objects.

FieldTypeDescription
idint32Unique identifier of the external account record.
agentIdint32ID of the agent associated with this external account.
namestring | nullName label associated with the external account.
statusstring | nullCurrent status of the external account (e.g., Active, Inactive).
providerstring | nullThe provider used to link this account (e.g., Finicity, Plaid).
last4string | nullLast 4 digits of the external account number.
bankNamestring | nullName of the external bank institution.
createdDatestring (date-time)ISO 8601 timestamp when the external account was created.
updatedDatestring (date-time) | nullISO 8601 timestamp of the last update to this record.
financialAccountIdstring | nullThe internal Netevia financial account ID linked to this external account.
verificationStateint32Verification state enum: 0 = Unverified, 1 = Pending, 2 = Verified, 3 = Failed.
verificationDatestring (date-time) | nullISO 8601 timestamp when verification was completed.
verificationMessagestring | nullAdditional message or detail about the verification status.
deletedAtstring (date-time) | nullISO 8601 timestamp when the account was soft-deleted, if applicable.
[
  {
    "id": 3091,
    "agentId": 204,
    "name": "Business Checking",
    "status": "Active",
    "provider": "Plaid",
    "last4": "7823",
    "bankName": "Chase",
    "createdDate": "2024-03-15T10:22:30.000Z",
    "updatedDate": "2024-08-01T08:45:00.000Z",
    "financialAccountId": "fa_9a3b12cd-4e56-7f89-ab01-cd2345ef6789",
    "verificationState": 2,
    "verificationDate": "2024-03-16T14:00:00.000Z",
    "verificationMessage": "Micro-deposit verification successful.",
    "deletedAt": null
  },
  {
    "id": 3105,
    "agentId": 204,
    "name": "Savings Reserve",
    "status": "Active",
    "provider": "Finicity",
    "last4": "4411",
    "bankName": "Chase",
    "createdDate": "2024-05-20T09:10:00.000Z",
    "updatedDate": null,
    "financialAccountId": "fa_1c2d34ef-5678-90ab-cd12-ef3456789012",
    "verificationState": 1,
    "verificationDate": null,
    "verificationMessage": "Verification pending underwriting review.",
    "deletedAt": null
  }
]

Error Codes

CodeWhen it happens
400Missing required fields (skip or take) or invalid field types (e.g., non-integer in profileIds).
401Token missing, expired, or invalid.
403Caller does not have permission to access the requested profiles or agents.
404No matching external accounts found for the given filters.
500Internal server error.

Common Mistakes

  • Omitting skip and take — both are required integers; omitting them will result in a 400 error.
  • Passing an empty array [] for profileIds or agentIds instead of null when you do not want to filter by those fields; use null to indicate no filter.
  • Expecting a single object response — the endpoint always returns an array, even when only one account matches.
  • Confusing verificationState integer values — 2 means Verified, not 1; always map the enum before displaying to end users.
  • Using stale tokens — the Bearer token expires after 10 minutes; refresh before making this call in long-running workflows.

Related Endpoints

  • POST /api/auth/v2 — Obtain a Bearer token for authentication.
  • POST /api/auth/refresh — Refresh an expiring Bearer token.
  • POST /Report/financialAccounts — Retrieve a report of internal financial accounts.
  • POST /ExternalAccount/link — Link a new external account via Finicity or Plaid.

Example

curl -X POST https://api.banking.netevia.dev/Report/externalAccounts \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": null,
    "bankName": "Chase",
    "profileIds": [1042, 1087],
    "agentIds": null,
    "active": true,
    "skip": 0,
    "take": 25
  }'
Body Params
string | null
string | null
profileIds
array of int32s | null
profileIds
agentIds
array of int32s | null
agentIds
boolean | null
int32
int32
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
string
enum
Defaults to application/json

Generated from available request content types

Allowed:
Response

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
text/plain
application/json
text/json