openapi: 3.2.0 info: title: Pay By Bank PIS AIS API version: 1.1.4 description: "## Pay By Bank v1 - PIS API\n\n---\n\n> J.P. Morgan as a registered Third Party Provider (**TPP**) of Open Banking services,\n> offers a seamless integration platform for Pay by Bank such that:\n> - clients can initiate payments (serving as a Payment Initiation Service Provider, or **PISP**) \n>" contact: name: JPMorgan Chase & Co. API Support email: imsd.security.operations@jpmorgan.com url: https://developer.payments.jpmorgan.com/contact/support servers: - url: https://apigateway.jpmorgan.com/tsapi/v1 description: PRODUCTION - MTLS - url: https://api-mock.payments.jpmorgan.com/tsapi/v1 description: MOCK tags: - name: AIS paths: /aisp/providers: post: deprecated: true summary: Request for Providers description: ' > Deprecated > > Sunset: 30 May 2026 - This request retrieves a list of ASPSPs reachable using J.P. Morgan''s AISP services in each country. - For the purposes of this API, ASPSPs are referred to as Providers. - The request for retrieving a particular country''s list of supported Providers must contain the correct country code' tags: - AIS operationId: retrieveAISProviders parameters: - $ref: '#/components/parameters/ContentType' requestBody: content: application/json: schema: $ref: '#/components/schemas/ProvidersRequest' required: false x-examples: - name: ExampleProvidersRequest description: Example request to retrieve providers parameters: body: countryCode: XF responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/ProvidersResponse' examples: ExamplesProvidersResponse: $ref: '#/components/examples/ProvidersResponseExample' '400': description: 'Bad Request. **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|------------------------------------------------------------------------------------------------------| | AISP-001 |Values are missing for properties: `` | | AISP-002 |Invalid consent scopes: `` | | AISP-003 |Invalid JSON format | | AISP-006 |Report not found with requested payload | | AISP-007 |Customer did not consent to the Provider: | | AISP-008 |Provider not found for country code: `` or provider code:`` This error code will appear if an incorrect providerCode is given| | AISP-010 |ClientID not present in the header | | AISP-012 |Required properties are missing: `` | | AISP-013 |Invalid properties exist: `` | | AISP-014 |Providers are not available with countryCode: `` | | AISP-015 |Consent expired, please call consent provider API to re-consent | | AISP-016 |Bad request | | AISP-017 |The consent has already been revoked | | AISP-017 |Refresh is not possible because the consent has expired | | AISP-017 |A consent with such an id does not exist | | AISP-017 |Refresh is not possible because the consent has been revoked | | AISP-017 |The value of consent scopes parameter is invalid | | AISP-017 |The value of consent scopes parameter is not allowed for the client or/and by the provider | | AISP-017 |The next refresh attempt will be allowed according to next_refresh_possible attribute or connection''s status is inactive| | AISP-017 |The client tried to connect, reconnect or fetch a connection, but it appears to be disabled | | AISP-017 |Bad requestWe could not find a connection with the requested connection_id | | AISP-017 |We have received an invalid Date format | | AISP-017 |The passed from_date - to_date interval is out of consent from_date - to_date range | | AISP-017 |Sending a date value that does not fit in admissible range | | AISP-017 |We have received an invalid DateTime format | | AISP-017 |Sending a datetime value that does not fit in admissible range | | AISP-017 |The value of fetch_scopes parameter is invalid | | AISP-017 |Fetching holder_info for this provider is not supported | | AISP-017 |Invalid consent from_date value, either out of range or a wrong date format | | AISP-017 |Invalid consent period_days value or not allowed by provider | | AISP-017 |Invalid from_date value, either out of range or wrong date format | | AISP-017 |Invalid to_date value, either out of range or wrong date format | | AISP-017 |We have received some other request format instead of JSON, or the body could not be parsed | | AISP-017 |The accessed provider has the disabled status. Hence, is no longer supported | | AISP-017 |The requested provider has the inactive status. That means that new connections cannot be created while the current ones cannot be refreshed or reconnected| | AISP-017 |Sending a provider_code that is not present in our system | | AISP-017 |The connection''s provider has no interactive step | | AISP-017 |Too many connections are being processed at the same time from one application | | AISP-018 |Customer did not consent to provider ``, please call consent provider API to re-consent| | AISP-019 |Provider `` does not support the requested service |' content: application/json: schema: $ref: '#/components/schemas/Error' examples: InvalidJSONFormatExample: $ref: '#/components/examples/InvalidJSONFormatExample' '500': description: 'Internal server error **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|----------------------| | AISP-020 |Internal server error |' content: application/json: schema: $ref: '#/components/schemas/Error' '503': description: "Service Unavailable\n\n**The following table lists and describes the error codes applicable**\n| Error Code | Meaning |\n|------------|-----------------------------------------------|\n| AISP-004 |System exception | \n| AISP-005 |Consent terms not found with requested payload |" content: application/json: schema: $ref: '#/components/schemas/Error' /aisp/consent/provider: post: deprecated: true summary: Request to Access Account Information Services description: ' > Deprecated > > Sunset: 30 May 2026 - This request allows the PSU to consent to J.P. Morgan accessing their account information at a particular `Provider`.' tags: - AIS operationId: createAccountConsents parameters: - $ref: '#/components/parameters/ContentType' requestBody: content: application/json: schema: $ref: '#/components/schemas/ConsentRequest' examples: ExampleConsentRequest: $ref: '#/components/examples/ConsentRequestExample' required: true x-examples: - name: ExampleConsentRequest description: Example Consent Request parameters: body: customerId: CUST_QA02103453A countryCode: XF providerCode: fake_oauth_client_xf consentScopes: - account_details - transactions_details - holder_information consentDuration: 90 returnToUrl: https://sites.jpmchase.com/sites/cib responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/ConsentResponse' examples: ExampleConsentResponse: $ref: '#/components/examples/ConsentResponseExample' '400': description: 'Bad Request. **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|------------------------------------------------------------------------------------------------------| | AISP-001 |Values are missing for properties: `` | | AISP-002 |Invalid consent scopes: `` | | AISP-003 |Invalid JSON format | | AISP-006 |Report not found with requested payload | | AISP-007 |Customer did not consent to the Provider: | | AISP-008 |Provider not found for country code: `` or provider code:`` This error code will appear if an incorrect providerCode is given| | AISP-010 |ClientID not present in the header | | AISP-012 |Required properties are missing: `` | | AISP-013 |Invalid properties exist: `` | | AISP-014 |Providers are not available with countryCode: `` | | AISP-015 |Consent expired, please call consent provider API to re-consent | | AISP-016 |Bad request | | AISP-017 |The consent has already been revoked | | AISP-017 |Refresh is not possible because the consent has expired | | AISP-017 |A consent with such an id does not exist | | AISP-017 |Refresh is not possible because the consent has been revoked | | AISP-017 |The value of consent scopes parameter is invalid | | AISP-017 |The value of consent scopes parameter is not allowed for the client or/and by the provider | | AISP-017 |The next refresh attempt will be allowed according to next_refresh_possible attribute or connection''s status is inactive| | AISP-017 |The client tried to connect, reconnect or fetch a connection, but it appears to be disabled | | AISP-017 |Bad requestWe could not find a connection with the requested connection_id | | AISP-017 |We have received an invalid Date format | | AISP-017 |The passed from_date - to_date interval is out of consent from_date - to_date range | | AISP-017 |Sending a date value that does not fit in admissible range | | AISP-017 |We have received an invalid DateTime format | | AISP-017 |Sending a datetime value that does not fit in admissible range | | AISP-017 |The value of fetch_scopes parameter is invalid | | AISP-017 |Fetching holder_info for this provider is not supported | | AISP-017 |Invalid consent from_date value, either out of range or a wrong date format | | AISP-017 |Invalid consent period_days value or not allowed by provider | | AISP-017 |Invalid from_date value, either out of range or wrong date format | | AISP-017 |Invalid to_date value, either out of range or wrong date format | | AISP-017 |We have received some other request format instead of JSON, or the body could not be parsed | | AISP-017 |The accessed provider has the disabled status. Hence, is no longer supported | | AISP-017 |The requested provider has the inactive status. That means that new connections cannot be created while the current ones cannot be refreshed or reconnected| | AISP-017 |Sending a provider_code that is not present in our system | | AISP-017 |The connection''s provider has no interactive step | | AISP-017 |Too many connections are being processed at the same time from one application | | AISP-018 |Customer did not consent to provider ``, please call consent provider API to re-consent| | AISP-019 |Provider `` does not support the requested service |' content: application/json: schema: $ref: '#/components/schemas/Error' examples: InvalidJSONFormatExample: $ref: '#/components/examples/InvalidJSONFormatExample' '500': description: 'Internal server error **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|----------------------| | AISP-020 |Internal server error |' content: application/json: schema: $ref: '#/components/schemas/Error' '503': description: "Service Unavailable\n\n**The following table lists and describes the error codes applicable**\n| Error Code | Meaning |\n|------------|-----------------------------------------------|\n| AISP-004 |System exception | \n| AISP-005 |Consent terms not found with requested payload |" content: application/json: schema: $ref: '#/components/schemas/Error' /aisp/authorize: post: deprecated: true summary: Send Authorized Token Issued by Provider description: "\n> Deprecated\n>\n> Sunset: 30 May 2026\n- Following the PSUs authorization and confirmation of information sharing with their provider, the provider issues a token\n that permits access to the PSUs data. \n- This token must be transmitted to J.P. Morgan to complete the account information\n request and digitally sign the request payload." tags: - AIS operationId: createAuthorization parameters: - $ref: '#/components/parameters/ContentType' requestBody: content: application/json: schema: $ref: '#/components/schemas/AuthorizeRequest' examples: ExampleAuthorizeRequest: $ref: '#/components/examples/AuthorizeRequestExample' required: true x-examples: - name: ExampleAuthorizeRequest description: Example Authorize Request parameters: body: customerId: TestCustomer1 providerCode: fake_oauth_client_xf authToken: access_token=bc4521d3&state=Pd8b4d0eb responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/AuthorizeResponse' examples: ExampleAuthorizeResponse: $ref: '#/components/examples/AuthorizeResponseExample' '400': description: 'Bad Request. **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|------------------------------------------------------------------------------------------------------| | AISP-001 |Values are missing for properties: `` | | AISP-002 |Invalid consent scopes: `` | | AISP-003 |Invalid JSON format | | AISP-006 |Report not found with requested payload | | AISP-007 |Customer did not consent to the Provider: | | AISP-008 |Provider not found for country code: `` or provider code:`` This error code will appear if an incorrect providerCode is given| | AISP-010 |ClientID not present in the header | | AISP-012 |Required properties are missing: `` | | AISP-013 |Invalid properties exist: `` | | AISP-014 |Providers are not available with countryCode: `` | | AISP-015 |Consent expired, please call consent provider API to re-consent | | AISP-016 |Bad request | | AISP-017 |The consent has already been revoked | | AISP-017 |Refresh is not possible because the consent has expired | | AISP-017 |A consent with such an id does not exist | | AISP-017 |Refresh is not possible because the consent has been revoked | | AISP-017 |The value of consent scopes parameter is invalid | | AISP-017 |The value of consent scopes parameter is not allowed for the client or/and by the provider | | AISP-017 |The next refresh attempt will be allowed according to next_refresh_possible attribute or connection''s status is inactive| | AISP-017 |The client tried to connect, reconnect or fetch a connection, but it appears to be disabled | | AISP-017 |Bad requestWe could not find a connection with the requested connection_id | | AISP-017 |We have received an invalid Date format | | AISP-017 |The passed from_date - to_date interval is out of consent from_date - to_date range | | AISP-017 |Sending a date value that does not fit in admissible range | | AISP-017 |We have received an invalid DateTime format | | AISP-017 |Sending a datetime value that does not fit in admissible range | | AISP-017 |The value of fetch_scopes parameter is invalid | | AISP-017 |Fetching holder_info for this provider is not supported | | AISP-017 |Invalid consent from_date value, either out of range or a wrong date format | | AISP-017 |Invalid consent period_days value or not allowed by provider | | AISP-017 |Invalid from_date value, either out of range or wrong date format | | AISP-017 |Invalid to_date value, either out of range or wrong date format | | AISP-017 |We have received some other request format instead of JSON, or the body could not be parsed | | AISP-017 |The accessed provider has the disabled status. Hence, is no longer supported | | AISP-017 |The requested provider has the inactive status. That means that new connections cannot be created while the current ones cannot be refreshed or reconnected| | AISP-017 |Sending a provider_code that is not present in our system | | AISP-017 |The connection''s provider has no interactive step | | AISP-017 |Too many connections are being processed at the same time from one application | | AISP-018 |Customer did not consent to provider ``, please call consent provider API to re-consent| | AISP-019 |Provider `` does not support the requested service |' content: application/json: schema: $ref: '#/components/schemas/Error' examples: InvalidJSONFormatExample: $ref: '#/components/examples/InvalidJSONFormatExample' '500': description: 'Internal server error **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|----------------------| | AISP-020 |Internal server error |' content: application/json: schema: $ref: '#/components/schemas/Error' '503': description: "Service Unavailable\n\n**The following table lists and describes the error codes applicable**\n| Error Code | Meaning |\n|------------|-----------------------------------------------|\n| AISP-004 |System exception | \n| AISP-005 |Consent terms not found with requested payload |" content: application/json: schema: $ref: '#/components/schemas/Error' /aisp/accounts: post: deprecated: true summary: Request for Account Information description: "\n> Deprecated\n>\n> Sunset: 30 May 2026\n- This request retrieves the account information for a given combination\nof PSU and Provider. \n- An active authorization token is required or access will be denied" tags: - AIS operationId: retrieveAccountInfo parameters: - $ref: '#/components/parameters/ContentType' requestBody: content: application/json: schema: $ref: '#/components/schemas/AccountsRequest' examples: ExampleAccountsRequest: $ref: '#/components/examples/AccountsRequestExample' required: true x-examples: - name: ExampleAccountsRequest description: Example Accounts Request parameters: body: customerId: TestCustomer1 providerCode: fake_oauth_client_xf responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/AccountsResponse' examples: ExamplesAccountsResponse: $ref: '#/components/examples/AccountsResponseExample' '400': description: 'Bad Request. **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|------------------------------------------------------------------------------------------------------| | AISP-001 |Values are missing for properties: `` | | AISP-002 |Invalid consent scopes: `` | | AISP-003 |Invalid JSON format | | AISP-006 |Report not found with requested payload | | AISP-007 |Customer did not consent to the Provider: | | AISP-008 |Provider not found for country code: `` or provider code:`` This error code will appear if an incorrect providerCode is given| | AISP-010 |ClientID not present in the header | | AISP-012 |Required properties are missing: `` | | AISP-013 |Invalid properties exist: `` | | AISP-014 |Providers are not available with countryCode: `` | | AISP-015 |Consent expired, please call consent provider API to re-consent | | AISP-016 |Bad request | | AISP-017 |The consent has already been revoked | | AISP-017 |Refresh is not possible because the consent has expired | | AISP-017 |A consent with such an id does not exist | | AISP-017 |Refresh is not possible because the consent has been revoked | | AISP-017 |The value of consent scopes parameter is invalid | | AISP-017 |The value of consent scopes parameter is not allowed for the client or/and by the provider | | AISP-017 |The next refresh attempt will be allowed according to next_refresh_possible attribute or connection''s status is inactive| | AISP-017 |The client tried to connect, reconnect or fetch a connection, but it appears to be disabled | | AISP-017 |Bad requestWe could not find a connection with the requested connection_id | | AISP-017 |We have received an invalid Date format | | AISP-017 |The passed from_date - to_date interval is out of consent from_date - to_date range | | AISP-017 |Sending a date value that does not fit in admissible range | | AISP-017 |We have received an invalid DateTime format | | AISP-017 |Sending a datetime value that does not fit in admissible range | | AISP-017 |The value of fetch_scopes parameter is invalid | | AISP-017 |Fetching holder_info for this provider is not supported | | AISP-017 |Invalid consent from_date value, either out of range or a wrong date format | | AISP-017 |Invalid consent period_days value or not allowed by provider | | AISP-017 |Invalid from_date value, either out of range or wrong date format | | AISP-017 |Invalid to_date value, either out of range or wrong date format | | AISP-017 |We have received some other request format instead of JSON, or the body could not be parsed | | AISP-017 |The accessed provider has the disabled status. Hence, is no longer supported | | AISP-017 |The requested provider has the inactive status. That means that new connections cannot be created while the current ones cannot be refreshed or reconnected| | AISP-017 |Sending a provider_code that is not present in our system | | AISP-017 |The connection''s provider has no interactive step | | AISP-017 |Too many connections are being processed at the same time from one application | | AISP-018 |Customer did not consent to provider ``, please call consent provider API to re-consent| | AISP-019 |Provider `` does not support the requested service |' content: application/json: schema: $ref: '#/components/schemas/Error' examples: InvalidJSONFormatExample: $ref: '#/components/examples/InvalidJSONFormatExample' '500': description: 'Internal server error **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|----------------------| | AISP-020 |Internal server error |' content: application/json: schema: $ref: '#/components/schemas/Error' '503': description: "Service Unavailable\n\n**The following table lists and describes the error codes applicable**\n| Error Code | Meaning |\n|------------|-----------------------------------------------|\n| AISP-004 |System exception | \n| AISP-005 |Consent terms not found with requested payload |" content: application/json: schema: $ref: '#/components/schemas/Error' /aisp/transactions: post: deprecated: true summary: Request for Transaction Details description: ' > Deprecated > > Sunset: 30 May 2026 This request retrieves the transaction details for a given combination Provider and PSU. An active authorization token is required.' tags: - AIS operationId: retrieveTransactions parameters: - $ref: '#/components/parameters/ContentType' requestBody: content: application/json: schema: $ref: '#/components/schemas/TransactionsRequest' examples: ExampleTransactionsRequest: $ref: '#/components/examples/TransactionsRequestExample' required: true x-examples: - name: ExampleTransactionsRequest description: Example Request parameters: body: customerId: TestCustomer1 providerCode: fake_oauth_client_xf accountId: '12000012' responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/TransactionsResponse' examples: ExampleTransactionsResponse: $ref: '#/components/examples/TransactionsResponseExample' '400': description: 'Bad Request. **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|------------------------------------------------------------------------------------------------------| | AISP-001 |Values are missing for properties: `` | | AISP-002 |Invalid consent scopes: `` | | AISP-003 |Invalid JSON format | | AISP-006 |Report not found with requested payload | | AISP-007 |Customer did not consent to the Provider: | | AISP-008 |Provider not found for country code: `` or provider code:`` This error code will appear if an incorrect providerCode is given| | AISP-010 |ClientID not present in the header | | AISP-012 |Required properties are missing: `` | | AISP-013 |Invalid properties exist: `` | | AISP-014 |Providers are not available with countryCode: `` | | AISP-015 |Consent expired, please call consent provider API to re-consent | | AISP-016 |Bad request | | AISP-017 |The consent has already been revoked | | AISP-017 |Refresh is not possible because the consent has expired | | AISP-017 |A consent with such an id does not exist | | AISP-017 |Refresh is not possible because the consent has been revoked | | AISP-017 |The value of consent scopes parameter is invalid | | AISP-017 |The value of consent scopes parameter is not allowed for the client or/and by the provider | | AISP-017 |The next refresh attempt will be allowed according to next_refresh_possible attribute or connection''s status is inactive| | AISP-017 |The client tried to connect, reconnect or fetch a connection, but it appears to be disabled | | AISP-017 |Bad requestWe could not find a connection with the requested connection_id | | AISP-017 |We have received an invalid Date format | | AISP-017 |The passed from_date - to_date interval is out of consent from_date - to_date range | | AISP-017 |Sending a date value that does not fit in admissible range | | AISP-017 |We have received an invalid DateTime format | | AISP-017 |Sending a datetime value that does not fit in admissible range | | AISP-017 |The value of fetch_scopes parameter is invalid | | AISP-017 |Fetching holder_info for this provider is not supported | | AISP-017 |Invalid consent from_date value, either out of range or a wrong date format | | AISP-017 |Invalid consent period_days value or not allowed by provider | | AISP-017 |Invalid from_date value, either out of range or wrong date format | | AISP-017 |Invalid to_date value, either out of range or wrong date format | | AISP-017 |We have received some other request format instead of JSON, or the body could not be parsed | | AISP-017 |The accessed provider has the disabled status. Hence, is no longer supported | | AISP-017 |The requested provider has the inactive status. That means that new connections cannot be created while the current ones cannot be refreshed or reconnected| | AISP-017 |Sending a provider_code that is not present in our system | | AISP-017 |The connection''s provider has no interactive step | | AISP-017 |Too many connections are being processed at the same time from one application | | AISP-018 |Customer did not consent to provider ``, please call consent provider API to re-consent| | AISP-019 |Provider `` does not support the requested service |' content: application/json: schema: $ref: '#/components/schemas/Error' examples: InvalidJSONFormatExample: $ref: '#/components/examples/InvalidJSONFormatExample' '500': description: 'Internal server error **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|----------------------| | AISP-020 |Internal server error |' content: application/json: schema: $ref: '#/components/schemas/Error' '503': description: "Service Unavailable\n\n**The following table lists and describes the error codes applicable**\n| Error Code | Meaning |\n|------------|-----------------------------------------------|\n| AISP-004 |System exception | \n| AISP-005 |Consent terms not found with requested payload |" content: application/json: schema: $ref: '#/components/schemas/Error' /aisp/holderinfo: post: deprecated: true summary: Request for Account Holder Information description: ' > Deprecated > > Sunset: 30 Jun 2026 This request retrieves information about the account holder based on a given Provider and Customer ID.' tags: - AIS operationId: retrieveAccountHolderInfo parameters: - $ref: '#/components/parameters/ContentType' requestBody: content: application/json: schema: $ref: '#/components/schemas/HolderInfoRequest' examples: ExampleHolderInfoRequest: $ref: '#/components/examples/HolderInfoRequestExample' required: true x-examples: - name: ExampleHolderInfoRequest description: Example Request parameters: body: customerId: P123456 providerCode: bank_xf responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/HolderInfoResponse' examples: ExampleHolderInfoResponse: $ref: '#/components/examples/HolderInfoResponseExample' '400': description: 'Bad Request. **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|------------------------------------------------------------------------------------------------------| | AISP-001 |Values are missing for properties: `` | | AISP-002 |Invalid consent scopes: `` | | AISP-003 |Invalid JSON format | | AISP-006 |Report not found with requested payload | | AISP-007 |Customer did not consent to the Provider: | | AISP-008 |Provider not found for country code: `` or provider code:`` This error code will appear if an incorrect providerCode is given| | AISP-010 |ClientID not present in the header | | AISP-012 |Required properties are missing: `` | | AISP-013 |Invalid properties exist: `` | | AISP-014 |Providers are not available with countryCode: `` | | AISP-015 |Consent expired, please call consent provider API to re-consent | | AISP-016 |Bad request | | AISP-017 |The consent has already been revoked | | AISP-017 |Refresh is not possible because the consent has expired | | AISP-017 |A consent with such an id does not exist | | AISP-017 |Refresh is not possible because the consent has been revoked | | AISP-017 |The value of consent scopes parameter is invalid | | AISP-017 |The value of consent scopes parameter is not allowed for the client or/and by the provider | | AISP-017 |The next refresh attempt will be allowed according to next_refresh_possible attribute or connection''s status is inactive| | AISP-017 |The client tried to connect, reconnect or fetch a connection, but it appears to be disabled | | AISP-017 |Bad requestWe could not find a connection with the requested connection_id | | AISP-017 |We have received an invalid Date format | | AISP-017 |The passed from_date - to_date interval is out of consent from_date - to_date range | | AISP-017 |Sending a date value that does not fit in admissible range | | AISP-017 |We have received an invalid DateTime format | | AISP-017 |Sending a datetime value that does not fit in admissible range | | AISP-017 |The value of fetch_scopes parameter is invalid | | AISP-017 |Fetching holder_info for this provider is not supported | | AISP-017 |Invalid consent from_date value, either out of range or a wrong date format | | AISP-017 |Invalid consent period_days value or not allowed by provider | | AISP-017 |Invalid from_date value, either out of range or wrong date format | | AISP-017 |Invalid to_date value, either out of range or wrong date format | | AISP-017 |We have received some other request format instead of JSON, or the body could not be parsed | | AISP-017 |The accessed provider has the disabled status. Hence, is no longer supported | | AISP-017 |The requested provider has the inactive status. That means that new connections cannot be created while the current ones cannot be refreshed or reconnected| | AISP-017 |Sending a provider_code that is not present in our system | | AISP-017 |The connection''s provider has no interactive step | | AISP-017 |Too many connections are being processed at the same time from one application | | AISP-018 |Customer did not consent to provider ``, please call consent provider API to re-consent| | AISP-019 |Provider `` does not support the requested service |' content: application/json: schema: $ref: '#/components/schemas/Error' examples: InvalidJSONFormatExample: $ref: '#/components/examples/InvalidJSONFormatExample' '500': description: 'Internal server error **The following table lists and describes the error codes applicable** | Error Code | Meaning | |------------|----------------------| | AISP-020 |Internal server error |' content: application/json: schema: $ref: '#/components/schemas/Error' '503': description: "Service Unavailable\n\n**The following table lists and describes the error codes applicable**\n| Error Code | Meaning |\n|------------|-----------------------------------------------|\n| AISP-004 |System exception | \n| AISP-005 |Consent terms not found with requested payload |" content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: ConsentRequest: type: object required: - customerId - countryCode - consentScopes - providerCode - returnToUrl properties: customerId: type: string description: The unique identifier determined by the J.P. Morgan client for the PSU countryCode: type: string description: Code of provider's country in ISO 3166-1 alpha-2 format providerCode: type: string description: Provider's unique reference code consentScopes: type: array description: "Array of possible consent scopes for the PSU to consent to. \nYou must provide at least one of the below options" items: type: string properties: account_details: type: string transactions_details: type: string holder_information: type: string minItems: 0 consentDuration: type: integer description: 'Duration in days of the consent. Can be left blank or null for open-ended consent if the provider permits it' returnToUrl: type: string description: 'URL to redirect the PSU once they have completed the consent process. This URL must be fully qualified and include the full path, as some providers will validate it. Additionally, some providers only permit HTTPS redirect URLs' format: URL TransactionsRequest: type: object required: - customerId - providerCode properties: customerId: type: string description: The unique identifier determined by the J.P. Morgan client for the PSU providerCode: type: string description: Provider's unique reference code accountId: type: string description: 'Account''s unique identifier. If no identifier is provided, transactions from all of the PSU''s available accounts will be retrieved' HolderInfoResponse: type: object properties: names: type: array items: type: string description: Account holder name(s) minItems: 0 emails: type: array format: email items: type: string description: Account holder email(s) format: email minItems: 0 phoneNumbers: type: array items: type: string description: Account holder number(s) minItems: 0 addresses: type: array items: type: string description: Account holder address(s) minItems: 0 ProvidersRequest: type: object properties: countryCode: type: string example: DE description: 'ISO 3166-1 Alpha-2 code for the desired country from which to fetch the Providers list. If no countryCode is given, then the API will return the full list of Providers' Error: type: object description: "The error response object \n\n**Note: This error response format is used by all AISP and PISP endpoints except Refunds endpoint which adopted a better error strcuture**" properties: error: type: array items: properties: errorCode: type: string description: Unique error code errorMsg: type: string description: Describes the details of the error occurred minItems: 0 maxItems: 99 AuthorizeResponse: type: object properties: message: type: string description: Message that states whether the authorization was successful and a connection was established to the provider or not ProvidersResponse: type: object description: Contains providers information properties: data: type: array items: $ref: '#/components/schemas/Providers' minItems: 0 Account: type: object properties: accountId: type: string description: Accounts unique identifier. This number has no other relevance or use to the PSU or provider; it is only used to identify the account in API requests and responses balance: type: number description: Account's current balance nature: type: string description: 'The type of the account. Note that for the ''credit_card'' nature, the balance represents the sum of all negative transactions; the positive ones do not count' enum: - account - bonus - card - checking - credit - credit_card - debit_card - ewallet - insurance - investment - loan - mortgage - savings name: type: string description: Accounts unique name example: Account100 currencyCode: type: string description: Accounts currency. ISO 4217 Alpha-3 Currency Code extra: type: object description: Additional account related fields. properties: accountName: type: string description: Changeable name of the account accountNumber: type: string description: Account number lastPostedTransactionId: type: string description: The identifier of the last posted transaction cards: type: array description: List of masked card numbers items: type: string minItems: 0 assets: type: array description: Array of crypto codes and their amounts assigned to an `investment` account items: type: string minItems: 0 availableAmount: type: number description: Available amount in the accounts currency units: type: string description: Amount of units owned (used with unit_price, available for `investment` account nature only) nextPaymentDate: type: string description: Next payment date for loans or credits format: date closingBalance: type: number description: Account balance at the end of an accounting period creditLimit: type: number description: Credit limit in the account?s currency interestRate: type: string description: 'Interest rate paid on the account?s balance as a percentage value' openingBalance: type: number description: 'Account balance that is brought forward from the end of one accounting period to the beginning of a new accounting period' clientName: type: string description: Account's client owner currentTime: type: string description: Time of Provider statement generation (applicable to banks) format: timestamp swift: type: string description: Account's SWIFT code openDate: type: string description: Card open date format: date expiryDate: type: string description: Card expiry date format: date cardType: type: string description: Type of card account enum: - american_express - china_unionpay - diners_club - jcb - maestro - master_card - uatp - visa - mir sortCode: type: string description: Routing number (US) / BSB code (Australia) / sort code (UK) unitPrice: type: number description: 'Price per unit (used with units, available for `investment` account nature only)' totalPaymentAmount: type: number description: Total payment amount for loans or credits currentDate: type: string description: Date of Provider statement generation (applicable to banks) format: date statementCutDate: type: string description: Date when the current statement becomes a previous one format: date iban: type: string description: Account's IBAN number blockedAmount: type: string description: The amount currently blocked in the account?s currency status: type: string description: States if the account is active or inactive nextPaymentAmount: type: string description: Next payment amount for loans or credits transactionsCount: type: object description: Number of transactions, separated by posted and pending properties: pending: type: integer description: Number of pending transactions posted: type: integer description: Number of posted transactions Transaction: type: object properties: accountId: type: string description: The ID of the account the transaction belongs to duplicated: type: boolean description: Whether the transaction is duplicated or not mode: type: string enum: - normal - fee - transfer description: "Please refer the table below for interpretation of modes \n\n| Mode | Description | \n|-----------|------------------------------------------------------------------------------------------------------|\n| `normal` | A standard purchase made using funds held in the account (e.g. purchase of goods at a supermarket) | \n| `fee` | Fees paid from the account to the bank (e.g. monthly account fee) | \n| `transfer`| a bank transfer made directly to another account (e.g. a bank transfer to one's parents) |" amount: type: number description: Transaction's amount madeOn: type: string description: The date when the transaction was made format: date description: type: string description: Transaction's description category: type: string description: Transaction's category currencyCode: type: string description: Transaction's currency code status: type: string enum: - pending - posted extra: type: array description: Additional account related fields items: type: object description: Extra fields properties: accountNumber: type: string description: Account's number possibleDuplicate: type: boolean description: 'Is set to true if current transaction duplicates `amount`, `made_on` or `currency_code` of any transaction parsed in a previous attempt' additional: type: string description: 'Additional information (recommended to augment the standard ''description'' field, if necessary)' recordNumber: type: string description: Bank record number convert: type: boolean description: 'Whether the transaction amount was converted using exchange rates or not' merchantId: type: string description: Merchant's identifier units: type: number description: 'Amount of units owned (used with unit_price, available for `investment` account nature only)' mcc: type: string description: Merchant category code type: type: string description: Transaction type payer: type: string description: Name of the payer payerInformation: type: string description: Additional payer information checkNumber: type: string description: Payee's transaction check number closingBalance: type: number description: Account balance after transaction originalAmount: type: number description: 'Transaction amount in the transaction''s local currency, if applicable (comes with originalCurrencyCode)' originalCategory: type: string description: Original category of the transaction originalSubcategory: type: string description: Original subcategory of the transaction categorizationConfidence: type: number description: 'Value from 0 to 1 showing the probability that the current category is the correct one' id: type: string description: Transaction ID openingBalance: type: number description: Account balance before transaction specificCode: type: string description: 'Additional identification information for cashless domestic payments (transfers)' variableCode: type: string description: 'Identifies the tax subject to the tax office, used for domestic payments (transfers)' accountBalanceSnapshot: type: number description: Balance of the account when the transaction was imported unitPrice: type: number description: 'Price per unit (used with units, available for `investment` account nature only)' tags: type: array description: The original tags of the transaction items: type: object minItems: 0 assetCode: type: string description: 'Asset''s commonly used abbreviation (e.g. ''BTC'' - Bitcoin, `XAU` - Gold etc.)' payee: type: string description: Name of the payee payeeInformation: type: string description: Additional payee information postingDate: type: string description: Date when the transaction is reported on the account statement format: date postingTime: type: string description: 'Time in HH:MM:SS format, representing the time at which the transaction is reported on the account statement' format: timestamp originalCurrencyCode: type: string description: Transaction's local currency, if applicable (comes with originalAmount) constantCode: type: string description: Payment reference for cashless domestic payments information: type: string description: Information about the transaction transferAccountName: type: string description: Name of the linked account assetAmount: type: number description: Original transaction amount in asset units customerCategoryCode: type: string description: 'The category that was categorized by the rules created by the customer' customerCategoryName: type: string description: 'The category that was categorized by the rules created by the customer' time: type: string description: Time when the transaction was made format: timestamp minItems: 0 createdAt: type: string description: Transaction created date and time format: date-time updatedAt: type: string description: Date and time at which the transaction was updated format: date-time ConsentResponse: type: object properties: redirectUrl: type: string description: 'URL to redirect the PSU to their online banking portal or mobile app to confirm the sharing of information. Additionally, the redirect URL will contain the access token needed in the Send Authorized Token API request body' format: URL AccountsResponse: type: array description: Contains account(s) information items: $ref: '#/components/schemas/Account' minItems: 0 maxItems: 100 AccountsRequest: type: object required: - customerId - providerCode properties: customerId: type: string description: The unique identifier determined by the J.P. Morgan client for the PSU providerCode: type: string description: Providers unique reference code AuthorizeRequest: type: object required: - customerId - providerCode - authToken properties: customerId: type: string description: The unique identifier determined by the J.P. Morgan client for the PSU providerCode: type: string description: Providers unique reference code authToken: type: string example: access_token=bc4521d3&state=Pd8b4d0eb description: The authorization token given by the provider in the `redirectUrl` attribute in the Account Information Access Consent API response body HolderInfoRequest: type: object required: - customerId - providerCode properties: customerId: type: string description: The unique identifier determined by the J.P. Morgan client for the PSU providerCode: type: string description: Provider's unique reference code Providers: type: object properties: providersCode: type: string description: Provider's unique reference code providersName: type: string description: Provider's name customerNotifiedOnSignIn: type: boolean description: Whether the Provider will notify the customer upon a login attempt instruction: type: string description: Instructions on how to connect to the Provider in English homeUrl: type: string description: The URL of the Provider's main page format: URL loginUrl: type: string description: URL of the entry point to the provider's login interface. This URL is not used in account information service requests format: URL logoUrl: type: string description: The URL of the Provider's logo format: URL refreshTimeOut: type: integer description: Amount of time in minutes that connections to the provider can be refreshed until timeout maxConsentDays: type: integer description: Maximum allowed consent duration in days. If the response is `null` then there is no limit on the consent duration countryCode: type: string description: Code of Provider's country; ISO 3166-1 alpha-2 supportedFetchScopes: type: array description: 'Array of strings with supported fetch scopes (i.e. what data can be retrieved from the Provider)' items: type: string minItems: 1 supportedAccountNatures: type: array description: Array of possible account natures that can be fetched. Currently, only `account` is supported items: type: string minItems: 0 TransactionsResponse: type: array description: Contains transaction details items: $ref: '#/components/schemas/Transaction' minItems: 0 maxItems: 100 examples: TransactionsResponseExample: value: - accountId: '12000012' duplicated: false mode: normal amount: 100 madeOn: '2018-12-20' description: Online crockery purchase category: fees_and_charges currencyCode: EUR status: posted extra: - possibleDuplicate: false convert: false categorizationConfidence: 1 id: '1378698846' accountBalanceSnapshot: 10100 tags: [] createdAt: '2018-12-20T17:38:13Z' updatedAt: '2019-08-05T17:38:13Z' - accountId: '12000012' duplicated: false mode: normal amount: 50 madeOn: '2018-12-19' description: Online clothes purchase category: fees_and_charges currencyCode: EUR status: posted extra: - possibleDuplicate: false convert: false categorizationConfidence: 1 id: '1378698847' accountBalanceSnapshot: 10150 tags: [] createdAt: '2018-12-19T17:38:13Z' updatedAt: '2019-08-05T17:38:13Z' AccountsRequestExample: value: customerId: TestCustomer1 providerCode: fake_oauth_client_xf ConsentResponseExample: value: redirectUrl: https://www.abc.com/regulated_fake_providers/fake_oauth_client_xf?client_id=2886&fetch_scopes%5B%5D=accounts&fetch_scopes%5B%5D=holder_info&fetch_scopes%5B%5D=transactions&flow=ais&return_to=https%3A%2F%2Fwww.saltedge.com%2Fconnect%2Foauth_callback%2Faisp%2F2c58378dea8acbc899a4ef6be60e6f8462662615f2011e93de1625af8dcc6c3e&state=connect_token_2c58378dea8acbc899a4ef6be60e6f8462662615f2011e93de1625af8dcc6c3e InvalidJSONFormatExample: value: errorCode: PISP-003 errorMsg: Invalid JSON format HolderInfoResponseExample: value: names: - Engelbert Smith emails: - esmith@emailservice.com phoneNumbers: - '+440123123123' addresses: [] HolderInfoRequestExample: value: customerId: TestCustomer1 providerCode: fake_oauth_client_xf AuthorizeRequestExample: value: customerId: TestCustomer1 providerCode: fake_oauth_client_xf authToken: access_token=bc4521d3&state=Pd8b4d0eb ConsentRequestExample: value: customerId: CUST_QA02103453A countryCode: XF providerCode: fake_oauth_client_xf consentScopes: - account_details - transactions_details - holder_information consentDuration: 90 returnToUrl: https://sites.jpmchase.com/sites/cib TransactionsRequestExample: value: customerId: TestCustomer1 providerCode: fake_oauth_client_xf accountId: '12000012' ProvidersResponseExample: value: data: - providersCode: fakebank_image_xf providersName: Fake Bank with Image customerNotifiedOnSignIn: false loginUrl: http://example.com/login logoUrl: https://d1uuj3mi6rzwpm.cloudfront.net/logos/providers/xf/placeholder_global.svg countryCode: XF supportedFetchScopes: - accounts - accounts_without_balance - holder_info - transactions supportedAccountNatures: - account - card - credit_card AuthorizeResponseExample: value: message: Connection with provider forgerock_client_gb_xf established successfully AccountsResponseExample: value: - accountId: '7610825' balance: 2010.8 nature: card name: AccountList currencyCode: EUR extra: cards: [] assets: [] clientName: Fake name lastPostedTransactionId: '1378698846' iban: DEXXXXXXXXXXXXXXXXX transactionsCount: pending: 0 posted: 1098 parameters: ContentType: name: Content-Type description: Content Type in: header required: true schema: type: string enum: - application/json x-jpmc-securityDefinitions: JPMC-OAuth2: {} x-jpmc-security: {}