Account Information
The Account Information Service (AIS) allows you to retrieve various information on accounts that the PSU has granted access to via an active consent, including transactions and balances. The first step of the AIS is to fetch a list of accounts for that PSU, which can be queried to include balances via the withBalance
parameter.
For requests to the AIS API, you need an access token with scope
set to accountinformation
corporate
.
Before accessing accounts, it is required that a consent is first created and authorised by the PSU. Refer to the Consents guide for information on how to implement this.
1. Get Accounts
Endpoint
GET /psd2/accountinformation/v1/accountshttp
Query Parameters
Name | Type | Description |
---|---|---|
withBalance | boolean | Includes balance information for each account in the response when set to true . |
Request Headers
Name | Type | Description |
---|---|---|
X-Request-ID | string(uuid) | The ID of the request, unique to the call, as determined by the initiating party. |
X-BicFi | string | The BIC of the bank to which the request is addressed. |
Consent-ID | string | The ID of the related consent. |
PSU-ID | string | The ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID. |
PSU-Corporate-ID | string | The Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL. |
TPP-Redirect-Preferred | boolean | Indicates a preference for redirect-based SCA over decoupled when set to true . The bank may not support both types. |
PSU-IP-Address | string(ipv4) | The IP address of the PSU to be forwarded to the bank. Only included if the request was actively initiated by the PSU. |
curl -X GET "https://api.openbankingplatform.com/psd2/accountinformation/v1/accounts?withBalance=true" \ -H "Accept: application/json" \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIn0..." \ -H "Content-Type: application/json" \ -H "X-Request-ID: 034315f0-702d-46af-ac4d-186f877f603e" \ -H "X-BicFi: ESSESESS" \ -H "Consent-ID: 70c6d203-e1d1-43ff-9e42-07e5dda640ba" \ -H "PSU-ID: 123456789001" \ -H "PSU-Corporate-ID: 1234567890" \ -H "TPP-Redirect-Preferred: false" \ -H "PSU-IP-Address: 152.120.171.187"bash
Response
{ "accounts": [ { "resourceId": "ab82e294-b01d-4c21-b53e-9a39df7507d1", "iban": "SE123456789000532811", "bban": "89000532811", "currency": "SEK", "product": "Business Account", "cashAccountType": "OTHR", "status": "enabled", "bic": "ESSESESS", "usage": "ORGA", "balances": [ { "balanceAmount": { "currency": "SEK", "amount": "18959.990" }, "balanceType": "interimAvailable", "creditLimitIncluded": true }, { "balanceAmount": { "currency": "SEK", "amount": "16550.990" }, "balanceType": "closingBooked", "creditLimitIncluded": false }, { "balanceAmount": { "currency": "SEK", "amount": "18000.990" }, "balanceType": "expected", "creditLimitIncluded": false } ], "ownerName": "Company AB", "creditLimit": { "currency": "SEK", "amount": "0.000" } }, { "resourceId": "d8d010fa-93c1-41c8-a352-bc0f6e788ab4", "iban": "SE304153657000123456", "bban": "57000123456", "currency": "SEK", "product": "Savings account", "cashAccountType": "OTHR", "status": "enabled", "bic": "ESSESESS", "usage": "ORGA", "balances": [ { "balanceAmount": { "currency": "SEK", "amount": "5062.090" }, "balanceType": "interimAvailable", "creditLimitIncluded": true }, { "balanceAmount": { "currency": "SEK", "amount": "3062.090" }, "balanceType": "closingBooked", "creditLimitIncluded": false }, { "balanceAmount": { "currency": "SEK", "amount": "5000.090" }, "balanceType": "expected", "creditLimitIncluded": false } ], "ownerName": "Company AB", "creditLimit": { "currency": "SEK", "amount": "0.000" } } ] }json
2. Get Account Details
Once you have a list of accounts, the Get Account Details request allows you to retrieve more detailed information about a specific account. For this request, we need to specify the account for which to fetch details by providing an accountId
. This ID is equivalent to the resourceId
of an account listed in the previous step.
Endpoint
GET /psd2/accountinformation/v1/accounts/{accountId}http
Path Parameters
Name | Type | Description |
---|---|---|
accountId | string | The ID of the specified account. |
Query Parameters
Name | Type | Description |
---|---|---|
withBalance | boolean | Includes balance information for each account in the response when set to true . |
Request Headers
Name | Type | Description |
---|---|---|
X-Request-ID | string(uuid) | The ID of the request, unique to the call, as determined by the initiating party. |
X-BicFi | string | The BIC of the bank to which the request is addressed. |
Consent-ID | string | The ID of the related consent. |
PSU-ID | string | The ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID. |
PSU-Corporate-ID | string | The Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL. |
TPP-Redirect-Preferred | boolean | Indicates a preference for redirect-based SCA over decoupled when set to true . The bank may not support both types. |
PSU-IP-Address | string(ipv4) | The IP address of the PSU to be forwarded to the bank. Only included if the request was actively initiated by the PSU. |
curl -X GET "https://api.openbankingplatform.com/psd2/accountinformation/v1/accounts/ab82e294-b01d-4c21-b53e-9a39df7507d1" \ -H "Accept: application/json" \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIn0..." \ -H "Content-Type: application/json" \ -H "X-Request-ID: c57b0341-b4c3-4cfc-a6d8-6c1e6e534b2e" \ -H "X-BicFi: ESSESESS" \ -H "Consent-ID: 70c6d203-e1d1-43ff-9e42-07e5dda640ba" \ -H "PSU-ID: 123456789001" \ -H "PSU-Corporate-ID: 1234567890" \ -H "TPP-Redirect-Preferred: false" \ -H "PSU-IP-Address: 152.120.171.187"bash
Response
{ "resourceId": "ab82e294-b01d-4c21-b53e-9a39df7507d1", "iban": "SE123456789000532811", "bban": "89000532811", "bankgiroNumber": "12345678", "currency": "SEK", "product": "Business Account", "cashAccountType": "OTHR", "status": "enabled", "bic": "ESSESESS", "usage": "ORGA", "balances": [ { "balanceAmount": { "currency": "SEK", "amount": "18959.990" }, "balanceType": "interimAvailable", "creditLimitIncluded": true }, { "balanceAmount": { "currency": "SEK", "amount": "16550.990" }, "balanceType": "closingBooked", "creditLimitIncluded": false }, { "balanceAmount": { "currency": "SEK", "amount": "18000.990" }, "balanceType": "expected", "creditLimitIncluded": false } ], "ownerName": "Company AB", "creditLimit": { "currency": "SEK", "amount": "0.000" }, "paymentsEnabled": true, "lastTransactionEnrichmentDateTime": "2025-04-23T20:51:16.803Z" }json
3. Get Balances
This request allows you to retrieve the balances for a specific account in the account list. For this request, we need to specify the account for which to fetch balances by providing an accountId
, as we did in previous requests.
Endpoint
GET /psd2/accountinformation/v1/accounts/{accountId}/balanceshttp
Path Parameters
Name | Type | Description |
---|---|---|
accountId | string | The ID of the specified account. |
Request Headers
Name | Type | Description |
---|---|---|
X-Request-ID | string(uuid) | The ID of the request, unique to the call, as determined by the initiating party. |
X-BicFi | string | The BIC of the bank to which the request is addressed. |
Consent-ID | string | The ID of the related consent. |
PSU-ID | string | The ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID. |
PSU-Corporate-ID | string | The Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL. |
TPP-Redirect-Preferred | boolean | Indicates a preference for redirect-based SCA over decoupled when set to true . The bank may not support both types. |
PSU-IP-Address | string(ipv4) | The IP address of the PSU to be forwarded to the bank. Only included if the request was actively initiated by the PSU. |
curl -X GET "https://api.openbankingplatform.com/psd2/accountinformation/v1/accounts/ab82e294-b01d-4c21-b53e-9a39df7507d1/balances" \ -H "Accept: application/json" \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIn0..." \ -H "Content-Type: application/json" \ -H "X-Request-ID: 685d5dc0-f03c-45a1-aeec-42e1e6505164" \ -H "X-BicFi: ESSESESS" \ -H "Consent-ID: 70c6d203-e1d1-43ff-9e42-07e5dda640ba" \ -H "PSU-ID: 123456789001" \ -H "PSU-Corporate-ID: 1234567890" \ -H "TPP-Redirect-Preferred: false" \ -H "PSU-IP-Address: 152.120.171.187"bash
Response
{ "balances": [ { "balanceAmount": { "currency": "SEK", "amount": "2832.41" }, "balanceType": "interimBooked" }, { "balanceAmount": { "currency": "SEK", "amount": "2800.16" }, "balanceType": "interimAvailable" } ] }json
Alternatively to this request, you can include balances in the response to Get Account List and Get Account Details calls by using the withBalance query parameter, as shown in step 1-2.
4. Get Transaction List
The next request allows you to retrieve a paginated list of booked and pending transactions for a specific account. This request also requires us to specify the account for which to fetch a list of transactions by providing an accountId
. We then also need to define whether to fetch booked, pending or both types of transactions by querying the bookingStatus
parameter. In this guide, we will request a list of booked transactions on the account.
ISO-enriched transactions should be fetched once per day. Check lastTransactionEnrichmentDateTime in the Get Account Details response to determine if today's enrichment has been applied yet.
Endpoint
GET /psd2/accountinformation/v1/accounts/{accountId}/transactionshttp
Path Parameters
Name | Type | Description |
---|---|---|
accountId | string | The ID of the specified account. |
Query Parameters
Name | Type | Description |
---|---|---|
bookingStatus | string(enum) | Specifies which transactions to retrieve: booked , pending or both . |
dateFrom | string(date) | The start date for the transaction list in ISO 8601 format, e.g. 2025-10-31. |
dateTo | string(date) | The end date for the transaction list in ISO 8601 format, e.g. 2025-10-31. |
Request Headers
Name | Type | Description |
---|---|---|
X-Request-ID | string(uuid) | The ID of the request, unique to the call, as determined by the initiating party. |
X-BicFi | string | The BIC of the bank to which the request is addressed. |
Consent-ID | string | The ID of the related consent. |
PSU-ID | string | The ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID. |
PSU-Corporate-ID | string | The Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL. |
TPP-Redirect-Preferred | boolean | Indicates a preference for redirect-based SCA over decoupled when set to true . The bank may not support both types. |
PSU-IP-Address | string(ipv4) | The IP address of the PSU to be forwarded to the bank. Only included if the request was actively initiated by the PSU. |
curl -X GET "https://api.openbankingplatform.com/psd2/accountinformation/v1/accounts/ab82e294-b01d-4c21-b53e-9a39df7507d1/transactions?bookingStatus=booked&dateFrom=2025-04-21&dateTo=2025-04-22" \ -H "Accept: application/json" \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIn0..." \ -H "Content-Type: application/json" \ -H "X-Request-ID: 49880132-d0a7-4ab8-8b8d-3614bda92c25" \ -H "X-BicFi: ESSESESS" \ -H "Consent-ID: 70c6d203-e1d1-43ff-9e42-07e5dda640ba" \ -H "PSU-ID: 123456789001" \ -H "PSU-Corporate-ID: 1234567890" \ -H "TPP-Redirect-Preferred: false" \ -H "PSU-IP-Address: 152.120.171.187"bash
Response
The transactionId is issued by the bank and may change until the transaction reaches its final state. Some banks do not provide a transactionId for pending transactions.
{ "account": { "iban": "SE1234567890123456788" }, "transactions": { "booked": [ { "transactionId": "ecc47512-ea64-4844-92d4-82d0a5968753", "bookingDate": "2025-04-22", "valueDate": "2025-04-22", "transactionAmount": { "currency": "SEK", "amount": "4165.00" }, "creditorAccount": {}, "debtorAccount": {}, "remittanceInformationUnstructured": "Example 3", "balanceAfterTransaction": { "balanceAmount": { "currency": "SEK", "amount": "13227.090" }, "balanceType": "interimBooked" }, "_links": { "transactionDetails": { "href": "/accountinformation/v1/accounts/ab82e294-b01d-4c21-b53e-9a39df7507d1/transactions/ecc47512-ea64-4844-92d4-82d0a5968753" } }, "proprietaryBankTransactionCodeText": "Transfer", "additionalInformation": "Payment for invoice", "transactionFees": [] }, { "transactionId": "0b1b498d-3951-4a48-8c71-3ca7bc9bf988", "entryReference": "LBE1234-5678-0000001", "bookingDate": "2025-04-22", "valueDate": "2025-04-22", "transactionAmount": { "currency": "SEK", "amount": "-1250.00" }, "creditorName": "Merchant 123", "creditorAccount": { "bankgiroNumber": "12345678" }, "debtorName": "CompanyABC", "debtorAccount": { "bankgiroNumber": "98765432" }, "remittanceInformationUnstructured": "Example 2", "remittanceInformationStructured": "INV-12345", "remittanceInformationStructuredArray": [ { "referredDocumentInformation": [ { "typeCode": "CINV", "number": "INV-12345" } ], "referredDocumentAmount": { "remittedAmount": { "currency": "SEK", "amount": "1250.00" } } } ], "proprietaryBankTransactionCodeText": "TRF", "balanceAfterTransaction": { "balanceAmount": { "currency": "SEK", "amount": "9062.090" }, "balanceType": "interimBooked" }, "aggregateTransactionId": "d8lTg5nRk2qWzXgA7cNf3LhVYujXK9_E", "aggregateAmount": "-1250.00", "aggregateRemittanceInformationUnstructured": "LBE1234-5678", "isAliasPayout": true, "isEnriched": true, "paymentId": "b9c91da5-e78b-484a-acca-693120d75ab3", "transactionFees": [] }, { "transactionId": "700ed360-25e1-446a-94eb-775530c1adc0", "entryReference": "EX02-0005678", "bookingDate": "2025-04-22", "valueDate": "2025-04-22", "transactionAmount": { "currency": "SEK", "amount": "-2578.090" }, "creditorAccount": {}, "debtorAccount": {}, "remittanceInformationUnstructured": "Example 1", "balanceAfterTransaction": { "balanceAmount": { "currency": "SEK", "amount": "10312.090" }, "balanceType": "interimBooked" }, "_links": { "transactionDetails": { "href": "/psd2/accountinformation/v1/accounts/ab82e294-b01d-4c21-b53e-9a39df7507d1/transactions/700ed360-25e1-446a-94eb-775530c1adc0" } }, "proprietaryBankTransactionCodeText": "Transfer", "transactionFees": [] } ] } }json
For basic reference capture, track remittanceInformationUnstructured and additionalInformation. For accurate invoice matching, credit note handling, and advanced reconciliation, use the enriched remittanceInformationStructuredArray and remittanceInformationUnstructuredArray to extract full metadata.
5. Get Transaction Details
Once you have a list of transactions, the next request allows you to retrieve further detailed information about a specific transaction in the list. For this request, we need to specify the transaction for which to fetch details by providing a transactionId
. This is an ID of each entry in the transaction list.
This endpoint is only needed for banks that do not include full transaction data in the Get Transaction List response. Transactions that support detailed view will include a transactionDetails link in the Get Transaction List response.
Check transaction details one-by-one and overwrite any data found in the Get Transaction List response with that found in the Get Transaction Details response.
Endpoint
GET /psd2/accountinformation/v1/accounts/{accountId}/transactions/{transactionId}http
Path Parameters
Name | Type | Description |
---|---|---|
accountId | string | The ID of the specified account. |
transactionId | string | The ID of the specified account. |
Request Headers
Name | Type | Description |
---|---|---|
X-Request-ID | string(uuid) | The ID of the request, unique to the call, as determined by the initiating party. |
X-BicFi | string | The BIC of the bank to which the request is addressed. |
Consent-ID | string | The ID of the related consent. |
PSU-ID | string | The ID to identify the PSU at the bank. Typically a local social security number or another unique login ID. |
PSU-Corporate-ID | string | The Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL. |
TPP-Redirect-Preferred | boolean | Indicates a preference for redirect-based SCA over decoupled when set to true . The bank may not support both types. |
PSU-IP-Address | string(ipv4) | The IP address of the PSU to be forwarded to the bank. Only included if the request was actively initiated by the PSU. |
curl -X GET "https://api.openbankingplatform.com/psd2/accountinformation/v1/accounts/ab82e294-b01d-4c21-b53e-9a39df7507d1/transactions/700ed360-25e1-446a-94eb-775530c1adc0" \ -H "Accept: application/json" \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIn0..." \ -H "Content-Type: application/json" \ -H "X-Request-ID: a76bdd7b-159f-49c6-b9a2-d28f046320c9" \ -H "X-BicFi: ESSESESS" \ -H "Consent-ID: 70c6d203-e1d1-43ff-9e42-07e5dda640ba" \ -H "PSU-ID: 123456789001" \ -H "PSU-Corporate-ID: 1234567890" \ -H "TPP-Redirect-Preferred: false" -H "PSU-IP-Address: 152.120.171.187"bash
Response
{ "transactionId": "700ed360-25e1-446a-94eb-775530c1adc0", "bookingDate": "2025-04-22", "valueDate": "2025-04-22", "transactionAmount": { "currency": "SEK", "amount": "-2578.090" }, "currencyExchange": [ { "exchangeRate": "0.07683", "targetCurrency": "GBP", "targetAmount": "-198.19", "exchangeFeeCurrency": "SEK", "exchangeFeeAmount": "38.54" } ], "creditorName": "Merchant 123", "creditorAccount": { "iban": "GB1234567890001", "currency": "GBP" }, "creditorAgent": "HBUKGB4B", "debtorAccount": { "bban": "34567890123456788" }, "remittanceInformationUnstructured": "Example 1", "purposeCode": "OTHR", "_links": { "proofOfPayment": { "href": "/accounts/ab82e294-b01d-4c21-b53e-9a39df7507d1/transactions/626bc7dc-fa30-4283-aed3-5aa87febef14/pop" } }, "isEnriched": true, "paymentId": "626bc7dc-fa30-4283-aed3-5aa87febef14", "paymentServiceReference": "OPESE12345", "creditorAgentName": "HSBC UK BANK PLC", "creditorAddress": { "street": "1 Centenary Square", "buildingNumber": "1", "city": "Birmingham", "postalCode": "B1 1HQ", "country": "GB" }, "proprietaryBankTransactionCodeText": "Transfer", "transactionFees": [] }json
Transaction entries for international TP payments additionally include a proofOfPayment link, which you can use to generate a Proof of Payment document for the PSU.