Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://api.finicity.com
/microentry/v1/customers/{customerId}
Initiate the micro entries to customer’s account.
Two random micro amounts less than a dollar each will be deposited to provided customer’s account.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
application/json
MicroDepositInitiation
| Property | Type | Required |
|---|---|---|
| receiver | object | required |
| └ memo | string | optional |
| └ name | string | required |
| └ accountType | string | required |
| └ accountNumber | string | required |
| └ routingNumber | string | required |
| callbackUrl | string | optional |
| institutionLoginId | string | optional |
Micro entries were successfully initiated
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
The resource already exists
The service can’t accept more requests or is not available from the Test Drive.
POST /microentry/v1/customers/{customerId}
/microentry/v1/customers/{customerId}/accounts/{accountId}
Fetch the micro entries details.
customerId and accountId are the identifiers of the customer and account receiving the micro entries.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| accountId | path | optional | The account ID |
Micro entries were successfully retrieved
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /microentry/v1/customers/{customerId}/accounts/{accountId}
/microentry/v1/customers/{customerId}/accounts/{accountId}/amounts
Verify the micro entries as received by customer in customer’s account.
Customer needs to verify the micro amounts received in customer’s account. customerId and accountId are the identifiers of the customer and account receiving the micro entries.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| accountId | path | optional | The account ID |
application/json
MicroDepositVerification
| Property | Type | Required |
|---|---|---|
| amounts | array | required |
Micro entries were successfully verified
Micro entries verification failed. status field could be any except “Verified” and “Completed”.
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
POST /microentry/v1/customers/{customerId}/accounts/{accountId}/amounts
/aggregation/v1/customers/{customerId}/accounts
Get all accounts owned by the given customer.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| status | query | optional | A filter to fetch account in the given status |
|
| account_type | query | optional | string | A filter to fetch accounts for the given type. Currently supported types: “ava” |
The account list was successfully retrieved
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v1/customers/{customerId}/accounts
/aggregation/v1/customers/{customerId}/accounts
Refresh account and transaction data for all accounts associated with the given customerId with a connection to the institution.
Client apps are not permitted to automate calls to the Refresh services. Active accounts are automatically refreshed by Finicity once per day. Because many financial institutions only post transactions once per day, calling Refresh services repeatedly is usually a waste of resources and is not recommended.
Apps may call Refresh services for a specific customer when there is a specific business case for the need of data that is up to date as of the moment. Please discuss with your account manager and systems engineer for further clarification.
The recommended timeout setting for this request is 120 seconds in order to receive a response. However, you can terminate the connection after making the call the operation will still complete. You will have to pull the account records to check for an updated aggregation attempt date to know when the refresh is complete.
Note: This service is not available for all tiers of dynamic billing.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
The account list was successfully refreshed
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
POST /aggregation/v1/customers/{customerId}/accounts
/aggregation/v1/customers/{customerId}/accounts/{accountId}
Remove the given account from Finicity aggregation.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| accountId | path | optional | The account ID |
The customer account was successfully deleted
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
DELETE /aggregation/v1/customers/{customerId}/accounts/{accountId}
/aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}
Remove from Finicity aggregation the set of accounts matching the institution login ID.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| institutionLoginId | path | optional | The institution login ID |
The customer accounts were successfully deleted
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
DELETE /aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}
/aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}/accounts
Get all accounts associated with the given institution login. All accounts returned are accessible by a single set of credentials on a single institution.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| institutionLoginId | path | optional | The institution login ID |
The account list was successfully retrieved
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}/accounts
/aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}/accounts
Refresh account and transaction data for all accounts associated with a given institutionLoginId with a connection to the institution.
Client apps are not permitted to automate calls to the Refresh services. Active accounts are automatically refreshed by Finicity once per day. Because many financial institutions only post transactions once per day, calling Refresh repeatedly is usually a waste of resources and is not recommended.
Apps may call Refresh services for a specific customer when there is a specific business case for the need of data that is up to date as of the moment. Please discuss with your account manager and systems engineer for further clarification.
The recommended timeout setting for this request is 120 seconds in order to receive a response. However, you can terminate the connection after making the call the operation will still complete. You will have to pull the account records to check for an updated aggregation attempt date to know when the refresh is complete.
Note: This service is not available for all tiers of dynamic billing.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| institutionLoginId | path | optional | The institution login ID |
The account list was successfully refreshed
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
POST /aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}/accounts
/aggregation/v1/customers/{customerId}/institutions/{institutionId}/accounts
Get all active accounts owned by the given customer at the given institution.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| institutionId | path | optional | The institution ID |
The account list was successfully retrieved
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v1/customers/{customerId}/institutions/{institutionId}/accounts
/aggregation/v2/customers/{customerId}/accounts
Refresh account and transaction data for all accounts associated with the given customerId with a connection to the institution.
Client apps are not permitted to automate calls to the Refresh services. Active accounts are automatically refreshed by Finicity once per day.
Apps may call Refresh services for a specific customer when there is a specific business case for the need of data that is up to date as of the moment. Please discuss with your account manager and systems engineer for further clarification.
Note: This service will be used for dynamic billing tiers ASD, AFD and ATD.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
The account list was successfully refreshed
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
POST /aggregation/v2/customers/{customerId}/accounts
/aggregation/v2/customers/{customerId}/accounts/{accountId}
Get a customer account by ID.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| accountId | path | optional | The account ID |
The account was successfully retrieved
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v2/customers/{customerId}/accounts/{accountId}
/aggregation/v2/customers/{customerId}/institutionLogins/{institutionLoginId}/accounts
Refresh account and transaction data for all accounts associated with a given ‘institutionLoginId` with a connection to the institution. Client apps are not permitted to automate calls to the Refresh services. Active accounts are automatically refreshed by Finicity once per day.
Apps may call Refresh services for a specific customer when there is a specific business case for the need of data that is up to date as of the moment. Please discuss with your account manager and systems engineer for further clarification.
Note: This service will be used for dynamic billing tiers ASD, AFD and ATD.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| institutionLoginId | path | optional | The institution login ID |
The account list was successfully refreshed
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
POST /aggregation/v2/customers/{customerId}/institutionLogins/{institutionLoginId}/accounts
/aggregation/v1/customers/{customerId}/accounts/simple
This API is a lighter version of Get Customer Accounts, returning only basic information of all active customer accounts.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
The account list was successfully retrieved
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v1/customers/{customerId}/accounts/simple
/aggregation/v1/customers/{customerId}/accounts/{accountId}/simple
This API is a lighter version of Get Customer Accounts by ID, returning only basic information of a customer account.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| accountId | path | optional | The account ID |
The account was successfully retrieved
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v1/customers/{customerId}/accounts/{accountId}/simple
/aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}/accounts/simple
This API is a lighter version of Get Customer Accounts by Institution Login ID, returning only basic information of all active accounts owned by the given customer at the given institution login ID.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| institutionLoginId | path | optional | The institution login ID |
The account list was successfully retrieved
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}/accounts/simple
/aggregation/v1/customers/{customerId}/institutions/{institutionId}/accounts/simple
This API is a lighter version of Get Customer Accounts by Institution ID, returning only basic information of active accounts owned by the given customer at the given institution.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| institutionId | path | optional | The institution ID |
The account list was successfully retrieved
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v1/customers/{customerId}/institutions/{institutionId}/accounts/simple
/aggregation/v1/customers/{customerId}/applications/{applicationId}
If you have multiple applications for a single client, and you want to register their applications to access financial institutions using OAuth connections, then use this API to assign applications to an existing customer.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| applicationId | path | optional | The application ID |
The app was successfully assigned
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
PUT /aggregation/v1/customers/{customerId}/applications/{applicationId}
/aggregation/v1/partners/applications
Register a new application to access financial institutions using OAuth connections.
Supported regions:
application/json
Application
| Property | Type | Required |
|---|---|---|
| image | string | required |
| appUrl | string | required |
| appName | string | required |
| ownerCity | string | required |
| ownerName | string | required |
| ownerState | string | required |
| ownerCountry | string | required |
| appDescription | string | required |
| ownerPostalCode | string | required |
| ownerAddressLine1 | string | required |
| ownerAddressLine2 | string | required |
The app registration was successfully created
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
POST /aggregation/v1/partners/applications
/aggregation/v1/partners/applications/{preAppId}
Update a registered application.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| preAppId | path | optional | The application registration tracking ID |
application/json
Application
| Property | Type | Required |
|---|---|---|
| image | string | required |
| appUrl | string | required |
| appName | string | required |
| ownerCity | string | required |
| ownerName | string | required |
| ownerState | string | required |
| ownerCountry | string | required |
| appDescription | string | required |
| ownerPostalCode | string | required |
| ownerAddressLine1 | string | required |
| ownerAddressLine2 | string | required |
The app registration was updated
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
PUT /aggregation/v1/partners/applications/{preAppId}
/aggregation/v2/customers/{customerId}/institutionLogins/{institutionLoginId}/migration
The institutionLoginId parameter uses Finicity’s internal FI mapping to move accounts from the current FI legacy connection to the new OAuth FI connection.
This API returns a list of accounts for the given institution login ID.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| institutionLoginId | path | optional | The institution login ID |
The migration succeeded
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
PUT /aggregation/v2/customers/{customerId}/institutionLogins/{institutionLoginId}/migration
/aggregation/v2/partners/applications
Get the status of your application registration(s).
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| preAppId | query | optional | The application registration tracking ID |
|
| applicationId | query | optional | The application ID |
|
| status | query | optional | Look up app registration requests by status |
|
| appName | query | optional | Look up app registration requests by app name |
|
| submittedDate | query | optional | Look up app registration requests by the date they were submitted |
|
| modifiedDate | query | optional | Look up app registration requests by the date the request was updated. This can be used to determine when a request was updated to “A” or “R”. |
|
| page | query | optional | integer | Index of the page of results to return |
| pageSize | query | optional | integer | Maximum number of results per page |
The app registration statuses were returned
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v2/partners/applications
/aggregation/v1/customers/{customerId}/assets/{assetId}
Retrieve a binary file for the given asset ID.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| assetId | path | optional | The asset ID |
The asset was successfully downloaded
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v1/customers/{customerId}/assets/{assetId}
/aggregation/v2/partners/authentication
Send Partner ID and Partner Secret to the Partner Authentication service to obtain a token for accessing Finicity APIs.
Supported regions:
application/json
PartnerCredentials
| Property | Type | Required |
|---|---|---|
| partnerId | string | required |
| partnerSecret | string | required |
The access token was successfully created
The request was rejected
The request lacks valid authentication credentials. Check Partner ID, Partner Secret or Finicity-App-Key.
POST /aggregation/v2/partners/authentication
/aggregation/v2/partners/authentication
Change the Partner Secret used to authenticate this partner.
The secret does not expire, but can be changed by calling this API. A valid Partner Secret may contain upper and lowercase characters, numbers, and the characters !, @, #, $, %, &, *, _, -, +. It must include at least one number and at least one letter, and its length should be between 12 and 255 characters.
Supported regions:
application/json
PartnerCredentialsWithNewSecret
| Property | Type | Required |
|---|---|---|
| partnerId | string | required |
| partnerSecret | string | required |
| newPartnerSecret | string | optional |
The Partner Secret was successfully updated
The request was rejected
The request lacks valid authentication credentials. Check Partner ID, Partner Secret or Finicity-App-Key.
PUT /aggregation/v2/partners/authentication
/analytics/balance/v1/customer/{customerId}
Balance Analytics for Business analyzes bank balances over time to report metrics and identify behavior that may indicate risk.
Calculated metrics include:
Minimum/maximum/average account balances over the requested time
period and broken down by month
Daily ending balance of accounts for each day in the requested time
period
Propensity of the customer’s account balances to increase week over
week
This version of the API is intended for piloting and integration testing your application with the Balance Analytics product. It does not adhere to FCRA requirements, and should not be used for production/lending purposes. See Generate Balance Analytics - FCRA for the FCRA compliant version of this API.
A successful call to this API will generate analytics and store a report within Finicity. The report can be retrieved via Get Balance Analytics Report (operation: GetObbAnalyticsReport).
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| reference-number | query | optional | string | Partner-provided reference number to correlate reports. |
application/json
BalanceAndCashFlowAnalyticsReportConstraints
| Property | Type | Required |
|---|---|---|
| accountIds | array | optional |
| lengthOfReport | integer | optional |
Response given when balance analytics were generated successfully, providing the caller with a report ID which can be used to retrieve the report as JSON or a PDF.
A bad request was provided
Unauthorized request
Access forbidden
Resource not found
Resource conflict
POST /analytics/balance/v1/customer/{customerId}
/analytics/balance/v1/customer/{customerId}/fcra
Balance Analytics for Business analyzes bank balances over time to report metrics and identify behavior that may indicate risk.
Calculated metrics include:
Minimum/maximum/average account balances over the requested time
period and broken down by month
Daily ending balance of accounts for each day in the requested time
period
Propensity of the customer’s account balances to increase week over
week
This version of the API is intended for production use. It maintains and enforces all compliance with FCRA rules and requirements.
Note: this is a premium service, billable per every successful API call for non-testing customers.
A successful call to this API will generate analytics and store a report within Finicity. The report can be retrieved via Get Balance Analytics Report - FCRA (operation: GetObbAnalyticsReportFCRA).
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| reference-number | query | optional | string | Partner-provided reference number to correlate reports. |
application/json
BalanceAndCashFlowAnalyticsReportConstraints
| Property | Type | Required |
|---|---|---|
| accountIds | array | optional |
| lengthOfReport | integer | optional |
Response given when balance analytics (FCRA) were generated successfully, providing the caller with a report ID which can be used to retrieve the report as JSON or a PDF.
A bad request was provided
Unauthorized request
Access forbidden
Resource not found
Resource conflict
POST /analytics/balance/v1/customer/{customerId}/fcra
/analytics/data/v1/{obb_report_id}
Retrieve the report saved by Generate Balance Analytics, Generate Cash Flow Analytics, or Generate Payment History. Requires the report ID generated by the previous call.
Report data can either be retrieved as a JSON document or PDF file.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| obb_report_id | path | optional | string | Report ID generated and returned by OBB products |
OBB Analytics report data as JSON or PDF
Unauthorized request
Access forbidden
The resource doesn’t exist
GET /analytics/data/v1/{obb_report_id}
/analytics/data/v1/{obb_report_id}/fcra
Retrieve the report saved by Generate Balance Analytics - FCRA, Generate Cash Flow Analytics - FCRA, or Generate Payment History - FCRA. Requires the report ID generated by the previous call.
Report data can either be retrieved as a JSON document or PDF file.
Note: this is a premium service, billable per every successful API call for non-testing customers.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| obb_report_id | path | optional | string | Report ID generated and returned by OBB products |
| purpose | query | optional | string | 2-digit code from Permissible Purpose Codes, specifying the reason for retrieving this report. Required for retrieving some reports. |
OBB Analytics FCRA report data as JSON or PDF
Unauthorized request
Access forbidden
The resource doesn’t exist
GET /analytics/data/v1/{obb_report_id}/fcra
/decisioning/v2/customers/{customerId}/reports/balance-analytics/userTypes/{userType}
Generate a Balance Analytics Report for a given customer. This service retrieves up to two years of transaction history from connected accounts.
Balance Analytics analyzes bank balances over time to report metrics and identify behavior that may indicate risk.
Before calling this API, A consumer or business may need to be created for the given customer ID based on the user type (see Consumer/Business APIs).
If no account type of checking or savings is found, the service will return HTTP 400 Bad Request.
This is a premium service, billable per every successful API call for non-testing customers. A successful call to this API will generate analytics report which can be retrieved via Get Report by Customer or Get Report by Consumer.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| userType | path | optional | UserType indicates if the request is for a business or personal use case, Allowed values: business/personal. |
|
| callbackUrl | query | optional | string | A Report Listener URL to receive notifications. The webhook must respond to the Finicity API with a 2xx HTTP status code. |
application/json
AnalyticsReportConstraints
| Property | Type | Required |
|---|---|---|
| fromDate | integer | optional |
| accountIds | string | optional |
| reportCustomFields | array | optional |
| └ label | string | optional |
| └ shown | boolean | optional |
| └ value | string | optional |
| analyticsReportData | object | optional |
| └ forCraPurpose | boolean | required |
| └ timeIntervalTypes | array | optional |
| └ applicantIsPersonalGuarantor | boolean | optional |
The report is being generated. When finished, a notification will be sent to the specified callback URL (Report Listener Service) and the report can be fetched using Get Report APIs. If you don’t use a callback URL, Get Report returns a minimal report with the following status: ‘inProgress’. Repeat the call every 20 seconds until Get Report returns a different status.
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
POST /decisioning/v2/customers/{customerId}/reports/balance-analytics/userTypes/{userType}
/aggregation/v1/customers/{customerId}/accounts/{accountId}/statement
Retrieve the customer’s bank statements in PDF format. Up to 24 months of history is available depending on the financial institution. Since this is a premium service, charges incur per each successful statement retrieved.
For certified financial institutions, statements are available for the following account types:
Note: setting the timeout to 180 seconds is recommended to allow enough time for a response.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| accountId | path | optional | The account ID |
|
| index | query | optional | integer | Request statements from 1-24. By default, 1 is the most recent statement. Increase the index value to count back (by month) and retrieve its most recent statement. |
| type | query | optional | The type of statement to retrieve |
The statement was successfully downloaded as a PDF file
The response contains an MFA challenge in XML or JSON format. Contact your Account Manager or Systems Engineers to determine the best route to handle this error.
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v1/customers/{customerId}/accounts/{accountId}/statement
/aggregation/v3/customers/{customerId}/accounts/{accountId}/statement
This endpoint retrieves account statements for a given customer. The maximum number of statements that can be returned is 24.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| accountId | path | optional | The account ID |
|
| index | query | optional | string | Request statements with comma-separated indexes between 1-24. The default value is 1 and it will return the most recent statement. Increasing the index will return older statements, for example, setting the index value to 6 will return the sixth most recent statement. |
The account statements were successfully retrieved.
The response contains an MFA challenge in XML or JSON format. Contact your Account Manager or Systems Engineers to determine the best route to handle this error.
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /aggregation/v3/customers/{customerId}/accounts/{accountId}/statement
/decisioning/v2/customers/{customerId}/statement
Generate a Statement Report for the given accounts under the given customer.
This is a premium service. A billable event will be created upon the successful generation of the Statement Report.
Before calling this API, a consumer must be created for the given customer ID (see Consumers APIs).
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| callbackUrl | query | optional | string | A Report Listener URL to receive notifications. The webhook must respond to the Finicity API with a 2xx HTTP status code. |
application/json
StatementReportConstraints
| Property | Type | Required |
|---|---|---|
| reportCustomFields | array | optional |
| └ label | string | optional |
| └ shown | boolean | optional |
| └ value | string | optional |
| statementReportData | object | required |
| └ accountId | integer | required |
| └ statementIndex | integer | optional |
The report is being generated. When finished, a notification will be sent to the specified callback URL (Report Listener Service) and the report can be fetched using Get Report APIs. If you don’t use a callback URL, Get Report returns a minimal report with the following status: ‘inProgress’. Repeat the call every 20 seconds until Get Report returns a different status.
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
POST /decisioning/v2/customers/{customerId}/statement
/business-services/businesses/{business_id}
Retrieve business details.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| business_id | path | optional | Unique identifier of the business |
The business information was successfully retrieved.
The business does not exist
GET /business-services/businesses/{business_id}
/business-services/businesses/{business_id}
Update the details of a business based on its unique identifier. By providing the specific business ID and the updated information in the request, modifications can be made to the business’s profile.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| business_id | path | optional | Unique identifier of the business |
application/json
NewBusiness
| Property | Type | Required |
|---|---|---|
| url | string | optional |
| name | string | required |
| type | string | optional |
| string | optional | |
| taxId | string | optional |
| address | object | required |
| └ city | string | optional |
| └ state | string | optional |
| └ country | string | optional |
| └ postalCode | string | optional |
| └ addressLine1 | string | optional |
| └ addressLine2 | string | optional |
| phoneNumber | object | required |
| └ phoneNo | string | optional |
| └ countryCode | string | optional |
| personallyLiable | boolean | required |
The business information was updated.
The business does not exist
PUT /business-services/businesses/{business_id}
/business-services/customers/{customer_id}/businesses
Retrieve business details associated with a specific customer. By providing the unique customer identifier, details about the associated business can be accessed.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customer_id | path | optional | Unique identifier of the customer |
The business information was successfully retrieved.
The customer does not exist
GET /business-services/customers/{customer_id}/businesses
/business-services/customers/{customer_id}/businesses
Create a new business record for the associated customer.
A customer can have one business record associated.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customer_id | path | optional | Unique identifier of the customer |
application/json
NewBusiness
| Property | Type | Required |
|---|---|---|
| url | string | optional |
| name | string | required |
| type | string | optional |
| string | optional | |
| taxId | string | optional |
| address | object | required |
| └ city | string | optional |
| └ state | string | optional |
| └ country | string | optional |
| └ postalCode | string | optional |
| └ addressLine1 | string | optional |
| └ addressLine2 | string | optional |
| phoneNumber | object | required |
| └ phoneNo | string | optional |
| └ countryCode | string | optional |
| personallyLiable | boolean | required |
The business was successfully created.
The customer does not exist
The resource already exists
POST /business-services/customers/{customer_id}/businesses
/decisioning/v2/customers/{customerId}/cashFlowBusiness
Generate a Cash Flow Report (Business) report for all checking and savings under the given customer. This service retrieves up to two years of transaction history for the given account. It then uses this information to generate the CFR report. A consumer is not required to generate this report.
This report is not provided under FCRA rules, and this report is not available in the Finicity Consumer Portal for the borrower to view.
If no account type of checking or savings is found, the service will return HTTP 400 Bad Request.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| callbackUrl | query | optional | string | A Report Listener URL to receive notifications. The webhook must respond to the Finicity API with a 2xx HTTP status code. |
application/json
CashFlowReportConstraints
| Property | Type | Required |
|---|---|---|
| showNsf | boolean | optional |
| fromDate | integer | optional |
| accountIds | string | optional |
| reportCustomFields | array | optional |
| └ label | string | optional |
| └ shown | boolean | optional |
| └ value | string | optional |
| incomeStreamConfidenceMinimum | integer | optional |
The report is being generated. When finished, a notification will be sent to the specified callback URL (Report Listener Service) and the report can be fetched using Get Report APIs. If you don’t use a callback URL, Get Report returns a minimal report with the following status: ‘inProgress’. Repeat the call every 20 seconds until Get Report returns a different status.
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
POST /decisioning/v2/customers/{customerId}/cashFlowBusiness
/decisioning/v2/customers/{customerId}/cashFlowPersonal
Generate a Cash Flow Report (Personal) report for all checking and savings under the given customer. This service retrieves up to two years of transaction history for the given account. It then uses this information to generate the CFR report.
This report is provided under FCRA rules, with Finicity acting as the CRA (Consumer Reporting Agency). If an individual account is included in the report - for example, with an individual acting as an personal guarantor on the loan - then this version of the report should be used. In case of an adverse action on the loan where the decision was based on this report, then the borrower can be referred to the Finicity Consumer Portal where they can view this report and submit a dispute if they feel any information in this report is inaccurate.
Before calling this API, a consumer must be created for the given customer ID (see Consumers APIs).
If no account type of checking or savings is found, the service will return HTTP 400 Bad Request.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| callbackUrl | query | optional | string | A Report Listener URL to receive notifications. The webhook must respond to the Finicity API with a 2xx HTTP status code. |
application/json
CashFlowReportConstraints
| Property | Type | Required |
|---|---|---|
| showNsf | boolean | optional |
| fromDate | integer | optional |
| accountIds | string | optional |
| reportCustomFields | array | optional |
| └ label | string | optional |
| └ shown | boolean | optional |
| └ value | string | optional |
| incomeStreamConfidenceMinimum | integer | optional |
The report is being generated. When finished, a notification will be sent to the specified callback URL (Report Listener Service) and the report can be fetched using Get Report APIs. If you don’t use a callback URL, Get Report returns a minimal report with the following status: ‘inProgress’. Repeat the call every 20 seconds until Get Report returns a different status.
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
POST /decisioning/v2/customers/{customerId}/cashFlowPersonal
/analytics/cashflow/v1/customer/{customerId}
Cash Flow Analytics for Business analyzes cash flow over time to report metrics and identify behavior that may indicate risk.
Calculated metrics include:
Count and report of weeks in the requested time period where there
were zero transactions posted to the customer’s accounts
Estimated amount of deposits that can be classified as business
revenue
This version of the API is intended for piloting and integration testing your application with the Cash Flow Analytics product. It does not adhere to FCRA requirements, and should not be used for production/lending purposes. See Generate Cash Flow Analytics - FCRA for the FCRA compliant version of this API.
A successful call to this API will generate analytics and store a report within Finicity. The report can be retrieved via Get Cash Flow Analytics Report (operation: GetCashFlowAnalyticsReport).
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| reference-number | query | optional | string | Partner-provided reference number to correlate reports. |
application/json
BalanceAndCashFlowAnalyticsReportConstraints
| Property | Type | Required |
|---|---|---|
| accountIds | array | optional |
| lengthOfReport | integer | optional |
Response given when cash flow analytics were generated successfully, providing the caller with a report ID which can be used to retrieve the report as JSON or a PDF.
A bad request was provided
Unauthorized request
Access forbidden
Resource not found
Resource conflict
POST /analytics/cashflow/v1/customer/{customerId}
/analytics/cashflow/v1/customer/{customerId}/fcra
Cash Flow Analytics for Business analyzes cash flow over time to report metrics and identify behavior that may indicate risk.
Calculated metrics include:
Count and report of weeks in the requested time period where there
were zero transactions posted to the customer’s accounts
Estimated amount of deposits that can be classified as business
revenue
This version of the API is intended for production use. It maintains and enforces all compliance with FCRA rules and requirements.
Note: this is a premium service, billable per every successful API call for non-testing customers.
A successful call to this API will generate analytics and store a report within Finicity. The report can be retrieved via Get Cash Flow Analytics Report - FCRA (operation: GetCashFlowAnalyticsReportFCRA).
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| reference-number | query | optional | string | Partner-provided reference number to correlate reports. |
application/json
BalanceAndCashFlowAnalyticsReportConstraints
| Property | Type | Required |
|---|---|---|
| accountIds | array | optional |
| lengthOfReport | integer | optional |
Response given when cash flow analytics (FCRA) were generated successfully, providing the caller with a report ID which can be used to retrieve the report as JSON or a PDF.
A bad request was provided
Unauthorized request
Access forbidden
Resource not found
Resource conflict
POST /analytics/cashflow/v1/customer/{customerId}/fcra
/decisioning/v2/customers/{customerId}/reports/cashflow-analytics/userTypes/{userType}
Generate a Cashflow Analytics Report for a given customer. This service retrieves up to two years of transaction history from connected accounts.
Cashflow Analytics analyzes transaction over time to report metrics and identify behavior that may indicate risk.
Before calling this API, A consumer or business may need to be created for the given customer ID based on the user type (see Consumer/Business APIs).
If no account type of checking or savings is found, the service will return HTTP 400 Bad Request.
This is a premium service, billable per every successful API call for non-testing customers. A successful call to this API will generate analytics report which can be retrieved via Get Report by Customer or Get Report by Consumer.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| customerId | path | optional | A customer ID |
|
| userType | path | optional | UserType indicates if the request is for a business or personal use case, Allowed values: business/personal. |
|
| callbackUrl | query | optional | string | A Report Listener URL to receive notifications. The webhook must respond to the Finicity API with a 2xx HTTP status code. |
application/json
AnalyticsReportConstraints
| Property | Type | Required |
|---|---|---|
| fromDate | integer | optional |
| accountIds | string | optional |
| reportCustomFields | array | optional |
| └ label | string | optional |
| └ shown | boolean | optional |
| └ value | string | optional |
| analyticsReportData | object | optional |
| └ forCraPurpose | boolean | required |
| └ timeIntervalTypes | array | optional |
| └ applicantIsPersonalGuarantor | boolean | optional |
The report is being generated. When finished, a notification will be sent to the specified callback URL (Report Listener Service) and the report can be fetched using Get Report APIs. If you don’t use a callback URL, Get Report returns a minimal report with the following status: ‘inProgress’. Repeat the call every 20 seconds until Get Report returns a different status.
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
POST /decisioning/v2/customers/{customerId}/reports/cashflow-analytics/userTypes/{userType}
/connect/v2/generate
Generate a Connect 2.0 URL link to add within your own applications.
Optional Parameters:
experience: Configure different customer experiences per Connect session by changing the brand, color, logo, icon, the type of credit decisioning report to generate after the session ends, and more.language: By default, the Connect application is in English. You don’t need to pass this parameter unless you want to translate Connect into one of our supported languages.
MVS Developers: You can pre-populate the consumer’s SSN on the Find employment records page at the beginning of the MVS payroll app. Pass the SSN value for the consumer in the body of the request call.
Supported regions:
application/json
ConnectParameters
| Property | Type | Required |
|---|---|---|
| webhook | string | optional |
| fromDate | integer | optional |
| language | string | optional |
| isWebView | boolean | optional |
| partnerId | string | required |
| consumerId | string | optional |
| customerId | string | required |
| experience | string | optional |
| redirectUri | string | optional |
| webhookData | object | optional |
| singleUseUrl | boolean | optional |
| webhookHeaders | object | optional |
| reportCustomFields | array | optional |
| └ label | string | optional |
| └ shown | boolean | optional |
| └ value | string | optional |
| webhookContentType | string | optional |
| institutionSettings | object | optional |
| optionalConsumerInfo | object | optional |
| └ dob | integer | optional |
| └ ssn | string | required |
The URL link was successfully generated
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
POST /connect/v2/generate
/connect/v2/generate/fix
Use the Connect Fix API when the following conditions occur:
Supported regions:
application/json
FixConnectParameters
| Property | Type | Required |
|---|---|---|
| webhook | string | optional |
| language | string | optional |
| isWebView | boolean | optional |
| partnerId | string | required |
| customerId | string | required |
| experience | string | optional |
| redirectUri | string | optional |
| webhookData | object | optional |
| singleUseUrl | boolean | optional |
| webhookHeaders | object | optional |
| institutionLoginId | string | required |
| webhookContentType | string | optional |
The URL link was successfully generated
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
POST /connect/v2/generate/fix
/connect/v2/generate/jointBorrower
Same as Connect Full (POST /connect/v2/generate) but for joint borrowers.
MVS prompts both the primary and joint borrower to enter each of their financial, payroll, and paystub information in the same Connect session.
Supported regions:
application/json
ConnectJointBorrowerParameters
| Property | Type | Required |
|---|---|---|
| webhook | string | optional |
| fromDate | integer | optional |
| language | string | optional |
| borrowers | array | required |
| └ type | string | required |
| └ consumerId | string | required |
| └ customerId | string | required |
| └ optionalConsumerInfo | object | optional |
| └ dob | integer | optional |
| └ ssn | string | required |
| partnerId | string | required |
| experience | string | optional |
| redirectUri | string | optional |
| webhookData | object | optional |
| singleUseUrl | boolean | optional |
| webhookHeaders | object | optional |
| reportCustomFields | array | optional |
| └ label | string | optional |
| └ shown | boolean | optional |
| └ value | string | optional |
| webhookContentType | string | optional |
| institutionSettings | object | optional |
The URL link was successfully generated
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
POST /connect/v2/generate/jointBorrower
/connect/v2/generate/lite
Connect Lite is a variation of Connect Full (POST /connect/v2/generate), which has a limited set of features.
The Connect Web SDK isn’t a requirement when using Connect lite. However, if you want to use the SDK events, routes, and user events, then you must integrate with the Connect Web SDK.
Supported regions:
application/json
LiteConnectParameters
| Property | Type | Required |
|---|---|---|
| webhook | string | optional |
| language | string | optional |
| isWebView | boolean | optional |
| partnerId | string | required |
| customerId | string | required |
| experience | string | optional |
| redirectUri | string | optional |
| webhookData | object | optional |
| singleUseUrl | boolean | optional |
| institutionId | integer | required |
| webhookHeaders | object | optional |
| webhookContentType | string | optional |
The URL link was successfully generated
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
POST /connect/v2/generate/lite
/connect/v2/generate/microentry/verify
The UI re-engages the consumer to enter two microdeposit amounts found in their account and validates them.
Supported regions:
application/json
MicroEntryVerifyRequestParameter
| Property | Type | Required |
|---|---|---|
| webhook | string | optional |
| accountId | string | optional |
| partnerId | string | optional |
| customerId | string | optional |
| experience | string | optional |
| redirectUri | string | optional |
| webhookData | object | optional |
| webhookHeaders | object | optional |
| webhookContentType | string | optional |
The URL link was successfully generated
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
POST /connect/v2/generate/microentry/verify
/connect/v2/send/email
Same as Connect Full (POST /connect/v2/generate) but send a Connect email to a consumer.
Supported regions:
application/json
ConnectEmailParameters
| Property | Type | Required |
|---|---|---|
| object | required | |
| └ to | string | required |
| └ from | string | optional |
| └ subject | string | optional |
| └ firstName | string | optional |
| └ signature | array | optional |
| └ supportPhone | string | optional |
| └ institutionName | string | optional |
| └ institutionAddress | string | optional |
| webhook | string | optional |
| fromDate | integer | optional |
| language | string | optional |
| partnerId | string | required |
| consumerId | string | required |
| customerId | string | required |
| experience | string | optional |
| redirectUri | string | optional |
| webhookData | object | optional |
| singleUseUrl | boolean | optional |
| webhookHeaders | object | optional |
| reportCustomFields | array | optional |
| └ label | string | optional |
| └ shown | boolean | optional |
| └ value | string | optional |
| webhookContentType | string | optional |
| institutionSettings | object | optional |
| optionalConsumerInfo | object | optional |
| └ dob | integer | optional |
| └ ssn | string | required |
The URL link was successfully generated and the email sent
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
POST /connect/v2/send/email
/connect/v2/send/email/jointBorrower
Same as Connect Joint Borrower (POST /connect/v2/generate/jointBorrower) but send a Connect email to at least one of the joint borrower’s email addresses.
When the consumer opens the email, MVS prompts both the primary and joint borrower to enter each of their financial, payroll, and paystub information in the same Connect session.
Supported regions:
application/json
ConnectJointBorrowerEmailParameters
| Property | Type | Required |
|---|---|---|
| object | required | |
| └ to | string | required |
| └ from | string | optional |
| └ subject | string | optional |
| └ firstName | string | optional |
| └ signature | array | optional |
| └ supportPhone | string | optional |
| └ institutionName | string | optional |
| └ institutionAddress | string | optional |
| webhook | string | optional |
| fromDate | integer | optional |
| language | string | optional |
| borrowers | array | required |
| └ type | string | required |
| └ consumerId | string | required |
| └ customerId | string | required |
| └ optionalConsumerInfo | object | optional |
| └ dob | integer | optional |
| └ ssn | string | required |
| partnerId | string | required |
| experience | string | required |
| redirectUri | string | optional |
| webhookData | object | optional |
| singleUseUrl | boolean | optional |
| webhookHeaders | object | optional |
| reportCustomFields | array | optional |
| └ label | string | optional |
| └ shown | boolean | optional |
| └ value | string | optional |
| webhookContentType | string | optional |
| institutionSettings | object | optional |
The URL link was successfully generated and the email sent
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
POST /connect/v2/send/email/jointBorrower
/decisioning/v1/consumers/{consumerId}
Get the details of a consumer record by consumer ID.
Supported regions:
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| consumerId | path | optional | The consumer ID |
The consumer was successfully retrieved
The request was rejected
The request lacks valid authentication credentials. Check “Finicity-App-Key” or “Finicity-App-Token”.
The resource doesn’t exist
GET /decisioning/v1/consumers/{consumerId}
ACHDetails
{
"type": "object",
"required": [
"routingNumber",
"realAccountNumber"
],
"properties": {
"routingNumber": {
"type": "string",
"example": "123456789",
"description": "The routing number of the financial institution for specific customer account"
},
"realAccountNumber": {
"type": "string",
"example": "002345678901",
"description": "The account number for initiating ACH transfers for this account"
}
},
"description": "The routing and account number information to initiate ACH transfers"
}
AFBalanceAnalyticsReport
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/AnalyticsReportAck"
},
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"example": 730,
"description": "Number of days covered by the report"
},
"endDate": {
"$ref": "#/components/schemas/ReportEndDate"
},
"seasoned": {
"type": "boolean",
"example": true,
"description": "\"true\" if the report covers more than 365 days"
},
"startDate": {
"$ref": "#/components/schemas/ReportStartDate"
},
"institutions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ReportInstitution"
},
"description": "A list of institution records, including information about the individual accounts used in this report"
},
"customerAnalytics": {
"$ref": "#/components/schemas/CustomerAnalytics"
}
}
}
],
"description": "A Balance Analytics Report"
}
AFBusiness
{
"type": "object",
"required": [
"name",
"address"
],
"properties": {
"name": {
"$ref": "#/components/schemas/BusinessName"
},
"address": {
"type": "object",
"properties": {
"city": {
"$ref": "#/components/schemas/City"
},
"state": {
"$ref": "#/components/schemas/State"
},
"country": {
"$ref": "#/components/schemas/Country"
},
"postalCode": {
"$ref": "#/components/schemas/ZipCode"
},
"addressLine1": {
"$ref": "#/components/schemas/AddressLine1"
},
"addressLine2": {
"$ref": "#/components/schemas/AddressLine2"
}
}
}
}
}
AFCashFlowAnalyticsReport
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/AnalyticsReportAck"
},
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"example": 730,
"description": "Number of days covered by the report"
},
"endDate": {
"$ref": "#/components/schemas/ReportEndDate"
},
"seasoned": {
"type": "boolean",
"example": true,
"description": "\"true\" if the report covers more than 365 days"
},
"startDate": {
"$ref": "#/components/schemas/ReportStartDate"
},
"institutions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ReportInstitution"
},
"description": "A list of institution records, including information about the individual accounts used in this report"
},
"customerAnalytics": {
"$ref": "#/components/schemas/CustomerAnalytics"
}
}
}
],
"description": "A Cash Flow Analytics Report"
}
AccessToken
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"example": "YBh22Sb9Es6e66Q7lWdt",
"description": "The access token value"
}
},
"description": "A temporary access token to be passed in the `Finicity-App-Token` HTTP header of all subsequent API requests"
}
AccountAnalytics
{
"type": "object",
"required": [
"transactionalAttributes",
"stateAttributes",
"streams"
],
"properties": {
"streams": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StreamModel"
},
"description": "List of generated streams"
},
"stateAttributes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StateAttribute"
},
"description": "List of calculated state attributes"
},
"transactionalAttributes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TransactionalAttribute"
},
"description": "List of calculated transactional attributes"
}
},
"description": "Analytics calculated for one account in the report."
}
AccountDetails
{
"type": "object",
"properties": {
"vestedBalance": {
"type": "number",
"example": 300000,
"description": "Only available for investment accounts. Vested amount in account."
},
"currentLoanBalance": {
"type": "number",
"example": 0,
"description": "Only available for investment accounts. Current loan balance."
},
"availableCashBalance": {
"type": "number",
"example": 1500,
"description": "Only available for investment accounts. Amount available for cash withdrawal."
},
"interestMarginBalance": {
"type": "number",
"example": -50000,
"description": "Only available for investment accounts. Net interest earned after deducting interest paid out."
},
"availableBalanceAmount": {
"type": "number",
"example": 1000,
"description": "The available balance for the account"
}
}
}
AccountDetailsTxBased
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/AccountDetails"
},
{
"type": "object",
"properties": {
"marginBalance": {
"type": "number",
"example": 100,
"description": "Net interest earned after deducting interest paid out"
},
"currentBalance": {
"type": "number",
"example": 1000,
"description": "Current balance"
}
}
}
]
}
AccountId
{
"type": "string",
"example": "5011648377",
"description": "An account ID"
}
AccountNumberDisplay
{
"type": "string",
"description": "The account number from a financial institution in truncated format:\n\n * Last four digits: \"1234\"\n\n * Last four digits with suffix: \"1234-9\"\n\n * Full value for string accounts: \"john@gmail.com\"\nexample: '1234-9'"
}
AccountNumberLast4
{
"type": "string",
"example": "5678",
"description": "The last 4 digits of the ACH account number"
}
AccountOwner
{
"type": "object",
"required": [
"ownerName",
"ownerAddress"
],
"properties": {
"asOfDate": {
"$ref": "#/components/schemas/UnixDate"
},
"ownerName": {
"type": "string",
"example": "John Smith",
"description": "The name of the account owner. Can be multiple account owners in one string. This is how the source data is returned from the institution."
},
"ownerAddress": {
"$ref": "#/components/schemas/Address"
}
},
"description": "Owner of a customer account"
}
AccountOwnerAddress
{
"type": "object",
"properties": {
"city": {
"$ref": "#/components/schemas/City"
},
"type": {
"$ref": "#/components/schemas/AddressType"
},
"line1": {
"$ref": "#/components/schemas/AddressLine1"
},
"line2": {
"$ref": "#/components/schemas/AddressLine2"
},
"line3": {
"$ref": "#/components/schemas/AddressLine3"
},
"state": {
"$ref": "#/components/schemas/State"
},
"country": {
"$ref": "#/components/schemas/Country"
},
"postalCode": {
"$ref": "#/components/schemas/ZipCode"
},
"ownerAddress": {
"$ref": "#/components/schemas/Address"
}
},
"description": "Account owner address"
}
AccountOwnerAddresses
{
"type": "array",
"items": {
"$ref": "#/components/schemas/AccountOwnerAddress"
},
"description": "List of addresses"
}
AccountOwnerDetails
{
"type": "object",
"required": [
"ownerName",
"addresses"
],
"properties": {
"emails": {
"$ref": "#/components/schemas/AccountOwnerEmails"
},
"phones": {
"$ref": "#/components/schemas/AccountOwnerPhones"
},
"suffix": {
"$ref": "#/components/schemas/Suffix"
},
"lastName": {
"$ref": "#/components/schemas/LastName"
},
"addresses": {
"$ref": "#/components/schemas/AccountOwnerAddresses"
},
"firstName": {
"$ref": "#/components/schemas/FirstName"
},
"ownerName": {
"$ref": "#/components/schemas/AccountOwnerName"
},
"middleName": {
"$ref": "#/components/schemas/MiddleName"
},
"relationship": {
"$ref": "#/components/schemas/AccountOwnerRelationshipType"
},
"documentations": {
"$ref": "#/components/schemas/AccountOwnerDocumentations"
},
"identityInsights": {
"$ref": "#/components/schemas/AccountOwnerIdentityInsights"
},
"nameClassification": {
"$ref": "#/components/schemas/NameClassificationType"
},
"nameClassificationconfidencescore": {
"$ref": "#/components/schemas/ClassificationConfidenceScore"
}
},
"description": "Owner of a customer account"
}
AccountOwnerDocumentation
{
"type": "object",
"properties": {
"taxId": {
"$ref": "#/components/schemas/TaxId"
},
"governmentId": {
"$ref": "#/components/schemas/GovernmentId"
},
"taxIdCountry": {
"$ref": "#/components/schemas/Country"
}
},
"description": "Account owner documentation"
}
AccountOwnerDocumentations
{
"type": "array",
"items": {
"$ref": "#/components/schemas/AccountOwnerDocumentation"
},
"description": "List of account owner documentation"
}
AccountOwnerEmail
{
"type": "object",
"properties": {
"email": {
"$ref": "#/components/schemas/EmailAddress"
},
"emailType": {
"$ref": "#/components/schemas/AccountOwnerEmailType"
},
"isPrimary": {
"$ref": "#/components/schemas/AccountOwnerEmailPrimary"
}
},
"description": "Account owner email"
}
AccountOwnerEmailPrimary
{
"type": "boolean",
"example": true,
"description": "The email is primary."
}
AccountOwnerEmailType
{
"type": "string",
"example": "Personal",
"description": "The account owner's email type.\n\n* \"Personal\" \n\n* \"Business\""
}
AccountOwnerEmails
{
"type": "array",
"items": {
"$ref": "#/components/schemas/AccountOwnerEmail"
},
"description": "List of emails"
}
AccountOwnerHolders
{
"type": "object",
"required": [
"holders"
],
"properties": {
"holders": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AccountOwnerDetails"
},
"description": "List of account owners"
}
}
}
AccountOwnerIdentityInsights
{
"type": "object",
"properties": {
"ipRisk": {
"$ref": "#/components/schemas/IpRisk"
},
"warnings": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Warnings"
}
},
"emailToName": {
"$ref": "#/components/schemas/EmailToName"
},
"ipRiskScore": {
"$ref": "#/components/schemas/IpRiskScore"
},
"phoneToName": {
"$ref": "#/components/schemas/PhoneToName"
},
"isEmailValid": {
"$ref": "#/components/schemas/EmailValid"
},
"isPhoneValid": {
"$ref": "#/components/schemas/PhoneValid"
},
"phoneCarrier": {
"$ref": "#/components/schemas/PhoneCarrier"
},
"addressToName": {
"$ref": "#/components/schemas/AddressToName"
},
"phoneLineType": {
"$ref": "#/components/schemas/PhoneLineType"
},
"ipLastSeenDays": {
"$ref": "#/components/schemas/IpLastSeenDays"
},
"phoneToAddress": {
"$ref": "#/components/schemas/PhoneToAddress"
},
"ipPhoneDistance": {
"$ref": "#/components/schemas/IpPhoneDistance"
},
"phoneCountryCode": {
"$ref": "#/components/schemas/PhoneCountryCode"
},
"identityRiskScore": {
"$ref": "#/components/schemas/IdentityRiskScore"
},
"ipAddressDistance": {
"$ref": "#/components/schemas/IpAddressDistance"
},
"phoneLastSeenDays": {
"$ref": "#/components/schemas/PhoneLastSeenDays"
},
"emailFirstSeenDays": {
"$ref": "#/components/schemas/EmailFirstSeenDays"
},
"addressValidityLevel": {
"$ref": "#/components/schemas/AddressValidityLevel"
},
"identityNetworkScore": {
"$ref": "#/components/schemas/IdentityNetworkScore"
},
"emailDomainCreationDate": {
"$ref": "#/components/schemas/EmailDomainCreationDate"
},
"phoneEmailFirstSeenDays": {
"$ref": "#/components/schemas/PhoneEmailFirstSeenDays"
},
"ipGeolocationCountryCode": {
"$ref": "#/components/schemas/IpGeolocationCountryCode"
},
"ipGeolocationSubdivision": {
"$ref": "#/components/schemas/IpGeolocationSubdivision"
}
},
"description": "List of account owner Identity Insights"
}
AccountOwnerName
{
"type": "string",
"example": "John Smith, PhD",
"description": "The full name of the account owner. Multiple account owners are returned in one string per the source data from the institution."
}
AccountOwnerPhone
{
"type": "object",
"properties": {
"type": {
"$ref": "#/components/schemas/AccountOwnerPhoneType"
},
"phone": {
"$ref": "#/components/schemas/PhoneNumber"
},
"country": {
"$ref": "#/components/schemas/PhoneCountry"
}
},
"description": "Consumer phone"
}
AccountOwnerPhoneType
{
"type": "string",
"example": "HOME",
"description": "The account owner's phone type: \n\n* \"HOME\"\n\n* \"BUSINESS\"\n\n* \"CELL\"\n\n* \"FAX\""
}
AccountOwnerPhones
{
"type": "array",
"items": {
"$ref": "#/components/schemas/AccountOwnerPhone"
},
"description": "List of phones"
}
AccountOwnerRelationshipType
{
"type": "string",
"example": "AUTHORIZED_USER",
"description": "The type of relationship to the account: \n* \"AUTHORIZED_USER\" \n\n* \"BUSINESS\" \n\n* \"FOR_BENEFIT_OF_PRIMARY\" \n\n* \"FOR_BENEFIT_OF_PRIMARY_JOINT_RESTRICTED\" \n\n* \"FOR_BENEFIT_OF_SECONDARY\"\n\n* \"FOR_BENEFIT_OF_SECONDARY_JOINT_RESTRICTED\"\n\n* \"FOR_BENEFIT_OF_SOLE_OWNER_RESTRICTED\"\n\n* \"POWER_OF_ATTORNEY\"\n\n* \"PRIMARY_JOINT_TENANTS\"\n\n* \"PRIMARY\"\n\n* \"PRIMARY_BORROWER\"\n\n* \"PRIMARY_JOINT\"\n\n* \"SECONDARY\"\n\n* \"SECONDARY_JOINT_TENANTS\"\n\n* \"SECONDARY_BORROWER\"\n\n* \"SECONDARY_JOINT\"\n\n* \"SOLE_OWNER\"\n\n* \"TRUSTEE\"\n\n* \"UNIFORM_TRANSFER_TO_MINOR\""
}
AccountStatus
{
"type": "string",
"example": "pending",
"description": "An account status"
}
AccountType
{
"type": "string",
"example": "checking",
"description": "The list of supported account types.\n* \"checking\": Standard checking\n* \"savings\": Standard savings\n* \"cd\": Certificates of deposit\n* \"moneyMarket\": Money Market\n* \"creditCard\": Standard credit cards\n* \"lineOfCredit\": Home equity, line of credit\n* \"investment\": Generic investment (no details)\n* \"investmentTaxDeferred\": Generic tax-advantaged investment (no details)\n* \"employeeStockPurchasePlan\": ESPP, Employee Stock Ownership Plans (ESOP), Stock Purchase Plans\n* \"ira\": Individual Retirement Account (not Rollover or Roth)\n* \"401k\": 401K Plan\n* \"roth\": Roth IRA, Roth 401K\n* \"403b\": 403B Plan\n* \"529plan\": 529 Plan (True value is 529)\n* \"rollover\": Rollover IRA\n* \"ugma\": Uniform Gifts to Minors Act\n* \"utma\": Uniform Transfers to Minors Act\n* \"keogh\": Keogh Plan\n* \"457plan\": 457 Plan (True value is 457)\n* \"401a\": 401A Plan\n* \"brokerageAccount\": Brokerage Account\n* \"educationSavings\": Education Savings Account that is not a 529\n* \"healthSavingsAccount\": HSA (Health Savings Accounts)\n* \"pension\": Pension\n* \"profitSharingPlan\": Profit Sharing Plan\n* \"roth401k\": Roth 401K\n* \"sepIRA\": Simplified Employee Pension IRA\n* \"simpleIRA\": Simple IRA\n* \"thriftSavingsPlan\": Thrift Savings Plan\n* \"variableAnnuity\": Variable Annuity\n* \"cryptocurrency\": Cryptocurrency Wallet, Cryptocurrency Account\n* \"mortgage\": Standard Mortgages\n* \"loan\": Auto loans, equity loans, other loans\n* \"studentLoan\": Student Loan\n* \"studentLoanGroup\": Student Loan Group\n* \"studentLoanAccount\": Student Loan Account"
}
ActiveStatus
{
"type": "string",
"example": "ACTIVE",
"description": "Possible values: \"ACTIVE\", \"INACTIVE\""
}
Address
{
"type": "string",
"example": "434 W Ascension Way",
"description": "A street address"
}
AddressLine1
{
"type": "string",
"example": "434 W Ascension Way",
"description": "Address line 1"
}
AddressLine2
{
"type": "string",
"example": "Suite #200",
"description": "Address line 2"
}
AddressLine3
{
"type": "string",
"example": "UT 84123",
"description": "Address line 3"
}
AddressToName
{
"type": "string",
"example": "match",
"description": "The match status between the input name and the queried entity.\n* not-found\n* match\n* no-match"
}
AddressType
{
"type": "string",
"example": "Home",
"description": "The type of address location:\n* \"Business\"\n* \"Home\"\n* \"Mailing\""
}
AddressValidityLevel
{
"type": "number",
"example": null,
"description": "The most granular level to which the address could be validated. Ex. If the address was only valid to the city level (but not to the house level), it would return “valid_to_city”.\n * missing_address - An input address was not provided.\n\n * invalid - The input address is not valid.\n\n * valid - The input address is valid.\n\n * valid_to_country - The input address could only be validated to the\ncountry level. This means the country of the input address is valid, but the other elements of the input address were unable to be confirmed as valid or invalid.\n\n * valid_to_city - The input address was validated to the city level.\nThis means the country, state, city, and postal code of the input address are valid, but the street, house number, and subpremise of the input address were unable to be confirmed as valid or invalid.\n\n * valid_to_street - The input address was validated to the street\nlevel. This means the country, state, city, postal code, and street of the input address are valid, but the house number and subpremise of the input address were unable to be confirmed as valid or invalid.\n\n * valid_to_house_number - The input address was validated to the\nstreet and house number level. This means the country, state, city, postal code, street, and house number of the input address are valid, but the subpremise of the input address was unable to be confirmed as valid or invalid. \n\n * valid_to_house_number_missing_apt - The input address was\nvalidated to the street and house number level. This means the country, state, city, postal code, street, and house number of the input address are valid, but the subpremise of the input address was missing and thus unable to be confirmed as valid or invalid."
}
AggregationStatus
{
"type": "string",
"example": "active",
"description": "\"pending\" during account discovery, always \"active\" following\n successful account activation"
}
AggregationStatusCode
{
"type": "integer",
"description": "The status of the most recent aggregation attempt (see [Aggregation Status Codes](https://developer.mastercard.com/open-banking-us/documentation/products/manage/account-aggregation/#aggregation-status-codes)). Won't be present until you have run your first aggregation for the account."
}
AnalyticsReportAck
{
"allOf": [
{
"$ref": "#/components/schemas/BaseReportAck"
},
{
"type": "object",
"properties": {
"reportPin": {
"$ref": "#/components/schemas/ReportPin"
},
"constraints": {
"$ref": "#/components/schemas/AnalyticsReportConstraintsOut"
},
"businessDetails": {
"$ref": "#/components/schemas/BusinessDetails"
}
}
}
],
"required": [
"id",
"customerType",
"customerId",
"requestId",
"requesterName",
"createdDate",
"title",
"type",
"status",
"constraints"
]
}
AnalyticsReportConstraints
{
"type": "object",
"properties": {
"fromDate": {
"$ref": "#/components/schemas/UnixDate"
},
"accountIds": {
"$ref": "#/components/schemas/ReportAccountIdsString"
},
"reportCustomFields": {
"$ref": "#/components/schemas/ReportCustomFields"
},
"analyticsReportData": {
"$ref": "#/components/schemas/AnalyticsReportData"
}
}
}
AnalyticsReportConstraintsOut
{
"type": "object",
"properties": {
"fromDate": {
"$ref": "#/components/schemas/UnixDate"
},
"accountIds": {
"$ref": "#/components/schemas/ReportAccountIds"
},
"reportCustomFields": {
"$ref": "#/components/schemas/ReportCustomFields"
},
"analyticsReportData": {
"$ref": "#/components/schemas/AnalyticsReportData"
}
}
}
AnalyticsReportData
{
"type": "object",
"required": [
"forCraPurpose"
],
"properties": {
"forCraPurpose": {
"type": "boolean",
"example": true,
"description": "Field to indicate if the requested report is for CRA or NONCRA. For small business lending or other similar business use cases, pass the value as “true” for purposes of this field."
},
"timeIntervalTypes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TimeIntervalType"
},
"example": [
"MONTHLY_CALENDAR"
],
"maxItems": 2,
"description": "Requested time interval for attribute values."
},
"applicantIsPersonalGuarantor": {
"type": "boolean",
"example": true,
"description": "Field to indicate if the business owner will personally guarantee the loan. If true, a consumer record will be required."
}
},
"description": "Parameters supplied by the client requesting the analytics."
}
AnalyticsReportsAccount
{
"type": "object",
"required": [
"id",
"name",
"number",
"type",
"currency",
"transactions"
],
"properties": {
"id": {
"type": "integer",
"format": "int64",
"example": 1000023996,
"description": "The ID of the account"
},
"name": {
"type": "string",
"example": "Checking",
"description": "The account name from the institution"
},
"type": {
"type": "string",
"example": "checking",
"description": "One of the values from account types"
},
"number": {
"type": "string",
"example": "XX1111",
"description": "The account number from the institution (obfuscated)"
},
"details": {
"$ref": "#/components/schemas/AccountDetails"
},
"ownerName": {
"$ref": "#/components/schemas/ReportAccountOwnerName"
},
"balanceDate": {
"type": "integer",
"format": "int64",
"example": 1614880526,
"description": "A timestamp showing when the `balance` was captured"
},
"ownerAddress": {
"$ref": "#/components/schemas/ReportAccountOwnerAddress"
},
"transactions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ReportTransaction"
},
"description": "a list of transaction records"
},
"currentBalance": {
"type": "number",
"example": 100000,
"description": "The cleared balance of the account as-of `balanceDate`"
},
"accountAnalytics": {
"$ref": "#/components/schemas/AccountAnalytics"
},
"availableBalance": {
"type": "number",
"example": 1000,
"description": "Available balance"
},
"aggregationStatusCode": {
"type": "integer",
"format": "int32",
"example": 0,
"description": "The status of the most recent aggregation attempt"
}
}
}
AnnualIncome
{
"type": "object",
"required": [
"year",
"grossPayAmountYTD"
],
"properties": {
"year": {
"type": "string",
"example": 2022,
"description": "The year for the amounts given in YTD totals for an employer"
},
"netPayAmountYTD": {
"type": "number",
"example": 123.45,
"description": "Year to date (YTD) net pay amount for the indicated year"
},
"basePayAmountYTD": {
"type": "number",
"example": 123.45,
"description": "Year to date (YTD) base pay amount for the year indicated"
},
"grossPayAmountYTD": {
"type": "number",
"example": 123.45,
"description": "Year to date (YTD) gross pay amount for the indicated year"
},
"otherPayAmountYTD": {
"type": "number",
"example": 123.45,
"description": "Year to date (YTD) other pay amount for the indicated year. Other pay is pay that is not categorized into one of the other categories."
},
"commissionPayAmount": {
"type": "number",
"example": 123.45,
"description": "Year to date (YTD) commission pay amount for the indicated year"
},
"overtimePayAmountYTD": {
"type": "number",
"example": 123.45,
"description": "Year to date (YTD) overtime pay amount for the year indicated"
}
}
}
AppFinancialInstitutionStatus
{
"type": "object",
"required": [
"id",
"decryptionKeyActivated",
"createdDate",
"lastModifiedDate",
"status"
],
"properties": {
"id": {
"$ref": "#/components/schemas/NumericInstitutionId"
},
"status": {
"type": "boolean",
"example": true,
"description": "\"false\" indicates registration is still pending"
},
"logoUrl": {
"type": "string",
"example": "https://prod-direct-integration-client.s3.us-west-2.amazonaws.com/976521f99-7b36-4b3b-a3e0-faff9545836d/102224/90x90.png",
"description": "An URL to a logo file"
},
"abbrvName": {
"type": "string",
"example": "VAEJ",
"description": "The application's abbreviated name"
},
"createdDate": {
"$ref": "#/components/schemas/UnixDate"
},
"lastModifiedDate": {
"$ref": "#/components/schemas/UnixDate"
},
"decryptionKeyActivated": {
"type": "boolean",
"example": false,
"description": "Status of decryption keys for financial institution app registration"
}
},
"description": "The registration status fields for each specific OAuth financial institution"
}
AppRegistrationStatus
{
"type": "string",
"example": "P",
"description": "The status of an app registration request. \"A\" means approved. \"P\" means pending which is the status when initially submitted or when the app is modified and awaiting approval. \"R\" means rejected. If it is rejected there will be a note with the rejected reason."
}
AppStatus
{
"type": "object",
"required": [
"partnerId",
"preAppId",
"appName",
"submittedDate",
"modifiedDate",
"status"
],
"properties": {
"note": {
"type": "string",
"example": "Approved",
"description": "A note on the registration. Typically used to indicate reasons for rejected apps."
},
"scopes": {
"type": "string",
"example": "Account Info",
"description": "Indicates scopes of data accessible to the app"
},
"status": {
"$ref": "#/components/schemas/AppRegistrationStatus"
},
"appName": {
"$ref": "#/components/schemas/ApplicationName"
},
"preAppId": {
"$ref": "#/components/schemas/PreAppId"
},
"partnerId": {
"$ref": "#/components/schemas/PartnerId"
},
"modifiedDate": {
"$ref": "#/components/schemas/UnixDate"
},
"applicationId": {
"$ref": "#/components/schemas/ApplicationId"
},
"submittedDate": {
"$ref": "#/components/schemas/UnixDate"
},
"institutionDetails": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AppFinancialInstitutionStatus"
},
"description": "A list of the registration status for each FI for the application"
}
},
"description": "Registration status details for the application"
}
AppStatuses
{
"type": "object",
"required": [
"totalRecords",
"totalPages",
"pageNumber",
"numberOfRecordsPerPage",
"applications"
],
"properties": {
"pageNumber": {
"type": "integer",
"format": "int64",
"example": 2,
"description": "The current page number"
},
"totalPages": {
"type": "integer",
"format": "int64",
"example": 5,
"description": "The total number of pages"
},
"applications": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AppStatus"
},
"description": "A list of applications with their statuses"
},
"totalRecords": {
"type": "integer",
"format": "int64",
"example": 50,
"description": "The total number of results"
},
"numberOfRecordsPerPage": {
"type": "integer",
"format": "int64",
"example": 10,
"description": "The number of results per page"
}
},
"description": "The response for the Get App Registration Status API which returns an array of status objects"
}
| Version | Endpoints | Schemas | Ingested | Status |
|---|---|---|---|---|
| 1.16.2 | 104 | 514 | 2026-05-11 | current |
| 1.16.2 | 104 | 514 | 2026-04-20 | |
| 1.16.2 | 104 | 514 | 2026-04-16 |