Accounts

Account Information (PSD2)

Retrieve information from an ABN AMRO account, such as: transactions, balance, and name of the account holder. You need a PSD2 license to use this service.

Technical

Account Information (PSD2) are APIs that can used to retrieve account data like transaction information, the current balance or details of the account itself. These APIs can be part of multiple product offerings. Also, the functionality of the API depends on the product offering.

Open API Specification

To download the Open API Specification of the Account Information API in YAML format, click here .

Account Information (PSD2) version 1.0.3

New in this version:
- Textual improvements based on feedback
- Added PSD2 to product names

Environments

  • Sandbox: https://api-sandbox.abnamro.com

  • Production: https://api.abnamro.com

Access token

The Account Information API uses the OAuth 2.0 Authorization Code Flow. This also known as user-based consent. For more information see Authorization. To use the API, you need to obtain an access token from the Authentication API with the one or more of the following scopes:

Operation Scope Description
Details psd2:account:details:read Fetches account details. Get this scope through consent from the account holder
Balances psd2:account:balance:read Reads the balance of the account. Get this scope through consent from the account holder
Transactions psd2:account:transaction:read Retrieves transactions of the account. Get this scope through consent from the account holder
Funds psd2:account:funds:read Checks if sufficient funds are available for amount. Get this scope through consent from the account holder

GET details

GET /v1/accounts/{accountNumber}/details

This operation retrieves the details of the account, like currency and account holder name.

Request Attributes
Name Type In Required Description
Authorization String Header true Access token to be passed as a Bearer token
API-Key String Header true The API Key for your app in the Developer Portal
accountNumber String Path true The IBAN for which the details are to be retrieved
Response Attributes
Name Type In Required Description
accountNumber String Body true The IBAN of the request for which the details were retrieved
currency String Body true Currency of the account, 3 characters ISO 4217 currency code (e.g. EUR or USD)
accountHolderName String Body true Name of the account holder for consumers or trade name for commercial clients

GET balances

GET /v1/accounts/{accountNumber}/balances

This operation retrieves the details of the account, like book balance of the account and currency.

Request Attributes
Name Type In Required Description
Authorization String Header true Access token to be passed as a Bearer token
API-Key String Header true The API Key for your app in the Developer Portal
accountNumber String Path true The IBAN for which the balance is to be retrieved
Response Attributes
Name Type In Required Description
accountNumber String Body true The IBAN for which the balance was retrieved
balanceType String Body true Indicator of the type of balance that was retrieved
currency String Body true Currency of the account, 3 characters ISO 4217 currency code (e.g. EUR or USD)
amount Number Body true Balance of the account which can be negative when there is a debit balance

GET transactions

GET /v1/accounts/{accountNumber}/transactions

This operation fetches available transactions for an account. It can provide both realtime bookings for current date and also bookings for past book dates. By default, the response from the API returns transactions that are available on the account in reversed chronological order.

  • In case no transactions are available, a blank response is returned.
  • In cases where more than 50 transactions are available on the account, a next page key is returned that can be used to retrieve the next 50 transactions.

Filtering for specific bookdates can be done using from and to date. The history for which transactions can be retrieved is 18 months (identical to Internet Banking).

Request Attributes
Name Type In Required Description
Authorization String Header true Access token to be passed as a Bearer token
API-Key String Header true The API Key for your app in the Developer Portal
accountNumber String Path true The IBAN for which the transactions are to be retrieved
bookDateFrom String query false Filter, only retrieve transactions more recent than this date (Format: yyyy-mm-dd). If field or date is ommitted, last 50 transactions are retrieved.
bookDateTo String query false Filter, only retrieve transactions preceding this date (Format: yyyy-mm-dd).
nextPageKey String query false Reference key of the last retrieved transaction. This can be used as a query parameter in the next call to fetch the next set of transactions. This key is only provided if more than 50 transactions are present.
Response Attributes
Name Type In Required Description
transactions Array Body true Transactions available for request. Maximum of 50 transactions are returned
mutationCode String transactions true Indicator for the type of transaction
descriptionLines Array transactions true Unformatted text entered by the user during the transaction. String array of up to nine lines of each 0 to 32 characters
bookDate String transactions true The book date of the mutation
balanceAfterMutation String transactions true Account bookbalance after the payment transaction. Minus in case of negative balance
counterPartyAccountNumber String transactions true Counter account number. Will be empty when there is no counter party (e.g. ATM trasnsaction)
counterPartyName String transactions true Name associated with the counter account number. Will be empty when there is no counter party (e.g. ATM transaction)
amount String transactions true Transaction amount including minus in case of transactions deducted from the account
currency String transactions true Currency of the mutation, 3 characters alphabetic ISO currency code (e.g. EUR or USD)
transactionId String transactions true Unique transaction identification number generated for payment requests. Will be empty if no transactionID exists for the transaction (e.g an ATM transaction)
accountNumber String Body true IBAN of the request for which the transactions were retrieved
nextPageKey String Body true Reference key of the last retrieved transaction that can be used as query parameter in the next call to fetch the next set of transactions. Value is null when no more transactions are present

