---
updatedAt: 2026-06-12T16:32:22.000Z
agentTools:
  projectIndex: https://docs.truelayer.com/llms.txt
---

# Enable your users to connect their bank account

Access bank account information including account holder name, balances and transaction history.

> 👍 Data API v3 is the latest version of the Data product
>
> Integrating with TrueLayer Data for the first time? Start here.

Data API v3 enables you to create a connection with your users' bank account. A connection enables you to access your user's bank account information, such as account holder name or recent transactions. To determine what types of information you receive, you can set scopes when you create the connection.

A connection represents a user's authorised link to their bank. After you make an initial authenticated API call, your user can then move through the authorisation journey to confirm their consent to the connection.

Once a connection is authorised, you receive a Connection ID associated with that specific connection which you can use to make other Data requests (for example, to request a user's transaction history).

You can access the following kinds of information:

* Accounts: account holder name, account number, sort code, IBAN etc.
* Transactions: description, amount, category, merchant name etc.
* User info: name on file at the bank.

You can then use that information for the following purposes (for example):

* Affordability checks for credit
* Affordability checks for gambling
* Onboarding users
* Rewards, such as cashback

## Supported countries

Currently, Data V3 is only supported in the UK.

## Authentication

### Access token

For any Data V3 API call, you need a Bearer access token. You can get one by making a POST request to <https://auth.truelayer.com/connect/token> using `grant_type=client_credentials` and the `data` scope.

### Connection-Id

In the headers of most Data v3 requests, you will also need to pass a `Connection-Id`. This represents your permission to access your user's bank account information.

Create a connection to receive a connection ID using the <Anchor target="_blank" href="https://docs.truelayer.com/docs/create-a-connection-1#/">`/data-connections`</Anchor> endpoint.

Your connection ID must include the correct scopes for your use case to retrieve the information you want.

The scopes that you can include are:

* `info`
* `accounts`
* `transactions`

Below are common use cases and the scopes you will need for them:

| Use case             | Scopes you need                            |
| :------------------- | :----------------------------------------- |
| Rewards              | `accounts`<br />`transactions`             |
| Affordability        | `info`<br />`transactions`<br />`accounts` |
| Onboarding           | `info`<br />`transactions`<br />`accounts` |
| Account verification | `info`<br />`accounts`                     |

## End-user journey

We offer a ready-made UX flow for you to let users connect their bank accounts to your application, or you can build your own fully custom flow on top of our API.

Note that unless you are regulated as an AISP, you cannot build a custom flow.

When a user authorises a connection, they are redirected to a user journey in which they:

1. Select a bank account to link
2. Consent to the connection
3. Log into their bank and consent to account access on the bank side
4. Receive confirmation of the connection status with a result screen

<Image src="https://files.readme.io/b67884a4acfcb155e8cffb0f65de731958ba050fa676a1e5ade8eae7c8292603-Group_2_5.png" align="center" />

[In Console](https://docs.truelayer.com/docs/data-ui-customisation), you can customise the text that displays on these screens so that your user knows exactly how their data will be used. Choose between prewritten UI text specifically for the most common Data use cases, or write your own.

## Data errors

Error responses for the Data API include the following fields:

| Field name | Type   | Required? | Description                                                                                                         |
| :--------- | :----- | --------- | :------------------------------------------------------------------------------------------------------------------ |
| `type`     | string | Yes       | Information on the cause of the error. This is usually a link to our documentation.                                 |
| `title`    | string | Yes       | A brief description of the error.                                                                                   |
| `status`   | string | Yes       | The error code.                                                                                                     |
| `trace_id` | string | Yes       | An ID that connects your error to our internal logs.                                                                |
| `detail`   | string | Yes       | Some more information on the cause of the error.                                                                    |
| `errors`   | object | No        | An object which appears in some errors with more information about any actions you need to take to fix the problem. |

Below is an example error:

```json
{
  "type": "https://docs.truelayer.com/docs/error-types#invalid-parameters",
  "title": "Invalid Parameters",
  "status": 400,
  "trace_id": "96ce50247f87f540bb2d86771b3728b8",
  "detail": "The request body was invalid.",
  "errors": {
    "Connection-Id": [
      "Must be provided"
    ]
  }
}
```

<br />

## Data access timeframe

When you create a connection, use the `data_access_type` field to determine how long access to the end user's bank data is maintained after the initial authorisation.

* `one_time` access allows you to retrieve your user's data, as defined by your scopes.<br />How long this access lasts depends on the bank account that you are connecting with.
* `recurring` access allows you to repeatedly retrieve data throughout the full consent window, even when the user is not actively logged in or present.

### Reconfirmation of consent

> ⚠️ This endpoint is still in development

If your connection with your user's bank account is on a `recurring` basis, you can use the reconfirmation of consent endpoint to enable your user to maintain that connection, even after the first 90 days.

If the connection expires or is revoked, you'll need to create a new one by directing the user through the authorisation flow again.

<br />