openapi: 3.2.0 info: title: J.P. Morgan Business Direct Connect Account Statements API version: 6.5.1 description: Connect to retrieve account details, transactions, payment network information, and statements for eligible USD-denominated US checking, savings, and money market accounts using the Financial Data Exchange (FDX) standard with secure, paginated access and lightweight or detailed responses. contact: name: J.P. Morgan Corporate FDX Support email: jpmorgan.business.direct.connect.support@jpmorgan.com servers: - url: https://api.payments.jpmorgan.com/fdx/v6 description: PRODUCTION - OAUTH - url: https://api-mock.payments.jpmorgan.com/fdx/v6 description: MOCK tags: - name: Account Statements paths: /accounts/{accountId}/statements: get: operationId: searchForAccountStatements tags: - Account Statements description: 'Get account statements. Example: GET /accounts/{accountId}/statements?startTime=value1 endTime=value2' summary: Search for statements parameters: - $ref: '#/components/parameters/FapiInteractionIdHeader' - $ref: '#/components/parameters/FdxApiActorTypeHeader' - $ref: '#/components/parameters/FdxApiDataProviderIdHeader' - $ref: '#/components/parameters/FdxApiDataRecipientIdHeader' - $ref: '#/components/parameters/AccountIdPath' - $ref: '#/components/parameters/StartTimeQuery' - $ref: '#/components/parameters/EndTimeQuery' - $ref: '#/components/parameters/OffsetQuery' - $ref: '#/components/parameters/PageKeyQuery' - $ref: '#/components/parameters/LimitQuery' responses: '200': description: Paginated list of available statements. The header `fdx-api-actor-type` supports only the value `BATCH`. headers: x-fapi-interaction-id: $ref: '#/components/parameters/FapiInteractionIdHeader' fdx-api-actor-type: $ref: '#/components/parameters/FdxApiActorTypeHeader' content: application/json: schema: $ref: '#/components/schemas/Statements' examples: Search for statements success response: value: page: nextOffset: '2' totalElements: 3 links: next: href: https://api.fi.com/fdx/v6/accounts/c5e38f3375cb5f9225ab4dbf05ddcb9ed3faf2d29ebe0d4de47cbd7eb5e9594f/statements?startTime=2020-04-01&endTime=2024-11-30&offset=2&limit=1 action: GET rel: next types: - application/json statements: - accountId: c5e38f3375cb5f9225ab4dbf05ddcb9ed3faf2d29ebe0d4de47cbd7eb5e9594f statementId: '%7BED9BEB13-C98B-337C-9388-DC7B041A7039%7D' statementDate: '2024-01-31' links: - href: https://api.fi.com/fdx/v6/accounts/c5e38f3375cb5f9225ab4dbf05ddcb9ed3faf2d29ebe0d4de47cbd7eb5e9594f/statements/%7BED9BEB13-C98B-337C-9388-DC7B041A7039%7D action: GET rel: self types: - application/pdf status: AVAILABLE '400': description: 'Bad Request **List of Error codes and Usage explanations.** | Error Code | Usage | | -------------- |---------------------------------------------------------------------------------------------------------------------------------------| | 401 | Invalid Input, 11001:Input in Request for Client ID {0}. {1} | | 702 | Invalid start or end date, 16002:Start or end date value is not in the ISO 8601 format for Account {0} startDate {1}, endDate {2} | | 703 | Invalid date range, 16004:End Date cannot be before the Start Date in Request for Account {0} startDate {1}, endDate {2} |' headers: x-fapi-interaction-id: $ref: '#/components/parameters/FapiInteractionIdHeader' content: application/json: schema: $ref: '#/components/schemas/Error' examples: Invalid start or end date: value: code: '702' message: Invalid start or end date debugMessage: Provider custom developer-level error details for troubleshooting Invalid date range: value: code: '703' message: Invalid date range debugMessage: Provider custom developer-level error details for troubleshooting '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': description: 'Not Found **List of Error codes and Usage explanations.** | Error Code | Usage | | -------------- |---------------------------------------------------------------------------| | 701 | Account not found, 12001:Account not found for Client ID {0}. {1} |' headers: x-fapi-interaction-id: $ref: '#/components/parameters/FapiInteractionIdHeader' content: application/json: schema: $ref: '#/components/schemas/Error' examples: Account not found: value: code: '701' message: Account not found debugMessage: Provider custom developer-level error details for troubleshooting '500': $ref: '#/components/responses/500' '503': $ref: '#/components/responses/503' /accounts/{accountId}/statements/{statementId}: get: operationId: getAccountStatement tags: - Account Statements description: 'Gets a PDF account statement. Note: This endpoint does not validate statement content.' summary: Get an account statement parameters: - $ref: '#/components/parameters/FapiInteractionIdHeader' - $ref: '#/components/parameters/FdxApiActorTypeHeader' - $ref: '#/components/parameters/FdxApiClientPublicKeyHeader' - $ref: '#/components/parameters/FdxApiDataProviderIdHeader' - $ref: '#/components/parameters/FdxApiDataRecipientIdHeader' - $ref: '#/components/parameters/AccountIdPath' - $ref: '#/components/parameters/StatementIdPath' responses: '200': description: A pdf image of an account statement. The header `fdx-api-actor-type` supports only the value `BATCH`. headers: x-fapi-interaction-id: $ref: '#/components/parameters/FapiInteractionIdHeader' fdx-api-actor-type: $ref: '#/components/parameters/FdxApiActorTypeHeader' content: application/pdf: schema: description: A pdf image of an account statement type: string format: binary '400': description: 'Bad Request **List of Error codes and Usage explanations.** | Error Code | Usage | | -------------- |----------------------------------------------------------------------------------------------------------| | 401 | Invalid Input, 11001:Input in Request for Client ID {0}. {1} |' headers: x-fapi-interaction-id: $ref: '#/components/parameters/FapiInteractionIdHeader' content: application/json: schema: $ref: '#/components/schemas/Error' examples: Invalid Input: value: code: '401' message: Invalid Input debugMessage: Provider custom developer-level error details for troubleshooting '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': description: 'Not Found **List of Error codes and Usage explanations.** | Error Code | Usage | | -------------- |-----------------------------------------------------------------------------------------------------------------------------------| | 701 | Account not found, 12001:Account not found for Client ID {0}. {1} | | 1104 | Statement id not found for given Account,16008: Statement id not found for Account {0} |' headers: x-fapi-interaction-id: $ref: '#/components/parameters/FapiInteractionIdHeader' content: application/json: schema: $ref: '#/components/schemas/Error' examples: Account not found: value: code: '701' message: Account not found debugMessage: Provider custom developer-level error details for troubleshooting Statement id not found for Account: value: code: '1104' message: Statement id not found for Account debugMessage: Provider custom developer-level error details for troubleshooting '500': $ref: '#/components/responses/500' '503': $ref: '#/components/responses/503' components: schemas: PageMetadata: title: Page Metadata description: Offset IDs for paginated result sets type: object properties: nextOffset: type: string example: '2' description: Opaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific Offset based pagination is not supported for /transactions. prevOffset: type: string example: '1' description: Opaque identifier. Does not need to be numeric or have any specific pattern. Implementation specific Offset based pagination is not supported for /transactions. totalElements: type: integer example: 3 description: Total number of elements , can be used to validate against total number of elements returned in paginated response(s) ErrorContext: x-tags: - common-error-model - common-components type: object required: - message properties: code: type: string description: JPMC Short code that identifies the error - publicly cataloged and documented minLength: 5 maxLength: 5 pattern: ^[0-9]+$ message: type: string description: Human readable textual description of the error minLength: 1 maxLength: 99 location: type: string title: The component of the request impacted, can either be 'body', 'query', 'header', or 'path' description: The location of the error occurred in the request. minLength: 1 maxLength: 99 enum: - BODY - PATH - QUERY - HEADER field: type: string description: The field which caused the error. Where the location of the error occurred is BODY, the field would contain the JSON Path expression minLength: 1 maxLength: 99 pattern: ^[\$0-9a-zA-Z-_.()\[\]{}'"\s@=>