GET funds

GET /v1/accounts/{accountNumber}/funds

This operation checks if the amount specified in the request is available on the account at that time (including any creditline).

Request Attributes
Name Type In Required Description
Authorization String Header true Access token to be passed as a Bearer token
API-Key String Header true The API Key for your app in the Developer Portal
accountNumber String Resource true The IBAN for which the details are to be retrieved
amount Number Query true Amount, decimal always a positive number and no more than 3 decimals (fractional digits)
currency String Query false Currency of the amount, 3 characters alphabetic ISO-4217 currency code (e.g. EUR or USD). If no currency is provided, EUR is assumed
Response Attributes
Name Type In Required Description
accountNumber String Body true IBAN of the request for which the details were retrieved
amount Number Body true Amount as specified in the request, decimal always a positive number and no more than 3 decimals (fractional digits)
currency String Body true Currency of the amount, 3 characters alphabetic ISO currency code (e.g. EUR or USD) as per ISO-4217
available Boolean Body true Boolean indication if the requested amount is available

GET /v1/consentinfo

This list accounts operation provides information regarding the authorization to a resource that an access token provides. The access token "represents" the consent granted by the account holder or resource owner to an account or resource. The information returned contains information about the granted scopes, account numbers or transaction id. Currently consent for only a single account is supported, so only a single account will be returned.

The usecase of Consent Info is depicted in the following sequence diagram.

OAuthConsentInfoAIS.svg

Request Attributes
Name Type In Required Description
Authorization String Header true Access token to be passed as a Bearer token.
API-Key String Header true The API Key for your app in the Developer Portal
Response Attributes
Name Type In Required Description
iban String Body false The iban/account number associated with the access token
transactionId String Body false The transaction identification number associated with the access token for registered payments. Is "null" when access token is not for payment
scopes String Body false The scopes associated with the access token
valid Number Body true Time that the token is valid (in Unix epoch format)

Note: You can store the iban, transactionId and scopes for your own adminstration and for access to the API.

Error Response & Codes

This section describes the error response & the codes being sent by the API.

Error Response Attributes
Name Type In Required Description
code String Body true The code of the error
message String Body true The human readible error message
reference String Body true Reference where to find more information on error
Trace-Id String Body true Unique identification number generated for every request
status Integer Body true HTTPS error code, 4xx or 5xx
category String Body true Category of error. Values: BAD_REQUEST, FORBIDDEN, INTERNAL_SERVER_ERROR, BACKEND_ERROR, more generic categories can be found on the Get Started page under the section Error Codes
Error codes

This section lists the errors that are particular for this API. If your error is not listed here, or you want to know which general errors can occur, you can check on the Get Started page under the section Error Codes.

HTTP status code Error Code Error Description
400 MESSAGE_RST560_0001 Account number empty or null
400 MESSAGE_RST560_0007 IBAN is invalid
400 MESSAGE_RST560_0008 To date is invalid
400 MESSAGE_RST560_0009 From date is invalid
400 MESSAGE_RST560_0010 Account number too long
400 MESSAGE_RST560_0011 From date is greater than to date
400 MESSAGE_RST560_0012 To date is greater than current date
400 MESSAGE_RST560_0013 From date is greater than current date
400 MESSAGE_RST560_0014 Amount is invalid
400 MESSAGE_RST560_0015 Currency is invalid
400 MESSAGE_RST560_0018 Amount is blank
400 MESSAGE_RST560_0022 Invalid book date
400 MESSAGE_RST560_0023 Book date is in future
400 MESSAGE_BAI560_0029 From date is more than 18 months in the past
403 MESSAGE_RST560_0016 No access to account. Contact the account holder for details
500 MESSAGE_BAI560_0005 Report download service failure. No data exists for the request (e.g. no bookings available yet or not a bookday). Solution is to choose another date or try later
5xx MESSAGE_xxxxxxxxxxx For any other 500 error you can contact the bank if problem persists

Additional info

  • When POST fails you can retry later. Likely it will succeed when the service is available again.
  • When reposting, do not use short retry periods to keep out of rate limiting scenario's.

Previous releases

Account Information version 1.0.2

New in this version:
- Updated YAML file to OpenAPI 3 specifications
- Textual improvements based on feedback

v1.01
  • Sandbox now live
  • Updated OAuth2 in YAML file
  • Updated documentation for Sandbox
  • Minor improvements