Account data requests
Learn about the different types of account data you can request with the Data API.
You can discover information about a user’s finances through their accounts. The Data API currently supports four account types:
TRANSACTION
: A transaction account is a checking or current account.SAVINGS
: An account that accrues interest at an agreed rate and interval. These accounts can have restrictions upon the withdrawal of funds.BUSINESS_TRANSACTION
: A transaction account for a business.BUSINESS_SAVINGS
: A savings account for a business.
Through account data requests, you can fetch:
- an overview of all the accounts owned by a particular user
- identity information associated with a specific account, for example full name
- the balance of a particular account
- information about all the transactions made from and to that account, within particular dates
Get all accounts
You can get all user accounts and any associated data by making a GET /accounts
call.
You need to enable the accounts
scope in Console to make this request.
/accounts
request
/accounts
requestcurl -H "Authorization: Bearer ${access_token}" \
https://api.truelayer.com/data/v1/accounts
/accounts
response example
/accounts
response exampleIf the request is successful, you receive a response like the following.
{
"results": [
{
"update_timestamp": "2017-02-07T17:29:24.740802Z",
"account_id": "f1234560abf9f57287637624def390871",
"account_type": "TRANSACTION",
"display_name": "Club Lloyds",
"currency": "GBP",
"account_number": {
"iban": "GB35LOYD12345678901234",
"number": "12345678",
"sort_code": "12-34-56",
"bsb": "067101",
"swift_bic": "LOYDGB2L"
},
"provider": {
"provider_id": "lloyds"
}
},
{
"update_timestamp": "2017-02-07T17:29:24.740802Z",
"account_id": "f1234560abf9f57287637624def390872",
"account_type": "SAVINGS",
"display_name": "Club Lloyds",
"currency": "GBP",
"account_number": {
"iban": "GB35LOYD12345678901235",
"number": "12345679",
"sort_code": "12-34-57",
"bsb": "067101",
"swift_bic": "LOYDGB2L"
},
"provider": {
"provider_id": "lloyds"
}
}
]
}
/accounts
response fields
/accounts
response fieldsField | Type | Description | Required |
---|---|---|---|
account_id | string | Unique identifier of the account. | ✅ |
account_type | string | The account type. The possible account types are TRANSACTION , SAVINGS , BUSINESS_TRANSACTION and BUSINESS_SAVINGS . | ✅ |
account_number.iban | string | ISO 13616-1:2007 international bank number. | |
account_number.number | string | Bank account number. | Only returned for AU and UK accounts. |
account_number.sort_code | string | United Kingdom SORT code. | Only returned for UK accounts. |
account_number.swift_bic | string | ISO 9362:2009 Business Identifier Codes | ✅ |
account_number.bsb | string | BSB (Bank State Branch) number of the account. | Only returned for AU accounts. |
currency | string | ISO 4217 alpha-3 currency code of the account. | ✅ |
display_name | string | Human-readable name of the account. | ✅ |
update_timestamp | datetime | Last update time of the account information. | ✅ |
provider.display_name | string | Display name for the provider. | Deprecated |
provider.logo_uri | string | URI for the provider logo. | Deprecated |
provider.provider_id | string | Unique identifier for the provider. | ✅ |
Get identity information for a single account
You can make a request to /info
to get your user’s identity information held by the provider. This information can include name, address, emails, phone numbers, and the user's banking branch identifier.
You need to enable the info
scope in Console to make this request.
When implementing this endpoint for UK accounts, the user's data should be requested within five minutes of the consent grant, and stored if necessary for your use case. Provider implementations of this endpoint differ due to varying interpretations of Article 10 of PSD2's Regulatory Technical Standards on Strong Customer Authentication. If the data becomes unavailable, we will return an sca_exceeded error message.
/info
request
/info
requestcurl -H \"Authorization: Bearer ${access_token}\" \\\n https://api.truelayer.com/data/v1/info
/info
response example
/info
response example{
"results": [
{
"full_name": "John Doe",
"update_timestamp": "2020-11-19T09:30:00Z"
}
]
}
/info
response fields
/info
response fieldsField | Type | Description | Required |
---|---|---|---|
update_timestamp | datetime | Last time the data has been updated from the provider. | ✅ |
full_name | string | Full name of the user. | ✅ |
branch_id | string | Identifier of your user's banking branch | Only returned for some customers in France. |
emails[...] | array of strings | Email addresses (if none are available, returns empty array) | Returned for most customers in Australia |
phones[...] | array of strings | Phone numbers (if none are available, returns empty array) | Returned for most customers in Australia |
Many providers only return the
full_name
in the response.
Get information for a specific account
You can get data associated with an account by making a GET /accounts/${account_id)
call.
You need to enable the accounts
scope in Console to make this request.
/accounts/{account_id}
request
/accounts/{account_id}
requestcurl -H "Authorization: Bearer ${access_token}" \
https://api.truelayer.com/data/v1/accounts/${account_id}
/accounts/{account_id}
response example
/accounts/{account_id}
response example{
"results": [
{
"update_timestamp": "2017-02-07T17:29:24.740802Z",
"account_id": "f1234560abf9f57287637624def390871",
"account_type": "TRANSACTION",
"display_name": "Club Lloyds",
"currency": "GBP",
"account_number": {
"iban": "GB35LOYD12345678901234",
"number": "12345678",
"sort_code": "12-34-56",
"bsb": "067101"
},
"provider": {
"provider_id": "lloyds"
}
}
]
}
/accounts/{account_id}
response fields
/accounts/{account_id}
response fieldsField | Type | Description | Required |
---|---|---|---|
currency | string | ISO 4217 alpha-3 currency code | ✅ |
available | number | The amount of funds available to the account holder. This takes into account any pending transactions and includes any overdraft facility. | |
current | number | The amount of funds within the account. This does not include any pending transactions. | ✅ |
overdraft | number | Pre-arranged overdraft limit. Available for all TRANSACTION and BUSINESS_TRANSACTION account types. | |
update_timestamp | datetime | Last update time. | Only returned if applicable. |
Get the balance of an account
You can make a GET request to /accounts/${account_id}/balance
to get the balance in an account.
You need to enable the accounts
and balance
scopes in Console to make this request.
/accounts/${account_id}/balance
request
/accounts/${account_id}/balance
requestcurl -H "Authorization: Bearer ${access_token}" \ https://api.truelayer.com/data/v1/accounts/${account_id}/balance
/accounts/${account_id}/balance
response example
/accounts/${account_id}/balance
response exampleFor payments accounts (current and some savings), a negative balance amount represents funds owed to the provider from the account holder, such as an overdraft. A positive balance amount represents funds that are available to spend.
In the following response example, the account has a current balance of £1161.20, a £1000.00 overdraft facility. and has £11.60 spent in pending transactions. Therefore, available
is calculated as 2150.80 = 1161.20 + 1000.00 - 11.60
.
{
"results": [
{
"currency": "GBP",
"available": 2150.8,
"current": 1161.2,
"overdraft": 1000,
"update_timestamp": "2017-02-07T17:33:30.001222Z"
}
]
}
/accounts/${account_id}/balance
response fields
/accounts/${account_id}/balance
response fieldsField | Type | Description | Required |
---|---|---|---|
currency | string | ISO 4217 alpha-3 currency code | ✅ |
available | number | The amount of funds available to the account holder. This takes into account any pending transactions and includes any overdraft facility. | |
current | number | The amount of funds within the account. This does not include any pending transactions. | ✅ |
overdraft | number | Pre-arranged overdraft limit. Available for all TRANSACTION and BUSINESS_TRANSACTION account types. | |
update_timestamp | datetime | Last update time. | Only returned if applicable. |
Get account transaction data
You can make a GET request to /accounts/${account_id}/transactions
to get the transaction data for a specific account. Optionally, you can include from
and to
parameters to retrieve transaction data for a specified period of time.
For payment accounts (current and some savings), a positive transaction amount represents the addition of funds to the account, for example an incoming bank transfer. A negative transaction amount indicates the flow of funds out of an account, such as a shop purchase.
A negative running balance amount represents funds owed to the provider from the account holder, such as an overdraft. A positive running balance amount represents funds that are available to spend.
You need to enable the accounts
and transactions
scopes in Console to make this request.
/accounts/${account_id}/transactions
request
/accounts/${account_id}/transactions
requestcurl -H "Authorization: Bearer ${access_token}" \
"https://api.truelayer.com/data/v1/accounts/${account_id}/transactions?from=${from}&to=${to}"
/accounts/${account_id}/transactions
response example
/accounts/${account_id}/transactions
response example{
"results": [
{
"transaction_id": "03c333979b729315545816aaa365c33f",
"timestamp": "2018-03-06T00:00:00",
"description": "GOOGLE PLAY STORE",
"amount": -2.99,
"currency": "GBP",
"transaction_type": "DEBIT",
"transaction_category": "PURCHASE",
"transaction_classification": [
"Entertainment",
"Games"
],
"merchant_name": "Google play",
"running_balance": {
"amount": 1238.60,
"currency": "GBP"
},
"meta": {
"bank_transaction_id": "9882ks-00js",
"provider_category": "DEB"
}
},
{
"transaction_id": "3484333edb2078e77cf2ed58f1dec11e",
"timestamp": "2018-02-18T00:00:00",
"description": "PAYPAL EBAY",
"amount": -25.25,
"currency": "GBP",
"transaction_type": "DEBIT",
"transaction_category": "PURCHASE",
"transaction_classification": [
"Shopping",
"General"
],
"merchant_name": "Ebay",
"meta": {
"bank_transaction_id": "33b5555724",
"provider_category": "DEB"
}
}
]
}
/accounts/${account_id}/transactions
response fields
/accounts/${account_id}/transactions
response fieldsField | Type | Description | Required |
---|---|---|---|
transaction_id | string | Unique identifier of the transaction in a request. It may change between requests. | ✅ |
normalised_provider_transaction_id | string | TrueLayer's recommended identifier of the transaction in a request. It will not change between requests. | |
provider_transaction_id | string | Provider's identifier of the transaction in a request. The format of this string will vary across providers. | |
timestamp | datetime | Date the transaction was posted on the account | ✅ |
description | string | Original description of the transaction as reported by the provider | ✅ |
transaction_type | string | Type of the transaction. transaction_type can have the following values:
| ✅ |
transaction_category | string | Category of the transaction | ✅ |
transaction_classification | array | Classification of the transaction. Array can be empty if classification has not been successfully assigned. | ✅ |
merchant_name | string | Name of the merchant | Returned if merchant has been identified. |
amount | number | Amount of the transaction | ✅ |
currency | string | ISO 4217 alpha-3 currency code | ✅ |
meta | object | A collection of additional provider specific transaction metadata | ✅ |
running_balance.amount | number | If available, contains the running balance. | |
running_balance.currency | string | If available, contains the running balance currency - ISO 4217 alpha-3 currency code |
Updated 3 months ago