diff --git a/finicity.yaml b/finicity.yaml index 26c320a..a0243b2 100644 --- a/finicity.yaml +++ b/finicity.yaml @@ -10,7 +10,7 @@ info: name: Finicity email: business.development@finicity.com url: 'https://www.finicity.com/contact/' - version: 1.6.0 + version: 1.7.0 servers: - url: 'https://api.finicity.com' description: Production @@ -1180,10 +1180,10 @@ paths: - $ref: '#/components/parameters/CustomerIdParameter' - $ref: '#/components/parameters/ReportCallbackUrlParameter' requestBody: - $ref: '#/components/requestBodies/GenerateReportRequest' + $ref: '#/components/requestBodies/GenerateVOAReportRequest' responses: '202': - $ref: '#/components/responses/GenerateReportResponse' + $ref: '#/components/responses/GenerateVOAReportResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -1226,10 +1226,10 @@ paths: - $ref: '#/components/parameters/CustomerIdParameter' - $ref: '#/components/parameters/ReportCallbackUrlParameter' requestBody: - $ref: '#/components/requestBodies/GenerateReportRequest' + $ref: '#/components/requestBodies/GenerateVOAWithIncomeReportRequest' responses: '202': - $ref: '#/components/responses/GenerateReportResponse' + $ref: '#/components/responses/GenerateVOAWithIncomeReportResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -1240,21 +1240,11 @@ paths: post: tags: - Verify Assets - summary: Generate Prequalification Report + summary: Generate Prequalification (CRA) Report description: >- - Generate a Prequalification Report (`preQualVoa`) for all checking, - savings, money market, and investment accounts for the given customer. - This service retrieves account and owner information as well as the - number of NSFs for any account that is a checking account for the - customer. - - - This is a premium service. The billing rate is billed per report for the - Prequalification report. - - - Before calling this API, a consumer must be created for the given - customer ID (see Consumers APIs). + Retrieve all checking, savings, money market, and investment accounts + for a consumer. The account, owner information, and the number of + insufficient funds (NSFs) for checking accounts are also provided. If no account of type checking, savings, money market, or investment is @@ -1262,15 +1252,15 @@ paths: _Supported regions_: ![🇺🇸](https://flagcdn.com/20x15/us.png) - operationId: GeneratePrequalificationReport + operationId: GeneratePrequalificationCRAReport parameters: - $ref: '#/components/parameters/CustomerIdParameter' - $ref: '#/components/parameters/ReportCallbackUrlParameter' requestBody: - $ref: '#/components/requestBodies/GenerateReportRequest' + $ref: '#/components/requestBodies/GeneratePrequalificationReportRequest' responses: '202': - $ref: '#/components/responses/GenerateReportResponse' + $ref: '#/components/responses/GenerateCRAPrequalificationReportResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -1288,9 +1278,6 @@ paths: insufficient funds (NSFs) for checking accounts are also provided. - This is a premium service, billable per every successful API call. - - If no account type of checking, savings, money market, or investment is found, the service will return HTTP 400 Bad Request. @@ -1301,10 +1288,10 @@ paths: - $ref: '#/components/parameters/CustomerIdParameter' - $ref: '#/components/parameters/ReportCallbackUrlParameter' requestBody: - $ref: '#/components/requestBodies/GenerateReportRequest' + $ref: '#/components/requestBodies/GeneratePrequalificationReportRequest' responses: '202': - $ref: '#/components/responses/GenerateReportResponse' + $ref: '#/components/responses/GenerateNonCRAPrequalificationReportResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -1338,10 +1325,10 @@ paths: - $ref: '#/components/parameters/CustomerIdParameter' - $ref: '#/components/parameters/ReportCallbackUrlParameter' requestBody: - $ref: '#/components/requestBodies/GenerateReportRequest' + $ref: '#/components/requestBodies/GenerateVOIReportRequest' responses: '202': - $ref: '#/components/responses/GenerateReportResponse' + $ref: '#/components/responses/GenerateVOIReportResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -1380,7 +1367,7 @@ paths: $ref: '#/components/requestBodies/GeneratePayrollReportRequest' responses: '202': - $ref: '#/components/responses/GeneratePayrollReportResponse' + $ref: '#/components/responses/GenerateVOEPayrollReportResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -1527,10 +1514,10 @@ paths: - $ref: '#/components/parameters/CustomerIdParameter' - $ref: '#/components/parameters/ReportCallbackUrlParameter' requestBody: - $ref: '#/components/requestBodies/GenerateVOIEPaystubWithStatementReportRequest' + $ref: '#/components/requestBodies/GenerateVOIEPaystubReportRequest' responses: '202': - $ref: '#/components/responses/GenerateVOIEPaystubWithStatementReportResponse' + $ref: '#/components/responses/GenerateVOIEPaystubReportResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -1569,7 +1556,7 @@ paths: $ref: '#/components/requestBodies/GeneratePayrollReportRequest' responses: '202': - $ref: '#/components/responses/GeneratePayrollReportResponse' + $ref: '#/components/responses/RefreshVOIEPayrollReportResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -1806,7 +1793,7 @@ paths: - $ref: '#/components/parameters/RequiredToDateParameter' - $ref: '#/components/parameters/IncludePendingParameter' requestBody: - $ref: '#/components/requestBodies/GenerateReportRequest' + $ref: '#/components/requestBodies/GenerateTransactionsReportRequest' responses: '202': $ref: '#/components/responses/GenerateTransactionsReportResponse' @@ -2071,6 +2058,9 @@ paths: Note: this is a premium service, billable per every successful API call. + _Supported account types_: "checking", "savings", "moneyMarket", "loan" + + _Supported regions_: ![🇺🇸](https://flagcdn.com/20x15/us.png) operationId: GetAccountACHDetails parameters: @@ -2080,7 +2070,7 @@ paths: '200': $ref: '#/components/responses/GetAccountACHDetailsResponse' '400': - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: '#/components/responses/GetAccountACHDetailsBadRequestErrorResponse' '401': $ref: '#/components/responses/UnauthorizedErrorResponse' '404': @@ -2109,7 +2099,7 @@ paths: - $ref: '#/components/parameters/PurposeParameter' responses: '200': - $ref: '#/components/responses/GetReportByCustomerResponse' + $ref: '#/components/responses/GetReportResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -2140,7 +2130,7 @@ paths: - $ref: '#/components/parameters/OnBehalfOfParameter' responses: '200': - $ref: '#/components/responses/GetReportByConsumerResponse' + $ref: '#/components/responses/GetReportResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -2169,7 +2159,7 @@ paths: - $ref: '#/components/parameters/PurposeParameter' responses: '200': - $ref: '#/components/responses/GetReportsByCustomerIdResponse' + $ref: '#/components/responses/GetReportsResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -2200,7 +2190,7 @@ paths: - $ref: '#/components/parameters/ConsumerIdParameter' responses: '200': - $ref: '#/components/responses/GetReportsByConsumerIdResponse' + $ref: '#/components/responses/GetReportsResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -2245,6 +2235,9 @@ paths: Note: this is a premium service, billable per every successful API call. + _Supported account types_: "checking", "savings", "moneyMarket", "cd" + + _Supported regions_: ![🇺🇸](https://flagcdn.com/20x15/us.png) operationId: GetAvailableBalanceLive parameters: @@ -2254,7 +2247,7 @@ paths: '200': $ref: '#/components/responses/GetAvailableBalanceLiveResponse' '400': - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: '#/components/responses/GetAvailableBalanceLiveBadRequestErrorResponse' '401': $ref: '#/components/responses/UnauthorizedErrorResponse' '404': @@ -2274,7 +2267,10 @@ paths: Note: this is a premium service, billable per every successful API call. - Enrollment is required. + Enrollment is required. + + + _Supported account types_: "checking", "savings", "moneyMarket", "cd" _Supported regions_: ![🇺🇸](https://flagcdn.com/20x15/us.png) @@ -2286,7 +2282,7 @@ paths: '200': $ref: '#/components/responses/GetAvailableBalanceResponse' '400': - $ref: '#/components/responses/BadRequestErrorResponse' + $ref: '#/components/responses/GetAvailableBalanceBadRequestErrorResponse' '401': $ref: '#/components/responses/UnauthorizedErrorResponse' '404': @@ -2318,10 +2314,10 @@ paths: - $ref: '#/components/parameters/CustomerIdParameter' - $ref: '#/components/parameters/ReportCallbackUrlParameter' requestBody: - $ref: '#/components/requestBodies/GenerateReportRequest' + $ref: '#/components/requestBodies/GenerateCashFlowReportRequest' responses: '202': - $ref: '#/components/responses/GenerateReportResponse' + $ref: '#/components/responses/GenerateCashFlowReportBusinessResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -2365,10 +2361,10 @@ paths: - $ref: '#/components/parameters/CustomerIdParameter' - $ref: '#/components/parameters/ReportCallbackUrlParameter' requestBody: - $ref: '#/components/requestBodies/GenerateReportRequest' + $ref: '#/components/requestBodies/GenerateCashFlowReportRequest' responses: '202': - $ref: '#/components/responses/GenerateReportResponse' + $ref: '#/components/responses/GenerateCashFlowReportPersonalResponse' '400': $ref: '#/components/responses/BadRequestErrorResponse' '401': @@ -2632,36 +2628,96 @@ components: content: application/json: schema: {} - GenerateReportRequest: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ReportConstraints' GeneratePayrollReportRequest: required: true content: application/json: schema: $ref: '#/components/schemas/PayrollReportConstraints' + examples: + GeneratePayrollReportRequestExample: + $ref: '#/components/examples/GeneratePayrollReportRequestExample' GeneratePayStatementReportRequest: required: true content: application/json: schema: $ref: '#/components/schemas/PayStatementReportConstraints' + examples: + GeneratePayStatementReportRequestExample: + $ref: '#/components/examples/GeneratePayStatementReportRequestExample' + GenerateCashFlowReportRequest: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CashFlowReportConstraints' + examples: + GenerateCashFlowReportRequestExample: + $ref: '#/components/examples/GenerateCashFlowReportRequestExample' + GenerateTransactionsReportRequest: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TransactionsReportConstraints' + examples: + GenerateTransactionsReportRequestExample: + $ref: '#/components/examples/GenerateTransactionsReportRequestExample' + GenerateVOAReportRequest: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/VOAReportConstraints' + examples: + GenerateVOAReportRequestExample: + $ref: '#/components/examples/GenerateVOAReportRequestExample' + GenerateVOAWithIncomeReportRequest: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/VOAWithIncomeReportConstraints' + examples: + GenerateVOAWithIncomeReportRequestExample: + $ref: '#/components/examples/GenerateVOAWithIncomeReportRequestExample' + GeneratePrequalificationReportRequest: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PrequalificationReportConstraints' + examples: + GeneratePrequalificationReportRequestExample: + $ref: '#/components/examples/GeneratePrequalificationReportRequestExample' + GenerateVOIReportRequest: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/VOIReportConstraints' + examples: + GenerateVOIReportRequestExample: + $ref: '#/components/examples/GenerateVOIReportRequestExample' GenerateVOIEPaystubWithTXVerifyReportRequest: required: true content: application/json: schema: $ref: '#/components/schemas/VOIEWithTXVerifyReportConstraints' - GenerateVOIEPaystubWithStatementReportRequest: + examples: + GenerateVOIEPaystubWithTXVerifyReportRequestExample: + $ref: '#/components/examples/GenerateVOIEPaystubWithTXVerifyReportRequestExample' + GenerateVOIEPaystubReportRequest: required: true content: application/json: schema: - $ref: '#/components/schemas/VOIEWithStatementReportConstraints' + $ref: '#/components/schemas/VOIEReportConstraints' + examples: + GenerateVOIEPaystubReportRequestExample: + $ref: '#/components/examples/GenerateVOIEPaystubReportRequestExample' StoreCustomerPayStatementRequest: required: true content: @@ -2674,12 +2730,18 @@ components: application/json: schema: $ref: '#/components/schemas/VOETransactionsReportConstraints' + examples: + GenerateVOETransactionsReportRequestExample: + $ref: '#/components/examples/GenerateVOETransactionsReportRequestExample' GenerateStatementReportRequest: required: true content: application/json: schema: $ref: '#/components/schemas/StatementReportConstraints' + examples: + GenerateStatementReportRequestExample: + $ref: '#/components/examples/GenerateStatementReportRequestExample' CreateTxPushTestTransactionRequest: required: true content: @@ -2870,7 +2932,7 @@ components: application/json: schema: $ref: '#/components/schemas/BrandingWrapper' - GenerateReportResponse: + GenerateVOEPayrollReportResponse: description: "The report is being generated. When finished, a notification will be sent to the specified callback URL (Report Listener Service) and the @@ -2881,8 +2943,11 @@ components: content: application/json: schema: - $ref: '#/components/schemas/ReportData' - GeneratePayrollReportResponse: + $ref: '#/components/schemas/PayrollReportAck' + examples: + GenerateVOEPayrollReportResponseExample: + $ref: '#/components/examples/GenerateVOEPayrollReportResponseExample' + RefreshVOIEPayrollReportResponse: description: "The report is being generated. When finished, a notification will be sent to the specified callback URL (Report Listener Service) and the @@ -2893,7 +2958,10 @@ components: content: application/json: schema: - $ref: '#/components/schemas/PayrollReportData' + $ref: '#/components/schemas/PayrollReportAck' + examples: + RefreshVOIEPayrollReportResponseExample: + $ref: '#/components/examples/RefreshVOIEPayrollReportResponseExample' GenerateTransactionsReportResponse: description: "The report is being generated. When finished, a notification will be @@ -2905,31 +2973,128 @@ components: content: application/json: schema: - $ref: '#/components/schemas/TransactionsReportData' - GetReportByCustomerResponse: - description: The report was successfully retrieved + $ref: '#/components/schemas/TransactionsReportAck' + examples: + GenerateTransactionsReportResponseExample: + $ref: '#/components/examples/GenerateTransactionsReportResponseExample' + GenerateVOAReportResponse: + description: + "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." content: application/json: schema: - $ref: '#/components/schemas/AuditableReport' - GetReportsByCustomerIdResponse: - description: The reports summaries were successfully retrieved + $ref: '#/components/schemas/VOAReportAck' + examples: + GenerateVOAReportResponseExample: + $ref: '#/components/examples/GenerateVOAReportResponseExample' + GenerateVOAWithIncomeReportResponse: + description: + "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." content: application/json: schema: - $ref: '#/components/schemas/ReportSummaries' - GetReportsByConsumerIdResponse: - description: The reports summaries were successfully retrieved + $ref: '#/components/schemas/VOAWithIncomeReportAck' + examples: + GenerateVOAWithIncomeReportResponseExample: + $ref: '#/components/examples/GenerateVOAWithIncomeReportResponseExample' + GenerateCRAPrequalificationReportResponse: + description: + "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." content: application/json: schema: - $ref: '#/components/schemas/ReportSummaries' - GetReportByConsumerResponse: + $ref: '#/components/schemas/PrequalificationReportAck' + examples: + GenerateCRAPrequalificationReportResponseExample: + $ref: '#/components/examples/GenerateCRAPrequalificationReportResponseExample' + GenerateNonCRAPrequalificationReportResponse: + description: + "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." + content: + application/json: + schema: + $ref: '#/components/schemas/PrequalificationReportAck' + examples: + GenerateNonCRAPrequalificationReportResponseExample: + $ref: '#/components/examples/GenerateNonCRAPrequalificationReportResponseExample' + GenerateVOIReportResponse: + description: + "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." + content: + application/json: + schema: + $ref: '#/components/schemas/VOIReportAck' + examples: + GenerateVOIReportResponseExample: + $ref: '#/components/examples/GenerateVOIReportResponseExample' + GetReportResponse: description: The report was successfully retrieved content: application/json: schema: - $ref: '#/components/schemas/AuditableReport' + $ref: '#/components/schemas/Report' + examples: + CashFlowPersonalReportExample: + $ref: '#/components/examples/CashFlowPersonalReportExample' + CashFlowBusinessReportExample: + $ref: '#/components/examples/CashFlowBusinessReportExample' + PrequalificationCRAReportExample: + $ref: '#/components/examples/PrequalificationCRAReportExample' + PrequalificationNonCRAReportExample: + $ref: '#/components/examples/PrequalificationNonCRAReportExample' + PayStatementReportExample: + $ref: '#/components/examples/PayStatementReportExample' + StatementReportExample: + $ref: '#/components/examples/StatementReportExample' + TransactionsReportExample: + $ref: '#/components/examples/TransactionsReportExample' + VOAReportExample: + $ref: '#/components/examples/VOAReportExample' + VOAWithIncomeReportExample: + $ref: '#/components/examples/VOAWithIncomeReportExample' + VOEPayrollReportExample: + $ref: '#/components/examples/VOEPayrollReportExample' + VOETransactionsReportExample: + $ref: '#/components/examples/VOETransactionsReportExample' + VOIReportExample: + $ref: '#/components/examples/VOIReportExample' + VOIEPayrollReportExample: + $ref: '#/components/examples/VOIEPayrollReportExample' + VOIEPaystubReportExample: + $ref: '#/components/examples/VOIEPaystubReportExample' + VOIEPaystubWithTXVerifyReportExample: + $ref: '#/components/examples/VOIEPaystubWithTXVerifyReportExample' + GetReportsResponse: + description: The reports summaries were successfully retrieved + content: + application/json: + schema: + $ref: '#/components/schemas/ReportSummaries' GetAssetByCustomerIDResponse: description: The asset was successfully downloaded content: @@ -2961,7 +3126,10 @@ components: content: application/json: schema: - $ref: '#/components/schemas/VOETransactionsReportData' + $ref: '#/components/schemas/VOETransactionsReportAck' + examples: + GenerateVOETransactionsReportResponseExample: + $ref: '#/components/examples/GenerateVOETransactionsReportResponseExample' GeneratePayStatementReportResponse: description: "The report is being generated. When finished, a notification will be @@ -2973,7 +3141,40 @@ components: content: application/json: schema: - $ref: '#/components/schemas/PayStatementReportData' + $ref: '#/components/schemas/PayStatementReportAck' + examples: + GeneratePayStatementReportResponseExample: + $ref: '#/components/examples/GeneratePayStatementReportResponseExample' + GenerateCashFlowReportBusinessResponse: + description: + "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." + content: + application/json: + schema: + $ref: '#/components/schemas/CashFlowReportAck' + examples: + GenerateCashFlowReportBusinessResponseExample: + $ref: '#/components/examples/GenerateCashFlowReportBusinessResponseExample' + GenerateCashFlowReportPersonalResponse: + description: + "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." + content: + application/json: + schema: + $ref: '#/components/schemas/CashFlowReportAck' + examples: + GenerateCashFlowReportPersonalResponseExample: + $ref: '#/components/examples/GenerateCashFlowReportPersonalResponseExample' GenerateVOIEPaystubWithTXVerifyReportResponse: description: "The report is being generated. When finished, a notification will be @@ -2985,8 +3186,11 @@ components: content: application/json: schema: - $ref: '#/components/schemas/VOIEPaystubWithTXVerifyReportData' - GenerateVOIEPaystubWithStatementReportResponse: + $ref: '#/components/schemas/VOIEPaystubWithTXVerifyReportAck' + examples: + GenerateVOIEPaystubWithTXVerifyReportResponseExample: + $ref: '#/components/examples/GenerateVOIEPaystubWithTXVerifyReportResponseExample' + GenerateVOIEPaystubReportResponse: description: "The report is being generated. When finished, a notification will be sent to the specified callback URL (Report Listener Service) and the @@ -2997,7 +3201,10 @@ components: content: application/json: schema: - $ref: '#/components/schemas/VOIEPaystubWithStatementReportData' + $ref: '#/components/schemas/VOIEPaystubReportAck' + examples: + GenerateVOIEPaystubReportResponseExample: + $ref: '#/components/examples/GenerateVOIEPaystubReportResponseExample' GenerateStatementReportResponse: description: "The report is being generated. When finished, a notification will be @@ -3009,7 +3216,10 @@ components: content: application/json: schema: - $ref: '#/components/schemas/StatementReportData' + $ref: '#/components/schemas/StatementReportAck' + examples: + GenerateStatementReportResponseExample: + $ref: '#/components/examples/GenerateStatementReportResponseExample' GetCustomerTransactionsResponse: description: The transactions were successfully retrieved content: @@ -3133,6 +3343,8 @@ components: $ref: '#/components/examples/InvalidExperienceFieldExample' GenericBadRequestExample: $ref: '#/components/examples/GenericBadRequestExample' + AccountTypeNotSupportedExample: + $ref: '#/components/examples/AccountTypeNotSupportedExample' TooManyRequestsErrorResponse: description: The service can't accept more requests or is not available from the @@ -3165,6 +3377,51 @@ components: examples: ConsumerExistsConflictExample: $ref: '#/components/examples/ConsumerExistsConflictExample' + GetAccountACHDetailsBadRequestErrorResponse: + description: The request was rejected + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + examples: + MissingFieldExample: + $ref: '#/components/examples/MissingFieldExample' + InvalidFieldExample: + $ref: '#/components/examples/InvalidFieldExample' + GenericBadRequestExample: + $ref: '#/components/examples/GenericBadRequestExample' + AccountTypeNotSupportedExample: + $ref: '#/components/examples/AccountTypeNotSupportedExample' + GetAvailableBalanceLiveBadRequestErrorResponse: + description: The request was rejected + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + examples: + MissingFieldExample: + $ref: '#/components/examples/MissingFieldExample' + InvalidFieldExample: + $ref: '#/components/examples/InvalidFieldExample' + GenericBadRequestExample: + $ref: '#/components/examples/GenericBadRequestExample' + AccountTypeNotSupportedExample: + $ref: '#/components/examples/AccountTypeNotSupportedExample' + GetAvailableBalanceBadRequestErrorResponse: + description: The request was rejected + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + examples: + MissingFieldExample: + $ref: '#/components/examples/MissingFieldExample' + InvalidFieldExample: + $ref: '#/components/examples/InvalidFieldExample' + GenericBadRequestExample: + $ref: '#/components/examples/GenericBadRequestExample' + AccountTypeNotSupportedExample: + $ref: '#/components/examples/AccountTypeNotSupportedExample' examples: MissingFinicityAppKeyExample: value: @@ -3178,6 +3435,10 @@ components: value: code: 14020 message: Bad request. + AccountTypeNotSupportedExample: + value: + code: 14020 + message: 'Bad request. (Account type not supported).' MissingFieldExample: value: code: '10010' @@ -3253,77 +3514,2252 @@ components: value: code: 11000 message: 'A consumer already exists for customer 4025024821' - parameters: - AssetIdParameter: - description: The asset ID - name: assetId - in: path - required: true - schema: - $ref: '#/components/schemas/AssetId' - example: 097545c5-1c2a-4f20-a5ef-77f0820344c9-2018601178 - CustomerIdParameter: - description: A customer ID - name: customerId - in: path - required: true - schema: - $ref: '#/components/schemas/CustomerId' - example: '1005061234' - AccountStatusParameter: - description: A filter to fetch account in the given status - name: status - in: query - required: false - schema: - $ref: '#/components/schemas/AccountStatus' - example: pending - AnalyticIdParameter: - description: The analytic ID - name: analyticsId - in: path - required: true - schema: - $ref: '#/components/schemas/AnalyticId' - example: CA-5dfbaa3ac-5321 - TransactionIdParameter: - description: A transaction ID - name: transactionId - in: path - required: true - schema: - $ref: '#/components/schemas/TransactionId' - example: 21284820852 - IncludePendingParameter: - description: If pending transactions must be included - name: includePending - in: query - required: false - schema: - $ref: '#/components/schemas/IncludePending' - example: false - ApplicationIdPathParameter: - description: The application ID - name: applicationId - in: path - required: true - schema: - $ref: '#/components/schemas/ApplicationId' - example: '123456789' - ApplicationIdQueryParameter: - description: The application ID - name: applicationId - in: query - required: false - schema: - $ref: '#/components/schemas/ApplicationId' - example: '123456789' - AppRegistrationStatusParameter: - description: Look up app registration requests by status - name: status - in: query - required: false - schema: + GeneratePayrollReportRequestExample: + value: + payrollData: + ssn: '999990000' + dob: '315576000' + reportId: abcdefghijkl-voiepayroll + reportCustomFields: + - label: loanID + value: '12345' + shown: true + payStatementsFromDate: 1580558400 + GenerateVOEPayrollReportResponseExample: + value: + id: 41h4nzppn47u-voepayroll + portfolioId: 9qud7dtuzbew-3-port + customerType: active + customerId: 1011140000 + requestId: 7a7qyps2iy + requesterName: Decisioning API + createdDate: 1579819592 + title: Finicity Verification of Employment - Payroll + consumerId: 656cf7083c5c06e0c125a698579f0000 + consumerSsn: '6789' + constraints: + payrollData: + payrollDataRetrievalId: hahvhe2k0000 + employerNames: + - ACME INC + reportId: abcdefghijkl-voiepayroll + payStatementsFromDate: 1580558400 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + type: voePayroll + status: inProgress + RefreshVOIEPayrollReportResponseExample: + value: + id: 123456789012-voiepayroll + customerId: 1011140000 + consumerId: 656cf7083c5c06e0c125a698579f0000 + consumerSsn: '6789' + requesterName: Decisioning API + requestId: 7a7qyps2iy + type: voiePayroll + status: inProgress + createdDate: 1579819592 + constraints: + payrollData: + payrollDataRetrievalId: hahvhe2k0000 + employerNames: + - ACME INC + reportId: abcdefghijkl-voiepayroll + payStatementsFromDate: 1580558400 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + customerType: active + title: Finicity Verification of Income and Employment - Payroll + portfolioId: 9qud7dtuzbew-2-port + GeneratePayStatementReportRequestExample: + value: + paystatementReport: + assetIds: + - 6f8fb0a0-e882-4f57-b672-cf53f1397581 + extractEarnings: true + extractDeductions: false + extractDirectDeposit: true + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + GeneratePayStatementReportResponseExample: + value: + id: y0ejausptjg1-paystatement + portfolioId: spd8aehuw63i-10-port + customerType: active + customerId: 1003413624 + requestId: 8wy5htqg8u + requesterName: Decisioning API + createdDate: 1588350269 + title: Finicity Pay Statement Extraction Report + consumerId: 4089f408963dd6b90b28a935e9903c0e + consumerSsn: '6789' + constraints: + paystatementReport: + assetIds: + - 6f8fb0a0-e882-4f57-b672-cf53f1397581 + extractEarnings: true + extractDeductions: false + extractDirectDeposit: true + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + type: paystatement + status: inProgress + GenerateStatementReportRequestExample: + value: + statementReportData: + accountId: 1000076901 + index: 1 + reportCustomFields: + - label: loanID + value: '123456' + shown: true + GenerateStatementReportResponseExample: + value: + id: 38dknche83oh-statement + portfolioId: sy7aa68w2ugx-1-port + customerType: active + customerId: 1010560999 + requestId: ny7x32stfq + requesterName: Demo + createdDate: 1596226182 + title: Finicity Statement Report + consumerId: 555595ec74c8ec57adf44dadddb6a35 + consumerSsn: '1234' + constraints: + statementReportData: + accountId: 1000076901 + index: 1 + reportCustomFields: + - label: loanID + value: '123456' + shown: true + type: statement + status: inProgress + GenerateCashFlowReportRequestExample: + value: + accountIds: '1000535275' + incomeStreamConfidenceMinimum: 50 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + showNsf: false + fromDate: 1580558400 + GenerateCashFlowReportBusinessResponseExample: + value: + id: 383z55zudewm-cfrb + customerType: active + customerId: 1275320 + requestId: 7a7qyps2iy + requesterName: Decisioning API + createdDate: 1579819592 + title: Finicity Cash Flow Report - Business + consumerId: 3f7ff2cf0ffb3d0cd59875e070c9b1d4 + consumerSsn: '1234' + constraints: + accountIds: + - '1000535275' + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + type: cfrb + status: inProgress + GenerateCashFlowReportPersonalResponseExample: + value: + id: 383z51zurqwo-cfrp + customerType: active + customerId: 1275320 + requestId: 7a7qyps2iy + requesterName: Decisioning API + createdDate: 1579819592 + title: Finicity Cash Flow Report - Personal + consumerId: 3f7ff2cf0ffb3d0cd59875e070c9b1d4 + consumerSsn: '1234' + constraints: + accountIds: + - '1000535275' + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + type: cfrp + status: inProgress + GenerateTransactionsReportRequestExample: + value: + accountIds: 1027339038 1027339039 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + fromDate: 1580558400 + GenerateTransactionsReportResponseExample: + value: + id: dnuru2ua2trs-transactions + portfolioId: hupvwpdzr9dq-16-port + customerType: testing + customerId: 1000018865 + requestID: ky2nhsufhv + requesterName: Decisioning API Tests + createdDate: 1594678007 + title: Finicity Transactions Report + consumerId: a925b07c9e028c680ad9c1d18d2e7199 + consumerSsn: '6789' + constraints: + accountIds: + - '1000075473' + fromDate: 1578952809 + toDate: 1594677609 + includePending: true + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + type: transactions + status: inProgress + GenerateVOAReportRequestExample: + value: + accountIds: '1000535275' + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + showNsf: false + fromDate: 1580558400 + GenerateVOAReportResponseExample: + value: + id: u4hstnnak45g + portfolioId: dyr6qvqd2yhb-1-port + customerType: active + customerId: 1000006677 + requestId: sfb7xp439w + requesterName: Decisioning API + createdDate: 1588350269 + title: Finicity Verification of Assets + consumerId: ac39e237c7619a4ecf014b8d399c0696 + consumerSsn: '6789' + constraints: + accountIds: + - '1000535275' + - '1000535276' + fromDate: 1577986990 + showNsf: false + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + type: voa + status: inProgress + GenerateVOAWithIncomeReportRequestExample: + value: + accountIds: '1000535275' + fromDate: 1580558400 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + showNsf: false + incomeStreamConfidenceMinimum: 50 + GenerateVOAWithIncomeReportResponseExample: + value: + id: u4hstnyak45g + portfolioId: dyr6weqd2yhb-1-port + customerType: active + customerId: 1000006677 + requestId: sfb7x1we9w + requesterName: Decisioning API + createdDate: 1588350269 + title: Verification of Asset and Income - Transactions + consumerId: ac39e237c7619a4ecf014b8d399c0696 + consumerSsn: '6789' + constraints: + accountIds: + - '1000535275' + fromDate: 1580558400 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + showNsf: false + incomeStreamConfidenceMinimum: 50 + type: voaHistory + status: inProgress + GeneratePrequalificationReportRequestExample: + value: + accountIds: '1000535275' + fromDate: 1580558400 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + showNsf: false + GenerateCRAPrequalificationReportResponseExample: + value: + id: 88w4fbssrbja-prequalvoa + portfolioId: 0whcism47a34-5-port + customerType: active + customerId: 1000006677 + requestId: sfb7xacr9w + requesterName: Decisioning API + createdDate: 1588350269 + title: Asset Ready Report (CRA) + consumerId: cb619e10185177cd92271c4da2df3fa3 + consumerSsn: '6789' + constraints: + accountIds: + - '1000535275' + - '1000535276' + fromDate: 1577986990 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + showNsf: false + type: preQualVoa + status: inProgress + GenerateNonCRAPrequalificationReportResponseExample: + value: + id: rceiqx616awa-assetsummary + portfolioId: 0whcism47ttt-5-port + customerType: active + customerId: 1000006677 + requestId: sfb7xp4iui + requesterName: Decisioning API + createdDate: 1588350269 + title: Asset Ready Report (NON-CRA) + constraints: + accountIds: + - '1000535275' + - '1000535276' + fromDate: 1577986990 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + showNsf: false + type: assetSummary + status: inProgress + GenerateVOETransactionsReportRequestExample: + value: + reportId: j7k8qbgwsa7d-voietxverify + accountIds: '123456789' + fromDate: 1580558400 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + incomeStreamConfidenceMinimum: 50 + GenerateVOETransactionsReportResponseExample: + value: + id: u4hstny1k25g-voetransactions + portfolioId: dyr6weqd2yhb-2-port + customerType: active + customerId: 1000006677 + requestId: sfb7x1we9w + requesterName: Decisioning API + createdDate: 1588350269 + title: Finicity Verification Employment - Transactions + consumerId: ac39e237c7619a4ecf014b8d399c0696 + consumerSsn: '6789' + constraints: + reportId: j7k8qbgwsa7d-voietxverify + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + type: voeTransactions + status: inProgress + GenerateVOIEPaystubReportRequestExample: + value: + voieWithStatementData: + assetIds: + - d50ed92f-543b-431c-8286-c8b8f6556679 + reportCustomFields: + - label: loanID + value: '123456' + shown: true + - label: trackingID + value: '5555' + shown: true + GenerateVOIEPaystubReportResponseExample: + value: + id: 2f3z55zuwewm-voietxverify + portfolioId: 9qud7dtuzbew-13-port + customerType: active + customerId: 1275320 + requestId: 7a7qyps2iy + requesterName: Decisioning API + createdDate: 1579819592 + title: Verification of Income and Employment - Paystub + consumerId: 3f7ff2cf0ffb3d0cd59875e070c9b1d4 + consumerSsn: '6789' + constraints: + voieWithStatementData: + assetIds: + - d50ed92f-543b-431c-8286-c8b8f6556679 + extractEarnings: true + extractDeductions: false + extractDirectDeposit: true + reportCustomFields: + - label: loanID + value: '123456' + shown: true + - label: trackingID + value: '5555' + shown: true + type: voieTxVerify + status: inProgress + GenerateVOIEPaystubWithTXVerifyReportRequestExample: + value: + accountIds: '1028361677' + voieWithInterviewData: + txVerifyInterview: + - assetId: 7eb57060-6d98-4449-992d-4dd4490448f3-1236011097 + reportCustomFields: + - label: loanID + value: '123456' + shown: true + GenerateVOIEPaystubWithTXVerifyReportResponseExample: + value: + id: 2f3z55zuwewm-voietxverify + customerId: 1275320 + consumerId: 3f7ff2cf0ffb3d0cd59875e070c9b1d4 + consumerSsn: '6789' + requesterName: Decisioning API + requestId: 7a7qyps2iy + type: voieTxVerify + status: inProgress + createdDate: 1579819592 + constraints: + accountIds: + - '1000535275' + voieWithInterviewData: + txVerifyInterview: + - assetId: 6f8fb0a0-e882-4f57-b672-cf53f1397581 + accounts: [] + extractEarnings: true + extractDeductions: false + extractDirectDeposit: true + reportCustomFields: + - label: loanID + value: '123456' + shown: true + customerType: active + title: + Finicity Verification of Income and Employment - Paystub (with + TXVerify) + portfolioId: 9qud7dtuzbew-2-port + GenerateVOIReportRequestExample: + value: + accountIds: 1000535275 1000535276 + fromDate: 1577986990 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + incomeStreamConfidenceMinimum: 50 + GenerateVOIReportResponseExample: + value: + id: u4hstnnaewetr-voi + portfolioId: dyr6qvqd2erw-1-port + customerType: active + customerId: 1000006677 + requestId: sfb7xp4wer + requesterName: Decisioning API + createdDate: 1588350269 + title: Finicity Verification of Income + consumerId: ac39e237c7619a4ecf014b8d399c0696 + consumerSsn: '6789' + constraints: + accountIds: + - '1000535275' + - '1000535276' + fromDate: 1577986990 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + type: voi + status: inProgress + CashFlowPersonalReportExample: + summary: Cash Flow Report - Personal + value: + id: sd1j45yn37wr-cfrp + portfolioId: igi5kj6hh58y-1-port + customerType: testing + customerId: '5555' + requestId: xtw6tjemt6 + title: Finicity Cash Flow Report - Personal + consumerId: 555595ec74c8ec57adf44dadddb6a35 + consumerSsn: '1111' + requesterName: Decisioning API Tests + type: cfrp + status: success + createdDate: 1575666823 + startDate: 1512594823 + endDate: 1575666823 + days: '730' + seasoned: true + institutions: + - id: '102105' + name: FinBank Profiles + urlHomeApp: http://www.finbank.com + accounts: + - id: '6681984' + ownerName: PATRICK & LORRAINE PURCHASER + ownerAddress: 7195 BELMONT ST. PARLIN, NJ 08859 + name: Checking + number: XX1111 + type: checking + aggregationStatusCode: '0' + currentBalance: 100000 + availableBalance: 1000 + balanceDate: 1614880526 + transactions: + - id: '100671406523' + amount: -81.7 + postedDate: 1614859200 + description: TMOBILE*AUTO PAY + normalizedPayee: T-Mobile + institutionTransactionId: '0000000000' + category: Mobile Phone + cashFlowBalance: + monthlyCashFlowBalances: + - month: 1551423600 + minDailyBalance: -65894.54 + maxDailyBalance: -62196.98 + averageDailyBalance: -64594.87 + standardDeviationOfDailyBalance: '1099' + numberOfDaysNegativeBalance: '28' + numberOfDaysPositiveBalance: '0' + minDailyBalance: 3479.39 + maxDailyBalance: 3479.39 + twelveMonthAverageDailyBalance: 3479.39 + sixMonthAverageDailyBalance: 3479.39 + twoMonthAverageDailyBalance: 3479.39 + twelveMonthStandardDeviationOfDailyBalance: '20' + sixMonthStandardDeviationOfDailyBalance: '20' + twoMonthStandardDeviationOfDailyBalance: '20' + numberDaysNegativeBalance: '6' + numberOfDaysPositiveBalance: '0' + cashFlowCredit: + monthlyCashFlowCredits: + - month: 1551423600 + numberOfCredits: '3' + totalCreditsAmount: 5000.29 + largestCredit: 2182.34 + numberOfCreditsLessTransfers: '3' + totalCreditsAmountLessTransfers: 5000.29 + averageCreditAmount: 1666.76 + estimatedNumberOfLoanDeposits: '0' + estimatedLoanDepositAmount: 0 + twelveMonthCreditTotal: 1200 + twelveMonthCreditTotalLessTransfers: 1000 + sixMonthCreditTotal: 750 + sixMonthCreditTotalLessTransfers: 500 + twoMonthCreditTotal: 150 + twoMonthCreditTotalLessTransfers: 100 + cashFlowDebit: + monthlyCashFlowDebits: + - month: 1551423600 + numberOfDebits: '12' + totalDebitsAmount: -2063.43 + largestDebit: -953.73 + numberOfDebitsLessTransfers: '12' + totalDebitsAmountLessTransfers: -2063.43 + averageDebitAmount: -171.95 + twelveMonthDebitTotal: 1200 + twelveMonthDebitTotalLessTransfers: 1000 + sixMonthDebitTotal: 750 + sixMonthDebitTotalLessTransfers: 500 + twoMonthDebitTotal: 150 + twoMonthDebitTotalLessTransfers: 100 + cashFlowCharacteristic: + monthlyCashFlowCharacteristics: + - month: 1551423600 + totalCreditsLessTotalDebits: 2936.86 + totalCreditsLessTotalDebitsLessTransfers: 2936.86 + averageTransactionAmount: 195.79 + averageMonthlyNet: 2350 + averageMonthlyNetLessTransfers: 1000 + twelveMonthTotalNet: 12500 + twelveMonthTotalNetLessTransfers: 12400 + sixMonthAverageTotalCreditsLessTotalDebits: 55555 + sixMonthAverageTotalCreditsLessTotalDebitsLessTransfers: 55555 + twoMonthAverageTotalCreditsLessTotalDebits: 55555 + twoMonthAverageTotalCreditsLessTotalDebitsLessTransfers: 55555 + cashFlowBalanceSummary: + monthlyCashFlowBalanceSummaries: + - month: 1551423600 + minDailyBalance: -65894.54 + maxDailyBalance: -62196.98 + averageDailyBalance: -64594.87 + standardDeviationOfDailyBalance: '1099' + numberOfDaysNegativeBalance: '28' + numberOfDaysPositiveBalance: '0' + minDailyBalance: 3479.39 + maxDailyBalance: 3479.39 + twelveMonthAverageDailyBalance: 3479.39 + sixMonthAverageDailyBalance: 3479.39 + twoMonthAverageDailyBalance: 3479.39 + twelveMonthStandardDeviationOfDailyBalance: '20' + sixMonthStandardDeviationOfDailyBalance: '20' + twoMonthStandardDeviationOfDailyBalance: '20' + numberOfDaysNegativeBalance: '6' + numberOfDaysPositiveBalance: '11' + cashFlowCreditSummary: + monthlyCashFlowCreditSummaries: + - month: 1551423600 + numberOfCredits: '3' + totalCreditsAmount: 5000.29 + largestCredit: 2182.34 + numberOfCreditsLessTransfers: '3' + totalCreditsAmountLessTransfers: 5000.29 + averageCreditAmount: 1666.76 + estimatedNumberOfLoanDeposits: '0' + estimatedLoanDepositAmount: 0 + twelveMonthCreditTotal: 1200 + twelveMonthCreditTotalLessTransfers: 1000 + sixMonthCreditTotal: 750 + sixMonthCreditTotalLessTransfers: 500 + twoMonthCreditTotal: 150 + twoMonthCreditTotalLessTransfers: 100 + cashFlowDebitSummary: + monthlyCashFlowDebitSummaries: + - month: 1551423600 + numberOfDebits: '12' + totalDebitsAmount: -2063.43 + largestDebit: -953.73 + numberOfDebitsLessTransfers: '12' + totalDebitsAmountLessTransfers: -2063.43 + averageDebitAmount: -171.95 + twelveMonthDebitTotal: -1200 + twelveMonthDebitTotalLessTransfers: -1000 + sixMonthDebitTotal: -750 + sixMonthDebitTotalLessTransfers: -500 + twoMonthDebitTotal: -150 + twoMonthDebitTotalLessTransfers: -100 + cashFlowCharacteristicsSummary: + monthlyCashFlowCharacteristicSummaries: + - month: 1551423600 + totalCreditsLessTotalDebits: 2936.86 + totalCreditsLessTotalDebitsLessTransfers: 2936.86 + averageTransactionAmount: 195.79 + averageMonthlyNet: 1250 + averageMonthlyNetLessTransfers: 1000 + twelveMonthTotalNet: 12500 + twelveMonthTotalNetLessTransfers: 12400 + sixMonthAverageTotalCreditsLessTotalDebits: 55555 + sixMonthAverageTotalCreditsLessTotalDebitsLessTransfers: 55555 + twoMonthAverageTotalCreditsLessTotalDebits: 55555 + twoMonthAverageTotalCreditsLessTotalDebitsLessTransfers: 55555 + possibleLoanDeposits: + - id: '102105' + name: FinBank Profiles + urlHomeApp: http://www.finbank.com + accounts: + - id: '6681984' + ownerName: PATRICK & LORRAINE PURCHASER + ownerAddress: 7195 BELMONT ST. PARLIN, NJ 08859 + name: Checking + number: XX1111 + type: checking + aggregationStatusCode: '0' + currentBalance: 100000 + availableBalance: 1000 + balanceDate: 1614880526 + transactions: + - id: '100671406523' + amount: -81.7 + postedDate: 1614859200 + description: TMOBILE*AUTO PAY + normalizedPayee: T-Mobile + institutionTransactionId: '0000000000' + category: Mobile Phone + CashFlowBusinessReportExample: + summary: Cash Flow Report - Business + value: + id: sd1j45yn37wr-cfrb + customerType: testing + customerId: '5555' + requestId: xtw6tjemt6 + title: Finicity Cash Flow Report - Business + requesterName: Decisioning API Tests + type: cfrb + status: success + createdDate: 1575666823 + startDate: 1512594823 + endDate: 1575666823 + days: '730' + seasoned: true + institutions: + - id: '102105' + name: FinBank Profiles + urlHomeApp: http://www.finbank.com + accounts: + - id: '6681984' + ownerName: PATRICK & LORRAINE PURCHASER + ownerAddress: 7195 BELMONT ST. PARLIN, NJ 08859 + name: Checking + number: XX1111 + type: checking + aggregationStatusCode: '0' + currentBalance: 100000 + availableBalance: 1000 + balanceDate: 1614880526 + transactions: + - id: '100671406523' + amount: -81.7 + postedDate: 1614859200 + description: TMOBILE*AUTO PAY + normalizedPayee: T-Mobile + institutionTransactionId: '0000000000' + category: Mobile Phone + cashFlowBalance: + monthlyCashFlowBalances: + - month: 1551423600 + minDailyBalance: -65894.54 + maxDailyBalance: -62196.98 + averageDailyBalance: -64594.87 + standardDeviationOfDailyBalance: '1099' + numberOfDaysNegativeBalance: '28' + numberOfDaysPositiveBalance: '0' + minDailyBalance: 3479.39 + maxDailyBalance: 3479.39 + twelveMonthAverageDailyBalance: 3479.39 + sixMonthAverageDailyBalance: 3479.39 + twoMonthAverageDailyBalance: 3479.39 + twelveMonthStandardDeviationOfDailyBalance: '20' + sixMonthStandardDeviationOfDailyBalance: '20' + twoMonthStandardDeviationOfDailyBalance: '20' + numberDaysNegativeBalance: '6' + numberOfDaysPositiveBalance: '0' + cashFlowCredit: + monthlyCashFlowCredits: + - month: 1551423600 + numberOfCredits: '3' + totalCreditsAmount: 5000.29 + largestCredit: 2182.34 + numberOfCreditsLessTransfers: '3' + totalCreditsAmountLessTransfers: 5000.29 + averageCreditAmount: 1666.76 + estimatedNumberOfLoanDeposits: '0' + estimatedLoanDepositAmount: 0 + twelveMonthCreditTotal: 1200 + twelveMonthCreditTotalLessTransfers: 1000 + sixMonthCreditTotal: 750 + sixMonthCreditTotalLessTransfers: 500 + twoMonthCreditTotal: 150 + twoMonthCreditTotalLessTransfers: 100 + cashFlowDebit: + monthlyCashFlowDebits: + - month: 1551423600 + numberOfDebits: '12' + totalDebitsAmount: -2063.43 + largestDebit: -953.73 + numberOfDebitsLessTransfers: '12' + totalDebitsAmountLessTransfers: -2063.43 + averageDebitAmount: -171.95 + twelveMonthDebitTotal: 1200 + twelveMonthDebitTotalLessTransfers: 1000 + sixMonthDebitTotal: 750 + sixMonthDebitTotalLessTransfers: 500 + twoMonthDebitTotal: 150 + twoMonthDebitTotalLessTransfers: 100 + cashFlowCharacteristic: + monthlyCashFlowCharacteristics: + - month: 1551423600 + totalCreditsLessTotalDebits: 2936.86 + totalCreditsLessTotalDebitsLessTransfers: 2936.86 + averageTransactionAmount: 195.79 + averageMonthlyNet: 2350 + averageMonthlyNetLessTransfers: 1000 + twelveMonthTotalNet: 12500 + twelveMonthTotalNetLessTransfers: 12400 + sixMonthAverageTotalCreditsLessTotalDebits: 55555 + sixMonthAverageTotalCreditsLessTotalDebitsLessTransfers: 55555 + twoMonthAverageTotalCreditsLessTotalDebits: 55555 + twoMonthAverageTotalCreditsLessTotalDebitsLessTransfers: 55555 + cashFlowBalanceSummary: + monthlyCashFlowBalanceSummaries: + - month: 1551423600 + minDailyBalance: -65894.54 + maxDailyBalance: -62196.98 + averageDailyBalance: -64594.87 + standardDeviationOfDailyBalance: '1099' + numberOfDaysNegativeBalance: '28' + numberOfDaysPositiveBalance: '0' + minDailyBalance: 3479.39 + maxDailyBalance: 3479.39 + twelveMonthAverageDailyBalance: 3479.39 + sixMonthAverageDailyBalance: 3479.39 + twoMonthAverageDailyBalance: 3479.39 + twelveMonthStandardDeviationOfDailyBalance: '20' + sixMonthStandardDeviationOfDailyBalance: '20' + twoMonthStandardDeviationOfDailyBalance: '20' + numberOfDaysNegativeBalance: '6' + numberOfDaysPositiveBalance: '11' + cashFlowCreditSummary: + monthlyCashFlowCreditSummaries: + - month: 1551423600 + numberOfCredits: '3' + totalCreditsAmount: 5000.29 + largestCredit: 2182.34 + numberOfCreditsLessTransfers: '3' + totalCreditsAmountLessTransfers: 5000.29 + averageCreditAmount: 1666.76 + estimatedNumberOfLoanDeposits: '0' + estimatedLoanDepositAmount: 0 + twelveMonthCreditTotal: 1200 + twelveMonthCreditTotalLessTransfers: 1000 + sixMonthCreditTotal: 750 + sixMonthCreditTotalLessTransfers: 500 + twoMonthCreditTotal: 150 + twoMonthCreditTotalLessTransfers: 100 + cashFlowDebitSummary: + monthlyCashFlowDebitSummaries: + - month: 1551423600 + numberOfDebits: '12' + totalDebitsAmount: -2063.43 + largestDebit: -953.73 + numberOfDebitsLessTransfers: '12' + totalDebitsAmountLessTransfers: -2063.43 + averageDebitAmount: -171.95 + twelveMonthDebitTotal: -1200 + twelveMonthDebitTotalLessTransfers: -1000 + sixMonthDebitTotal: -750 + sixMonthDebitTotalLessTransfers: -500 + twoMonthDebitTotal: -150 + twoMonthDebitTotalLessTransfers: -100 + cashFlowCharacteristicsSummary: + monthlyCashFlowCharacteristicSummaries: + - month: 1551423600 + totalCreditsLessTotalDebits: 2936.86 + totalCreditsLessTotalDebitsLessTransfers: 2936.86 + averageTransactionAmount: 195.79 + averageMonthlyNet: 1250 + averageMonthlyNetLessTransfers: 1000 + twelveMonthTotalNet: 12500 + twelveMonthTotalNetLessTransfers: 12400 + sixMonthAverageTotalCreditsLessTotalDebits: 55555 + sixMonthAverageTotalCreditsLessTotalDebitsLessTransfers: 55555 + twoMonthAverageTotalCreditsLessTotalDebits: 55555 + twoMonthAverageTotalCreditsLessTotalDebitsLessTransfers: 55555 + possibleLoanDeposits: + - id: '102105' + name: FinBank Profiles + urlHomeApp: http://www.finbank.com + accounts: + - id: '6681984' + ownerName: PATRICK & LORRAINE PURCHASER + ownerAddress: 7195 BELMONT ST. PARLIN, NJ 08859 + name: Checking + number: XX1111 + type: checking + aggregationStatusCode: '0' + currentBalance: 100000 + availableBalance: 1000 + balanceDate: 1614880526 + transactions: + - id: '100671406523' + amount: -81.7 + postedDate: 1614859200 + description: TMOBILE*AUTO PAY + normalizedPayee: T-Mobile + institutionTransactionId: '0000000000' + category: Mobile Phone + PrequalificationCRAReportExample: + summary: Prequalification CRA Report + value: + id: 88w4fbssrbja-prequalvoa + customerId: 1000006677 + requesterName: Decisioning API + requestId: sfb7xacr9w + type: preQualVoa + status: success + createdDate: 1588350269 + constraints: + accountIds: + - '1000535275' + - '1000535276' + fromDate: 1577986990 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + showNsf: false + customerType: active + title: Asset Ready Report (CRA) + startDate: 1572625469 + endDate: 1588350269 + days: 230 + seasoned: true + consolidatedAvailableBalance: 1929.57 + portfolioId: 0whcism47a34-5-port + consumerId: ac39e237c7619a4ecf014b8d399c0696 + consumerSsn: '6789' + institutions: + id: 101732 + name: FinBank + urlHomeApp: https://finbank.prod.fini.city/CCBankImageMFA/login.jsp + accounts: + id: 1000023996 + number: '1111' + name: Checking + type: checking + aggregationStatusCode: 0 + balance: 501.24 + balanceDate: 1588350276 + averageMonthlyBalance: 501.02 + totNumberInsufficientFundsFeeDebitTxAccount: 0 + totNumberInsufficientFundsFeeDebitTxOver6MonthsAccount: 0 + totNumberDaysSinceMostRecentInsufficientFundsFeeDebitTxAccount: 120 + transactions: [] + asset: + type: checking + availableBalance: 1000 + currentBalance: 1000 + twoMonthAverage: -1865.96 + sixMonthAverage: -7616.01 + beginningBalance: -17795.6 + details: + interestMarginBalance: -50000 + availableCashBalance: 1500 + vestedBalance: 300000 + currentLoanBalance: 0 + availableBalanceAmount: 1000 + assets: + currentBalance: 1000 + availableBalance: 1000 + twoMonthAverage: -1865.96 + sixMonthAverage: -7616.01 + beginningBalance: -17795.6 + PrequalificationNonCRAReportExample: + summary: Prequalification Non-CRA Report + value: + id: rceiqx616awa-assetsummary + customerId: 1000006677 + requesterName: Decisioning API + requestId: sfb7xp4iui + type: assetSummary + status: success + createdDate: 1588350269 + constraints: + accountIds: + - '1000535275' + - '1000535276' + fromDate: 1577986990 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + showNsf: false + customerType: active + title: Asset Ready Report (non-CRA) + startDate: 1572625469 + endDate: 1588350269 + days: 230 + seasoned: true + consolidatedAvailableBalance: 1929.57 + portfolioId: 0whcism47ttt-5-port + institutions: + - id: 101732 + name: FinBank + urlHomeApp: https://finbank.prod.fini.city/CCBankImageMFA/login.jsp + accounts: + - id: 1000023996 + number: '1111' + ownerName: JOHN DOE + ownerAddress: 924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518 + name: Checking + type: checking + availableBalance: 0 + aggregationStatusCode: 0 + balance: 501.24 + balanceDate: 1588350276 + averageMonthlyBalance: 501.02 + totNumberInsufficientFundsFeeDebitTxAccount: 0 + totNumberInsufficientFundsFeeDebitTxOver6MonthsAccount: 0 + totNumberDaysSinceMostRecentInsufficientFundsFeeDebitTxAccount: 120 + transactions: [] + asset: + type: checking + currentBalance: 1000 + twoMonthAverage: -1865.96 + sixMonthAverage: -7616.01 + beginningBalance: -17795.6 + details: + interestMarginBalance: -50000 + availableCashBalance: 1500 + vestedBalance: 300000 + currentLoanBalance: 0 + availableBalanceAmount: 1000 + assets: + currentBalance: 1000 + twoMonthAverage: -1865.96 + sixMonthAverage: -7616.01 + beginningBalance: -17795.6 + PayStatementReportExample: + summary: Pay Statement Report + value: + id: y0ejausptjg1-paystatement + customerId: 1003413624 + consumerId: 4089f408963dd6b90b28a935e9903c0e + consumerSsn: '6789' + requesterName: Decisioning API + requestId: 8wy5htqg8u + type: paystatement + status: success + createdDate: 1588350269 + constraints: + paystatementReport: + assetIds: + - 6f8fb0a0-e882-4f57-b672-cf53f1397581 + extractEarnings: true + extractDeductions: false + extractDirectDeposit: true + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + customerType: active + title: Finicity Pay Statement Extraction Report + startDate: 1572625469 + endDate: 1588350269 + portfolioId: spd8aehuw63i-10-port + reportStyle: paystatement + numberOfBillableAssets: 1 + assetIds: + - 6f8fb0a0-e882-4f57-b672-cf53f1397581 + payStatementTxVerifyDaoList: + payPeriod: LastPayPeriod + billable: true + assetId: 6f8fb0a0-e882-4f57-b672-cf53f1397581 + payDate: 1559241000 + startDate: 1557513000 + endDate: 1558722600 + netPayCurrent: 1802.22 + netPayYTD: 36000 + grossPayCurrent: 24200 + grossPayYTD: 72600 + payrollProvider: Finicity + employer: + name: Rocket Surgery + employee: + name: Patrick Purchaser + payStat: + name: regular 1 + type: regular + description: regular income + amountCurrent: 6000 + amountYTD: 18000 + deductions: + - name: '401' + description: 401k + amountCurrent: 1744.61 + amountYTD: 1744.6 + type: 401 Deductions + directDeposits: + - financialInstitutionName: America First + accountType: Checking + amountCurrent: 1744.61 + accountLastFour: XX34 + description: Payroll + StatementReportExample: + summary: Statement Report + value: + id: 38dknche83oh-statement + customerType: active + customerId: 1000262464 + requestId: nd4b55a4bg + title: Finicity Statement Report + consumerId: d15ff15ed0c8627eae61c452928d7fc3 + consumerSsn: '1111' + requesterName: Demo + constraints: + statementReportData: + accountId: 1000076901 + index: 1 + reportCustomFields: + - label: loanID + value: '123456' + shown: true + type: statement + status: success + createdDate: 1586189339 + assetId: aaaa3be2-6f1a-4aac-a360-4ad240aa652d + TransactionsReportExample: + summary: Transactions Report + value: + id: '1000075473' + title: Finicity Transactions Report + customerType: testing + customerId: 1000018865 + consumerId: a925b07c9e028c680ad9c1d18d2e7199 + consumerSsn: '6789' + type: transactions + status: success + createdDate: 1594678007 + constraints: + accountIds: + - '1000075473' + fromDate: 1578952809 + toDate: 1594677609 + includePending: true + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + startDate: 1579348800 + endDate: 1594382400 + days: 174 + seasoned: false + portfolioId: wqbh0r2kbv5g-4-port + institutions: + - id: 102105 + name: FinBank Profiles - A + urlHomeApp: http://www.finbank.com + accounts: + - id: 1000075473 + number: '5015' + name: Super Checking + type: checking + availableBalance: 1000 + aggregationStatusCode: 0 + balance: 1000 + balanceDate: 1594676289 + transactions: + - id: 100001490719 + amount: -224 + postedDate: 1594382400 + description: ACH Withdrawal AMERICA FIRST CR + normalizedPayee: America First Cr + institutionTransactionId: '0000000000' + category: Income + memo: AMERICA FIRST CR + - id: 100001490897 + amount: -81.7 + postedDate: 1594123200 + description: TMOBILE*AUTO PAY + normalizedPayee: T-Mobile + institutionTransactionId: '0000000000' + category: Mobile Phone + memo: TMOBILE debit + VOAReportExample: + summary: VOA Report + value: + id: u4hstnnak45g + customerId: 1000006677 + consumerId: ac39e237c7619a4ecf014b8d399c0696 + consumerSsn: '6789' + requesterName: Decisioning API + requestId: sfb7xp439w + type: voa + status: success + createdDate: 1588350269 + constraints: + accountIds: + - '1000535275' + - '1000535276' + fromDate: 1577986990 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + showNsf: false + customerType: active + title: Finicity Verification of Assets + startDate: 1572625469 + endDate: 1588350269 + days: 180 + seasoned: false + consolidatedAvailableBalance: 2345 + portfolioId: dyr6qvqd2yhb-1-port + institutions: + id: 101732 + name: FinBank + urlHomeApp: https://finbank.prod.fini.city/CCBankImageMFA/login.jsp + accounts: + id: 1000023996 + number: '1111' + ownerName: JOHN DOE + ownerAddress: 924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518 + name: Checking + type: checking + availableBalance: 501.24 + aggregationStatusCode: 0 + balance: 501.24 + balanceDate: 1588350276 + averageMonthlyBalance: 501.02 + totNumberInsufficientFundsFeeDebitTxAccount: 0 + totNumberInsufficientFundsFeeDebitTxOver2MonthsAccount: 0 + totNumberDaysSinceMostRecentInsufficientFundsFeeDebitTxAccount: 120 + transactions: + - id: 100000527471 + amount: 22.21 + postedDate: 1582286400 + description: FINICITY INC PAYROLL + memo: Finicity amount credit + normalizedPayee: Finicity + institutionTransactionId: '100000000' + category: Paycheck + bestRepresentation: FINICITY INC PAYROLL + details: + interestMarginBalance: -50000 + availableCashBalance: 1500 + vestedBalance: 300000 + currentLoanBalance: 0 + availableBalanceAmount: 1000 + asset: + currentBalance: 1000 + twoMonthAverage: -1865.96 + sixMonthAverage: -7616.01 + beginningBalance: -17795.6 + assets: + type: checking + availableBalance: 1000 + currentBalance: 1000 + twoMonthAverage: -1865.96 + sixMonthAverage: -7616.01 + beginningBalance: -17795.6 + VOAWithIncomeReportExample: + summary: VOA With Income Report + value: + id: u4hstnyak45g + portfolioId: dyr6weqd2yhb-1-port + customerType: active + customerId: 1000006677 + requestId: sfb7x1we9w + title: Finicity Verification of Asset and Income - Transactions + consumerId: ac39e237c7619a4ecf014b8d399c0696 + consumerSsn: '6789' + requesterName: Decisioning API + constraints: + accountIds: + - '1000535275' + - '1000535276' + fromDate: 1577986990 + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + - label: loanType + value: car + shown: false + - label: vendorID + value: 1613aa23 + shown: true + - label: vendorName + value: PSC Finance + shown: false + showNsf: false + type: voaHistory + status: success + createdDate: 1588350269 + startDate: 1572625469 + endDate: 1588350269 + days: 230 + seasoned: true + institutions: + id: 101732 + name: FinBank + urlHomeApp: https://finbank.prod.fini.city/CCBankImageMFA/login.jsp + accounts: + id: 6001966289 + number: '1111' + ownerName: JOHN DOE + ownerAddress: 924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518 + name: Checking + type: checking + currency: USD + aggregationStatusCode: 0 + balance: 509.37 + balanceDate: 1652114265 + averageMonthlyBalance: 507.37 + totNumberInsufficientFundsFeeDebitTxAccount: 0 + totNumberDaysSinceMostRecentInsufficientFundsFeeDebitTxAccount: 0 + transactions: + id: 100000527471 + amount: 22.21 + postedDate: 1582286400 + description: FINICITY INC PAYROLL + normalizedPayee: Finicity + institutionTransactionId: '100000000' + category: Paycheck + asset: + type: checking + currentBalance: 1000 + twoMonthAverage: -1865.96 + sixMonthAverage: -7616.01 + beginningBalance: -17795.6 + details: + interestMarginBalance: -50000 + availableCashBalance: 1500 + vestedBalance: 300000 + currentLoanBalance: 0 + availableBalanceAmount: 1000 + incomeStreams: + id: dens28i3vsch-voah + name: none + status: ACTIVE + estimateInclusion: MODERATE + confidence: 70 + cadence: + startDate: 1577986990 + stopDate: 1587986990 + days: 14 + netMonthly: + - month: 1522562400 + net: 2004.77 + netAnnual: 110475.7 + projectedNetAnnual: 0 + estimatedGrossAnnual: + projectedGrossAnnual: 151609 + averageMonthlyIncomeNet: 9206.31 + incomeStreamMonths: 18 + transactions: + - id: 100000527471 + amount: 22.21 + postedDate: 1582286400 + description: FINICITY INC PAYROLL + normalizedPayee: Finicity + institutionTransactionId: '100000000' + category: Paycheck + assets: + currentBalance: 1000 + twoMonthAverage: -1865.96 + sixMonthAverage: -7616.01 + beginningBalance: -17795.6 + consolidatedAvailableBalance: 2345 + VOEPayrollReportExample: + summary: VOE - Payroll Report + value: + id: 41h4nzppn47u-voepayroll + portfolioId: 9qud7dtuzbew-3-port + createdDate: 1579819592 + requesterName: Decisioning API + requestId: 7a7qyps2iy + customerType: active + customerId: 1275320 + consumerId: 3f7ff2cf0ffb3d0cd59875e070c9b1d4 + consumerSsn: '6789' + type: voePayroll + title: Verification of Employment - Payroll + status: success + constraints: + payrollData: + payrollDataRetrievalId: hahvhe2k0000 + employerNames: + - ACME INC + reportId: abcdefghijkl-voiepayroll + employmentHistory: + - asOfDate: 1596175200 + employerName: ACME INC + payrollSource: finPayroll + employee: + name: John Doe Smith + givenName: John + middleName: Doe + familyName: Smith + address: + - address1: Address 1 + city: City + state: TX + zip: '99999' + employment: + employerName: ACME INC + legalEntityId: '752760000' + originalHireDate: 1527832800 + latestHireDate: 1527832800 + latestPayDate: 1596175200 + daysSinceLastPay: 10 + numberPayCadenceWithoutPay: 1 + employmentEndDate: 1527832800 + employmentDuration: P1Y6M0D + employerAddress: + - address1: Address 1 + city: City + state: TX + zip: '99999' + employmentStatusCode: A + employmentStatusName: Active + workLevelCode: FT + workLevelName: Full Time-Regular + workLevelStatus: Full Time + positionTitle: Shift Supervisor + positionDuration: P1Y6M0D + income: + payFrequency: Weekly + VOETransactionsReportExample: + summary: VOE - Transactions Report + value: + id: n1rndg1iz8yy-voetransactions + portfolioId: dyr6weqd2yhb-2-port + customerType: active + customerId: 1000006677 + requestId: sfb7x1we9w + title: Finicity Verification of Employment - Transactions + consumerId: ac39e237c7619a4ecf014b8d399c0696 + consumerSsn: '6789' + requesterName: Decisioning API + constraints: + reportId: j7k8qbgwsa7d-voietxverify + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + incomeStreamConfidenceMinimum: 50 + type: voeTransactions + status: success + createdDate: 1588350269 + startDate: 1572625469 + endDate: 1588350269 + days: 120 + seasoned: true + institutions: + - id: 101732 + name: FinBank + urlHomeApp: https://finbank.prod.fini.city/CCBankImageMFA/login.jsp + accounts: + - id: 1000023996 + number: '1111' + ownerName: JOHN DOE + ownerAddress: 924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518 + name: Checking + type: checking + aggregationStatusCode: 0 + incomeStreams: + - id: u4hstnyak45g1 + name: none + status: ACTIVE + estimateInclusion: MODERATE + confidence: 70 + cadence: + startDate: 1577986990 + stopDate: 1587986990 + days: 14 + daysSinceLastTransaction: 15 + nextExpectedTransactionDate: 1698788820 + incomeStreamMonths: 18 + transactions: + - id: 100000527471 + postedDate: 1582286400 + description: FINICITY INC PAYROLL + normalizedPayee: Finicity + institutionTransactionId: '100000000' + category: Paycheck + VOIReportExample: + summary: VOI Report + value: + id: u4hstnnaewetr-voi + customerId: 1000006677 + consumerId: ac39e237c7619a4ecf014b8d399c0696 + consumerSsn: '6789' + requesterName: Decisioning API + requestId: sfb7xp4wer + type: voi + status: success + createdDate: 1588350269 + customerType: active + title: Finicity Verification of Income + startDate: 1572625469 + endDate: 1588350269 + days: 200 + seasoned: true + portfolioId: dyr6qvqd2erw-1-port + institutions: + id: 101732 + name: FinBank + urlHomeApp: https://finbank.prod.fini.city/CCBankImageMFA/login.jsp + accounts: + id: 1000023996 + number: '1111' + name: Checking + type: checking + aggregationStatusCode: 0 + incomeStreams: + id: dens28i3vsch-voi1 + name: none + status: ACTIVE + estimateInclusion: MODERATE + confidence: 70 + cadence: + startDate: 1577986990 + stopDate: 1587986990 + days: 14 + netMonthly: + - month: 1522562400 + net: 2004.77 + netAnnual: 110475.7 + projectedNetAnnual: 0 + estimatedGrossAnnual: + projectedGrossAnnual: 151609 + averageMonthlyIncomeNet: 9206.31 + incomeStreamMonths: 18 + transactions: + - id: 100000527471 + amount: 22.21 + postedDate: 1582286400 + description: FINICITY INC PAYROLL + memo: Finicity amount credit + institutionTransactionId: '100000000' + category: Paycheck + balance: 714.16 + averageMonthlyBalance: 720.75 + transactions: [] + availableBalance: 714.16 + currentBalance: 714.16 + beginningBalance: 714.77 + miscDeposits: + - id: 100000527471 + amount: 22.21 + postedDate: 1582286400 + description: FINICITY INC PAYROLL + memo: Finicity amount credit + institutionTransactionId: '100000000' + category: Paycheck + income: + - confidenceType: MODERATE + netMonthly: + - month: 1522562400 + net: 2004.77 + incomeEstimate: + netAnnual: 1000.12 + projectedNetAnnual: 1500.23 + estimatedGrossAnnual: 2000.12 + projectedGrossAnnual: 2500.23 + VOIEPayrollReportExample: + summary: VOIE - Payroll Report + value: + id: 41h4nzppn37u-voiepayroll + portfolioId: 9qud7dtuzbew-13-port + customerType: active + customerId: 1275320 + requestId: 7a7qyps2iy + consumerId: 3f7ff2cf0ffb3d0cd59875e070c9b1d4 + consumerSsn: '6789' + requesterName: Decisioning API + type: voiePayroll + status: success + createdDate: 1579819592 + title: Verification of Income and Employment - Payroll + constraints: + payrollData: + payrollDataRetrievalId: hahvhe2k0000 + employerNames: + - ACME INC + reportCustomFields: + label: loanID + value: '12345' + shown: true + payStatementsFromDate: 1580558400 + employmentHistory: + asOfDate: 1596175200 + employerName: ACME INC + payrollSource: finPayroll + employee: + name: John Doe Smith + givenName: John + middleName: Doe + familyName: Smith + address: + - address1: Address 1 + city: City + state: TX + zip: '99999' + employment: + employerName: ACME INC + legalEntityId: '752760000' + originalHireDate: 1527832800 + latestHireDate: 1527832800 + latestPayDate: 1596175200 + daysSinceLastPay: 10 + numberPayCadenceWithoutPay: 1 + employmentEndDate: 1527832800 + employmentDuration: P1Y6M0D + employerAddress: + - address1: Address 1 + city: City + state: TX + zip: '99999' + employmentStatusCode: A + employmentStatusName: Active + workLevelCode: FT + workLevelName: Full Time-Regular + workLevelStatus: Full Time + positionTitle: Shift Supervisor + positionDuration: P1Y6M0D + income: + payFrequency: Weekly + payType: Hourly + basePayRate: 27.5 + annualIncome: + - year: '2021' + grossPayAmountYTD: 73925.12 + netPayAmountYTD: 73925.12 + basePayAmountYTD: 73925.12 + overtimePayAmountYTD: 100.01 + - year: '2020' + grossPayAmountYTD: 73925.12 + netPayAmountYTD: 73925.12 + basePayAmountYTD: 73925.12 + overtimePayAmountYTD: 100.01 + - year: '2019' + grossPayAmountYTD: 73925.12 + netPayAmountYTD: 73925.12 + basePayAmountYTD: 73925.12 + overtimePayAmountYTD: 100.01 + monthlyIncome: + estimatedMonthlyBasePay: 2000 + estimatedMonthlyOvertimePay: 100 + directPayStatements: + - payrollPayHistoryId: cy1a742k28 + lastPayPeriodIndicator: true + mainPayStatementFields: + payDate: 1596175200 + startDate: 1595138400 + endDate: 1595656800 + payPeriodHours: 40 + payFrequency: Weekly + payType: Hourly + grossPayAmount: 1888.75 + grossPayAmountYTD: 73925 + netPayAmount: 1401.95 + netPayAmountYTD: 73925 + earnings: + - name: basePayAmount + type: base + rate: 27.5 + amount: 1100 + amountYTD: 5500 + deductions: + - type: Federal tax + amount: 143.45 + - type: State tax + amount: 12.5 + directDeposits: + - accountTypeCode: Savings + amount: 1401.95 + accountLastFour: '1234' + routingNumber: '000000000' + VOIEPaystubReportExample: + summary: VOIE - Paystub Report + value: + id: 2f3z55zuwewm-voietxverify + portfolioId: 9qud7dtuzbew-13-port + customerType: active + customerId: 1275320 + consumerId: 3f7ff2cf0ffb3d0cd59875e070c9b1d4 + consumerSsn: '6789' + requesterName: Decisioning API + requestId: 7a7qyps2iy + type: voieTxVerify + status: success + createdDate: 1579819592 + title: Verification of Income and Employment - Paystub + reportStyle: voieWithStatement + constraints: + voieWithStatementData: + assetIds: + - d50ed92f-543b-431c-8286-c8b8f6556679 + extractEarnings: true + extractDeductions: false + extractDirectDeposit: true + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + assetIds: + - 6f8fb0a0-e882-4f57-b672-cf53f1397581 + numberOfBillableAssets: 1 + payStatements: + payPeriod: LastPayPeriod + billable: true + assetId: 6f8fb0a0-e882-4f57-b672-cf53f1397581 + payDate: 1559241000 + startDate: 1557513000 + endDate: 1558722600 + netPayCurrent: 1802.22 + netPayYTD: 36000 + grossPayCurrent: 24200 + grossPayYTD: 72600 + employer: + name: Rocket Surgery + employee: + name: Patrick Purchaser + payStat: + name: regular 1 + type: regular + description: regular income + amountCurrent: 6000 + amountYTD: 18000 + directDeposits: + - amountCurrent: 1744.61 + accountLastFour: '1234' + monthlyIncome: + estimatedMonthlyBasePay: 2000 + estimatedMonthlyOvertimePay: 50 + estimatedMonthlyBonusPay: 20 + estimatedMonthlyCommissionPay: 50 + institutions: [] + VOIEPaystubWithTXVerifyReportExample: + summary: VOIE - Paystub With TXVerify Report + value: + id: 2f3z55zuwewm-voietxverify + customerId: 1275320 + consumerId: 3f7ff2cf0ffb3d0cd59875e070c9b1d4 + consumerSsn: '6789' + requesterName: Decisioning API + requestId: 7a7qyps2iy + type: voieTxVerify + status: success + createdDate: 1579819592 + title: Verification of Income and Employment - Paystub (with TXVerify) + constraints: + accountIds: + - '1000535275' + - '6001966284' + fromDate: 1620322948 + voieWithInterviewData: + txVerifyInterview: + - assetId: 6f8fb0a0-e882-4f57-b672-cf53f1397581 + accounts: [] + extractEarnings: true + extractDeductions: false + extractDirectDeposit: true + reportCustomFields: + - label: loanID + value: '12345' + shown: true + - label: trackingID + value: '5555' + shown: true + incomeStreamConfidenceMinimum: 50 + customerType: active + portfolioId: 9qud7dtuzbew-13-port + numberOfBillableAssets: 1 + reportStyle: voieWithInterview + assetIds: + - 6f8fb0a0-e882-4f57-b672-cf53f1397581 + payStatements: + payPeriod: LastPayPeriod + billable: true + assetId: 6f8fb0a0-e882-4f57-b672-cf53f1397581 + payDate: 1559241000 + startDate: 1557513000 + endDate: 1558722600 + netPayCurrent: 1802.22 + netPayYTD: 36000 + grossPayCurrent: 24200 + grossPayYTD: 72600 + matchType: NET_PAY_MATCH + employer: + name: Rocket Surgery + employee: + name: Patrick Purchaser + payStat: + name: regular 1 + type: regular + description: regular income + amountCurrent: 6000 + amountYTD: 18000 + directDeposits: + - fiName: America First + accountType: Checking + amountCurrent: 1744.61 + description: Payroll + monthlyIncome: + estimatedMonthlyBasePay: 2000 + estimatedMonthlyOvertimePay: 50 + estimatedMonthlyBonusPay: 20 + estimatedMonthlyCommissionPay: 50 + institutions: + id: 101732 + name: FinBank + urlHomeApp: https://finbank.prod.fini.city/CCBankImageMFA/login.jsp + accounts: + id: 1000023996 + number: '1111' + ownerName: JOHN DOE + ownerAddress: 924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518 + name: Checking + type: checking + availableBalance: 123.45 + aggregationStatusCode: 0 + balance: 123.45 + balanceDate: 1588350276 + averageMonthlyBalance: 301.45 + transactions: [] + details: + interestMarginBalance: -50000 + availableCashBalance: 1500 + vestedBalance: 300000 + currentLoanBalance: 0 + availableBalanceAmount: 2000 + incomeStream: + id: dens28i3vsch-voitxverify2 + name: none + status: ACTIVE + confidence: 70 + cadence: + startDate: 1577986990 + stopDate: 1587986990 + days: 180 + netAnnual: 110475.7 + projectedNetAnnual: 0 + estimatedGrossAnnual: 0 + projectedGrossAnnual: 151609 + incomeStreamMonths: 24 + averageMonthlyIncomeNet: 9206.31 + transactions: + - id: 100000527471 + amount: 1802.22 + postedDate: 1559241000 + description: FINICITY INC PAYROLL + memo: Finicity amount credit + institutionTransactionId: '100000000' + category: Paycheck + payStatementMatchTypes: + - DATE + - NET_AMOUNT + - DIRECT_DEPOSIT_AMOUNT + - EMPLOYER_NAME + - INCOME_STREAM_PAYCHECK + incomeStreams: + - id: dens28i3vsch-voitxverify2 + name: none + status: ACTIVE + confidence: 70 + cadence: + startDate: 1577986990 + stopDate: 1587986990 + days: 180 + netAnnual: 110475.7 + projectedNetAnnual: 0 + estimatedGrossAnnual: 0 + projectedGrossAnnual: 151609 + incomeStreamMonths: 24 + averageMonthlyIncomeNet: 9206.31 + transactions: + - id: 100000527471 + amount: 1802.22 + postedDate: 1559241000 + description: FINICITY INC PAYROLL + memo: Finicity amount credit + institutionTransactionId: '100000000' + category: Paycheck + payStatementMatchTypes: + - DATE + - NET_AMOUNT + - DIRECT_DEPOSIT_AMOUNT + - EMPLOYER_NAME + - INCOME_STREAM_PAYCHECK + institutions: + id: 101732 + name: FinBank + urlHomeApp: https://finbank.prod.fini.city/CCBankImageMFA/login.jsp + accounts: + - id: 1000023996 + ownerName: JOHN DOE + ownerAddress: 924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518 + name: Checking + number: '1111' + type: checking + aggregationStatusCode: 0 + incomeStreams: + - id: dens28i3vsch-voietxverify + name: none + status: ACTIVE + confidence: 70 + cadence: + startDate: 1577986990 + stopDate: 1587986990 + days: 180 + netMonthly: + - month: 1522562400 + net: 2004.77 + netAnnual: 110475.7 + projectedNetAnnual: 0 + estimatedGrossAnnual: 12392.1 + projectedGrossAnnual: 151609 + averageMonthlyIncomeNet: 9206.31 + incomeStreamMonths: 24 + transactions: + - id: 100000527471 + amount: 1802.22 + postedDate: 1559241000 + description: FINICITY INC PAYROLL + memo: Finicity amount credit + institutionTransactionId: '100000000' + category: Paycheck + balance: 123.45 + averageMonthlyBalance: 301.45 + transactions: [] + availableBalance: 123.45 + parameters: + AssetIdParameter: + description: The asset ID + name: assetId + in: path + required: true + schema: + $ref: '#/components/schemas/AssetId' + example: 097545c5-1c2a-4f20-a5ef-77f0820344c9-2018601178 + CustomerIdParameter: + description: A customer ID + name: customerId + in: path + required: true + schema: + $ref: '#/components/schemas/CustomerId' + example: '1005061234' + AccountStatusParameter: + description: A filter to fetch account in the given status + name: status + in: query + required: false + schema: + $ref: '#/components/schemas/AccountStatus' + example: pending + AnalyticIdParameter: + description: The analytic ID + name: analyticsId + in: path + required: true + schema: + $ref: '#/components/schemas/AnalyticId' + example: CA-5dfbaa3ac-5321 + TransactionIdParameter: + description: A transaction ID + name: transactionId + in: path + required: true + schema: + $ref: '#/components/schemas/TransactionId' + example: 21284820852 + IncludePendingParameter: + description: If pending transactions must be included + name: includePending + in: query + required: false + schema: + $ref: '#/components/schemas/IncludePending' + example: false + ApplicationIdPathParameter: + description: The application ID + name: applicationId + in: path + required: true + schema: + $ref: '#/components/schemas/ApplicationId' + example: '123456789' + ApplicationIdQueryParameter: + description: The application ID + name: applicationId + in: query + required: false + schema: + $ref: '#/components/schemas/ApplicationId' + example: '123456789' + AppRegistrationStatusParameter: + description: Look up app registration requests by status + name: status + in: query + required: false + schema: $ref: '#/components/schemas/AppRegistrationStatus' example: P ApplicationNameParameter: @@ -3675,15 +6111,6 @@ components: type: string description: A report ID example: u4hstnnak45g - ReportCoveredDays: - type: integer - description: Number of days covered by the report - format: int32 - example: 230 - Seasoned: - type: boolean - description: If a report covers more than 180 days - example: true ReportTitle: type: string description: Title of the report @@ -4120,9 +6547,7 @@ components: optionalConsumerInfo: $ref: '#/components/schemas/ConsumerInfo' BorrowerType: - enum: - - primary - - jointBorrower + description: '"primary" or "jointBorrower"' type: string example: primary ConsumerInfo: @@ -4191,7 +6616,7 @@ components: Experience: type: string description: >- - The `experience` field allows you to customize: + The `experience` field allows you to customize: * Brand: color and logo @@ -4232,7 +6657,7 @@ components: in the same call, the `singleUseUrl` value overrides the `singleUseUrl` value configured in the `experience` parameter. example: true - ReportConstraints: + VOAReportConstraints: type: object properties: accountIds: @@ -4242,13 +6667,61 @@ components: showNsf: $ref: '#/components/schemas/ShowNsf' fromDate: - # Without this parameter, the report defaults to 6 months if available - # If included, the epoch timestamp should be 10 digits long and be within - # two years of the present day + # Limits the transaction history in the financial reports. Transactions are included if they are equal to or greater than the `fromDate` + $ref: '#/components/schemas/UnixDate' + VOAReportConstraintsOut: + type: object + properties: + accountIds: + $ref: '#/components/schemas/ReportAccountIds' + reportCustomFields: + $ref: '#/components/schemas/ReportCustomFields' + showNsf: + $ref: '#/components/schemas/ShowNsf' + fromDate: + # Limits the transaction history in the financial reports. Transactions are included if they are equal to or greater than the `fromDate` + $ref: '#/components/schemas/UnixDate' + VOAWithIncomeReportConstraints: + type: object + properties: + accountIds: + $ref: '#/components/schemas/ReportAccountIdsString' + reportCustomFields: + $ref: '#/components/schemas/ReportCustomFields' + showNsf: + $ref: '#/components/schemas/ShowNsf' + fromDate: + # Limits the transaction history in the financial reports. Transactions are included if they are equal to or greater than the `fromDate` + $ref: '#/components/schemas/UnixDate' + incomeStreamConfidenceMinimum: + $ref: '#/components/schemas/IncomeStreamConfidenceMinimum' + VOAWithIncomeReportConstraintsOut: + type: object + properties: + accountIds: + $ref: '#/components/schemas/ReportAccountIds' + reportCustomFields: + $ref: '#/components/schemas/ReportCustomFields' + showNsf: + $ref: '#/components/schemas/ShowNsf' + fromDate: + # Limits the transaction history in the financial reports. Transactions are included if they are equal to or greater than the `fromDate` $ref: '#/components/schemas/UnixDate' incomeStreamConfidenceMinimum: $ref: '#/components/schemas/IncomeStreamConfidenceMinimum' - ReportConstraintsOut: + PrequalificationReportConstraints: + type: object + properties: + accountIds: + $ref: '#/components/schemas/ReportAccountIdsString' + reportCustomFields: + $ref: '#/components/schemas/ReportCustomFields' + showNsf: + $ref: '#/components/schemas/ShowNsf' + fromDate: + # Limits the transaction history in the financial reports. Transactions are included if they are equal to or greater than the `fromDate` + $ref: '#/components/schemas/UnixDate' + PrequalificationReportConstraintsOut: type: object properties: accountIds: @@ -4258,6 +6731,29 @@ components: showNsf: $ref: '#/components/schemas/ShowNsf' fromDate: + # Limits the transaction history in the financial reports. Transactions are included if they are equal to or greater than the `fromDate` + $ref: '#/components/schemas/UnixDate' + VOIReportConstraints: + type: object + properties: + accountIds: + $ref: '#/components/schemas/ReportAccountIdsString' + reportCustomFields: + $ref: '#/components/schemas/ReportCustomFields' + fromDate: + # Limits the transaction history in the financial reports. Transactions are included if they are equal to or greater than the `fromDate` + $ref: '#/components/schemas/UnixDate' + incomeStreamConfidenceMinimum: + $ref: '#/components/schemas/IncomeStreamConfidenceMinimum' + VOIReportConstraintsOut: + type: object + properties: + accountIds: + $ref: '#/components/schemas/ReportAccountIds' + reportCustomFields: + $ref: '#/components/schemas/ReportCustomFields' + fromDate: + # Limits the transaction history in the financial reports. Transactions are included if they are equal to or greater than the `fromDate` $ref: '#/components/schemas/UnixDate' incomeStreamConfidenceMinimum: $ref: '#/components/schemas/IncomeStreamConfidenceMinimum' @@ -4302,11 +6798,10 @@ components: All custom fields display in the Reseller Billing API. IncomeStreamConfidenceMinimum: type: integer - description: >- - Designate a minimum confidence level threshold to include income streams - with a specified confidence level or higher. For example, designate a - `incomeStreamConfidenceMinimum` of 50 to see all income streams with a - confidence level of 50 or higher. + description: + "Include income streams in the report, based on the income stream's + confidence score. For example, Use the value 50 to include only income + streams with a confidence score of 50 or higher." format: int32 example: 50 ConnectFromDate: @@ -5687,12 +8182,12 @@ components: (Student Loan) The financial institution guarantor of the loan (who will pay the loan amount to the owner if the borrower defaults) example: 'FinBank' - interestSubsityType: + interestSubsidyType: type: string description: >- (Student Loan) The indication of the presence of an interest subsidy (i.e. subsidized) - example: Subsity type + example: Subsidy type interestBalance: type: number description: (Student Loan) The total outstanding interest balance @@ -6259,48 +8754,12 @@ components: $ref: '#/components/schemas/InstitutionName' institutionId: $ref: '#/components/schemas/NumericInstitutionId' - AccountDetail: - required: - - interestMarginBalance - - availableCashBalance - - vestedBalance - - currentLoanBalance - - availableBalanceAmount - type: object - properties: - interestMarginBalance: - type: number - description: >- - Only available for investment accounts. Net interest earned after - deducting interest paid out. - example: -50000 - availableCashBalance: - type: number - description: >- - Only available for investment accounts. Amount available for cash - withdrawal. - example: 1500 - vestedBalance: - type: number - description: - Only available for investment accounts. Vested amount in account. - example: 300000 - currentLoanBalance: - type: number - description: - Only available for investment accounts. Current loan balance. - example: 0 - availableBalanceAmount: - type: number - description: The available balance for the account - example: 1000 - BaseReportData: + BaseReportAck: + description: Properties shared by all generated reports type: object properties: id: $ref: '#/components/schemas/ReportId' - portfolioId: - $ref: '#/components/schemas/PortfolioId' customerType: $ref: '#/components/schemas/CustomerType' customerId: @@ -6326,7 +8785,16 @@ components: type: array items: $ref: '#/components/schemas/ErrorMessage' - ReportData: + BaseReportAckWithPortfolioId: + description: + Properties shared by all generated reports having a portfolio ID + allOf: + - $ref: '#/components/schemas/BaseReportAck' + - type: object + properties: + portfolioId: + $ref: '#/components/schemas/PortfolioId' + VOAReportAck: required: - id - portfolioId @@ -6340,26 +8808,76 @@ components: - consumerSsn - type - status + - constraints allOf: - - $ref: '#/components/schemas/BaseReportData' + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' - type: object properties: constraints: - $ref: '#/components/schemas/ReportConstraintsOut' - NetMonthly: + $ref: '#/components/schemas/VOAReportConstraintsOut' + VOAWithIncomeReportAck: required: - - month - - net - type: object - properties: - month: - # Timestamp for the first day of this month - $ref: '#/components/schemas/UnixDate' - net: - type: number - description: - Total income during the given month, across all income streams - example: 2004.77 + - id + - portfolioId + - customerType + - customerId + - requestId + - requesterName + - createdDate + - title + - consumerId + - consumerSsn + - type + - status + - constraints + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + constraints: + $ref: '#/components/schemas/VOAWithIncomeReportConstraintsOut' + PrequalificationReportAck: + required: + - id + - portfolioId + - customerType + - customerId + - requestId + - requesterName + - createdDate + - title + - consumerId + - consumerSsn + - type + - status + - constraints + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + constraints: + $ref: '#/components/schemas/PrequalificationReportConstraintsOut' + VOIReportAck: + required: + - id + - portfolioId + - customerType + - customerId + - requestId + - requesterName + - createdDate + - title + - consumerId + - consumerSsn + - type + - status + - constraints + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + constraints: + $ref: '#/components/schemas/VOIReportConstraintsOut' PortfolioReport: required: - id @@ -6601,154 +9119,6 @@ components: type: string example: VERIZON WIRELESS PAYMENTS description: Categorization Record - ReportIncomeStream: - required: - - id - - name - - status - - estimateInclusion - - confidence - - cadence - - netMonthly - - netAnnual - - projectedNetAnnual - - estimatedGrossAnnual - - projectedGrossAnnual - - averageMonthlyIncomeNet - - transactions - type: object - properties: - id: - type: string - description: Finicity's income stream ID - example: dens28i3vsch-voi1 - name: - type: string - description: - A human-readable name based on the `normalizedPayee` name of the - transactions for this income stream - example: none - status: - $ref: '#/components/schemas/Status' - estimateInclusion: - $ref: '#/components/schemas/EstimateInclusion' - confidence: - type: integer - description: - Level of confidence that the deposit stream represents income - format: int32 - example: 85 - cadence: - $ref: '#/components/schemas/CadenceDetails' - netMonthly: - uniqueItems: true - type: array - items: - $ref: '#/components/schemas/NetMonthly' - description: >- - A list of net monthly records. One instance for each complete - calendar month in the report - netAnnual: - type: number - description: - Sum of all values in `netMonthlyIncome` over the previous 12 months - example: 110475.7 - projectedNetAnnual: - type: number - description: >- - Projected net income over the next 12 months, across all income - streams, based on `netAnnualIncome` - example: 0 - estimatedGrossAnnual: - type: number - description: >- - Before-tax gross annual income (estimated from `netAnnual`) across - all income stream in the past 12 months - example: 100000 - projectedGrossAnnual: - type: number - description: >- - Projected gross income over the next 12 months, across all active - income streams, based on `projectedNetAnnual` - example: 151609 - averageMonthlyIncomeNet: - type: number - description: Monthly average amount over the previous 24 months - example: 9206.31 - transactions: - type: array - items: - $ref: '#/components/schemas/ReportTransaction' - description: A list of transaction records - ReportTransaction: - type: object - properties: - id: - $ref: '#/components/schemas/TransactionId' - amount: - type: number - description: >- - The total amount of the transaction. Transactions for deposits are - positive values, withdrawals and debits are negative values. - example: 22.21 - postedDate: - $ref: '#/components/schemas/TransactionPostedDate' - description: - type: string - description: >- - The description of the transaction, as provided by the institution - (often known as payee). In the event that this field is left blank - by the institution, Finicity will pass a value of "No description - provided by institution". All other values are provided by the - institution. - example: FINICITY INC PAYROLL - memo: - type: string - description: >- - The memo field of the transaction, as provided by the institution. - The institution must provide either a description, a memo, or both. - It is recommended to concatenate the two fields into a single value - example: Finicity amount credit - normalizedPayee: - type: string - description: - A normalized payee, derived from the transaction's `description` and - `memo` fields. - example: Finicity - institutionTransactionId: - type: string - description: - The unique identifier given by the FI for each transaction. - example: '100000000' - category: - $ref: '#/components/schemas/Categories' - type: - $ref: '#/components/schemas/TransactionType' - payStatementMatchTypes: - type: array - items: - $ref: '#/components/schemas/ReportTransactionPayStatementMatchTypes' - description: - Field to indicate how transaction is matched with pay statement - bestRepresentation: - type: string - description: >- - Combines the description and memo data together, removes any - duplicated information from description to memo, and removes any - numbers or special characters - example: FINICITY INC PAYROLL - securityType: - type: string - description: The type of investment security (VOA only) - example: Cash - symbol: - type: string - description: Investment symbol (VOA only) - example: JPM - commission: - description: Commission amount - type: number - example: 0 Birthday: type: object properties: @@ -6793,6 +9163,7 @@ components: description: A callback URL where to receive TxPush notifications example: 'https://www.mydomain.com/txpush/listener' PayStatementData: + description: Data to be included within the pay statement report required: - assetIds type: object @@ -6808,260 +9179,2962 @@ components: $ref: '#/components/schemas/ExtractDeductions' extractDirectDeposit: $ref: '#/components/schemas/ExtractDirectDeposit' - CadenceDetails: - type: object - properties: - startDate: - # Date of the first deposit transaction - $ref: '#/components/schemas/UnixDate' - stopDate: - # Date of the final deposit transaction (omitted if status is active) - $ref: '#/components/schemas/UnixDate' - days: - type: integer - description: Number of days between the recurring deposits - format: int32 - example: 14 - AuditableReport: + Report: description: A report + type: object required: - id + - customerType - customerId - - requesterName - requestId - - type - - status + - requesterName - createdDate - - constraints - - customerType - title - - startDate - - endDate - - days - - seasoned - - portfolioId - - consolidatedAvailableBalance - - institutions + - consumerId + - consumerSsn + - type + - status + allOf: + - $ref: '#/components/schemas/CashFlowReport' + - $ref: '#/components/schemas/PrequalificationReport' + - $ref: '#/components/schemas/PayStatementReport' + - $ref: '#/components/schemas/StatementReport' + - $ref: '#/components/schemas/TransactionsReport' + - $ref: '#/components/schemas/VOAReport' + - $ref: '#/components/schemas/VOAWithIncomeReport' + - $ref: '#/components/schemas/VOEPayrollReport' + - $ref: '#/components/schemas/VOETransactionsReport' + - $ref: '#/components/schemas/VOIReport' + - $ref: '#/components/schemas/VOIEPayrollReport' + - $ref: '#/components/schemas/VOIEPaystubReport' + - $ref: '#/components/schemas/VOIEPaystubWithTXVerifyReport' + CashFlowMonthlyCashFlowCredits: + required: + - month + - numberOfCredits + - totalCreditsAmount + - largestCredit + - numberOfCreditsLessTransfers + - totalCreditsAmountLessTransfers + - averageCreditAmount + - estimatedNumberOfLoanDeposits + - estimatedLoanDepositAmount type: object properties: - id: - $ref: '#/components/schemas/ReportId' - customerId: - $ref: '#/components/schemas/NumericCustomerId' - consumerId: - $ref: '#/components/schemas/ConsumerId' - consumerSsn: - $ref: '#/components/schemas/SocialSecurityNumberLastDigits' - requesterName: - $ref: '#/components/schemas/PartnerName' - requestId: - $ref: '#/components/schemas/ReportRequestId' - type: - $ref: '#/components/schemas/ReportType' - status: - $ref: '#/components/schemas/ReportStatus' - createdDate: - $ref: '#/components/schemas/UnixDate' - constraints: - $ref: '#/components/schemas/ReportConstraintsOut' - customerType: - $ref: '#/components/schemas/CustomerType' - title: - $ref: '#/components/schemas/ReportTitle' - startDate: - # Date of the earliest transaction analyzed for this report - $ref: '#/components/schemas/UnixDate' - endDate: - # Date of the latest transaction analyzed for this report - $ref: '#/components/schemas/UnixDate' - days: - $ref: '#/components/schemas/ReportCoveredDays' - seasoned: - $ref: '#/components/schemas/Seasoned' - portfolioId: - $ref: '#/components/schemas/PortfolioId' - consolidatedAvailableBalance: - type: number + month: + type: integer description: - Sum of available balances for all of the accounts included in the - report - example: 1929.57 - institutions: + One instance for each complete calendar month in the report + format: int64 + example: 1512111600 + numberOfCredits: + type: string + description: Number of credits by month + example: '3' + totalCreditsAmount: + type: number + description: Total amount of credits by month + example: 5000 + largestCredit: + type: number + description: Largest credit by month + example: 2000 + numberOfCreditsLessTransfers: + type: string + description: Number of credits by month (less transfers) + example: '2' + totalCreditsAmountLessTransfers: + type: number + description: Total amount of credits by month (less transfers) + example: 4000 + averageCreditAmount: + type: number + description: The average credit amount + example: 500 + estimatedNumberOfLoanDeposits: + type: string + description: The estimated number of loan deposits + example: '0' + estimatedLoanDepositAmount: + type: number + description: The estimated loan deposit amount + example: 0 + CashFlowCashFlowCredit: + required: + - monthlyCashFlowCredits + - twelveMonthCreditTotal + - twelveMonthCreditTotalLessTransfers + - sixMonthCreditTotal + - sixMonthCreditTotalLessTransfers + - twoMonthCreditTotal + - twoMonthCreditTotalLessTransfers + type: object + properties: + monthlyCashFlowCredits: type: array items: - $ref: '#/components/schemas/ReportInstitution' - description: >- - A list of institution records, including information about the - individual accounts used in this report - assets: - $ref: '#/components/schemas/ReportAssetSummary' - errors: - description: In case errors occurred during the report generation + $ref: '#/components/schemas/CashFlowMonthlyCashFlowCredits' + description: List of attributes for each month + twelveMonthCreditTotal: + type: number + description: Sum of all credit transactions for each month by account + example: 1200 + twelveMonthCreditTotalLessTransfers: + type: number + description: + Sum of all monthly credit transactions without transfers for the + account + example: 1000 + sixMonthCreditTotal: + type: number + description: Sum of six month credit transactions + example: 750 + sixMonthCreditTotalLessTransfers: + type: number + description: Sum of six month credit transactions without transfers + example: 500 + twoMonthCreditTotal: + type: number + description: Sum of two month credit transactions + example: 150 + twoMonthCreditTotalLessTransfers: + type: number + description: Sum of two month credit transactions without transfers + example: 100 + TransactionsReportAccount: + type: object + properties: + id: + type: integer + description: The Finicity account ID + format: int64 + example: 1000075473 + name: + type: string + description: The account name from the financial institution. + example: Super Checking + number: + type: string + description: + The account number from the financial institution (obfuscated) + example: '5015' + type: + $ref: '#/components/schemas/AccountType' + aggregationStatusCode: + type: integer + description: + 'The status of the most recent aggregation attempt for this account. + Note: non-zero means the account was not accessed successfully for + this report, and additional fields for this account may not be + reliable.' + format: int32 + example: 0 + balance: + type: number + description: The cleared balance of the account as-of `balanceDate` + example: 100000 + balanceDate: + type: integer + description: A timestamp showing when the balance was captured + format: int64 + example: 1594676289 + transactions: type: array items: - $ref: '#/components/schemas/ErrorMessage' - ReportInstitution: - required: - - id - - name - - urlHomeApp - - accounts + $ref: '#/components/schemas/ReportTransaction' + description: a list of transaction records + description: Fields used for the Transaction History Report (CRA products) + VOAReportAccount: type: object properties: id: - $ref: '#/components/schemas/NumericInstitutionId' + type: integer + description: The ID of the account + format: int64 + example: 1000023996 + number: + type: string + description: + The account number from the institution (all digits except the last + four are obfuscated) + example: '1111' + ownerName: + type: string + description: + The name(s) of the account owner(s). This field is optional. If no + owner information is available, this field will not appear in the + report. + example: JOHN DOE + ownerAddress: + type: string + description: + The mailing address of the account owner(s). This field is optional. + If no owner information is available, this field will not appear in + the report. + example: 924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518 name: - $ref: '#/components/schemas/InstitutionName' - urlHomeApp: type: string - description: The URL of the institution's primary home page - example: 'https://finbank.prod.fini.city/CCBankImageMFA/login.jsp' - accounts: + description: The account name from the institution + example: Checking + type: + type: string + description: One of the values from account types + example: checking + availableBalance: + type: number + description: The available balance for the account + example: 501.24 + aggregationStatusCode: + type: integer + description: The status of the most recent aggregation attempt + format: int32 + example: 0 + balance: + type: number + description: The cleared balance of the account as-of balanceDate + example: 501.24 + balanceDate: + type: integer + description: A timestamp showing when the balance was captured + format: int64 + example: 1588350276 + averageMonthlyBalance: + type: number + description: The average monthly balance of this account + example: 501.02 + totNumberInsufficientFundsFeeDebitTxAccount: + type: integer + description: + The count for the total number of insufficient funds transactions, + based on the `fromDate` of the report. + format: int64 + example: 0 + totNumberInsufficientFundsFeeDebitTxOver2MonthsAccount: + type: integer + description: + The count for the total number of insufficient funds transactions + for the last two months, based on the `fromDate` of the report. + format: int64 + example: 0 + totNumberDaysSinceMostRecentInsufficientFundsFeeDebitTxAccount: + type: integer + description: + The number of days since the most recent insufficient funds + transaction, based on the `fromDate` of the report. + format: int64 + example: 120 + transactions: type: array items: - $ref: '#/components/schemas/ReportAccount' - description: An array of accounts - ReportSummary: - required: - - id - - consumerId - - consumerSsn - - requesterName - - requestId - - constraints - - type - - status - - createdDate + $ref: '#/components/schemas/ReportTransaction' + description: a list of transaction records + details: + $ref: '#/components/schemas/AccountDetails' + asset: + $ref: '#/components/schemas/PrequalificationReportAssetSummary' + VOAWithIncomeReportAccount: + type: object + allOf: + - $ref: '#/components/schemas/VOAReportAccount' + - type: object + properties: + incomeStreams: + type: array + items: + $ref: '#/components/schemas/VOAIReportIncomeStream' + description: A list of income stream records + VOETransactionsReportAccount: type: object properties: id: - $ref: '#/components/schemas/ReportId' - consumerId: - $ref: '#/components/schemas/ConsumerId' - consumerSsn: - $ref: '#/components/schemas/SocialSecurityNumberLastDigits' - requesterName: - $ref: '#/components/schemas/PartnerName' - requestId: - $ref: '#/components/schemas/ReportRequestId' - constraints: - $ref: '#/components/schemas/ReportConstraintsOut' + type: integer + description: The ID of the account + format: int64 + example: 1000023996 + number: + type: string + description: + The account number from the institution (all digits except the last + four are obfuscated) + example: '1111' + ownerName: + type: string + description: + The name(s) of the account owner(s). This field is optional. If no + owner information is available, this field will not appear in the + report. + example: JOHN DOE + ownerAddress: + type: string + description: + The mailing address of the account owner(s). This field is optional. + If no owner information is available, this field will not appear in + the report. + example: 924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518 + name: + type: string + description: The account name from the institution + example: Checking type: - $ref: '#/components/schemas/ReportType' - status: - $ref: '#/components/schemas/ReportStatus' - createdDate: - $ref: '#/components/schemas/UnixDate' - ReportAccount: + type: string + description: One of the values from account types + example: checking + aggregationStatusCode: + type: integer + description: The status of the most recent aggregation attempt + format: int32 + example: 0 + incomeStreams: + type: array + items: + $ref: '#/components/schemas/VOETransactionsReportIncomeStream' + description: A list of income stream records + VOIETXVerifyReportAccount: required: - id - - number - ownerName - ownerAddress - name + - number - type - aggregationStatusCode + - incomeStreams - balance - - balanceDate - averageMonthlyBalance - transactions - - asset - - details + - availableBalance type: object properties: id: - $ref: '#/components/schemas/AccountId' + type: integer + description: The ID of the account + format: int64 + example: 1000023996 number: type: string - description: >- + description: The account number from the institution (all digits except the last four are obfuscated) example: '1111' ownerName: type: string - description: >- + description: The name(s) of the account owner(s). This field is optional. If no owner information is available, this field will not appear in the report. example: JOHN DOE ownerAddress: type: string - description: >- + description: The mailing address of the account owner(s). This field is optional. If no owner information is available, this field will not appear in the report. - example: '924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518' + example: 924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518 name: type: string description: The account name from the institution example: Checking type: type: string - description: One of the values from Account Types - example: checking - currency: - $ref: '#/components/schemas/Currency' - availableBalance: + description: One of the values from account types + example: checking + aggregationStatusCode: + type: integer + description: The status of the most recent aggregation attempt + format: int32 + incomeStreams: + type: array + items: + $ref: '#/components/schemas/VOIETXVerifyReportIncomeStream' + description: A list of income stream records + balance: + type: number + description: The cleared balance of the account as-of `balanceDate` + example: 123.45 + averageMonthlyBalance: + type: number + description: The average monthly balance of this account + example: 301.45 + transactions: + type: array + items: + $ref: '#/components/schemas/ReportTransaction' + description: a list of transaction records + availableBalance: + type: number + description: The available balance for the account + example: 123.45 + VOIReportAccount: + type: object + properties: + id: + type: integer + description: The ID of the account + format: int64 + example: 1000023996 + number: + type: string + description: + The account number from the institution (all digits except the last + four are obfuscated) + example: '1111' + ownerName: + type: string + description: + The name(s) of the account owner(s). This field is optional. If no + owner information is available, this field will not appear in the + report. + example: JOHN DOE + ownerAddress: + type: string + description: + The mailing address of the account owner(s). This field is optional. + If no owner information is available, this field will not appear in + the report. + example: 924 GAINSVILLE HIGHWAY SUITE 130 BUFORD, GA 30518 + name: + type: string + description: The account name from the institution + example: Checking + type: + type: string + description: One of the values from account types + example: checking + aggregationStatusCode: + type: integer + description: The status of the most recent aggregation attempt + format: int32 + example: 0 + incomeStreams: + type: array + items: + $ref: '#/components/schemas/VOIReportIncomeStream' + description: A list of income stream records + balance: + type: number + description: The cleared balance of the account as-of `balanceDate` + example: 714.16 + averageMonthlyBalance: + type: number + description: The average monthly balance of this account + example: 720.75 + transactions: + type: array + items: + $ref: '#/components/schemas/ReportTransaction' + description: a list of transaction records + availableBalance: + type: number + description: The available balance for the account + example: 714.16 + currentBalance: + type: number + description: Current balance of the account + example: 714.16 + beginningBalance: + type: number + description: + Beginning balance of account per the time period in the report + example: 714.77 + miscDeposits: + maxItems: 100 + minItems: 0 + type: array + items: + $ref: '#/components/schemas/ReportTransaction' + description: A list of miscellaneous deposits + VOIReportIncomeStream: + type: object + required: + - id + - name + - status + - estimateInclusion + - confidence + - cadence + - netMonthly + - netAnnual + - projectedNetAnnual + - estimatedGrossAnnual + - projectedGrossAnnual + - averageMonthlyIncomeNet + - incomeStreamMonths + - transactions + properties: + id: + type: string + description: Income stream ID + example: dens28i3vsch-voi1 + name: + type: string + description: + A human-readable name based on the `normalizedPayee` name of the + transactions for this income stream + example: none + status: + $ref: '#/components/schemas/ActiveStatus' + estimateInclusion: + $ref: '#/components/schemas/EstimateInclusion' + confidence: + type: integer + description: + 'Level of confidence that the deposit stream represents income + (example: 85%)' + format: int32 + example: 70 + cadence: + $ref: '#/components/schemas/CadenceDetails' + netMonthly: + type: array + items: + $ref: '#/components/schemas/NetMonthly' + description: + A list of net monthly records. One instance for each complete + calendar month in the report. + netAnnual: + type: number + description: + Sum of all values in `netMonthlyIncome` over the previous 12 months + example: 110475.7 + projectedNetAnnual: + type: number + description: + Projected net income over the next 12 months, across all income + streams, based on `netAnnualIncome` + example: 0 + estimatedGrossAnnual: + type: number + description: + Before-tax gross annual income (estimated from `netAnnual`) across + all income stream in the past 12 months + projectedGrossAnnual: + type: number + description: + Projected gross income over the next 12 months, across all active + income streams, based on `projectedNetAnnual` + example: 151609 + averageMonthlyIncomeNet: + type: number + description: Monthly average amount over the previous 24 months + example: 9206.31 + incomeStreamMonths: + type: integer + description: The number of months the income transactions are observed + format: int32 + example: 18 + transactions: + type: array + items: + $ref: '#/components/schemas/ReportTransaction' + description: A list of transaction records + VOETransactionsReportIncomeStream: + type: object + required: + - id + - name + - status + - estimateInclusion + - confidence + - cadence + - daysSinceLastTransaction + - nextExpectedTransactionDate + - incomeStreamMonths + - transactions + properties: + id: + type: string + description: Income stream ID + example: dens28i3vsch-voah + name: + type: string + description: + A human-readable name based on the `normalizedPayee` name of the + transactions for this income stream + example: none + status: + $ref: '#/components/schemas/ActiveStatus' + estimateInclusion: + $ref: '#/components/schemas/EstimateInclusion' + confidence: + type: integer + description: + 'Level of confidence that the deposit stream represents income + (example: 85%)' + format: int32 + example: 70 + cadence: + $ref: '#/components/schemas/CadenceDetails' + daysSinceLastTransaction: + type: integer + description: + The number of days since the last credit transaction for the + particular income stream + format: int32 + example: 15 + nextExpectedTransactionDate: + type: integer + description: + The next expected credit transaction date for the particular income + stream, based on the cadence + format: int64 + example: 1572625469 + incomeStreamMonths: + type: integer + description: The number of months the income transactions are observed + format: int32 + example: 18 + transactions: + type: array + items: + $ref: '#/components/schemas/ReportTransaction' + description: A list of transaction records + VOIETXVerifyReportIncomeStream: + required: + - id + - name + - status + - confidence + - cadence + - netMonthly + - netAnnual + - projectedNetAnnual + - estimatedGrossAnnual + - projectedGrossAnnual + - averageMonthlyIncomeNet + - incomeStreamMonths + - transactions + type: object + properties: + id: + type: string + description: Finicity’s income stream ID + example: dens28i3vsch-voietxverify + name: + type: string + description: + A human-readable name based on the `normalizedPayee` name of the + transactions for this income stream + example: none + status: + $ref: '#/components/schemas/ActiveStatus' + confidence: + type: integer + description: + 'Level of confidence that the deposit stream represents income + (example: 85%)' + format: int32 + example: 70 + cadence: + $ref: '#/components/schemas/CadenceDetails' + netMonthly: + type: array + items: + $ref: '#/components/schemas/NetMonthly' + description: + A list of net monthly records. One instance for each complete + calendar month in the report. + netAnnual: + type: number + description: + Sum of all values in `netMonthlyIncome` over the previous 12 months + example: 110475.7 + projectedNetAnnual: + type: number + description: + Projected net income over the next 12 months, across all income + streams, based on `netAnnualIncome` + example: 0 + estimatedGrossAnnual: + type: number + description: + Before-tax gross annual income (estimated from `netAnnual`) across + all income stream in the past 12 months + example: 12321.1 + projectedGrossAnnual: + type: number + description: + Projected gross income over the next 12 months, across all active + income streams, based on `projectedNetAnnual` + example: 151609 + averageMonthlyIncomeNet: + type: number + description: Monthly average amount over the previous 24 months + example: 9206.31 + incomeStreamMonths: + type: integer + description: The number of months the income transactions are observed + format: int32 + example: 24 + transactions: + type: array + items: + $ref: '#/components/schemas/ReportTransaction' + description: A list of transaction records + VOAIReportIncomeStream: + description: A report income stream record + required: + - id + - name + - status + - estimateInclusion + - confidence + - cadence + - netMonthly + - netAnnual + - projectedNetAnnual + - estimatedGrossAnnual + - projectedGrossAnnual + - averageMonthlyIncomeNet + - incomeStreamMonths + - transactions + type: object + properties: + id: + type: string + description: Income stream ID + example: dens28i3vsch-voah + name: + type: string + description: + A human-readable name based on the `normalizedPayee` name of the + transactions for this income stream + example: none + status: + $ref: '#/components/schemas/ActiveStatus' + estimateInclusion: + $ref: '#/components/schemas/EstimateInclusion' + confidence: + type: integer + description: + 'Level of confidence that the deposit stream represents income + (example: 85%)' + format: int32 + example: 70 + cadence: + $ref: '#/components/schemas/CadenceDetails' + netMonthly: + type: array + items: + $ref: '#/components/schemas/NetMonthly' + description: + A list of net monthly records. One instance for each complete + calendar month in the report. + example: + - month: 1522562400 + net: 2004.77 + netAnnual: + type: number + description: + Sum of all values in `netMonthlyIncome` over the previous 12 months + example: 110475.7 + projectedNetAnnual: + type: number + description: + Projected net income over the next 12 months, across all income + streams, based on `netAnnualIncome` + example: 0 + estimatedGrossAnnual: + type: number + description: + Before-tax gross annual income (estimated from `netAnnual`) across + all income stream in the past 12 months + projectedGrossAnnual: + type: number + description: + Projected gross income over the next 12 months, across all active + income streams, based on `projectedNetAnnual` + example: 151609 + averageMonthlyIncomeNet: + type: number + description: Monthly average amount over the previous 24 months + example: 9206.31 + incomeStreamMonths: + type: integer + description: The number of months the income transactions are observed + format: int32 + example: 18 + transactions: + type: array + items: + $ref: '#/components/schemas/ReportTransaction' + description: A list of transaction records + ActiveStatus: + description: 'Possible values: "ACTIVE", "INACTIVE"' + type: string + EstimateInclusion: + description: 'Possible values: "HIGH", "MODERATE", "LOW", "NO"' + type: string + CadenceDetails: + type: object + properties: + startDate: + type: integer + description: '`postedDate` of the first deposit transaction' + format: int64 + example: 1577986990 + stopDate: + type: integer + description: + '`postedDate` of the final deposit transaction (omitted if status is + active)' + format: int64 + example: 1587986990 + days: + type: integer + description: Number of days between the recurring deposits + format: int32 + example: 14 + NetMonthly: + required: + - month + - net + type: object + properties: + month: + type: integer + description: Timestamp for the first day of this month + format: int64 + example: 1522562400 + net: + type: number + description: + Total income during the given month, across all income streams + example: 2004.77 + CashFlowReportAccount: + type: object + properties: + id: + type: string + description: Finicity account ID + example: '6681984' + ownerName: + type: string + description: + The name(s) of the account owner(s), retrieved from the institution. + example: PATRICK & LORRAINE PURCHASER + ownerAddress: + type: string + description: + The mailing address of the account owner, retrieved from the + institution. + example: 7195 BELMONT ST. PARLIN, NJ 08859 + name: + type: string + description: The account name from the institution + example: Checking + number: + type: string + description: The account number from the institution (obfuscated) + example: XX1111 + type: + type: string + description: + 'CFR: `ALL` (`checking` / `savings` / `loan` / `mortgage` / `credit + card` / `CD` / `MM` / `investment`...)' + example: checking + aggregationStatusCode: + type: string + description: + The status of the most recent aggregation attempt for this account + (non-zero means the account was not accessed successfully for this + report, and additional fields for this account may not be reliable) + example: '0' + currentBalance: + type: number + description: The cleared balance of the account as-of `balanceDate` + example: 100000 + availableBalance: + type: number + description: Available balance + example: 1000 + balanceDate: + type: integer + description: A timestamp showing when the `balance` was captured + format: int64 + example: 1614880526 + transactions: + type: array + items: + $ref: '#/components/schemas/ReportTransaction' + description: a list of transaction records + cashFlowBalance: + $ref: '#/components/schemas/CashFlowCashFlowBalance' + cashFlowCredit: + $ref: '#/components/schemas/CashFlowCashFlowCredit' + cashFlowDebit: + $ref: '#/components/schemas/CashFlowCashFlowDebit' + cashFlowCharacteristic: + $ref: '#/components/schemas/CashFlowCashFlowCharacteristic' + CashFlowMonthlyCashFlowCharacteristics: + required: + - month + - totalCreditsLessTotalDebits + - totalCreditsLessTotalDebitsLessTransfers + - averageTransactionAmount + type: object + properties: + month: + type: integer + description: + One instance for each complete calendar month in the report + format: int64 + example: 1512111600 + totalCreditsLessTotalDebits: + type: number + description: Total Credits - Total Debits by month + example: 15000 + totalCreditsLessTotalDebitsLessTransfers: + type: number + description: Total Credits - Total Debits by month (Without Transfers) + example: 11000 + averageTransactionAmount: + type: number + description: Average transaction amount by month + example: 10 + CashFlowCashFlowCharacteristic: + required: + - monthlyCashFlowCharacteristics + - averageMonthlyNet + - averageMonthlyNetLessTransfers + - twelveMonthTotalNet + - twelveMonthTotalNetLessTransfers + - sixMonthAverageTotalCreditsLessTotalDebits + - sixMonthAverageTotalCreditsLessTotalDebitsLessTransfers + - twoMonthAverageTotalCreditsLessTotalDebits + - twoMonthAverageTotalCreditsLessTotalDebitsLessTransfers + type: object + properties: + monthlyCashFlowCharacteristics: + type: array + items: + $ref: '#/components/schemas/CashFlowMonthlyCashFlowCharacteristics' + description: List of attributes for each month + averageMonthlyNet: + type: number + description: Average (Total Credits - Total Debits) for the account + example: 2350 + averageMonthlyNetLessTransfers: + type: number + description: + Average (Total Credits - Total Debits) without transfers for the + account + example: 1000 + twelveMonthTotalNet: + type: number + description: + Sum of all monthly (Total Credits - Total Debits) each month for the + account + example: 12500 + twelveMonthTotalNetLessTransfers: + type: number + description: + Sum of all monthly (Total Credits - Total Debits) without transfers + for the account + example: 12400 + sixMonthAverageTotalCreditsLessTotalDebits: + type: number + description: 6 Month Average (Total Credits - Total Debits) + example: 55555 + sixMonthAverageTotalCreditsLessTotalDebitsLessTransfers: + type: number + description: + 6 Month Average (Total Credits - Total Debits) - (Without Transfers) + example: 55555 + twoMonthAverageTotalCreditsLessTotalDebits: + type: number + description: 2 Month Average (Total Credits - Total Debits) + example: 55555 + twoMonthAverageTotalCreditsLessTotalDebitsLessTransfers: + type: number + description: + 2 Month Average (Total Credits - Total Debits) - (Without Transfers) + example: 55555 + CashFlowMonthlyCashFlowBalances: + required: + - month + - minDailyBalance + - maxDailyBalance + - averageDailyBalance + - standardDeviationOfDailyBalance + - numberOfDaysNegativeBalance + - numberOfDaysPositiveBalance + type: object + properties: + month: + type: integer + description: + One instance for each complete calendar month in the report + format: int64 + example: 1512111600 + minDailyBalance: + type: number + description: Min Daily Balance for each month + example: 3479.39 + maxDailyBalance: + type: number + description: Max Daily Balance for each month + example: 3479.39 + averageDailyBalance: + type: number + description: Average Daily Balance for each month + example: 3479.39 + standardDeviationOfDailyBalance: + type: string + description: Standard Deviation of Daily Balance for each month + example: '20' + numberOfDaysNegativeBalance: + type: string + description: Number of Days Negative Balance for each month + example: '6' + numberOfDaysPositiveBalance: + type: string + description: Number of Days positive balance for each month + example: '0' + CashFlowCashFlowBalance: + required: + - monthlyCashFlowBalances + - minDailyBalance + - maxDailyBalance + - twelveMonthAverageDailyBalance + - sixMonthAverageDailyBalance + - twoMonthAverageDailyBalance + - twelveMonthStandardDeviationOfDailyBalance + - sixMonthStandardDeviationOfDailyBalance + - twoMonthStandardDeviationOfDailyBalance + - numberDaysNegativeBalance + - numberOfDaysPositiveBalance + type: object + properties: + monthlyCashFlowBalances: + type: array + items: + $ref: '#/components/schemas/CashFlowMonthlyCashFlowBalances' + description: List of attributes for each month + minDailyBalance: + type: number + description: Min daily balance across entire transaction history + example: 3479.39 + maxDailyBalance: + type: number + description: Max Daily Balance across entire transaction history + example: 3479.39 + twelveMonthAverageDailyBalance: + type: number + description: + Average Daily Balance across twelve months for the account + example: 3479.39 + sixMonthAverageDailyBalance: + type: number + description: Average Daily Balance across six months for the account + example: 3479.39 + twoMonthAverageDailyBalance: + type: number + description: Average Daily Balance across two months for the account + example: 3479.39 + twelveMonthStandardDeviationOfDailyBalance: + type: string + description: + Standard Deviation of Daily Balance across twelve months for the + account + example: '20' + sixMonthStandardDeviationOfDailyBalance: + type: string + description: + Standard Deviation of Daily Balance across six months for the + account + example: '20' + twoMonthStandardDeviationOfDailyBalance: + type: string + description: + Standard Deviation of Daily Balance across two months for the + account + example: '20' + numberDaysNegativeBalance: + type: string + description: + Number of Days Negative Balance over entire transaction history + example: '6' + numberOfDaysPositiveBalance: + type: string + description: + Number of Days positive balance over entire transaction history + example: '0' + ReportInstitution: + required: + - id + - name + - urlHomeApp + - accounts + type: object + properties: + id: + $ref: '#/components/schemas/NumericInstitutionId' + name: + type: string + description: Finicity institution name + example: FinBank Profiles + urlHomeApp: + type: string + description: The URL of the Financial Institution + example: http://www.finbank.com + accounts: + type: array + items: + $ref: '#/components/schemas/ReportInstitutionAccount' + description: A list of account records + ReportInstitutionAccount: + description: An account record + type: object + allOf: + - $ref: '#/components/schemas/CashFlowReportAccount' + - $ref: '#/components/schemas/PrequalificationReportAccount' + - $ref: '#/components/schemas/TransactionsReportAccount' + - $ref: '#/components/schemas/VOAReportAccount' + - $ref: '#/components/schemas/VOAWithIncomeReportAccount' + - $ref: '#/components/schemas/VOETransactionsReportAccount' + - $ref: '#/components/schemas/VOIReportAccount' + - $ref: '#/components/schemas/VOIETXVerifyReportAccount' + CashFlowReport: + description: A Cash Flow report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + startDate: + type: integer + description: + The `postedDate` of the earliest transaction analyzed for this + report + format: int64 + example: 1512594823 + endDate: + type: integer + description: + The `postedDate` of the latest transaction analyzed for this + report + format: int64 + example: 1575666823 + days: + type: integer + description: Number of days covered by the report + example: 730 + seasoned: + type: boolean + description: '"true" if the report covers more than 365 days' + example: true + institutions: + type: array + items: + $ref: '#/components/schemas/ReportInstitution' + description: + A list of institution records, including information about the + individual accounts used in this report + cashFlowBalanceSummary: + $ref: '#/components/schemas/CashFlowCashFlowBalanceSummary' + cashFlowCreditSummary: + $ref: '#/components/schemas/CashFlowCashFlowCreditSummary' + cashFlowDebitSummary: + $ref: '#/components/schemas/CashFlowCashFlowDebitSummary' + cashFlowCharacteristicsSummary: + $ref: '#/components/schemas/CashFlowCashFlowCharacteristicsSummary' + possibleLoanDeposits: + type: array + items: + $ref: '#/components/schemas/CashFlowPossibleLoanDeposits' + description: A possible loan deposits record + CashFlowPossibleLoanDeposits: + required: + - id + - name + - urlHomeApp + - accounts + type: object + properties: + id: + type: string + description: Finicity institution ID + example: '102105' + name: + type: string + description: Finicity institution name + example: FinBank Profiles + urlHomeApp: + type: string + description: The URL of the Financial Institution + example: http://www.finbank.com + accounts: + type: array + items: + $ref: '#/components/schemas/CashFlowPossibleLoanDepositsAccount' + description: A list of account records + CashFlowPossibleLoanDepositsAccount: + required: + - id + - ownerName + - ownerAddress + - name + - number + - type + - aggregationStatusCode + - currentBalance + - availableBalance + - balanceDate + - transactions + type: object + properties: + id: + type: string + description: Finicity account ID + example: '6681984' + ownerName: + type: string + description: + The name(s) of the account owner(s), retrieved from the institution. + example: PATRICK & LORRAINE PURCHASER + ownerAddress: + type: string + description: + The mailing address of the account owner, retrieved from the + institution. + example: 7195 BELMONT ST. PARLIN, NJ 08859 + name: + type: string + description: The account name from the institution + example: Checking + number: + type: string + description: The account number from the institution (obfuscated) + example: XX1111 + type: + type: string + description: + 'CFR: `ALL` (`checking` / `savings` / `loan` / `mortgage` / `credit + card` / `CD` / `MM` / `investment`...)' + example: checking + aggregationStatusCode: + type: string + description: + The status of the most recent aggregation attempt for this account + (non-zero means the account was not accessed successfully for this + report, and additional fields for this account may not be reliable) + example: '0' + currentBalance: + type: number + description: The cleared balance of the account as-of `balanceDate` + example: 100000 + availableBalance: + type: number + description: Available balance + example: 1000 + balanceDate: + type: integer + description: A timestamp showing when the `balance` was captured + format: int64 + example: 1614880526 + transactions: + type: array + items: + $ref: '#/components/schemas/ReportTransaction' + description: a list of transaction records + ReportTransaction: + required: + - id + - postedDate + - description + - normalizedPayee + - institutionTransactionId + - category + type: object + properties: + id: + $ref: '#/components/schemas/TransactionId' + amount: + type: number + description: + The total amount of the transaction. Transactions for deposits are + positive values, withdrawals and debits are negative values. + example: 100 + postedDate: + type: integer + description: + A timestamp showing when the transaction was posted or cleared by + the institution + format: int64 + example: 1571313600 + description: + type: string + description: + The description of the transaction, as provided by the institution + (often known as `payee`). In the event that this field is left blank + by the institution, Finicity will pass a value of "No description + provided by institution". All other values are provided by the + institution. + example: ATM CHECK DEPOSIT mm/dd + memo: + type: string + description: + The memo field of the transaction, as provided by the institution. + The institution must provide either a description, a memo, or both. + It is recommended to concatenate the two fields into a single value. + example: Some St Somewhere City State + normalizedPayee: + type: string + description: + A normalized payee, derived from the transaction's `description` and + `memo` fields + example: T-Mobile + institutionTransactionId: + type: string + description: + The unique identifier given by the FI for each transaction + example: '0000000000' + category: + type: string + description: + One of the values from Categories (assigned based on the payee name) + example: Income + type: + type: string + description: One of the values from transaction types + example: debit + securityType: + type: string + description: The type of investment security (VOA only) + symbol: + type: string + description: Investment symbol (VOA only) + commission: + type: number + CashFlowMonthlyCashFlowDebitSummaries: + required: + - month + - numberOfDebits + - totalDebitsAmount + - largestDebit + - numberOfDebitsLessTransfers + - totalDebitsAmountLessTransfers + - averageDebitAmount + type: object + properties: + month: + type: integer + description: + One instance for each complete calendar month in the report + format: int64 + example: 1512111600 + numberOfDebits: + type: string + description: Number of Debits by month across all accounts + example: '1500' + totalDebitsAmount: + type: number + description: Total Amount of Debits by month across all accounts + example: -12345.46 + largestDebit: + type: number + description: Largest Debit by month + example: -20000 + numberOfDebitsLessTransfers: + type: string + description: Number of Debits by month (less transfers) + example: '5' + totalDebitsAmountLessTransfers: + type: number + description: Total amount of debits by month (less transfers) + example: -2000 + averageDebitAmount: + type: number + description: The average debit amount + example: 500 + CashFlowCashFlowDebitSummary: + required: + - monthlyCashFlowDebitSummaries + - twelveMonthDebitTotal + - twelveMonthDebitTotalLessTransfers + - sixMonthDebitTotal + - sixMonthDebitTotalLessTransfers + - twoMonthDebitTotal + - twoMonthDebitTotalLessTransfers + type: object + properties: + monthlyCashFlowDebitSummaries: + type: array + items: + $ref: '#/components/schemas/CashFlowMonthlyCashFlowDebitSummaries' + description: List of attributes for each month + twelveMonthDebitTotal: + type: number + description: + Sum of all monthly debit transactions for each month by account + example: -1200 + twelveMonthDebitTotalLessTransfers: + type: number + description: + Sum of all monthly debit transactions without transfers for the + account + example: -1000 + sixMonthDebitTotal: + type: number + description: Six month sum of all debit transactions by account + example: -750 + sixMonthDebitTotalLessTransfers: + type: number + description: + Six month sum of all debit transactions without transfers for the + account + example: -500 + twoMonthDebitTotal: + type: number + description: Two month sum of all debit transactions by account + example: -150 + twoMonthDebitTotalLessTransfers: + type: number + description: + Two month sum of all debit transactions without transfers for the + account + example: -100 + CashFlowMonthlyCashFlowCharacteristicSummaries: + required: + - month + - totalCreditsLessTotalDebits + - totalCreditsLessTotalDebitsLessTransfers + - averageTransactionAmount + type: object + properties: + month: + type: integer + description: + One instance for each complete calendar month in the report + format: int64 + example: 1512111600 + totalCreditsLessTotalDebits: + type: number + description: Total Credits - Total Debits by month across all accounts + example: 15000 + totalCreditsLessTotalDebitsLessTransfers: + type: number + description: + Total Credits - Total Debits by month (Without Transfers) across all + accounts + example: 11000 + averageTransactionAmount: + type: number + description: Average transaction amount across all accounts + example: 10 + CashFlowCashFlowCharacteristicsSummary: + required: + - monthlyCashFlowCharacteristicSummaries + - averageMonthlyNet + - averageMonthlyNetLessTransfers + - twelveMonthTotalNet + - twelveMonthTotalNetLessTransfers + - sixMonthAverageTotalCreditsLessTotalDebits + - sixMonthAverageTotalCreditsLessTotalDebitsLessTransfers + - twoMonthAverageTotalCreditsLessTotalDebits + - twoMonthAverageTotalCreditsLessTotalDebitsLessTransfers + type: object + properties: + monthlyCashFlowCharacteristicSummaries: + type: array + items: + $ref: '#/components/schemas/CashFlowMonthlyCashFlowCharacteristicSummaries' + description: List of attributes for each month + averageMonthlyNet: + type: number + description: Average monthly net amount + example: 1250 + averageMonthlyNetLessTransfers: + type: number + description: Average monthly net less transfers + example: 1000 + twelveMonthTotalNet: + type: number + description: + Sum of all monthly (Total Credits - Total Debits) each month by the + account + example: 12500 + twelveMonthTotalNetLessTransfers: + type: number + description: + Sum of all monthly (Total Credits - Total Debits) without transfers + by the account + example: 12400 + sixMonthAverageTotalCreditsLessTotalDebits: + type: number + description: + 6 Month Average (Total Credits - Total Debits) across all accounts + example: 55555 + sixMonthAverageTotalCreditsLessTotalDebitsLessTransfers: + type: number + description: + 6 Month Average (Total Credits - Total Debits) - (Without Transfers) + across all accounts + example: 55555 + twoMonthAverageTotalCreditsLessTotalDebits: + type: number + description: + 2 Month Average (Total Credits - Total Debits) across all accounts + example: 55555 + twoMonthAverageTotalCreditsLessTotalDebitsLessTransfers: + type: number + description: + 2 Month Average (Total Credits - Total Debits) - (Without Transfers) + across all accounts + example: 55555 + CashFlowCashFlowCreditSummary: + required: + - monthlyCashFlowCreditSummaries + - twelveMonthCreditTotal + - twelveMonthCreditTotalLessTransfers + - sixMonthCreditTotal + - sixMonthCreditTotalLessTransfers + - twoMonthCreditTotal + - twoMonthCreditTotalLessTransfers + type: object + properties: + monthlyCashFlowCreditSummaries: + type: array + items: + $ref: '#/components/schemas/CashFlowMonthlyCashFlowCreditSummaries' + description: List of attributes for each month + twelveMonthCreditTotal: + type: number + description: + Sum of all credit transactions for each month for all accounts + example: 1200 + twelveMonthCreditTotalLessTransfers: + type: number + description: + Sum of all monthly credit transactions without transfers for all + accounts + example: 1000 + sixMonthCreditTotal: + type: number + description: Six month sum of all credit transactions + example: 750 + sixMonthCreditTotalLessTransfers: + type: number + description: + Six month sum of all monthly credit transactions without transfers + for all accounts + example: 500 + twoMonthCreditTotal: + type: number + description: Two month sum of all credit transactions + example: 150 + twoMonthCreditTotalLessTransfers: + type: number + description: + Two month sum of all monthly credit transactions without transfers + for all accounts + example: 100 + CashFlowMonthlycashflowDebits: + required: + - month + - numberOfDebits + - totalDebitsAmount + - largestDebit + - numberOfDebitsLessTransfers + - totalDebitsAmountLessTransfers + - averageDebitAmount + type: object + properties: + month: + type: integer + description: + One instance for each complete calendar month in the report + format: int64 + example: 1512111600 + numberOfDebits: + type: string + description: Number of Debits by month + example: '5' + totalDebitsAmount: + type: number + description: Total Amount of Debits by month + example: -12345 + largestDebit: + type: number + description: Largest Debit by month + example: -2000 + numberOfDebitsLessTransfers: + type: string + description: Number of Debits by month (less transfers) + example: '3' + totalDebitsAmountLessTransfers: + type: number + description: Total amount of debits by month (less transfers) + example: -2000 + averageDebitAmount: + type: number + description: The average debit amount + example: 500 + CashFlowCashFlowDebit: + required: + - monthlyCashFlowDebits + - twelveMonthDebitTotal + - twelveMonthDebitTotalLessTransfers + - sixMonthDebitTotal + - sixMonthDebitTotalLessTransfers + - twoMonthDebitTotal + - twoMonthDebitTotalLessTransfers + type: object + properties: + monthlyCashFlowDebits: + type: array + items: + $ref: '#/components/schemas/CashFlowMonthlycashflowDebits' + description: List of attributes for each month + twelveMonthDebitTotal: + type: number + description: + Sum of all monthly debit transactions for each month by account + example: 1200 + twelveMonthDebitTotalLessTransfers: + type: number + description: + Sum of all monthly debit transactions without transfers for the + account + example: 1000 + sixMonthDebitTotal: + type: number + description: Six month sum of all debit transactions + example: 750 + sixMonthDebitTotalLessTransfers: + type: number + description: + Six month sum of all debit transactions without transfers for the + account + example: 500 + twoMonthDebitTotal: + type: number + description: Two month sum of all debit transactions + example: 150 + twoMonthDebitTotalLessTransfers: + type: number + description: + Two month sum of all debit transactions without transfers for the + account + example: 100 + CashFlowCashFlowBalanceSummary: + required: + - monthlyCashFlowBalanceSummaries + - minDailyBalance + - maxDailyBalance + - twelveMonthAverageDailyBalance + - sixMonthAverageDailyBalance + - twoMonthAverageDailyBalance + - twelveMonthStandardDeviationOfDailyBalance + - sixMonthStandardDeviationOfDailyBalance + - twoMonthStandardDeviationOfDailyBalance + - numberOfDaysNegativeBalance + - numberOfDaysPositiveBalance + type: object + properties: + monthlyCashFlowBalanceSummaries: + type: array + items: + $ref: '#/components/schemas/CashFlowMonthlyCashFlowBalanceSummaries' + description: List of attributes for each month + minDailyBalance: + type: number + description: + Min Daily Balance across entire transaction history for all + accounts + example: 3479.39 + maxDailyBalance: + type: number + description: + Max Daily Balance across entire transaction history for all accounts + example: 3479.39 + twelveMonthAverageDailyBalance: + type: number + description: + Average Daily Balance across twelve months for all accounts + example: 3479.39 + sixMonthAverageDailyBalance: + type: number + description: Average Daily Balance across six months for all accounts + example: 3479.39 + twoMonthAverageDailyBalance: + type: number + description: Average Daily Balance across two months for all accounts + example: 3479.39 + twelveMonthStandardDeviationOfDailyBalance: + type: string + description: + Standard Deviation of Daily Balance across twelve months for all + accounts + example: '20' + sixMonthStandardDeviationOfDailyBalance: + type: string + description: + Standard Deviation of Daily Balance across six months for all + accounts + example: '20' + twoMonthStandardDeviationOfDailyBalance: + type: string + description: + Standard Deviation of Daily Balance across two months for all + accounts + example: '20' + numberOfDaysNegativeBalance: + type: string + description: + Number of Days Negative Balance over entire transaction history for + all accounts + example: '6' + numberOfDaysPositiveBalance: + type: string + description: + Number of Days Positive Balance over entire transaction history for + all accounts + example: '11' + CashFlowMonthlyCashFlowBalanceSummaries: + required: + - month + - minDailyBalance + - maxDailyBalance + - averageDailyBalance + - standardDeviationOfDailyBalance + - numberOfDaysNegativeBalance + - numberOfDaysPositiveBalance + type: object + properties: + month: + type: integer + description: + One instance for each complete calendar month in the report + format: int64 + example: 1512111600 + minDailyBalance: + type: number + description: Min Daily Balance for each month for all accounts + example: 3479.39 + maxDailyBalance: + type: number + description: Max Daily Balance for each month for all accounts + example: 3479.39 + averageDailyBalance: + type: number + description: Average Daily Balance for each month for all accounts + example: 3479.39 + standardDeviationOfDailyBalance: + type: string + description: + Standard Deviation of Daily Balance for each month for all accounts + example: '20.45454545' + numberOfDaysNegativeBalance: + type: string + description: + Number of Days Negative Balance for each month for all accounts + example: '6' + numberOfDaysPositiveBalance: + type: string + description: + Number of Days Positive Balance for each month for all accounts + example: '0' + CashFlowMonthlyCashFlowCreditSummaries: + required: + - month + - numberOfCredits + - totalCreditsAmount + - largestCredit + - numberOfCreditsLessTransfers + - totalCreditsAmountLessTransfers + - averageCreditAmount + - estimatedNumberOfLoanDeposits + - estimatedLoanDepositAmount + type: object + properties: + month: + type: integer + description: + One instance for each complete calendar month in the report + format: int64 + example: 1512111600 + numberOfCredits: + type: string + description: Number of credits by month across all accounts + example: '57' + totalCreditsAmount: + type: number + description: Total amount of credits by month across all accounts + example: 3479.39 + largestCredit: + type: number + description: Largest credit by month across all accounts + example: 3000.49 + numberOfCreditsLessTransfers: + type: string + description: + Number of credits by month (less transfers) across all accounts + example: '5' + totalCreditsAmountLessTransfers: + type: number + description: + Total amount of credits by month (less transfers) across all + accounts + example: 25.46 + averageCreditAmount: + type: number + description: The average credit amount + example: 500 + estimatedNumberOfLoanDeposits: + type: string + description: The estimated number of loan deposits by month + example: '0' + estimatedLoanDepositAmount: + type: number + description: The estimated loan deposit amount by month + example: 0 + PrequalificationReport: + description: A Prequalification report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + startDate: + type: integer + description: + The `postedDate` of the earliest transaction analyzed for this + report + format: int64 + example: 1512594823 + endDate: + type: integer + description: + The `postedDate` of the latest transaction analyzed for this + report + format: int64 + example: 1575666823 + days: + type: integer + description: The number of days covered by the report + example: 230 + seasoned: + type: boolean + description: '"true" if the report covers more than 180 days' + example: true + consolidatedAvailableBalance: + type: number + description: + The sum of available balance for all of the accounts included in + the report + example: 1929.57 + institutions: + type: array + items: + $ref: '#/components/schemas/ReportInstitution' + description: + A list of institution records, including information about the + individual accounts in this report + assets: + $ref: '#/components/schemas/PrequalificationReportAssetSummary' + PrequalificationReportAccount: + type: object + properties: + id: + type: integer + description: The ID of the account + format: int64 + example: 1000023996 + number: + type: string + description: + The account number from the institution (all digits except the last + four are obfuscated) + example: '1111' + ownerName: + type: string + description: + The name of the account owner. If no owner information is available, + this field won't appear in the report. + example: JOHN DOE + ownerAddress: + type: string + description: + The mailing address of the account owner. If no owner information is + available, this field won't appear in the report. + example: 123 GAINSVILLE STREET BUFORD, GA 84937 + name: + type: string + description: The account name from the institution + example: Checking + type: + type: string + description: One of the values from account types + example: checking + aggregationStatusCode: + type: integer + description: The status of the most recent aggregation attempt + format: int32 + example: 0 + balance: + type: number + description: The cleared balance of the account as-of `balanceDate` + example: 501.24 + balanceDate: + type: integer + description: A timestamp of the balance + format: int64 + example: 1588350276 + availableBalance: + type: number + description: Available balance + example: 1000 + averageMonthlyBalance: + type: number + description: The average monthly balance of the account + example: 501.02 + totNumberInsufficientFundsFeeDebitTxAccount: + type: integer + description: + The count for the total number of insufficient funds transactions, + based on the `fromDate` of the report + format: int32 + example: 0 + totNumberInsufficientFundsFeeDebitTxOver6MonthsAccount: + type: integer + description: + The total number of insufficient funds fees for the account over + six months + format: int32 + example: 0 + totNumberDaysSinceMostRecentInsufficientFundsFeeDebitTxAccount: + type: integer + description: + The total number of days since the most recent insufficient funds + fee for the account + format: int64 + example: 120 + transactions: + type: array + items: + $ref: '#/components/schemas/ReportTransaction' + description: a list of transaction records + asset: + $ref: '#/components/schemas/PrequalificationReportAssetSummary' + details: + $ref: '#/components/schemas/AccountDetails' + PrequalificationReportAssetSummary: + required: + - currentBalance + - twoMonthAverage + - sixMonthAverage + - beginningBalance + type: object + properties: + type: + type: string + description: + 'The asset type: "checking", "savings", "moneyMarket", "cd", + "investment"' + example: checking + availableBalance: + type: number + description: The available balance for the account + example: 1000 + currentBalance: + type: number + description: The current balance of the account + example: 1000 + twoMonthAverage: + type: number + description: The two month average daily balance of the account + example: -1865.96 + sixMonthAverage: + type: number + description: The six month average daily balance of the account + example: -7616.01 + beginningBalance: + type: number + description: + The beginning balance of the account per the time period of the + report + example: -17795.6 + AccountDetails: + type: object + properties: + interestMarginBalance: + type: number + description: + Only available for investment accounts. Net interest earned after + deducting interest paid out. + example: -50000 + availableCashBalance: + type: number + description: + Only available for investment accounts. Amount available for cash + withdrawal. + example: 1500 + vestedBalance: + type: number + description: + Only available for investment accounts. Vested amount in account. + example: 300000 + currentLoanBalance: + type: number + description: + Only available for investment accounts. Current loan balance. + example: 0 + availableBalanceAmount: + type: number + description: The available balance for the account + example: 1000 + PayStatementReport: + description: A Pay Statement report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + startDate: + type: integer + description: + The `postedDate` of the earliest transaction analyzed for this + report + format: int64 + example: 1572625469 + endDate: + type: integer + description: + The `postedDate` of the latest transaction analyzed for this + report + format: int64 + example: 1588350269 + reportStyle: + type: string + example: paystatement + numberOfBillableAssets: + type: integer + description: + Total number of billable pay statements included in the report + format: int32 + example: 1 + assetIds: + type: array + items: + $ref: '#/components/schemas/AssetId' + payStatements: + type: array + items: + $ref: '#/components/schemas/VOIEPayStatement' + description: Extracted pay statement details + VOIEPayStatement: + type: object + properties: + payPeriod: + type: string + description: The pay period of the pay statement + example: LastPayPeriod + billable: + type: boolean + description: Designates whether the pay statement is billable + example: true + assetId: + type: string + description: The asset ID of the stored pay statement + example: 6f8fb0a0-e882-4f57-b672-cf53f1397581 + payDate: + type: integer + description: The listed pay date for the pay statement + format: int64 + example: 1559241000 + startDate: + type: integer + description: The beginning of the pay period + format: int64 + example: 1557513000 + endDate: + type: integer + description: The end of the pay period + format: int64 + example: 1558722600 + netPayCurrent: + type: number + description: + The total pay after deductions for the employee for the current pay + period + example: 1802.22 + netPayYTD: + type: number + description: + The total accumulation of pay after deductions for the employee for + the current pay year + example: 36000 + grossPayCurrent: + type: number + description: + The total pay before deductions for the employee for the current pay + period + example: 24200 + grossPayYTD: + type: number + description: + The total accumulation of pay before deductions for the employee for + the current pay year + example: 72600 + payrollProvider: + type: string + description: The company that provides the pay stub. + example: Finicity + employer: + $ref: '#/components/schemas/Employer' + employee: + $ref: '#/components/schemas/Employee' + payStat: + type: array + items: + $ref: '#/components/schemas/PayStat' + description: + Information pertaining to the earnings on the pay statement + deductions: + type: array + items: + $ref: '#/components/schemas/Deduction' + description: Information pertaining to deductions on the pay statement + directDeposits: + type: array + items: + $ref: '#/components/schemas/DirectDeposit' + description: + Information pertaining to direct deposits on the pay statement + Employer: + type: object + properties: + name: + type: string + description: The name of the employer + example: Rocket Surgery + Employee: + type: object + properties: + name: + type: string + description: The name of the employee + example: Patrick Purchaser + DirectDeposit: + type: object + properties: + amountCurrent: + type: number + description: The amount of the deposit + example: 1744.61 + accountLastFour: + type: string + description: + The last four numbers of the account the deposit went into + example: '1234' + Deduction: + type: object + properties: + name: + type: string + description: + The normalized category of the deductions in the format + [type][number]. The number is the will be the iterating number of + the type's occurrence starting at one. + example: '401' + description: + type: string + description: The deduction line's deduction type description + example: 401k + amountCurrent: + type: number + description: + The amount for the deduction line deducted from employee's pay for + the specified pay period + example: 1744.61 + amountYTD: + type: number + description: + The amount for the deduction line being deducted from the employee's + pay for the current pay year + example: 1744.6 + type: + type: string + description: Categorization based on the deduction line's description + example: 401 Deductions + PayStat: + type: object + properties: + name: + type: string + description: + The normalized category of the earnings with a number appended. The + number is the will be the iterating number of the type's occurrence + starting at one. + example: regular 1 + type: + $ref: '#/components/schemas/PayStatEarningsCategorizationType' + description: + type: string + description: The earnings line's pay type description + example: regular income + amountCurrent: + type: number + description: + The amount for the earning line paid out to the employee for the + specified pay period. + example: 6000 + amountYTD: + type: number + description: + The amount for the earning line being paid out to the employee for + the current pay year. + example: 18000 + PayStatEarningsCategorizationType: + type: string + description: >- + The categorization based on the earning line's description. Possible + values: + + * "bereavement" + + + * "bonus" + + + * "commission" + + + * "holiday" + + + * "jury duty" + + + * "overtime" + + + * "pension" + + + * "pto" + + + * "regular" + + + * "sick" + + + * "tips" + + + * "unknown" + + + * "vacation" + + + * "reimbursement" + + + * "stock" + + + * "benefit" + StatementReport: + description: A Statement report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAck' + - type: object + properties: + assetId: + $ref: '#/components/schemas/AssetId' + TransactionsReport: + description: A Transactions report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + startDate: + type: integer + description: + The `postedDate` of the earliest transaction analyzed for this + report + format: int64 + example: 1579348800 + endDate: + type: integer + description: + The `postedDate` of the latest transaction analyzed for this + report + format: int64 + example: 1594382400 + days: + type: integer + description: Number of days covered by the report + format: int64 + example: 174 + seasoned: + type: boolean + description: '"true" if the report covers more than 365 days' + example: false + institutions: + type: array + items: + $ref: '#/components/schemas/ReportInstitution' + description: A list of institution records + VOAReport: + description: A VOA report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + startDate: + type: integer + description: + The `postedDate` of the earliest transaction analyzed for this + report + format: int64 + example: 1512594823 + endDate: + type: integer + description: + The `postedDate` of the latest transaction analyzed for this + report + format: int64 + example: 1575666823 + days: + type: integer + description: Number of days covered by the report + example: 180 + seasoned: + type: boolean + description: '"true" if the report covers more than 180 days' + example: true + consolidatedAvailableBalance: + type: number + description: + The sum of available balance for all of the accounts included in + the report + example: 1929.57 + institutions: + type: array + items: + $ref: '#/components/schemas/ReportInstitution' + description: A list of institution records + assets: + $ref: '#/components/schemas/PrequalificationReportAssetSummary' + VOAWithIncomeReport: + description: A VOA with income report + type: object + allOf: + - $ref: '#/components/schemas/VOAReport' + VOEPayrollReport: + description: A VOE Payroll report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + employmentHistory: + type: array + items: + $ref: '#/components/schemas/PayrollEmploymentHistory' + description: + An array of employment histories, one for each of the consumer's + verified employers + PayrollEmploymentHistory: + required: + - asOfDate + - employerName + - payrollSource + - employee + - employment + - income + type: object + properties: + asOfDate: + type: integer + description: + The last time the payroll data was updated in the payroll provider's + system + format: int64 + example: 1596175200 + employerName: + type: string + description: + Name of the employer as stated by the employer in the payroll system + example: ACME INC + payrollSource: + type: string + description: + The name of the payroll source where the data was retrieved + example: finPayroll + employee: + $ref: '#/components/schemas/PayrollEmployeeRecord' + employment: + $ref: '#/components/schemas/PayrollEmploymentRecord' + income: + $ref: '#/components/schemas/PayrollVOEIncomeRecord' + PayrollVOEIncomeRecord: + required: + - payFrequency + type: object + properties: + payFrequency: + type: string + description: + 'The current pay frequency:
* `Daily`
* `Weekly`
* + `Bi-Weekly`
* `Bi-Weekly Odd` (Bi-Weekly pay on odd weeks)
+ * `Bi-Weekly Even` (Bi-Weekly pay on even weeks)
* + `Semi-Monthly`
* `Monthly`
* `Quarterly`
* + `Semi-Annual`
* `Annual`
* `Every 2.6 wks`
* `Every + 4 wks`
* `Every 5.2 wks`' + example: Weekly + PayrollEmployeeRecord: + required: + - name + - givenName + - familyName + type: object + properties: + name: + type: string + description: + 'Full name of the employee: first, middle (if stated), and last name' + example: John Doe Smith + givenName: + type: string + description: First name of employee + example: John + middleName: + type: string + description: Middle name of employee, if stated + example: Doe + familyName: + type: string + description: Last name of employee + example: Smith + address: + type: array + items: + $ref: '#/components/schemas/PayrollEmployeeAddress' + description: Array of addresses + PayrollEmployerAddress: + type: object + properties: + address1: + type: string + description: + Employer address as stated by the employer in the payroll system + example: Address 1 + city: + type: string + description: + Employer city as stated by the employer in the payroll system + example: City + state: + type: string + description: + Employer state as stated by the employer in the payroll system + example: TX + zip: + type: string + description: + Employer zip code as stated by the employer in the payroll system + example: '99999' + PayrollEmploymentRecord: + required: + - employerName + - latestPayDate + - daysSinceLastPay + - numberPayCadenceWithoutPay + - employmentStatusCode + - employmentStatusName + - workLevelStatus + type: object + properties: + employerName: + type: string + description: + Name of the employer as stated by the employer in the payroll system + example: ACME INC + legalEntityId: + type: string + description: Employer identification number (EIN) + example: '752760000' + originalHireDate: + type: integer + description: The original hired date of an employee at the company + format: int64 + example: 1527832800 + latestHireDate: + type: integer + description: + If an employee leaves the company and returns later, then the + employer states the latest hire date at the company + format: int64 + example: 1527832800 + latestPayDate: + type: integer + description: The most recent pay date from an employer + format: int64 + example: 1596175200 + daysSinceLastPay: + type: integer + description: The number of days since an employee was last paid + format: int32 + example: 10 + numberPayCadenceWithoutPay: + type: integer + description: + The number of pay cadences an employee has not been paid; determined + by the pay frequency + format: int32 + example: 1 + employmentEndDate: + type: integer + description: + The date an employee ended their employment at the company + format: int64 + example: 1527832800 + employmentDuration: + type: string + description: + The length of time an employee has been employed with that employer + in ISO 8601 format (eg P1Y6M0D) + example: P1Y6M0D + employerAddress: + type: array + items: + $ref: '#/components/schemas/PayrollEmployerAddress' + description: Array of addresses + employmentStatusCode: + type: string + description: + 'Status codes: `A` - Active, `NLE` - No Longer Employed, `L` - Leave' + example: A + employmentStatusName: + type: string + description: 'Status name: `Active`, `No Longer Employed`, or `Leave`' + example: Active + workLevelCode: + type: string + description: + The abbreviate code for the employment level names (workLevelName) + that we receive from the employer + example: FT + workLevelName: + type: string + description: + The employment level name is whatever we receive from the employer, + such as full time, part time, temp, contractor, and more + example: Full Time-Regular + workLevelStatus: + type: string + description: + 'The categorized work level status. Enumerations are:
* + `Temporary`
* `Seasonal`
* `Retired`
* `Student`
+ * `Full Time`
* `Part Time`
* `Unspecified`
This is a + new field, currently enabled only for testing reports. It will be + added for all reports in August 2021.' + example: Full Time + positionTitle: + type: string + description: Employee job title + example: Shift Supervisor + positionDuration: + type: string + description: + The length of time an employee has been employed at their current or + latest position for this employment in ISO 8601 format (eg P1Y6M0D) + example: P1Y6M0D + PayrollEmployeeAddress: + type: object + properties: + address1: + type: string + description: + Employee address as stated by the employer in the payroll system + example: Address 1 + city: + type: string + description: + Employee city as stated by the employer in the payroll system + example: City + state: + type: string + description: + Employee state as stated by the employer in the payroll system + example: TX + zip: + type: string + description: + Employee zip code as stated by the employer in the payroll system + example: '99999' + VOETransactionsReport: + description: A VOE Transactions report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + startDate: + type: integer + description: + The `postedDate` of the earliest transaction analyzed for this + report + format: int64 + example: 1512594823 + endDate: + type: integer + description: + The `postedDate` of the latest transaction analyzed for this + report + format: int64 + example: 1575666823 + days: + type: integer + description: Number of days covered by the report + example: 120 + seasoned: + type: boolean + description: '"true" if the report covers more than 180 days' + example: true + institutions: + type: array + items: + $ref: '#/components/schemas/ReportInstitution' + description: + A list of institution records, including information about the + individual accounts used in this report + VOIReport: + description: A VOI report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + startDate: + type: integer + description: + The postedDate of the earliest transaction analyzed for this + report + format: int64 + example: 1572625469 + endDate: + type: integer + description: + The postedDate of the latest transaction analyzed for this + report + format: int64 + example: 1588350269 + days: + type: integer + description: Number of days covered by the report + format: int64 + example: 200 + seasoned: + type: boolean + description: '"true" if the report covers more than 180 days' + example: true + institutions: + type: array + items: + $ref: '#/components/schemas/ReportInstitution' + description: A list of institution records + income: + type: array + items: + $ref: '#/components/schemas/ReportIncomeStreamSummary' + ReportIncomeStreamSummary: + required: + - confidenceType + - netMonthly + - incomeEstimate + type: object + properties: + confidenceType: + $ref: '#/components/schemas/EstimateInclusion' + netMonthly: + type: array + items: + $ref: '#/components/schemas/NetMonthly' + description: '' + incomeEstimate: + $ref: '#/components/schemas/ReportIncomeEstimate' + ReportIncomeEstimate: + required: + - netAnnual + - projectedNetAnnual + - estimatedGrossAnnual + - projectedGrossAnnual + type: object + properties: + netAnnual: + type: number + example: 1000.12 + projectedNetAnnual: + type: number + example: 1500.23 + estimatedGrossAnnual: + type: number + example: 2000.12 + projectedGrossAnnual: + type: number + example: 2500.23 + VOIEPayrollReport: + description: A VOIE Payroll report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + employmentHistory: + type: array + items: + $ref: '#/components/schemas/PayrollEmploymentHistory' + description: + An array of employment histories, one for each of the consumer's + verified employers + VOIEPaystubReport: + description: A VOIE Paystub report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + assetIds: + type: array + items: + $ref: '#/components/schemas/AssetId' + description: The pay statements included in the report + numberOfBillableAssets: + type: integer + description: + Total number of billable pay statements included in the report + format: int32 + example: 1 + payStatements: + type: array + items: + $ref: '#/components/schemas/VOIEPaystubWithStatementPayStatement' + description: + Extracted pay statement details, and the transaction matching + summary + VOIEPaystubWithStatementPayStatement: + required: + - payPeriod + - billable + - assetId + - payDate + - startDate + - endDate + - netPayCurrent + - netPayYTD + - grossPayCurrent + - grossPayYTD + - employer + - employee + - payStat + - directDeposits + - monthlyIncome + - institutions + type: object + properties: + payPeriod: + type: string + description: The pay period of the pay statement + example: LastPayPeriod + billable: + type: boolean + description: + This will display true if the pay statement is billable. If a pay + statement has been digitized previously, this will display as false + as it will not be billable. + example: true + assetId: + type: string + description: The asset ID of the stored pay statement + example: 6f8fb0a0-e882-4f57-b672-cf53f1397581 + payDate: + type: integer + description: The listed pay date for the pay statement + format: int64 + example: 1559241000 + startDate: + type: integer + description: The beginning of the pay period + format: int64 + example: 1557513000 + endDate: + type: integer + description: The end of the pay period + format: int64 + example: 1558722600 + netPayCurrent: type: number - description: The available balance for the account - example: 501.24 - aggregationStatusCode: - $ref: '#/components/schemas/AggregationStatusCode' - balance: + description: + The total pay after deductions for the employee for the current pay + period + example: 1802.22 + netPayYTD: type: number - description: The cleared balance of the account as-of `balanceDate` - example: 501.24 - balanceDate: - # Date for when the balance was captured - $ref: '#/components/schemas/UnixDate' - averageMonthlyBalance: + description: + The total accumulation of pay after deductions for the employee for + the current pay year + example: 36000 + grossPayCurrent: type: number - description: The average monthly balance of this account - example: 501.02 - transactions: + description: + The total pay before deductions for the employee for the current pay + period + example: 24200 + grossPayYTD: + type: number + description: + The total accumulation of pay before deductions for the employee for + the current pay year + example: 72600 + payrollProvider: + type: string + description: The payroll provider extracted from the pay statement + example: Finicity + employer: + $ref: '#/components/schemas/Employer' + employee: + $ref: '#/components/schemas/Employee' + payStat: type: array items: - $ref: '#/components/schemas/ReportTransaction' - description: An array of transactions belonging to the account - asset: - $ref: '#/components/schemas/ReportAssetSummary' - details: - $ref: '#/components/schemas/AccountDetail' - incomeStream: - $ref: '#/components/schemas/ReportIncomeStream' - incomeStreams: + $ref: '#/components/schemas/PayStat' + description: + Information pertaining to the earnings on the pay statement + directDeposits: type: array items: - $ref: '#/components/schemas/ReportIncomeStream' - description: A list of income stream records - totNumberInsufficientFundsFeeDebitTxAccount: - type: integer + $ref: '#/components/schemas/DirectDeposit' description: - The count for the total number of insufficient funds transactions, - based on the `fromDate` of the report. - format: int64 - example: 0 - totNumberInsufficientFundsFeeDebitTxOver2MonthsAccount: - type: integer + Information pertaining to the direct deposits on the pay statement + monthlyIncome: + $ref: '#/components/schemas/PaystubMonthlyIncomeRecord' + institutions: + type: array + items: + type: string description: - The count for the total number of insufficient funds transactions - for the last two months, based on the `fromDate` of the report. - format: int64 - example: 0 - totNumberInsufficientFundsFeeDebitTxOver6MonthsAccount: + Not populated for the voieWithStatement style of paystub report. For + the VOIE - Paystub (with TXVerify) reports this would include + details of the financial institution accounts and income streams + with matching transactions to the pay statement. + example: [] + errorCode: type: integer + description: Error code for the asset + format: int32 + errorMessage: + type: string + description: Error message for the asset + PaystubMonthlyIncomeRecord: + type: object + properties: + estimatedMonthlyBasePay: + type: number description: - The count for the total number of insufficient funds transactions - for the last six months, based on the `fromDate` of the report. - format: int64 - example: 0 - totNumberDaysSinceMostRecentInsufficientFundsFeeDebitTxAccount: - type: integer + The estimated monthly base pay amount for the employment from the + paystub, calculated by Finicity + example: 2000 + estimatedMonthlyOvertimePay: + type: number description: - The number of days since the most recent insufficient funds - transaction, based on the `fromDate` of the report. - format: int64 - example: 120 + The estimated monthly overtime pay amount for the employment from + the paystub, calculated by Finicity + example: 50 + estimatedMonthlyBonusPay: + type: number + description: + The estimated monthly bonus pay amount for the employment from the + paystub, calculated by Finicity + example: 20 + estimatedMonthlyCommissionPay: + type: number + description: + The estimated commission bonus pay amount for the employment from + the paystub, calculated by Finicity + example: 50 + VOIEPaystubWithTXVerifyReport: + description: A VOIE Paystub With TXVerify report + type: object + allOf: + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' + - type: object + properties: + assetIds: + type: array + items: + $ref: '#/components/schemas/AssetId' + description: The pay statements included in the report + numberOfBillableAssets: + type: integer + description: + Total number of billable pay statements included in the report + format: int32 + example: 1 + payStatements: + type: array + items: + $ref: '#/components/schemas/VOIEPaystubWithStatementPayStatement' + description: + Extracted pay statement details, and the transaction matching + summary + institutions: + type: array + items: + $ref: '#/components/schemas/ReportInstitution' + description: + The details of the financial institution accounts included in + the report. + ReportSummary: + required: + - id + - requestId + - requesterName + - createdDate + - consumerId + - consumerSsn + - type + - status + properties: + id: + $ref: '#/components/schemas/ReportId' + requestId: + $ref: '#/components/schemas/ReportRequestId' + requesterName: + $ref: '#/components/schemas/PartnerName' + createdDate: + $ref: '#/components/schemas/UnixDate' + consumerId: + $ref: '#/components/schemas/ConsumerId' + consumerSsn: + $ref: '#/components/schemas/SocialSecurityNumberLastDigits' + type: + $ref: '#/components/schemas/ReportType' + status: + $ref: '#/components/schemas/ReportStatus' + # constraints: + # oneOf: + # - $ref: '#/components/schemas/PayStatementReportConstraints' + # - $ref: '#/components/schemas/StatementReportConstraints' + # - $ref: '#/components/schemas/TransactionsReportConstraintsOut' + # - $ref: '#/components/schemas/VOAReportConstraintsOut' + # - $ref: '#/components/schemas/VOAWithIncomeReportConstraintsOut' + # - $ref: '#/components/schemas/PrequalificationReportConstraintsOut' + # - $ref: '#/components/schemas/VOIReportConstraintsOut' + # - $ref: '#/components/schemas/PayrollReportConstraintsOut' + # - $ref: '#/components/schemas/VOIEWithTXVerifyReportConstraintsOut' + # - $ref: '#/components/schemas/VOIEReportConstraints' + # - $ref: '#/components/schemas/VOETransactionsReportConstraintsOut' + # - $ref: '#/components/schemas/CashFlowReportConstraintsOut' VOIEWithInterviewData: required: - txVerifyInterview @@ -7085,12 +12158,6 @@ components: properties: callbackUrl: $ref: '#/components/schemas/TxPushCallbackUrl' - Status: - enum: - - ACTIVE - - INACTIVE - type: string - example: ACTIVE TransactionType: type: string description: >- @@ -7147,19 +12214,6 @@ components: * "transfer" example: atm - ReportTransactionPayStatementMatchTypes: - enum: - - DATE - - NET_AMOUNT - - INTERVIEW_AMOUNT - - LESS_THAN_NET_PAY - - EMPLOYER_NAME - - INCOME_STREAM_PAYCHECK - - DIRECT_DEPOSIT_AMOUNT - - PAYROLL_PROVIDER - type: string - description: Pay Statement matches found at the transaction level - example: DATE PayStatement: description: A pay statement document and pay statement label required: @@ -7197,28 +12251,65 @@ components: ReportStatus: type: string description: - A report generation status ("inProgress", "success", "failure") + 'A report generation status. Possible values: "inProgress", "success", + "failure".' example: inProgress ReportType: - enum: - - voi - - voa - - voaHistory - - history - - voieTxVerify - - voieWithReport - - voieWithInterview - - paystatement - - preQualVoa - - assetSummary - - voieWithStatement - - transactions - - statement - - voiePayroll - - voeTransactions - - voePayroll - - cfrp - - cfrb + description: >- + A report type. Possible values: + + * "voi" + + + * "voa" + + + * "voaHistory" + + + * "history" + + + * "voieTxVerify" + + + * "voieWithReport" + + + * "voieWithInterview" + + + * "paystatement" + + + * "preQualVoa" + + + * "assetSummary" + + + * "voie" + + + * "transactions" + + + * "statement" + + + * "voiePayroll" + + + * "voeTransactions" + + + * "voePayroll" + + + * "cfrp" + + + * "cfrb" type: string example: voi LoanPaymentDetails: @@ -7323,7 +12414,39 @@ components: $ref: '#/components/schemas/PayStatementData' reportCustomFields: $ref: '#/components/schemas/ReportCustomFields' - PayStatementReportData: + CashFlowReportConstraints: + type: object + properties: + accountIds: + $ref: '#/components/schemas/ReportAccountIdsString' + reportCustomFields: + $ref: '#/components/schemas/ReportCustomFields' + showNsf: + $ref: '#/components/schemas/ShowNsf' + fromDate: + # Without this parameter, the report defaults to 61 days if available + # If included, the epoch timestamp should be 10 digits long and be within + # two years of the present day + $ref: '#/components/schemas/UnixDate' + incomeStreamConfidenceMinimum: + $ref: '#/components/schemas/IncomeStreamConfidenceMinimum' + CashFlowReportConstraintsOut: + type: object + properties: + accountIds: + $ref: '#/components/schemas/ReportAccountIds' + reportCustomFields: + $ref: '#/components/schemas/ReportCustomFields' + showNsf: + $ref: '#/components/schemas/ShowNsf' + fromDate: + # Without this parameter, the report defaults to 61 days if available + # If included, the epoch timestamp should be 10 digits long and be within + # two years of the present day + $ref: '#/components/schemas/UnixDate' + incomeStreamConfidenceMinimum: + $ref: '#/components/schemas/IncomeStreamConfidenceMinimum' + PayStatementReportAck: required: - id - portfolioId @@ -7337,12 +12460,33 @@ components: - consumerSsn - type - status + - constraints allOf: - - $ref: '#/components/schemas/BaseReportData' + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' - type: object properties: constraints: $ref: '#/components/schemas/PayStatementReportConstraints' + CashFlowReportAck: + required: + - id + - customerType + - customerId + - requestId + - requesterName + - createdDate + - title + - consumerId + - consumerSsn + - type + - status + - constraints + allOf: + - $ref: '#/components/schemas/BaseReportAck' + - type: object + properties: + constraints: + $ref: '#/components/schemas/CashFlowReportConstraintsOut' VOIEWithTXVerifyReportConstraints: required: - voieWithInterviewData @@ -7376,7 +12520,7 @@ components: $ref: '#/components/schemas/UnixDate' incomeStreamConfidenceMinimum: $ref: '#/components/schemas/IncomeStreamConfidenceMinimum' - VOIEPaystubWithTXVerifyReportData: + VOIEPaystubWithTXVerifyReportAck: required: - id - portfolioId @@ -7390,8 +12534,9 @@ components: - consumerSsn - type - status + - constraints allOf: - - $ref: '#/components/schemas/BaseReportData' + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' - type: object properties: constraints: @@ -7542,7 +12687,7 @@ components: $ref: '#/components/schemas/UnixDate' transactionDate: $ref: '#/components/schemas/UnixDate' - TransactionsReportData: + TransactionsReportAck: required: - id - portfolioId @@ -7556,13 +12701,26 @@ components: - consumerSsn - type - status + - constraints allOf: - - $ref: '#/components/schemas/BaseReportData' + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' - type: object properties: constraints: - $ref: '#/components/schemas/TransactionReportConstraints' - TransactionReportConstraints: + $ref: '#/components/schemas/TransactionsReportConstraintsOut' + TransactionsReportConstraints: + type: object + properties: + accountIds: + $ref: '#/components/schemas/ReportAccountIdsString' + fromDate: + # Without this parameter, the report defaults to 61 days if available + # If included, the epoch timestamp should be 10 digits long and be within + # two years of the present day + $ref: '#/components/schemas/UnixDate' + reportCustomFields: + $ref: '#/components/schemas/ReportCustomFields' + TransactionsReportConstraintsOut: type: object properties: accountIds: @@ -7573,6 +12731,7 @@ components: # two years of the present day $ref: '#/components/schemas/UnixDate' toDate: + # The ending timestamp for the date range. The value must be greater than `fromDate` $ref: '#/components/schemas/UnixDate' includePending: $ref: '#/components/schemas/IncludePending' @@ -7602,15 +12761,6 @@ components: $ref: '#/components/schemas/Birthday' suffix: $ref: '#/components/schemas/Suffix' - EstimateInclusion: - enum: - - HIGH - - MODERATE - - LOW - - NO - type: string - description: Estimate Inclusion - example: HIGH StatementReportConstraints: required: - statementReportData @@ -7635,7 +12785,7 @@ components: example: 1 default: 1 maximum: 6 - StatementReportData: + StatementReportAck: required: - id - portfolioId @@ -7649,8 +12799,9 @@ components: - consumerSsn - type - status + - constraints allOf: - - $ref: '#/components/schemas/BaseReportData' + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' - type: object properties: constraints: @@ -7668,7 +12819,7 @@ components: reportId: # The Report Id of the original VOIE Payroll report $ref: '#/components/schemas/ReportId' - PayrollReportData: + PayrollReportAck: required: - id - portfolioId @@ -7682,8 +12833,9 @@ components: - consumerSsn - type - status + - constraints allOf: - - $ref: '#/components/schemas/BaseReportData' + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' - type: object properties: constraints: @@ -7788,7 +12940,7 @@ components: $ref: '#/components/schemas/ExtractDeductions' extractDirectDeposit: $ref: '#/components/schemas/ExtractDirectDeposit' - VOIEWithStatementReportConstraints: + VOIEReportConstraints: required: - voieWithStatementData type: object @@ -7800,7 +12952,7 @@ components: description: >- The request details from the report generation that were used to generate the report - VOIEPaystubWithStatementReportData: + VOIEPaystubReportAck: required: - id - portfolioId @@ -7814,13 +12966,14 @@ components: - consumerSsn - type - status + - constraints type: object allOf: - - $ref: '#/components/schemas/BaseReportData' + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' - type: object properties: constraints: - $ref: '#/components/schemas/VOIEWithStatementReportConstraints' + $ref: '#/components/schemas/VOIEReportConstraints' VOETransactionsReportConstraints: type: object properties: @@ -7854,7 +13007,7 @@ components: $ref: '#/components/schemas/UnixDate' incomeStreamConfidenceMinimum: $ref: '#/components/schemas/IncomeStreamConfidenceMinimum' - VOETransactionsReportData: + VOETransactionsReportAck: required: - id - portfolioId @@ -7868,45 +13021,13 @@ components: - consumerSsn - type - status + - constraints allOf: - - $ref: '#/components/schemas/BaseReportData' + - $ref: '#/components/schemas/BaseReportAckWithPortfolioId' - type: object properties: constraints: $ref: '#/components/schemas/VOETransactionsReportConstraintsOut' - ReportAssetSummary: - required: - - currentBalance - - twoMonthAverage - - sixMonthAverage - - beginningBalance - type: object - properties: - type: - type: string - description: checking / savings / moneyMarket / cd / investment - example: checking - availableBalance: - type: number - description: The available balance for the account - example: 1000 - currentBalance: - type: number - description: Current balance of the account - example: 1000 - twoMonthAverage: - type: number - description: Two month average daily balance of the account - example: -1865.96 - sixMonthAverage: - type: number - description: Six month average daily balance of the account - example: -7616.01 - beginningBalance: - type: number - description: - Beginning balance of account per the time period in the report - example: -17795.6 LoanPaymentDetailsAccount: required: - accountId @@ -8811,9 +13932,17 @@ components: $ref: '#/components/schemas/AccountId' ShowNsf: type: boolean - description: - Include the non-sufficient funds (NSF) summary in the JSON and PDF - reports + description: >- + Include the non-sufficient funds (NSF) summary JSON and the NSF summary + PDF section in the report. Data included: + + * Account + + + * Total number of NSF funds + + + * Days since the most recent NFS funds fee example: false Categories: type: string diff --git a/tests/src/test/java/com/mastercard/finicity/client/api/BankStatementsApiTest.java b/tests/src/test/java/com/mastercard/finicity/client/api/BankStatementsApiTest.java index 7b12225..08336f3 100644 --- a/tests/src/test/java/com/mastercard/finicity/client/api/BankStatementsApiTest.java +++ b/tests/src/test/java/com/mastercard/finicity/client/api/BankStatementsApiTest.java @@ -2,7 +2,6 @@ import com.mastercard.finicity.client.ApiException; import com.mastercard.finicity.client.model.CustomerAccount; -import com.mastercard.finicity.client.model.ReportType; import com.mastercard.finicity.client.model.StatementData; import com.mastercard.finicity.client.model.StatementReportConstraints; import com.mastercard.finicity.client.test.BaseTest; @@ -44,9 +43,9 @@ void generateStatementReportTest() { .statementReportData(new StatementData() .index(1) .accountId(Long.valueOf(existingAccountId))); - var reportData = api.generateStatementReport(CUSTOMER_ID, constraints, null); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.STATEMENT, reportData.getType()); + var reportAck = api.generateStatementReport(CUSTOMER_ID, constraints, null); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("statement", reportAck.getType()); } catch (ApiException e) { fail(e); } diff --git a/tests/src/test/java/com/mastercard/finicity/client/api/CashFlowApiTest.java b/tests/src/test/java/com/mastercard/finicity/client/api/CashFlowApiTest.java index 894fe04..6ebb5a9 100644 --- a/tests/src/test/java/com/mastercard/finicity/client/api/CashFlowApiTest.java +++ b/tests/src/test/java/com/mastercard/finicity/client/api/CashFlowApiTest.java @@ -1,8 +1,7 @@ package com.mastercard.finicity.client.api; import com.mastercard.finicity.client.ApiException; -import com.mastercard.finicity.client.model.ReportConstraints; -import com.mastercard.finicity.client.model.ReportType; +import com.mastercard.finicity.client.model.CashFlowReportConstraints; import com.mastercard.finicity.client.test.BaseTest; import com.mastercard.finicity.client.test.utils.AccountUtils; import com.mastercard.finicity.client.test.utils.ConsumerUtils; @@ -32,12 +31,12 @@ protected static void beforeAll() { @Test void generateCashFlowReportBusinessTest() { try { - var constraints = new ReportConstraints() + var constraints = new CashFlowReportConstraints() .showNsf(true) .accountIds(customerAccountList); - var reportData = api.generateCashFlowBusinessReport(CUSTOMER_ID, constraints, null); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.CFRB, reportData.getType()); + var reportAck = api.generateCashFlowBusinessReport(CUSTOMER_ID, constraints, null); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("cfrb", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -47,12 +46,12 @@ void generateCashFlowReportBusinessTest() { @Test void generateCashFlowReportPersonalTest() { try { - var constraints = new ReportConstraints() + var constraints = new CashFlowReportConstraints() .showNsf(true) .accountIds(customerAccountList); - var reportData = api.generateCashFlowPersonalReport(CUSTOMER_ID, constraints, null); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.CFRP, reportData.getType()); + var reportAck = api.generateCashFlowPersonalReport(CUSTOMER_ID, constraints, null); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("cfrp", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); diff --git a/tests/src/test/java/com/mastercard/finicity/client/api/ConnectApiTest.java b/tests/src/test/java/com/mastercard/finicity/client/api/ConnectApiTest.java index 0191888..ba69420 100644 --- a/tests/src/test/java/com/mastercard/finicity/client/api/ConnectApiTest.java +++ b/tests/src/test/java/com/mastercard/finicity/client/api/ConnectApiTest.java @@ -7,8 +7,6 @@ import com.mastercard.finicity.client.test.utils.AccountUtils; import org.junit.jupiter.api.Test; -import static com.mastercard.finicity.client.model.BorrowerType.JOINTBORROWER; -import static com.mastercard.finicity.client.model.BorrowerType.PRIMARY; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -151,8 +149,8 @@ void generateJointBorrowerConnectUrlTest() { try { var params = new ConnectJointBorrowerParameters() .partnerId(PARTNER_ID) - .addBorrowersItem(ModelFactory.newBorrower(PRIMARY, CONSUMER_ID, CUSTOMER_ID)) - .addBorrowersItem(ModelFactory.newBorrower(JOINTBORROWER, CONSUMER_ID, CUSTOMER_ID)); + .addBorrowersItem(ModelFactory.newBorrower("primary", CONSUMER_ID, CUSTOMER_ID)) + .addBorrowersItem(ModelFactory.newBorrower("jointBorrower", CONSUMER_ID, CUSTOMER_ID)); var connectUrl = api.generateJointBorrowerConnectUrl(params); var link = connectUrl.getLink(); assertTrue(link.contains("partnerId=" + PARTNER_ID)); @@ -168,8 +166,8 @@ void sendJointBorrowerConnectEmailTest() { try { var params = new ConnectJointBorrowerEmailParameters() .partnerId(PARTNER_ID) - .addBorrowersItem(ModelFactory.newBorrower(PRIMARY, CONSUMER_ID, CUSTOMER_ID)) - .addBorrowersItem(ModelFactory.newBorrower(JOINTBORROWER, CONSUMER_ID, CUSTOMER_ID)) + .addBorrowersItem(ModelFactory.newBorrower("primary", CONSUMER_ID, CUSTOMER_ID)) + .addBorrowersItem(ModelFactory.newBorrower("jointBorrower", CONSUMER_ID, CUSTOMER_ID)) .email(new EmailOptions().to("someone@company.com")); var connectEmailUrl = api.sendJointBorrowerConnectEmail(params); var link = connectEmailUrl.getLink(); diff --git a/tests/src/test/java/com/mastercard/finicity/client/api/CustomersApiTest.java b/tests/src/test/java/com/mastercard/finicity/client/api/CustomersApiTest.java index 7df9ab2..238a104 100644 --- a/tests/src/test/java/com/mastercard/finicity/client/api/CustomersApiTest.java +++ b/tests/src/test/java/com/mastercard/finicity/client/api/CustomersApiTest.java @@ -35,8 +35,11 @@ void addCustomerTest() { var username = "customer_" + RandomStringUtils.randomAlphabetic(10); var newCustomer = new NewCustomer() .username(username); - api.addCustomer(newCustomer); - fail(); + var customer = api.addCustomer(newCustomer); + assertNotNull(customer.getId()); + assertNotNull(customer.getCreatedDate()); + assertEquals(newCustomer.getUsername(), customer.getUsername()); + createdCustomerIds.add(customer.getId()); } catch (ApiException e) { // HTTP 401: Not available from the Test Drive logApiException(e); diff --git a/tests/src/test/java/com/mastercard/finicity/client/api/PaymentsApiTest.java b/tests/src/test/java/com/mastercard/finicity/client/api/PaymentsApiTest.java index ac2d5fa..f084cc7 100644 --- a/tests/src/test/java/com/mastercard/finicity/client/api/PaymentsApiTest.java +++ b/tests/src/test/java/com/mastercard/finicity/client/api/PaymentsApiTest.java @@ -32,7 +32,9 @@ void getAccountACHDetailsTest() { assertNotNull(achDetails.getRealAccountNumber()); assertNotNull(achDetails.getRoutingNumber()); } catch (ApiException e) { - fail(e); + // {"code":20000,"message":"Routing number not found"} + assertErrorCodeEquals(20000, e); + logApiException(e); } } @@ -64,6 +66,7 @@ void getLoanPaymentDetailsTest() { fail(); } catch (ApiException e) { // {"code":14020,"message":"Bad request. (Account type not supported)"} + assertErrorCodeEquals(14020, e); logApiException(e); } } diff --git a/tests/src/test/java/com/mastercard/finicity/client/api/PortfoliosApiTest.java b/tests/src/test/java/com/mastercard/finicity/client/api/PortfoliosApiTest.java index 5e3a012..04e418c 100644 --- a/tests/src/test/java/com/mastercard/finicity/client/api/PortfoliosApiTest.java +++ b/tests/src/test/java/com/mastercard/finicity/client/api/PortfoliosApiTest.java @@ -1,7 +1,7 @@ package com.mastercard.finicity.client.api; import com.mastercard.finicity.client.ApiException; -import com.mastercard.finicity.client.model.ReportConstraints; +import com.mastercard.finicity.client.model.VOAReportConstraints; import com.mastercard.finicity.client.test.BaseTest; import com.mastercard.finicity.client.test.utils.ConsumerUtils; import org.junit.jupiter.api.BeforeAll; @@ -24,7 +24,7 @@ protected static void beforeAll() { // Create a report and get the portfolio ID var verifyAssetsApi = new VerifyAssetsApi(apiClient); - portfolioId = verifyAssetsApi.generateVOAReport(CUSTOMER_ID, new ReportConstraints(), null).getPortfolioId(); + portfolioId = verifyAssetsApi.generateVOAReport(CUSTOMER_ID, new VOAReportConstraints(), null).getPortfolioId(); } catch (ApiException e) { fail(e); } diff --git a/tests/src/test/java/com/mastercard/finicity/client/api/ReportsApiTest.java b/tests/src/test/java/com/mastercard/finicity/client/api/ReportsApiTest.java index 4f3c303..b94e4eb 100644 --- a/tests/src/test/java/com/mastercard/finicity/client/api/ReportsApiTest.java +++ b/tests/src/test/java/com/mastercard/finicity/client/api/ReportsApiTest.java @@ -4,6 +4,7 @@ import com.mastercard.finicity.client.model.*; import com.mastercard.finicity.client.test.BaseTest; import com.mastercard.finicity.client.test.ModelFactory; +import com.mastercard.finicity.client.test.utils.AccountUtils; import com.mastercard.finicity.client.test.utils.ConsumerUtils; import com.mastercard.finicity.client.test.utils.PayStatementUtils; import org.junit.jupiter.api.BeforeAll; @@ -11,6 +12,7 @@ import java.time.LocalDateTime; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import static java.time.ZoneOffset.UTC; @@ -24,10 +26,12 @@ class ReportsApiTest extends BaseTest { private final VerifyIncomeAndEmploymentApi verifyIncomeAndEmploymentApi = new VerifyIncomeAndEmploymentApi(apiClient); private final TransactionsApi transactionsApi = new TransactionsApi(apiClient); private final CashFlowApi cashFlowApi = new CashFlowApi(apiClient); + private final BankStatementsApi bankStatementsApi = new BankStatementsApi(apiClient); private static String existingAssetId; + private static String existingAccountId; private static String consumerId; - private static Map reportsByType; // type <-> id + private static Map reportsByType; // type <-> id private final static String IN_PROGRESS = "inProgress"; private final static String ON_BEHALF_OF = "Someone"; @@ -42,6 +46,15 @@ protected static void beforeAll() { // Upload a pay statement for the tests existingAssetId = PayStatementUtils.storeAsset(new PayStatementsApi(apiClient), CUSTOMER_ID); + // Find an existing account ID + Optional account = AccountUtils.getCustomerAccounts(new AccountsApi(apiClient), CUSTOMER_ID) + .stream() + .findFirst(); + if (account.isEmpty()) { + fail(); + } + existingAccountId = account.get().getId(); + // Fetch existing reports var reports = new ReportsApi(apiClient).getReportsByCustomerId(CUSTOMER_ID, null); reportsByType = reports.getReports() @@ -53,29 +66,33 @@ protected static void beforeAll() { } @Test - void getPrequalificationReportByCustomerTest() throws Exception { + void getReportsByConsumerTest() { try { - var reportId = reportsByType.get(ReportType.PREQUALVOA); - if (reportId == null) { - // Create a report the first time - var reportData = verifyAssetsApi.generatePrequalificationReport(CUSTOMER_ID, new ReportConstraints(), null); - reportId = reportData.getId(); - } - fetchReport(reportId, consumerId); + var reports = api.getReportsByConsumerId(consumerId, null); + assertNotNull(reports); } catch (ApiException e) { - // Status code: 429, Reason: Too Many Requests - logApiException(e); + fail(e); + } + } + + @Test + void getReportsByCustomerTest() { + try { + var reports = api.getReportsByCustomerId(CUSTOMER_ID, null); + assertNotNull(reports); + } catch (ApiException e) { + fail(e); } } @Test - void getVOAReportByConsumerTest() throws Exception { + void getPrequalificationCRAReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.VOA); + var reportId = reportsByType.get("preQualVoa"); if (reportId == null) { // Create a report the first time - var reportData = verifyAssetsApi.generateVOAReport(CUSTOMER_ID, new ReportConstraints(), null); - reportId = reportData.getId(); + var reportAck = verifyAssetsApi.generatePrequalificationCRAReport(CUSTOMER_ID, new PrequalificationReportConstraints(), null); + reportId = reportAck.getId(); } fetchReport(reportId, consumerId); } catch (ApiException e) { @@ -85,13 +102,13 @@ void getVOAReportByConsumerTest() throws Exception { } @Test - void getVOAWithIncomeReportByConsumerTest() throws Exception { + void getVOAReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.VOAHISTORY); + var reportId = reportsByType.get("voa"); if (reportId == null) { // Create a report the first time - var reportData = verifyAssetsApi.generateVOAWithIncomeReport(CUSTOMER_ID, new ReportConstraints(), null); - reportId = reportData.getId(); + var reportAck = verifyAssetsApi.generateVOAReport(CUSTOMER_ID, new VOAReportConstraints(), null); + reportId = reportAck.getId(); } fetchReport(reportId, consumerId); } catch (ApiException e) { @@ -101,13 +118,13 @@ void getVOAWithIncomeReportByConsumerTest() throws Exception { } @Test - void getPrequalificationNonCRAReportByConsumerTest() throws Exception { + void getVOAWithIncomeReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.ASSETSUMMARY); + var reportId = reportsByType.get("voaHistory"); if (reportId == null) { // Create a report the first time - var reportData = verifyAssetsApi.generatePrequalificationNonCRAReport(CUSTOMER_ID, new ReportConstraints(), null); - reportId = reportData.getId(); + var reportAck = verifyAssetsApi.generateVOAWithIncomeReport(CUSTOMER_ID, new VOAWithIncomeReportConstraints(), null); + reportId = reportAck.getId(); } fetchReport(reportId, consumerId); } catch (ApiException e) { @@ -117,33 +134,46 @@ void getPrequalificationNonCRAReportByConsumerTest() throws Exception { } @Test - void getReportsByConsumerTest() { + void getPrequalificationNonCRAReportByConsumerOrCustomerTest() throws Exception { try { - var reports = api.getReportsByConsumerId(consumerId, null); - assertNotNull(reports); + var reportId = reportsByType.get("assetSummary"); + if (reportId == null) { + // Create a report the first time + var reportAck = verifyAssetsApi.generatePrequalificationNonCRAReport(CUSTOMER_ID, new PrequalificationReportConstraints(), null); + reportId = reportAck.getId(); + } + fetchReport(reportId, consumerId); } catch (ApiException e) { - fail(e); + // Status code: 429, Reason: Too Many Requests + logApiException(e); } } @Test - void getReportsByCustomerTest() { + void getVOIReportByConsumerOrCustomerTest() throws Exception { try { - var reports = api.getReportsByCustomerId(CUSTOMER_ID, null); - assertNotNull(reports); + var reportId = reportsByType.get("voi"); + if (reportId == null) { + // Create a report the first time + var reportAck = verifyIncomeAndEmploymentApi.generateVOIReport(CUSTOMER_ID, new VOIReportConstraints(), null); + reportId = reportAck.getId(); + } + fetchReport(reportId, consumerId); } catch (ApiException e) { - fail(e); + // Status code: 429, Reason: Too Many Requests + logApiException(e); } } @Test - void getVOIReportByConsumerTest() throws Exception { + void getVOEPayrollReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.VOI); + var reportId = reportsByType.get("voePayroll"); if (reportId == null) { // Create a report the first time - var reportData = verifyIncomeAndEmploymentApi.generateVOIReport(CUSTOMER_ID, new ReportConstraints(), null); - reportId = reportData.getId(); + var constraints = new PayrollReportConstraints().payrollData(ModelFactory.newPayrollData()); + var reportAck = verifyIncomeAndEmploymentApi.generateVOEPayrollReport(CUSTOMER_ID, constraints, null); + reportId = reportAck.getId(); } fetchReport(reportId, consumerId); } catch (ApiException e) { @@ -153,15 +183,16 @@ void getVOIReportByConsumerTest() throws Exception { } @Test - void getVOEPayrollReportByConsumerTest() throws Exception { + void getPayStatementReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.VOEPAYROLL); + var reportId = reportsByType.get("paystatement"); if (reportId == null) { // Create a report the first time - var constraints = new PayrollReportConstraints().payrollData(ModelFactory.newPayrollData()); - var reportData = verifyIncomeAndEmploymentApi.generateVOEPayrollReport(CUSTOMER_ID, constraints, null); - reportId = reportData.getId(); + var constraints = new PayStatementReportConstraints().paystatementReport(new PayStatementData().addAssetIdsItem(existingAssetId)); + var reportAck = verifyIncomeAndEmploymentApi.generatePayStatementReport(CUSTOMER_ID, constraints, null); + reportId = reportAck.getId(); } + // This report's final status will be 'failure' since the asset uploaded isn't a valid statement fetchReport(reportId, consumerId); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests @@ -170,18 +201,19 @@ void getVOEPayrollReportByConsumerTest() throws Exception { } @Test - void getPayStatementReportByConsumerTest() { + void getStatementReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.PAYSTATEMENT); + var reportId = reportsByType.get("statement"); if (reportId == null) { // Create a report the first time - var constraints = new PayStatementReportConstraints().paystatementReport(new PayStatementData().addAssetIdsItem(existingAssetId)); - var reportData = verifyIncomeAndEmploymentApi.generatePayStatementReport(CUSTOMER_ID, constraints, null); - reportId = reportData.getId(); + var constraints = new StatementReportConstraints() + .statementReportData(new StatementData() + .index(1) + .accountId(Long.valueOf(existingAccountId))); + var reportAck = bankStatementsApi.generateStatementReport(CUSTOMER_ID, constraints, null); + reportId = reportAck.getId(); } - // This report's final status will be 'failure' since the asset uploaded isn't a valid statement - var report = api.getReportByConsumer(consumerId, reportId, ON_BEHALF_OF, PURPOSE); - assertNotNull(report); + fetchReport(reportId, consumerId); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -189,19 +221,18 @@ void getPayStatementReportByConsumerTest() { } @Test - void getVOIEPaystubReportByConsumerTest() { + void getVOIEPaystubReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.VOIETXVERIFY); + var reportId = reportsByType.get("voieTxVerify"); if (reportId == null) { // Create a report the first time var voieWithStatementData = new VOIEWithStatementData().addAssetIdsItem(existingAssetId); - var constraints = new VOIEWithStatementReportConstraints().voieWithStatementData(voieWithStatementData); - var reportData = verifyIncomeAndEmploymentApi.generateVOIEPaystubReport(CUSTOMER_ID, constraints, null); - reportId = reportData.getId(); + var constraints = new VOIEReportConstraints().voieWithStatementData(voieWithStatementData); + var reportAck = verifyIncomeAndEmploymentApi.generateVOIEPaystubReport(CUSTOMER_ID, constraints, null); + reportId = reportAck.getId(); } // This report's final status will be 'failure' since the asset uploaded isn't a valid statement - var report = api.getReportByConsumer(consumerId, reportId, ON_BEHALF_OF, PURPOSE); - assertNotNull(report); + fetchReport(reportId, consumerId); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -209,19 +240,18 @@ void getVOIEPaystubReportByConsumerTest() { } @Test - void getVOIEPaystubWithTXVerifyReportByConsumerTest() { + void getVOIEPaystubWithTXVerifyReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.VOIETXVERIFY); + var reportId = reportsByType.get("voieTxVerify"); if (reportId == null) { // Create a report the first time var voieWithInterviewData = new VOIEWithInterviewData().addTxVerifyInterviewItem(new TxVerifyInterview().assetId(existingAssetId)); var constraints = new VOIEWithTXVerifyReportConstraints().voieWithInterviewData(voieWithInterviewData); - var reportData = verifyIncomeAndEmploymentApi.generateVOIEPaystubWithTXVerifyReport(CUSTOMER_ID, constraints, null); - reportId = reportData.getId(); + var reportAck = verifyIncomeAndEmploymentApi.generateVOIEPaystubWithTXVerifyReport(CUSTOMER_ID, constraints, null); + reportId = reportAck.getId(); } // This report's final status will be 'failure' since the asset uploaded isn't a valid statement - var report = api.getReportByConsumer(consumerId, reportId, ON_BEHALF_OF, PURPOSE); - assertNotNull(report); + fetchReport(reportId, consumerId); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -229,14 +259,14 @@ void getVOIEPaystubWithTXVerifyReportByConsumerTest() { } @Test - void getTransactionReportByConsumerTest() throws Exception { + void getTransactionsReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.TRANSACTIONS); + var reportId = reportsByType.get("transactions"); if (reportId == null) { // Create a report the first time var toDate = LocalDateTime.now().toEpochSecond(UTC); - var reportData = transactionsApi.generateTransactionsReport(CUSTOMER_ID, toDate, new ReportConstraints(), null, true); - reportId = reportData.getId(); + var reportAck = transactionsApi.generateTransactionsReport(CUSTOMER_ID, toDate, new TransactionsReportConstraints(), null, true); + reportId = reportAck.getId(); } fetchReport(reportId, consumerId); } catch (ApiException e) { @@ -246,13 +276,13 @@ void getTransactionReportByConsumerTest() throws Exception { } @Test - void getVOETransactionsReportByConsumerTest() throws Exception { + void getVOETransactionsReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.VOETRANSACTIONS); + var reportId = reportsByType.get("voeTransactions"); if (reportId == null) { // Create a report the first time - var reportData = verifyIncomeAndEmploymentApi.generateVOETransactionsReport(CUSTOMER_ID, new VOETransactionsReportConstraints(), null); - reportId = reportData.getId(); + var reportAck = verifyIncomeAndEmploymentApi.generateVOETransactionsReport(CUSTOMER_ID, new VOETransactionsReportConstraints(), null); + reportId = reportAck.getId(); } fetchReport(reportId, consumerId); } catch (ApiException e) { @@ -262,13 +292,13 @@ void getVOETransactionsReportByConsumerTest() throws Exception { } @Test - void getCashFlowBusinessReportByConsumerTest() throws Exception { + void getCashFlowBusinessReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.CFRB); + var reportId = reportsByType.get("cfrb"); if (reportId == null) { // Create a report the first time - var reportData = cashFlowApi.generateCashFlowBusinessReport(CUSTOMER_ID, new ReportConstraints(), null); - reportId = reportData.getId(); + var reportAck = cashFlowApi.generateCashFlowBusinessReport(CUSTOMER_ID, new CashFlowReportConstraints(), null); + reportId = reportAck.getId(); } fetchReport(reportId, consumerId); } catch (ApiException e) { @@ -278,13 +308,13 @@ void getCashFlowBusinessReportByConsumerTest() throws Exception { } @Test - void getCashFlowPersonalReportByConsumerTest() throws Exception { + void getCashFlowPersonalReportByConsumerOrCustomerTest() throws Exception { try { - var reportId = reportsByType.get(ReportType.CFRP); + var reportId = reportsByType.get("cfrp"); if (reportId == null) { // Create a report the first time - var reportData = cashFlowApi.generateCashFlowPersonalReport(CUSTOMER_ID, new ReportConstraints(), null); - reportId = reportData.getId(); + var reportAck = cashFlowApi.generateCashFlowPersonalReport(CUSTOMER_ID, new CashFlowReportConstraints(), null); + reportId = reportAck.getId(); } fetchReport(reportId, consumerId); } catch (ApiException e) { @@ -296,11 +326,18 @@ void getCashFlowPersonalReportByConsumerTest() throws Exception { private static void fetchReport(String reportId, String consumerId) throws Exception { String status; do { - System.out.println("Waiting for report " + reportId + " ..."); + System.out.println("Fetching report " + reportId + " by consumer ID ..."); Thread.sleep(5000); var report = api.getReportByConsumer(consumerId, reportId, ON_BEHALF_OF, PURPOSE); assertNotNull(report); status = report.getStatus(); } while (IN_PROGRESS.equals(status)); + do { + System.out.println("Waiting for report " + reportId + " by customer ID ..."); + Thread.sleep(5000); + var report = api.getReportByCustomer(CUSTOMER_ID, reportId, ON_BEHALF_OF, PURPOSE); + assertNotNull(report); + status = report.getStatus(); + } while (IN_PROGRESS.equals(status)); } } diff --git a/tests/src/test/java/com/mastercard/finicity/client/api/TransactionsApiTest.java b/tests/src/test/java/com/mastercard/finicity/client/api/TransactionsApiTest.java index 46e4105..b4b3e30 100644 --- a/tests/src/test/java/com/mastercard/finicity/client/api/TransactionsApiTest.java +++ b/tests/src/test/java/com/mastercard/finicity/client/api/TransactionsApiTest.java @@ -1,8 +1,7 @@ package com.mastercard.finicity.client.api; import com.mastercard.finicity.client.ApiException; -import com.mastercard.finicity.client.model.ReportConstraints; -import com.mastercard.finicity.client.model.ReportType; +import com.mastercard.finicity.client.model.TransactionsReportConstraints; import com.mastercard.finicity.client.test.BaseTest; import com.mastercard.finicity.client.test.utils.AccountUtils; import org.junit.jupiter.api.BeforeAll; @@ -52,10 +51,10 @@ protected static void beforeAll() { @Test void generateTransactionsReportTest() { try { - var constraints = new ReportConstraints().accountIds(customerAccountList); - var reportData = api.generateTransactionsReport(CUSTOMER_ID, toDate, constraints, null, true); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.TRANSACTIONS, reportData.getType()); + var constraints = new TransactionsReportConstraints().accountIds(customerAccountList); + var reportAck = api.generateTransactionsReport(CUSTOMER_ID, toDate, constraints, null, true); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("transactions", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); diff --git a/tests/src/test/java/com/mastercard/finicity/client/api/VerifyAssetsApiTest.java b/tests/src/test/java/com/mastercard/finicity/client/api/VerifyAssetsApiTest.java index 0ea5cef..36423b0 100644 --- a/tests/src/test/java/com/mastercard/finicity/client/api/VerifyAssetsApiTest.java +++ b/tests/src/test/java/com/mastercard/finicity/client/api/VerifyAssetsApiTest.java @@ -1,8 +1,9 @@ package com.mastercard.finicity.client.api; import com.mastercard.finicity.client.ApiException; -import com.mastercard.finicity.client.model.ReportConstraints; -import com.mastercard.finicity.client.model.ReportType; +import com.mastercard.finicity.client.model.PrequalificationReportConstraints; +import com.mastercard.finicity.client.model.VOAReportConstraints; +import com.mastercard.finicity.client.model.VOAWithIncomeReportConstraints; import com.mastercard.finicity.client.test.BaseTest; import com.mastercard.finicity.client.test.utils.AccountUtils; import com.mastercard.finicity.client.test.utils.ConsumerUtils; @@ -33,11 +34,11 @@ protected static void beforeAll() { @Test void generatePrequalificationNonCRAReportTest() { try { - var reportConstraints = new ReportConstraints().accountIds(customerAccountList); - var reportData = api.generatePrequalificationNonCRAReport(CUSTOMER_ID, reportConstraints, null); - assertNotNull(reportData); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.ASSETSUMMARY, reportData.getType()); + var reportConstraints = new PrequalificationReportConstraints().accountIds(customerAccountList); + var reportAck = api.generatePrequalificationNonCRAReport(CUSTOMER_ID, reportConstraints, null); + assertNotNull(reportAck); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("assetSummary", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -45,13 +46,13 @@ void generatePrequalificationNonCRAReportTest() { } @Test - void generatePrequalificationReportTest() { + void generatePrequalificationCRAReportTest() { try { - var reportConstraints = new ReportConstraints().accountIds(customerAccountList); - var reportData = api.generatePrequalificationReport(CUSTOMER_ID, reportConstraints, null); - assertNotNull(reportData); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.PREQUALVOA, reportData.getType()); + var reportConstraints = new PrequalificationReportConstraints().accountIds(customerAccountList); + var reportAck = api.generatePrequalificationCRAReport(CUSTOMER_ID, reportConstraints, null); + assertNotNull(reportAck); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("preQualVoa", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -61,11 +62,11 @@ void generatePrequalificationReportTest() { @Test void generateVOAReportTest() { try { - var reportConstraints = new ReportConstraints().accountIds(customerAccountList); - var reportData = api.generateVOAReport(CUSTOMER_ID, reportConstraints, null); - assertNotNull(reportData); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.VOA, reportData.getType()); + var reportConstraints = new VOAReportConstraints().accountIds(customerAccountList); + var reportAck = api.generateVOAReport(CUSTOMER_ID, reportConstraints, null); + assertNotNull(reportAck); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("voa", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -75,11 +76,11 @@ void generateVOAReportTest() { @Test void generateVOAWithIncomeReportTest() { try { - var reportConstraints = new ReportConstraints().accountIds(customerAccountList); - var reportData = api.generateVOAWithIncomeReport(CUSTOMER_ID, reportConstraints, null); - assertNotNull(reportData); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.VOAHISTORY, reportData.getType()); + var reportConstraints = new VOAWithIncomeReportConstraints().accountIds(customerAccountList); + var reportAck = api.generateVOAWithIncomeReport(CUSTOMER_ID, reportConstraints, null); + assertNotNull(reportAck); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("voaHistory", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); diff --git a/tests/src/test/java/com/mastercard/finicity/client/api/VerifyIncomeAndEmploymentApiTest.java b/tests/src/test/java/com/mastercard/finicity/client/api/VerifyIncomeAndEmploymentApiTest.java index bf6c46a..8e54f1e 100644 --- a/tests/src/test/java/com/mastercard/finicity/client/api/VerifyIncomeAndEmploymentApiTest.java +++ b/tests/src/test/java/com/mastercard/finicity/client/api/VerifyIncomeAndEmploymentApiTest.java @@ -38,10 +38,10 @@ protected static void beforeAll() { @Test void generateVOIReportTest() { try { - var constraints = new ReportConstraints().accountIds(customerAccountList); - var reportData = api.generateVOIReport(CUSTOMER_ID, constraints, null); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.VOI, reportData.getType()); + var constraints = new VOIReportConstraints().accountIds(customerAccountList); + var reportAck = api.generateVOIReport(CUSTOMER_ID, constraints, null); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("voi", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -52,9 +52,9 @@ void generateVOIReportTest() { void generateVOEPayrollReportTest() { try { var constraints = new PayrollReportConstraints().payrollData(ModelFactory.newPayrollData()); - var reportData = api.generateVOEPayrollReport(CUSTOMER_ID, constraints, null); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.VOEPAYROLL, reportData.getType()); + var reportAck = api.generateVOEPayrollReport(CUSTOMER_ID, constraints, null); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("voePayroll", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -65,9 +65,9 @@ void generateVOEPayrollReportTest() { void refreshVOIEPayrollReportTest() { try { var constraints = new PayrollReportConstraints().payrollData(ModelFactory.newPayrollData()); - var reportData = api.refreshVOIEPayrollReport(CUSTOMER_ID, constraints, null); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.VOIEPAYROLL, reportData.getType()); + var reportAck = api.refreshVOIEPayrollReport(CUSTOMER_ID, constraints, null); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("voiePayroll", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -79,9 +79,9 @@ void generatePayStatementReportTest() { try { var constraints = new PayStatementReportConstraints().paystatementReport(new PayStatementData().addAssetIdsItem(existingAssetId)); // This report's final status will be 'failure' since the asset uploaded isn't a valid statement - var reportData = api.generatePayStatementReport(CUSTOMER_ID, constraints, null); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.PAYSTATEMENT, reportData.getType()); + var reportAck = api.generatePayStatementReport(CUSTOMER_ID, constraints, null); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("paystatement", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -104,10 +104,10 @@ void generatePayStatementReportTest_UnknownAsset() { void generateVOIEPaystubReportTest() { try { var voieWithStatementData = new VOIEWithStatementData().addAssetIdsItem(existingAssetId); - var constraints = new VOIEWithStatementReportConstraints().voieWithStatementData(voieWithStatementData); - var reportData = api.generateVOIEPaystubReport(CUSTOMER_ID, constraints, null); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.VOIETXVERIFY, reportData.getType()); + var constraints = new VOIEReportConstraints().voieWithStatementData(voieWithStatementData); + var reportAck = api.generateVOIEPaystubReport(CUSTOMER_ID, constraints, null); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("voieTxVerify", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -121,9 +121,9 @@ void generateVOIEPaystubWithTXVerifyReportTest() { var constraints = new VOIEWithTXVerifyReportConstraints() .voieWithInterviewData(voieWithInterviewData) .accountIds(customerAccountList); - var reportData = api.generateVOIEPaystubWithTXVerifyReport(CUSTOMER_ID, constraints, null); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.VOIETXVERIFY, reportData.getType()); + var reportAck = api.generateVOIEPaystubWithTXVerifyReport(CUSTOMER_ID, constraints, null); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("voieTxVerify", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); @@ -134,9 +134,9 @@ void generateVOIEPaystubWithTXVerifyReportTest() { void generateVOETransactionsReportTest() { try { var constraints = new VOETransactionsReportConstraints().accountIds(customerAccountList); - var reportData = api.generateVOETransactionsReport(CUSTOMER_ID, constraints, null); - assertEquals("inProgress", reportData.getStatus()); - assertEquals(ReportType.VOETRANSACTIONS, reportData.getType()); + var reportAck = api.generateVOETransactionsReport(CUSTOMER_ID, constraints, null); + assertEquals("inProgress", reportAck.getStatus()); + assertEquals("voeTransactions", reportAck.getType()); } catch (ApiException e) { // Status code: 429, Reason: Too Many Requests logApiException(e); diff --git a/tests/src/test/java/com/mastercard/finicity/client/test/ModelFactory.java b/tests/src/test/java/com/mastercard/finicity/client/test/ModelFactory.java index 0a36076..31b0d9f 100644 --- a/tests/src/test/java/com/mastercard/finicity/client/test/ModelFactory.java +++ b/tests/src/test/java/com/mastercard/finicity/client/test/ModelFactory.java @@ -5,11 +5,11 @@ public final class ModelFactory { - public static Borrower newBorrower(BorrowerType primary, String consumerId, String customerId) { + public static Borrower newBorrower(String borrower, String consumerId, String customerId) { return new Borrower() .consumerId(consumerId) .customerId(customerId) - .type(primary) + .type(borrower) .optionalConsumerInfo(new ConsumerInfo() .ssn("999999999") .dob(470275200L)