Data API v1 overview

Access identity, accounts, transactions and balance data for all integrated banks with a single interface.

📘

Integrating for the first time?

If this is your first time integrating with a Data product, use the Data API v3.

These docs are specifically about Data v1. While v1 and v3 both enable the same use cases, the integration processes for each version of the product are significantly different.

Available data

The Data API allows you to access the following data for connected accounts available from a provider:

  • Account: account holder name, account number, IBAN etc
  • Credit card: card network, last four digits, name on card etc
  • Transactions: description, amount, category, merchant name etc
  • Balances: current, available etc
  • Regular payments: standing orders and direct debits

Use /api/providers endpoint to determine which data is available for each provider. The response includes scopes which contains a list of information relating to the account.

Supported countries

See our Supported Providers page in Console for more info on which countries and providers we support.

Authentication flow

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

If you are regulated, you have 2 options for your auth flow:

  • Use our ready-made, customisable user journey
  • Build your own
📘

Non-regulated and agents of TrueLayer customers must use TrueLayer’s flow, which is customisable to fit seamlessly into your application.

Both regulated and non-regulated merchants can also:

  • Easily reconnect with lapsed account connections with our re-authentication process.
  • Understand how far users make it through the authentication journey with our auth journey analytics (private beta).

Data types

General

All of the responses returned by TrueLayer APIs are in JSON format. The description of the data types encoded in a JSON response is below.

TypeDescription
stringA UTF-8 string
datetimeAn ISO8601 encoded date time
booleantrue or false
numberA float number

ISO20022 Text Fields

The Data API constrains some fields to be limited to ISO 20022 text format. These fields are typically used for names and references in bank payment requests.

Valid characters for such a text field include:

a-z
A-Z
0-9
/ – ? : ( ) . , ‘ +
space

Any other characters will result in a validation error.

API response structure

All responses are JSON encoded.

Success

Field nameTypeDescription
resultsarrayAn array of objects
{
    "results": [
        {
            "hello": "world"
        }
    ]
}

Error

Most Data API v1 calls return the

Field nameTypeDescription
errorstringAn error code for classification. eg: internal_error
error_descriptionstringWhen possible, extra details about the specific error
error_detailsobjectAdditional key/value error details if available
{
    "error":  "internal_error",
    "error_description": "Well, this is embarrassing!",
    "error_details": {
        "detail_key": "detail value"
    }
}

The only exception to this is the error response for the /connections/extend endpoint. Error responses for this endpoint contain the following fields:

Field nameTypeRequired?Description
typestringYesA URI identifying the class of error. It's a stable link to documentation describing this error type, so you can branch on it programmatically and click through for more detail.
titlestringYesA short, human-readable summary of the error type. It stays the same for a given type and isn't specific to this individual occurrence.
statusstringYesThe HTTP status code, repeated in the body. 400 indicates the request was invalid — in this case, a validation failure.
instancestringYesThe endpoint where the error occurred (the request path that failed).
trace_idstringYesA unique identifier for this specific request. Log it and quote it to TrueLayer support when raising a ticket, as it's how we locate your exact call.
errorsobjectNoField-level validation detail. An object mapping each offending request field to an array of human-readable messages explaining what's wrong. A field can have multiple messages, and multiple fields can appear.
{
  "type": "https://docs.truelayer.com/#connection-api-errors",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "instance": "/connections/extend",
  "trace_id": "3dc845a2-93a2-4e12-940a-0a8aec24d0bc",
  "errors": {
    "ClientId": [
      "The ClientId field is required."
    ]
  }
}


Did this page help you?