Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/triodos-bank-uk-account-information-service-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Triodos XS2A BG service Account Information Service API
description: Triodos XS2A BG service
termsOfService: https://www.triodos.com
contact:
name: Triodos Support
url: https://www.triodos.com
email: info@triodos.com
license:
name: Creative Commons Attribution 4.0 International Public License
url: https://creativecommons.org/licenses/by/4.0/
version: '1.1'
servers:
- url: https://xs2a-sandbox.triodos.com/xs2a-bg
description: Triodos XS2A Sandbox
tags:
- name: Account Information Service
description: This service may be used by an AISP to request information about the account of a PSU. The account is managed by the ASPSP providing the XS2A Interface. Functionality and restrictions of this service comply with the requirements defined by article 67 of PSD2.
externalDocs:
description: 'Berlin Group XS2A Implementation Version 1.3 - Chapter 6: Account Information Service'
url: https://docs.wixstatic.com/ugd/c2914b_bec5f9d0d3c94cfca2ad1b9da36dc752.pdf
paths:
/{tenant}/v1/accounts/{account-id}:
get:
tags:
- Account Information Service
summary: Get account
description: Reads details about an account, with balances where required. It is assumed that a consent of the PSU to this access is already given and stored on the ASPSP system. The addressed details of this account depends then on the stored consent addressed by consentId, respectively the OAuth2 access token.
operationId: getAccount
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
required: true
schema:
type: string
- name: PSU-IP-Address
in: header
description: IP Address of the PSU if involved in the request.
schema:
type: string
- name: Consent-ID
in: header
description: ID of registered and authorized consent.
required: true
schema:
type: string
format: uuid
- name: account-id
in: path
description: ID of account.
required: true
schema:
type: string
format: uuid
- name: withBalance
in: query
description: Not supported, should be unset
schema:
type: boolean
responses:
'200':
description: Account returned
content:
application/json:
schema:
$ref: '#/components/schemas/Xs2aAccountResponse'
'400':
description: ConsentID invalid/ AccountID invalid
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'401':
description: Invalid scope/ Invalid consent/ Given access token is not coupled to the given consent/ User has no access to the given account/ Consented product is blocked
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'403':
description: ConsentID not found, or not registered for this TPP
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'404':
description: AccountID not found
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
/{tenant}/v1/accounts:
get:
tags:
- Account Information Service
summary: Get accounts
description: Reads a list of bank accounts, with balances where required. It is assumed that a consent of the PSU to this access is already given and stored on the ASPSP system. The addressed list of accounts depends then on the PSU ID and the stored consent addressed by consentId, respectively the OAuth2 access token.
operationId: getAccounts
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
required: true
schema:
type: string
- name: PSU-IP-Address
in: header
description: IP Address of the PSU if involved in the request.
schema:
type: string
- name: Consent-ID
in: header
description: ID of registered and authorized consent.
required: true
schema:
type: string
format: uuid
- name: withBalance
in: query
description: Not supported, should be unset
schema:
type: boolean
responses:
'200':
description: Accounts returned
content:
application/json:
schema:
$ref: '#/components/schemas/Xs2aAccountsResponse'
'400':
description: ConsentID invalid
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'401':
description: Invalid scope/ Invalid consent/ Given access token is not coupled to the given consent/ User does not have access to the consented accounts/ Consented products are blocked
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'403':
description: ConsentID not found, or not registered for this TPP
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
/{tenant}/v1/accounts/{account-id}/balances:
get:
tags:
- Account Information Service
summary: Get account balances
description: Reads account data from a given account addressed by "account-id".
operationId: getBalances
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
required: true
schema:
type: string
- name: PSU-IP-Address
in: header
description: IP Address of the PSU if involved in the request.
schema:
type: string
- name: Consent-ID
in: header
description: ID of registered and authorized consent.
required: true
schema:
type: string
format: uuid
- name: account-id
in: path
description: ID of account.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Balances returned
content:
application/json:
schema:
$ref: '#/components/schemas/Xs2aBalancesResponse'
'400':
description: ConsentUUID invalid/ AccountID invalid
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'401':
description: Invalid scope/ Invalid consent/ Given access token is not coupled to the given consent/ User has no access to the given account/ Consented product is blocked/ Given consent does not provide access to balance of account
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'403':
description: ConsentID not found, or not registered for this TPP
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'404':
description: AccountID not found
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'429':
description: Too many requests - number of requests exceeds FrequencyPerDay of consent
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
/{tenant}/v1/accounts/{account-id}/transactions:
get:
tags:
- Account Information Service
summary: Get account transactions
description: Reads account data from a given account addressed by "account-id".
operationId: getTransactions
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
required: true
schema:
type: string
- name: PSU-IP-Address
in: header
description: IP Address of the PSU if involved in the request.
schema:
type: string
- name: Consent-ID
in: header
description: ID of registered and authorized consent.
required: true
schema:
type: string
format: uuid
- name: account-id
in: path
description: ID of account.
required: true
schema:
type: string
format: uuid
- name: bookingStatus
in: query
description: Permitted codes are "booked", "pending" and "both", mandated if no delta access is required.
schema:
type: string
enum:
- booked
- pending
- both
- information
- all
- name: dateFrom
in: query
description: Starting date (inclusive the date dateFrom) of the transaction list, mandated if no delta access is required.
schema:
type: string
format: date
- name: dateTo
in: query
description: End date (inclusive the date dateTo) of the transaction list, default is now if not given.
schema:
type: string
format: date
- name: withBalance
in: query
description: Not supported, should be unset
schema:
type: boolean
- name: entryReferenceFrom
in: query
description: Not supported, should be unset
schema:
type: string
- name: deltaList
in: query
description: Not supported, should be unset
schema:
type: boolean
- name: edgeToken
in: query
description: Pagination edge token, to be used when paging through transactions
schema:
$ref: '#/components/schemas/Xs2aTransactionSearchCriteriaEdgeToken'
responses:
'200':
description: Transactions returned
content:
application/json:
schema:
$ref: '#/components/schemas/Xs2aTransactionsResponse'
'400':
description: ConsentID invalid/ AccountID invalid
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'401':
description: Invalid scope/ Invalid consent/ Given access token is not coupled to the given consent/ User has no access to the given account/ Consented product is blocked/ Given consent does not provide access to transactions of account
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'403':
description: ConsentID not found, or not registered for this TPP
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'404':
description: AccountID not found
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'429':
description: Too many requests - number of requests exceeds FrequencyPerDay of consent
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
/{tenant}/v1/accounts/{account-id}/transactions/page:
get:
tags:
- Account Information Service
summary: Paginate account transactions (deprecated, pass edge token to transactions endpoint instead)
description: Reads account data from a given account addressed by "account-id".
operationId: getTransactionsPage
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
required: true
schema:
type: string
- name: PSU-IP-Address
in: header
description: IP Address of the PSU if involved in the request.
schema:
type: string
- name: Consent-ID
in: header
description: ID of registered and authorized consent.
required: true
schema:
type: string
format: uuid
- name: account-id
in: path
description: ID of account.
required: true
schema:
type: string
format: uuid
- name: edgeToken
in: query
description: Pagination edge token.
required: true
schema:
type: string
responses:
'200':
description: Transactions returned
content:
application/json:
schema:
$ref: '#/components/schemas/Xs2aTransactionsResponse'
'400':
description: ConsentID invalid/ AccountID invalid
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'401':
description: Invalid scope/ Invalid consent/ Given access token is not coupled to the given consent/ User has no access to the given account/ Consented product is blocked/ Given consent does not provide access to transactions of account
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'403':
description: ConsentID not found, or not registered for this TPP
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'404':
description: AccountID not found
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'429':
description: Too many requests - number of requests exceeds FrequencyPerDay of consent
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
deprecated: true
/{tenant}/v1/consents/{resource-id}/authorisations:
get:
tags:
- Account Information Service
summary: Get authorisations
description: Will deliver an array of resource ids of all generated authorisation sub-resources.
operationId: getAisAuthorisations
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
required: true
schema:
type: string
- name: resource-id
in: path
description: ID of the consent.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Authorisations returned
content:
application/json:
schema:
$ref: '#/components/schemas/Xs2aAuthorisationsRequestResponse'
'400':
description: ConsentID is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'403':
description: ConsentID not found, or not registered for this TPP
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
post:
tags:
- Account Information Service
summary: Create authorisation
description: Creates a consent authorisation sub-resource.
operationId: createAisAuthorisation
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
required: true
schema:
type: string
- name: resource-id
in: path
description: ID of the consent to create authorisation sub-resource for.
required: true
schema:
type: string
format: uuid
- name: TPP-Redirect-URI
in: header
description: URI of the TPP, where the transaction flow shall be redirected to after a Redirect.
required: true
schema:
type: string
responses:
'201':
description: Consent authorisation created
content:
application/json:
schema:
$ref: '#/components/schemas/Xs2aAuthorisationRequestResponse'
'400':
description: ConsentID is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
/{tenant}/v1/consents/{resource-id}/authorisations/{authorisation-id}:
get:
tags:
- Account Information Service
summary: Get authorisation status
description: Checks the SCA status of an authorisation sub-resource.
operationId: getAisAuthorisationStatus
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
required: true
schema:
type: string
- name: resource-id
in: path
description: ID of the consent.
required: true
schema:
type: string
format: uuid
- name: authorisation-id
in: path
description: ID of the authorisation sub-resource.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Authorisation status returned
content:
application/json:
schema:
$ref: '#/components/schemas/Xs2aAuthorisationStatusRequestResponse'
'400':
description: AuthorisationID is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'403':
description: ConsentID not found, or not registered for this TPP
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
put:
tags:
- Account Information Service
summary: Update consent authorisation with access token
description: Updates the account information consent authorisation with an access token. If the access token has sufficient privileges, the consent will be authorized
operationId: submitAisAuthorisation
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
required: true
schema:
type: string
- name: resource-id
in: path
description: ID of the consent.
required: true
schema:
type: string
format: uuid
- name: authorisation-id
in: path
description: ID of the authorisation sub-resource
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Consent authorized
content:
application/json:
schema:
$ref: '#/components/schemas/Xs2aAuthorisationRequestResponse'
'400':
description: ConsentID is invalid/ consent status is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'401':
description: Invalid scope/ Invalid consent/ Given access token is not coupled to the given consent/ User does not have access to all products requested for consent/ Authorization timed out
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'403':
description: ConsentID not found, or not registered for this TPP
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
/{tenant}/v1/consents/{resource-id}:
get:
tags:
- Account Information Service
summary: Get consent
description: Returns the content of an account information consent object. This is returning the data for the TPP especially in cases, where the consent was directly managed between ASPSP and PSU e.g. in a re-direct SCA Approach.
operationId: getAisConsent
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
required: true
schema:
type: string
- name: resource-id
in: path
description: ID of the consent.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Consent returned
content:
application/json:
schema:
$ref: '#/components/schemas/Xs2aConsentRequestResponse'
'400':
description: ConsentID is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'403':
description: ConsentID not found, or not registered for this TPP
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
delete:
tags:
- Account Information Service
summary: Delete consent
description: Deletes a given consent.
operationId: deleteAisConsent
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
required: true
schema:
type: string
- name: resource-id
in: path
description: ID of the consent.
required: true
schema:
type: string
format: uuid
responses:
'204':
description: Consent deleted
'400':
description: ConsentID is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'401':
description: Invalid scope/ Invalid consent
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
'403':
description: ConsentID not found, or not registered for this TPP
content:
application/json:
schema:
$ref: '#/components/schemas/TppMessages'
/{tenant}/v1/consents/{resource-id}/status:
get:
tags:
- Account Information Service
summary: Get consent status
description: Check the status of an account information consent resource.
operationId: getAisConsentStatus
parameters:
- name: X-Request-ID
in: header
description: ID of the request, unique to the call, as determined by the initiating party.
required: true
schema:
type: string
- name: tenant
in: path
description: Branch of the request.
required: true
schema:
type: string
enum:
- uk
- nl
- be_fr
- be_nl
- name: Signature
in: header
description: A signature of the request by the TPP on application level.
required: true
schema:
type: string
- name: Digest
in: header
description: Digest contains a Hash of the message body, used for authentication of the request. The only hash algorithms that may be used to calculate the Digest within the context of this specification are SHA-256 and SHA-512.
req
# --- truncated at 32 KB (56 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/triodos-bank-uk/refs/heads/main/openapi/triodos-bank-uk-account-information-service-api-openapi.yml