Account Information API enables the access to account identification data, account balances and account transactions history.
With this type of information you may provide to your users a consolidated view of his available balance, incomes and spending. Based on the transactions history you may understand the spending behavior of your users, both private and corporate, predict overdrafts and warn or offer them a credit line from your partner credit institutions, reconcile invoices with payments for corporates, alert for the possibility of fraud when abnormal spends occur, etc.
This API intends to provide an interface to access PSD2 Account Information services.
The API is designed on a REST model using JSON structures.
Paths
/{aspsp-cde}/v1-0-4/accounts
Read Account List
Requests a list of bank accounts. 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.
ID of the transaction as determined by the initiating party.
{
"default": ""
}
The forwarded IP Address header field consists of the corresponding HTTP request IP Address field between PSU and TPP. It shall be contained if and only if this request was actively initiated by the PSU.
{
"default": ""
}
A signature of the request by the TPP on application level. This might be mandated by ASPSP.
{
"default": ""
}
Shall be contained since “Establish Consent Transaction” was performed via this API before.
{
"default": ""
}
The certificate used for signing the request, in base64 encoding. Must be contained if a signature is contained.
{
"default": ""
}
Request date
Identification of the aspsp
{
"default": ""
}
Bad Request.
Unauthorized.
Forbidden.
Not Found.
Method Not Allowed.
Not Acceptable.
Request Timeout.
Unsupported Media Type.
Too Many Requests.
Internal Server Error.
Service Unavailable.
Gatewaty Timeout.
/{aspsp-cde}/v1-0-4/accounts/{account-id}
Read Account Details
Requests details about an account. \n 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
The forwarded IP Address header field consists of the corresponding HTTP request IP Address field between PSU and TPP. It shall be contained if and only if this request was actively initiated by the PSU.
{
"default": ""
}
ID of the transaction as determined by the initiating party.
{
"default": ""
}
Shall be contained since “Establish Consent Transaction” was performed via this API before.
{
"default": ""
}
A signature of the request by the TPP on application level. This might be mandated by ASPSP.
{
"default": ""
}
The certificate used for signing the request, in base64 encoding. Must be contained if a signature is contained.
{
"default": ""
}
Request date
Identification of the aspsp
{
"default": ""
}
Identification of the account.
{
"default": ""
}
Bad Request.
Unauthorized.
Forbidden.
Not Found.
Method Not Allowed.
Not Acceptable.
Request Timeout.
Unsupported Media Type.
Too Many Requests.
Internal Server Error.
Service Unavailable.
Gatewaty Timeout.
/{aspsp-cde}/v1-0-4/accounts/{account-id}/balances
Read Balance
Requests account data (balances) from a given account addressed by "account-id".
ID of the transaction as determined by the initiating party.
{
"default": ""
}
The forwarded IP Address header field consists of the corresponding HTTP request IP Address field between PSU and TPP. It shall be contained if and only if this request was actively initiated by the PSU.
{
"default": ""
}
Shall be contained since “Establish Consent Transaction” was performed via this API before.
{
"default": ""
}
A signature of the request by the TPP on application level. This might be mandated by ASPSP.
{
"default": ""
}
The certificate used for signing the request, in base64 encoding. Must be contained if a signature is contained.
{
"default": ""
}
Request date
Identification of the aspsp
{
"default": ""
}
Identification of the account.
{
"default": ""
}
Bad Request.
Unauthorized.
Forbidden.
Not Found.
Method Not Allowed.
Not Acceptable.
Request Timeout.
Unsupported Media Type.
Too Many Requests.
Internal Server Error.
Service Unavailable.
Gatewaty Timeout.
/{aspsp-cde}/v1-0-4/accounts/{account-id}/transactions
Read Transaction List
Obtains an account report.
ID of the transaction as determined by the initiating party.
{
"default": ""
}
The forwarded IP Address header field consists of the corresponding HTTP request IP Address field between PSU and TPP. It shall be contained if and only if this request was actively initiated by the PSU.
{
"default": ""
}
Shall be contained since “Establish Consent Transaction” was performed via this API before.
{
"default": ""
}
The TPP can indicate the formats of account reports supported together with a priorisation following the http header definition. The formats supported by this specification are
xml
JSON
text
Further definition of content by ASPSP/ communities cp. Annex B.
{
"default": ""
}
A signature of the request by the TPP on application level. This might be mandated by ASPSP.
{
"default": ""
}
The certificate used for signing the request, in base64 encoding. Must be contained if a signature is contained.
{
"default": ""
}
Request date
Identification of the aspsp
{
"default": ""
}
Identification of the account.
{
"default": ""
}
Starting date of the transaction list, mandated if no delta access is required
{
"default": "1900-01-01"
}
End date of the transaction list, default is now if not given.
{
"default": "1900-01-01"
}
This data attribute is indicating that the AISP is in favour to get all transactions after the transaction with identification entryReferenceFrom alternatively to the above defined period. This is a implementation of a delta access. \n If this data element is contained, the entries "dateFrom" and "dateTo" might be ignored by the ASPSP if a delta report is supported.
{
"default": ""
}
Permitted codes are "booked", "pending", "both", "information" and "all". \n "booked" shall be supported by the ASPSP. \n To support the "pending" and "both" feature is optional for the ASPSP, Error code if not supported in the online banking frontend. If supported, "both" means to request transaction reports of transaction of bookingStatus either "pending" or "booked". \n To support the "information" feature is optional for the ASPSP. Currently the booking status “information” only covers standing orders. Error code if not supported. \n To support the "all" feature is optional for the ASPSP, Error code if not supported. If supported, "all" means to request transaction reports of transaction of any bookingStatus ("pending", "booked" or "information").
{
"enum": [
"booked",
"pending",
"both",
"information",
"all"
],
"default": "both"
}
Bad Request.
Unauthorized.
Forbidden.
Not Found.
Method Not Allowed.
Not Acceptable.
Request Timeout.
Unsupported Media Type.
Too Many Requests.
Internal Server Error.
Service Unavailable.
Gatewaty Timeout.
Definitions
Reads account data (balances) from a given account addressed by “account-id”.
{
"type": "object",
"properties": {
"account": {
"$ref": "#/definitions/AccountReference",
"description": "Identifier of the addressed account. \\n Remark for Future: It is recommended to use this data element. The condition might change to \"mandatory\" in a next version of the specification."
},
"balances": {
"$ref": "#/definitions/BalanceArray",
"description": "A list of balances regarding this card account, e.g. the current balance, the last booked balance."
}
},
"additionalProperties": false
}
detailed account information.
{
"type": "object",
"required": [
"currency"
],
"properties": {
"resourceId": {
"description": "Account resource id",
"type": "string",
"default": ""
},
"iban": {
"description": "International Bank Account Number. This data element can be used in the body of the Consent Request Message for retrieving account access consent from this payment account",
"type": "string",
"pattern": "^[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}$",
"default": "PT0000"
},
"bban": {
"description": "This data element can be used in the body of the Consent Request Message for retrieving account access consent from this account. This data elements is used for payment accounts which have no IBAN",
"type": "string"
},
"msisdn": {
"description": "An alias to access a payment account via a registered mobile phone number. This alias might be needed e.g. in the payment initiation service. The support of this alias must be explicitly documented by the ASPSP for the corresponding API Calls.",
"type": "string",
"maxLength": 35
},
"currency": {
"description": "ISO 4217 Alpha 3 currency code. Account currency.",
"type": "string",
"default": ""
},
"ownerName": {
"description": "Name of the legal account owner. If there is more than one owner, then e.g. two names might be noted here. \\n For a corporate account, the corporate name is used for this attribute. \\n Even if supported by the ASPSP, the provision of this field might depend on the fact whether an explicit consent to this specific additional account information has been given by the PSU.",
"type": "string",
"maxLength": 140
},
"name": {
"description": "Name of the account, as assigned by the ASPSP, in agreement with the account owner in order to provide an additional means of identification of the account.",
"type": "string",
"maxLength": 70
},
"displayName": {
"description": "Name of the account as defined by the PSU within online channels.",
"type": "string",
"maxLength": 70
},
"status": {
"description": "Account status. The value is one of the following: \\n - \"enabled\": account is available \\n - \"deleted\": account is terminated \\n - \"blocked\": account is blocked e.g. for legal reasons. \\n If this field is not used, than the account is available in the sense of this specification.",
"type": "string",
"enum": [
"enabled",
"deleted",
"blocked"
],
"default": "enabled"
},
"linkedAccounts": {
"description": "This data attribute is a field, where an ASPSP can name a cash account associated to pending card transactions.",
"type": "string",
"maxLength": 70
},
"usage": {
"description": "Specifies the usage of the account. \\n - PRIV: private personal account \\n - ORGA: professional account",
"type": "string",
"maxLength": 4,
"enum": [
"PRIV",
"ORGA"
],
"default": "PRIV"
},
"details": {
"description": "Specifications that might be provided by the ASPSP \\n - characteristics of the account \\n - characteristics of the relevant card",
"type": "string",
"maxLength": 500
},
"product": {
"description": "Product Name of the Bank for this account, proprietary definition.",
"type": "string",
"maxLength": 35
},
"cashAccountType": {
"description": "ExternalCashAccountType1Code from ISO20022",
"type": "string",
"default": ""
},
"bic": {
"description": "The BIC associated to the account.",
"type": "string",
"default": ""
},
"_links": {
"description": "Links to the account, which can be directly used for retrieving account information from this dedicated account.\n\nLinks to \"balances\" and/or \"transactions\".\n\nThese links are only supported, when the corresponding consent has been already granted.\n",
"$ref": "#/definitions/AccountLink"
}
},
"additionalProperties": false
}
Reads details about an account, with balances where required.
{
"type": "object",
"properties": {
"account": {
"$ref": "#/definitions/AccountDetail",
"description": "Properties of an Account."
}
},
"additionalProperties": false
}
Links to the account, which can be directly used for retrieving account information from this dedicated account. \n Links to “balances” and/or “transactions” \n These links are only supported, when the corresponding consent has been already granted.
{
"type": "object",
"properties": {
"balances": {
"description": "A link to the resource providing the balance of a dedicated account.",
"type": "string",
"default": ""
},
"transactions": {
"type": "string",
"description": "A link to the resource providing the transactions of a dedicated account.",
"default": ""
}
},
"additionalProperties": false
}
Identifier of the addressed account.
{
"type": "object",
"properties": {
"iban": {
"description": "International Bank Account Number.",
"type": "string",
"pattern": "^[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}$",
"default": "PT0000"
},
"bban": {
"description": "This data elements is used for payment accounts which have no IBAN.",
"type": "string",
"default": ""
},
"pan": {
"description": "Primary Account Number (PAN) of a card, can be tokenised by the ASPSP due to PCI DSS requirements.",
"type": "string",
"maxLength": 35,
"pattern": "^[0-9]{1,28}$",
"default": "1111111111111111111111111111"
},
"maskedPan": {
"description": "Primary Account Number (PAN) of a card in a masked form.",
"type": "string",
"maxLength": 35,
"pattern": "^[0-9]{6,6}([^\\d]{6,18})[0-9]{4,4}$",
"default": "111111******************1111"
},
"msisdn": {
"description": "An alias to access a payment account via a registered mobile phone number",
"type": "string",
"maxLength": 35,
"default": ""
},
"currency": {
"description": "ISO 4217 Alpha 3 currency code.",
"type": "string",
"default": ""
}
},
"additionalProperties": false
}
JSON based account report.
{
"type": "object",
"properties": {
"booked": {
"description": "Account booked transactions report.",
"type": "array",
"items": {
"$ref": "#/definitions/Transaction"
}
},
"pending": {
"description": "Account pending transactions report.",
"type": "array",
"items": {
"$ref": "#/definitions/Transaction"
}
},
"information": {
"description": "Account information transactions report.",
"type": "array",
"items": {
"$ref": "#/definitions/Transaction"
}
},
"_links": {
"$ref": "#/definitions/AccountReportLink",
"description": "The following links might be used within this context: \n- viewAccount (mandatory) \n- first (optional) \n- next (optional) \n- previous (optional) \n- last (optional) \n"
}
},
"additionalProperties": false
}
List of Account Report Links
{
"type": "object",
"required": [
"viewAccount"
],
"properties": {
"viewAccount": {
"description": "A link to the resource providing the details of one account.",
"type": "string",
"default": ""
},
"first": {
"description": "Navigation link for paginated account reports.\n",
"type": "string",
"default": ""
},
"next": {
"description": "Navigation link for paginated account reports.\n",
"type": "string",
"default": ""
},
"previous": {
"description": "Navigation link for paginated account reports.\n",
"type": "string",
"default": ""
},
"last": {
"description": "Navigation link for paginated account reports.\n",
"type": "string",
"default": ""
}
},
"additionalProperties": false
}
Returns a list of bank accounts, with balances where required.
{
"type": "object",
"properties": {
"accounts": {
"items": {
"description": "detailed account information.",
"$ref": "#/definitions/AccountDetail"
},
"description": "List of detailed account information.",
"$ref": "#/definitions/AccountDetailArray"
}
},
"additionalProperties": false
}
Reads account data (transactions) from a given account addressed by “account-id"
{
"type": "object",
"properties": {
"account": {
"$ref": "#/definitions/AccountReference",
"description": "Identifier of the addressed account. \\n Remark for Future: It is recommended to use \\n this data element. The condition might change to \"mandatory\" in a next version of the specification."
},
"transactions": {
"description": "JSON based account report. \\n This account report contains transactions resulting from the query parameters.",
"$ref": "#/definitions/AccountReport"
},
"_links": {
"description": "A list of hyperlinks to be recognised by the TPP. \\n Type of links admitted in this response: \\n \"download\": a link to a resource, where the transaction report might be downloaded from in case where transaction reports have a huge size. \\n Remark: This feature shall only be used where camt-data is requested which has a huge size.",
"$ref": "#/definitions/TransactionLink"
}
},
"additionalProperties": false
}
Transaction Instructed Amount.
{
"type": "object",
"required": [
"currency",
"amount"
],
"properties": {
"currency": {
"description": "ISO 4217 Alpha 3 currency code.",
"type": "string",
"pattern": "^[A-Z]{3,3}$",
"default": "AAA"
},
"amount": {
"description": "The amount given with fractional digits, where fractions must be compliant to the currency definition.\n\nThe decimal separator is a dot.\n",
"type": "string",
"pattern": "^\\-{0,1}[0-9]{1,9}(\\.[0-9]{0,2}){0,1}$",
"default": "0"
}
},
"additionalProperties": false
}
List of detailed account information.
{
"type": "array",
"items": {
"$ref": "#/definitions/AccountDetail",
"description": "Account Properties"
},
"additionalProperties": false
}
A balance regarding an account.
{
"type": "object",
"required": [
"balanceAmount",
"balanceType"
],
"properties": {
"balanceAmount": {
"description": "Balance Amount.",
"$ref": "#/definitions/Amount"
},
"balanceType": {
"description": "Balance Type: \n - closingBooked: Balance of the account at the end of the pre-agreed account reporting period. It is the sum of the opening booked balance at the beginning of the period and all entries booked to the account during the pre-agreed account reporting period.For card-accounts, this is composed of invoiced, but not yet paid entries \n - expected: Balance composed of booked entries and pending items known at the time of calculation, which projects the end of day balance if everything is booked on the account and no other entry is posted.For card accounts, this is composed of invoiced, but not yet paid entries, not yet invoiced but already booked entries and pending items (not yet booked) \n - openingBooked: Book balance of the account at the beginning of the account reporting period. It always equals the closing book balance from the previous report. \n - interimAvailable: Available balance calculated in the course of the account ’servicer’s business day, at the time specified, and subject to further changes during the business day. The interim balance is calculated on the basis of booked credit and debit items during the calculation time/period specified. For card-accounts, this is composed of invoiced, but not yet paid entries, not yet invoiced but already booked entries \n - interimBooked: Balance calculated in the course of the account servicer's business day, at the time specified, and subject to further changes during the business day. The interim balance is calculated on the basis of booked credit and debit items during the calculation time/period specified. \n - forwardAvailable: Forward available balance of money that is at the disposal of the account owner on the date specified. \n - nonInvoiced: Only for card accounts, to be defined yet.",
"type": "string",
"enum": [
"closingBooked",
"expected",
"openingBooked",
"interimAvailable",
"interimBooked",
"forwardAvailable",
"nonInvoiced"
]
},
"creditLimitIncluded": {
"description": "A flag indicating if the credit limit of the corresponding account is included in the calculation of the balance, where applicable.",
"type": "boolean"
},
"lastChangeDateTime": {
"description": "This data element might be used to indicate e.g. with the expected or booked balance that no action is known on the account, which is not yet booked.",
"type": "string",
"format": "date-time",
"default": "1900-01-01T00:00:00Z"
},
"referenceDate": {
"description": "Reference date of the balance",
"type": "string",
"format": "date",
"default": "1900-01-01"
}
},
"additionalProperties": false
}
A list of balances regarding an account.
{
"type": "array",
"items": {
"$ref": "#/definitions/Balance",
"description": "Single Balance"
},
"additionalProperties": false
}
Error Information.
{
"type": "object",
"properties": {
"tppMessages": {
"$ref": "#/definitions/TppMessageArray",
"description": "Messages to the TPP on operational issues."
}
},
"additionalProperties": false
}
Error and status Information.
{
"type": "object",
"properties": {
"transactionStatus": {
"$ref": "#/definitions/TransactionStatusType",
"description": "The transaction status is filled with codes of the ISO 20022 corresponding element."
},
"tppMessages": {
"$ref": "#/definitions/TppMessageArray",
"description": "Messages to the TPP on operational issues."
}
},
"additionalProperties": false
}
Message error codes.
{
"type": "string",
"enum": [
"SERVICE_BLOCKED",
"CORPORATE_ID_IVALID",
"CONSENT_UNKNOWN",
"CONSENT_INVALID",
"CONSENT_EXPIRED",
"RESOURCE_UNIKNOWN",
"RESOURCE_EXPIRED",
"TIMESTAMP_INVALID",
"PERIOD_INVALID",
"SCA_METHOD_UNKKNOWN",
"TRANSACTION_ID_INVALID",
"PRODUCT_INVALID",
"PRODUCT_UNKNOWN",
"PAYMENT_FAILED",
"REQUIRED_KID_MISSING",
"SESSIONS_NOT_SUPPORTED",
"ACCESS_EXCEEDED",
"REQUESTED_FORMATS_INVALID",
"CARD_INVALID",
"NO_PIIS_ACTIVATION"
],
"default": "SERVICE_BLOCKED",
"additionalProperties": false
}
Transports additional error information.
{
"required": [
"category",
"code"
],
"properties": {
"category": {
"type": "string",
"default": "",
"description": "Category of the error. Only \"ERROR\" or \"WARNING\" permitted."
},
"code": {
"$ref": "#/definitions/MessageCode",
"description": "Message error code."
},
"path": {
"type": "string",
"default": "",
"description": "Path of the element of the request message which provoked this error message."
},
"text": {
"type": "string",
"maxLength": 512,
"default": "",
"description": "Additional explaining text."
}
},
"additionalProperties": false
}
Messages to the TPP on operational issues.
{
"type": "array",
"items": {
"$ref": "#/definitions/TppMessage",
"description": "Transports additional error information."
},
"additionalProperties": false
}
Transaction Instructed Amount.
{
"type": "object",
"required": [
"transactionAmount"
],
"properties": {
"entryReference": {
"description": "Is the identification of the transaction as used e.g. for reference for deltafunction on application level. The same identification as for example used within camt.05x messages.",
"type": "string",
"maxLength": 35,
"default": ""
},
"endToEndId": {
"description": "Unique end to end identity.",
"type": "string",
"maxLength": 35,
"default": ""
},
"mandateId": {
"description": "Identification of Mandates, e.g. a SEPA Mandate ID\n",
"type": "string",
"maxLength": 35,
"default": ""
},
"creditorId": {
"description": "Identification of Creditors, e.g. a SEPA Creditor ID\n",
"type": "string",
"maxLength": 35,
"default": ""
},
"bookingDate": {
"description": "The Date when an entry is posted to an account on the ASPSP books.",
"type": "string",
"format": "date",
"default": "1900-01-01"
},
"valueDate": {
"description": "Date and time at which assets become available to the account owner in case of a credit entry, or cease to be available to the account owner in case of a debit entry. \\n Usage: If entry status is pending and value date is present, then the value date refers to an expected/requested value date.",
"type": "string",
"format": "date",
"default": "1900-01-01"
},
"transactionAmount": {
"description": "Transaction Instructed Amount.",
"$ref": "#/definitions/Amount"
},
"creditorName": {
"description": "Name of the creditor if a “Debited” transaction",
"type": "string",
"maxLength": 70,
"default": ""
},
"creditorAccount": {
"description": "Creditor account identifier at a financial institution.",
"$ref": "#/definitions/AccountReference"
},
"ultimateCreditor": {
"description": "Ultimate party to which an amount of money is due.",
"type": "string",
"maxLength": 70,
"default": ""
},
"debtorName": {
"description": "Name of the debtor if a “Credited” transaction",
"type": "string",
"maxLength": 70,
"default": ""
},
"debtorAccount": {
"description": "Identifier of the addressed account.",
"$ref": "#/definitions/AccountReference"
},
"ultimateDebtor": {
"description": "Ultimate party that owes an amount of money to the (ultimate) creditor.",
"type": "string",
"maxLength": 70,
"default": ""
},
"remittanceInformationUnstructured": {
"description": "Remittance Information in an Unstructured Mode",
"type": "string",
"maxLength": 140,
"default": ""
},
"remittanceInformationStructured": {
"description": "Reference to be transported in the field.",
"type": "string",
"maxLength": 140,
"default": ""
},
"purposeCode": {
"description": "The underlying reason for the payment transaction.",
"type": "string",
"default": ""
},
"bankTransactionCode": {
"description": "Bank transaction code as used by the ASPSP in ISO20022 related formats.",
"type": "string"
}
},
"additionalProperties": false
}
For card accounts, this often is restricted by the ASPSP to use only one exchange rate.
{
"type": "object",
"required": [
"sourceCurrency",
"exchangeRate",
"unitCurrency",
"targetCurrency",
"quotationDate"
],
"properties": {
"sourceCurrency": {
"description": "Currency from which an amount is to be converted in a currency conversion.",
"type": "string",
"pattern": "^[A-Z]{3,3}$"
},
"exchangeRate": {
"description": "Factor used to convert an amount from one currency into another. This reflects the price at which one currency was bought with another currency.",
"type": "string",
"pattern": "^[A-Z]{3,3}$"
},
"unitCurrency": {
"description": "Currency in which the rate of exchange is expressed in a currency exchange. In the example 1EUR = xxxCUR, the unit currency is EUR.",
"type": "string",
"pattern": "^[A-Z]{3,3}$"
},
"targetCurrency": {
"description": "Currency into which an amount is to be converted in a currency conversion.",
"type": "string",
"pattern": "^[A-Z]{3,3}$"
},
"quotationDate": {
"description": "Date at which an exchange rate is quoted.",
"type": "string",
"format": "date",
"default": "1900-01-01"
},
"contractIdentification": {
"description": "Unique identification to unambiguously identify the foreign exchange contract.",
"type": "string"
}
},
"additionalProperties": false
}
List of Transaction Report Links
{
"type": "object",
"properties": {
"download": {
"description": "Download link for huge AIS data packages.\n",
"type": "string",
"default": ""
},
"first": {
"type": "string",
"description": "Navigation link for paginated transaction reports.",
"default": ""
},
"next": {
"description": "Navigation link for paginated transaction reports.",
"type": "string",
"default": ""
},
"previous": {
"description": "Navigation link for paginated transaction reports.",
"type": "string",
"default": ""
},
"last": {
"description": "Navigation link for paginated transaction reports.",
"type": "string",
"default": ""
}
},
"additionalProperties": false
}
ISO20022: The transaction status is filled with value of the ISO20022 data table. RCVD : RECEIVED PDNG : PENDING PATC : PARTIALLY ACCEPTED TECHNICAL CORRECT ACTC : ACCEPTED TECHNICAL VALIDATION RJCT : REJECTED
{
"type": "string",
"enum": [
"RCVD",
"PDNG",
"PATC",
"ACTC",
"RJCT"
],
"default": "RJCT",
"additionalProperties": false
}