GET
/
api
/
bank
/
accounts
/
{accountId}
/
transactions
curl --request GET \
  --url https://api.atoa.me/api/bank/accounts/{accountId}/transactions \
  --header 'Authorization: Bearer <token>'
{
  "data": [
    {
      "id": "txn_001",
      "date": "2024-01-14T11:45:00Z",
      "type": "DEBIT",
      "amount": 89.99,
      "currency": "GBP",
      "description": "Amazon Marketplace",
      "reference": "INV-4321-A",
      "transactionCategory": "E-commerce",
      "status": "BOOKED",
      "payee": {
        "name": "Amazon UK Ltd",
        "accountDetails": {
          "sortCode": "123456",
          "accountNumber": "87654321"
        }
      },
      "balance": { "amount": 2.37, "currency": "GBP" }
    },
    {
      "id": "txn_002",
      "date": "2024-01-12T09:30:00Z",
      "type": "CREDIT",
      "amount": 1500.0,
      "currency": "GBP",
      "description": "Salary Payment",
      "reference": "SALARY-JAN",
      "transactionCategory": "Income",
      "status": "BOOKED",
      "payer": {
        "name": "ABC Company Ltd",
        "accountDetails": {
          "sortCode": "654321",
          "accountNumber": "12345678"
        }
      },
      "balance": { "amount": 1592.36, "currency": "GBP" }
    }
  ],
  "meta": { "count": 2 },
  "links": {
    "prev": "https://api.atoa.me/api/bank/accounts/{accountId}/transactions?cursor=<prev-page-cursor>",
    "self": "https://api.atoa.me/api/bank/accounts/{accountId}/transactions?cursor=<current-page-cursor>",
    "next": "https://api.atoa.me/api/bank/accounts/{accountId}/transactions?cursor=<next-page-cursor>"
  }
}

Once bank account access is authorized, use the following API to fetch transaction data.

This endpoint uses cursor-based pagination, returning one bank page per call. Follow links.next exactly as returned until it is no longer present to page through all transactions. Responses use the { data, meta, links } envelope shown in the sample response below.

Authorization

Bearer <token>

Request Body Schema

accountId
string
required

ID of the user’s bank account. This can be obtained from the redirect URL after account linking or by using the Fetch All Accounts API Reference endpoint.

Refer:- Accounts

from
string

Inclusive lower bound on the booking date. Accepts either a plain date (e.g. 2025-08-17) or a full ISO 8601 date-time (e.g. 2026-01-01T00:00:00Z). Only applies to the first call. Once pagination has started, the date range is held inside the cursor, so from should not be sent again alongside a cursor.

before
string

Exclusive upper bound on the booking date. Accepts either a plain date (e.g. 2025-08-17) or a full ISO 8601 date-time. Only applies to the first call. Should not be sent again alongside a cursor. before requires from to also be set.

cursor
string

Cursor token taken from a previous response’s links.next or links.prev. Pass it back unchanged — do not read, decode, or modify it. A stale, tampered, or reused cursor returns 410 Gone, signalling that the caller should restart pagination without a cursor.

Response

data
array

Array of transactions. Each transaction has the following fields:

meta
object

Metadata for this page.

links
object

Pagination links. Follow the URLs exactly as returned.

Cursor-based pagination

Atoa’s Get Account Transactions endpoint uses cursor-based pagination. It accepts from and before as optional query parameters when sending the initial request, and accepts cursor as an optional query parameter in subsequent requests.

How it works

Atoa doesn’t set a limit for the maximum number of transactions returned per page, but an individual bank can set a limit.

The meta object in the response includes count that represents the number of transactions in that page, but doesn’t return a field for the total number of transactions.

The data object in the response contains an array of transactions.

The links object in the response returns cursor tokens that can be fed into the subsequent request:

  • prev - a cursor or link to the previous page
  • self - a cursor or link to the current page
  • next - a cursor or link to the next page

Examples

  • First page

  • Middle page

  • Final page

GET /accounts/{accountId}/transactions returns self and next.

"links": {
  "self": "https://api.atoa.me/api/bank/accounts/{accountId}/transactions?cursor=<current-page-cursor>",
  "next": "https://api.atoa.me/api/bank/accounts/{accountId}/transactions?cursor=<next-page-cursor>"
}

Pass the cursor back unchanged. An expired or tampered cursor returns 410 Gone, at which point restart pagination without a cursor. Because the date range is held inside the cursor, later calls should not re-send from or before alongside it.