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
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | null | No | Filter by the name associated with the external account. |
| bankName | string | null | No | Filter by the name of the external bank. |
| profileIds | array of int32 | null | No | List of profile IDs to filter results to specific user profiles. |
| agentIds | array of int32 | null | No | List of agent IDs to filter results to specific agents. |
| active | boolean | null | No | Filter by active status. true returns only active accounts; false returns only inactive accounts; omit or null returns all. |
| skip | int32 | Yes | Number of records to skip for pagination. Use 0 to start from the beginning. |
| take | int32 | Yes | Number 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.
| Field | Type | Description |
|---|---|---|
| id | int32 | Unique identifier of the external account record. |
| agentId | int32 | ID of the agent associated with this external account. |
| name | string | null | Name label associated with the external account. |
| status | string | null | Current status of the external account (e.g., Active, Inactive). |
| provider | string | null | The provider used to link this account (e.g., Finicity, Plaid). |
| last4 | string | null | Last 4 digits of the external account number. |
| bankName | string | null | Name of the external bank institution. |
| createdDate | string (date-time) | ISO 8601 timestamp when the external account was created. |
| updatedDate | string (date-time) | null | ISO 8601 timestamp of the last update to this record. |
| financialAccountId | string | null | The internal Netevia financial account ID linked to this external account. |
| verificationState | int32 | Verification state enum: 0 = Unverified, 1 = Pending, 2 = Verified, 3 = Failed. |
| verificationDate | string (date-time) | null | ISO 8601 timestamp when verification was completed. |
| verificationMessage | string | null | Additional message or detail about the verification status. |
| deletedAt | string (date-time) | null | ISO 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
| Code | When it happens |
|---|---|
| 400 | Missing required fields (skip or take) or invalid field types (e.g., non-integer in profileIds). |
| 401 | Token missing, expired, or invalid. |
| 403 | Caller does not have permission to access the requested profiles or agents. |
| 404 | No matching external accounts found for the given filters. |
| 500 | Internal server error. |
Common Mistakes
- Omitting
skipandtake— both are required integers; omitting them will result in a 400 error. - Passing an empty array
[]forprofileIdsoragentIdsinstead ofnullwhen you do not want to filter by those fields; usenullto indicate no filter. - Expecting a single object response — the endpoint always returns an array, even when only one account matches.
- Confusing
verificationStateinteger values —2means Verified, not1; 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
}'