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-3/accounts
Read Account List
Obtains the accounts covered by a consent.
ID of the transaction as determined by the initiating party.
{
"default": ""
}
ID of the request, unique to the call, as determined bu 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": ""
}
Hash of the message body. Should be present when Request body exists
{
"default": ""
}
The certificate used for signing the request, in base64 encoding. Shall be contained if the signature is used.
{
"default": ""
}
Request date
Identification of the aspsp
{
"default": ""
}
Reserved for future use. This parameter may only be used together with the access sub attribute “available-accounts” in the request body. \n\nThe request is rejected if the ASPSP is not NextGenPSD2 supporting this parameter.\n\nIf the ASPSP accepts this parameter in the /consents endpoint, he shall also accept it for the GET access method on the /accounts endpoint.\n
{
"default": false
}
It must be contained if the PSU has asked for this account access in real-time. This flag is then set to "true". The PSU then might be involved in an additional consent process, if the given consent is not any more sufficient.
{
"default": false
}
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-3/accounts/{account-id}
Read Account Details
Obtains the properties of an account covered by a consent.
ID of the transaction as determined by the initiating party.
{
"default": ""
}
ID of the request, unique to the call, as determined bu 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": ""
}
Hash of the message body. Should be present when Request body exists
{
"default": ""
}
The certificate used for signing the request, in base64 encoding. Shall be contained if the signature is used.
{
"default": ""
}
Request date
Identification of the aspsp
{
"default": ""
}
Identification of the account.
{
"default": ""
}
Reserved for future use. This parameter may only be used together with the access sub attribute “available-accounts” in the request body. \n\nThe request is rejected if the ASPSP is not NextGenPSD2 supporting this parameter.\n\nIf the ASPSP accepts this parameter in the /consents endpoint, he shall also accept it for the GET access method on the /accounts endpoint.\n
{
"default": false
}
It must be contained if the PSU has asked for this account access in real-time. This flag is then set to "true". The PSU then might be involved in an additional consent process, if the given consent is not any more sufficient.
{
"default": false
}
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-3/accounts/{account-id}/balances
Read Balance
Obtains the account balances
ID of the transaction as determined by the initiating party.
{
"default": ""
}
ID of the request, unique to the call, as determined bu 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": ""
}
Hash of the message body. Should be present when Request body exists
{
"default": ""
}
The certificate used for signing the request, in base64 encoding. Shall be contained if the signature is used.
{
"default": ""
}
Request date
Identification of the aspsp
{
"default": ""
}
Identification of the account.
{
"default": ""
}
It must be contained if the PSU has asked for this account access in real-time. This flag is then set to "true". The PSU then might be involved in an additional consent process, if the given consent is not any more sufficient.
{
"default": false
}
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-3/accounts/{account-id}/transactions
Read Transaction List
Obtains an account report.
ID of the transaction as determined by the initiating party.
{
"default": ""
}
ID of the request, unique to the call, as determined bu the initiating party.
{
"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": ""
}
Hash of the message body. Should be present when Request body exists
{
"default": ""
}
The certificate used for signing the request, in base64 encoding. Shall be contained if the signature is used.
{
"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 transactionId alternatively to the above defined period. This is a implementation of a delta access. If this data element is contained, the entries “dateFrom” and “dateTo” might be ignored by the ASPSP if a delta report is supported.
{
"default": ""
}
It must be contained if the PSU has asked for this account access in real-time. This flag is then set to "true". The PSU then might be involved in an additional consent process, if the given consent is not any more sufficient.
{
"default": false
}
Permitted codes are “booked”, “pending” and “both” . “booked” and “both” are to be supported mandatorily by the ASPSP. To support the “pending” feature is optional for the ASPSP, Error code if not supported in the online banking frontend
{
"enum": [
"booked",
"pending",
"both"
],
"default": "both"
}
Reserved for future use. This parameter may only be used together with the access sub attribute “available-accounts” in the request body. \n\nThe request is rejected if the ASPSP is not NextGenPSD2 supporting this parameter.\n\nIf the ASPSP accepts this parameter in the /consents endpoint, he shall also accept it for the GET access method on the /accounts endpoint.\n
{
"default": false
}
This data attribute is indicating that the AISP is in favour to get all transactions after the last report access for this PSU on the addressed account. This is another implementation of a delta access-report. This delta indicator might be rejected by the ASPSP if this function is not supported.
{
"default": false
}
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": {
"balances": {
"$ref": "#/definitions/BalanceArray",
"description": "A list of balances regarding this account."
}
},
"additionalProperties": false
}
detailed account information.
{
"type": "object",
"required": [
"iban"
],
"properties": {
"id": {
"description": "This is the data element to be used in the path when retrieving data from a dedicated account.\n",
"type": "string",
"maxLength": 35,
"default": ""
},
"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 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",
"default": ""
},
"pan": {
"description": "Primary Account Number.",
"type": "string",
"maxLength": 35,
"default": ""
},
"maskedPan": {
"description": "Primary Account Number in a masked form.",
"type": "string",
"maxLength": 35,
"default": ""
},
"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,
"default": ""
},
"currency": {
"description": "ISO 4217 Alpha 3 currency code.",
"type": "string",
"default": ""
},
"name": {
"description": "Name of the account given by the bank or the PSU in Online-Banking.",
"type": "string",
"maxLength": 35,
"default": ""
},
"accountType": {
"description": "Product Name of the Bank for this account, proprietary definition.",
"type": "string",
"maxLength": 35,
"default": ""
},
"cashAccountType": {
"description": "ExternalCashAccountType1Code from ISO20022",
"type": "string",
"default": ""
},
"bic": {
"description": "The BIC associated to the account.",
"type": "string",
"default": ""
},
"balances": {
"description": "Account balances.",
"items": {
"$ref": "#/definitions/Balance"
},
"$ref": "#/definitions/BalanceArray"
},
"_links": {
"description": "Links to the account, which can be directly used for retrieving account information from this dedicated account.\n\n\nLinks to \"balances\" and/or \"transactions\".\n\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
}
A link to the resource providing the details of one account.
{
"type": "object",
"properties": {
"viewBalances": {
"description": "A link to the resource providing the balance of a dedicated account.",
"type": "string",
"default": ""
},
"viewTransactions": {
"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",
"required": [
"iban"
],
"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,
"default": ""
},
"maskedPan": {
"description": "Primary Account Number (PAN) of a card in a masked form.",
"type": "string",
"maxLength": 35,
"default": ""
},
"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",
"required": [
"booked"
],
"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"
}
},
"_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": {
"accountList": {
"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": {
"transactions": {
"description": "JSON based account report.",
"$ref": "#/definitions/AccountReport"
},
"_links": {
"description": "Report of Account Transactions.",
"$ref": "#/definitions/TransactionLink"
}
},
"additionalProperties": false
}
Transaction Instructed Amount.
{
"type": "object",
"required": [
"currency",
"content"
],
"properties": {
"currency": {
"description": "ISO 4217 Alpha 3 currency code.",
"type": "string",
"pattern": "^[A-Z]{3,3}$",
"default": "AAA"
},
"content": {
"description": "The amount given with fractional digits, where fractions must be compliant to the currency definition.\n\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",
"properties": {
"closingBooked": {
"description": "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.\n",
"$ref": "#/definitions/SingleBalance"
},
"expected": {
"description": "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.\n",
"$ref": "#/definitions/SingleBalance"
},
"authorised": {
"description": "The expected balance together with the value of a pre-approved credit line the ASPSP makes permanently available to the user.\n",
"$ref": "#/definitions/SingleBalance"
},
"openingBooked": {
"description": "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",
"$ref": "#/definitions/SingleBalance"
},
"interimAvailable": {
"description": "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.\n",
"$ref": "#/definitions/SingleBalance"
}
},
"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
}
Balance Properties.
{
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"description": "Balance Amount.",
"$ref": "#/definitions/Amount"
},
"lastActionDateTime": {
"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.\n",
"type": "string",
"format": "date-time",
"default": "1900-01-01T00:00:00Z"
},
"date": {
"description": "Balance Date.",
"type": "string",
"format": "date",
"default": "1900-01-01"
}
},
"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": [
"amount"
],
"properties": {
"transactionId": {
"description": "Can be used as access-ID in the API, where more details on an transaction is offered.\n",
"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": "The Date at which assets become available to the account owner in case of a credit",
"type": "string",
"format": "date",
"default": "1900-01-01"
},
"amount": {
"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": ""
}
},
"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
}