---
title: "List Bank Transactions (Business-scoped)"
method: GET
path: "/v1/platform/businesses/{business_id}/bank-transactions/"
tags: ["Bank Transactions Management"]
---

# List Bank Transactions (Business-scoped)

`GET /v1/platform/businesses/{business_id}/bank-transactions/`

## Request

- Base URL: `https://docs.thredfi.com` (the document declares no server; this is the origin it was published from)
- URL: `https://docs.thredfi.com/v1/platform/businesses/{business_id}/bank-transactions/`
- Auth: one of:
  - HTTP bearer
  - HTTP basic
  - HTTP bearer
  - HTTP bearer

Retrieve a paginated list of bank transactions for a specific business with advanced filtering options.

        Authentication:
        - Requires business-scoped Bearer token (ScopedBusinessTokenAuthentication)
        - Token business_id must match the business_id in the path

        **Default Behavior:**
        - Returns bank transactions for the business in the URL path
        - Uses summary serializer for list view (lighter payload)

        **Filtering Options:**

        **Account Filters:**
        - `account_id`: Filter by mapped account ID
        - `bank_account_connection_id`: Filter by bank account connection

        **Date Filters:**
        - `date_from`: Transactions from this date (ISO 8601 format)
        - `date_to`: Transactions to this date (ISO 8601 format)

        **Transaction Filters:**
        - `direction`: Filter by direction (credit/debit)
        - `categorization_status`: Filter by categorization status (supports multiple values)
        - `transaction_type`: Filter by transaction type (one of: fps, bacs, chaps, direct_debit, standing_order, sepa_credit, sepa_debit, sepa_instant, card_payment, atm_withdrawal, bank_transfer, fee, interest, other)
        - `source`: Filter by transaction source
        - `currency`: Filter by currency (GBP, EUR, USD)

        **Amount Filters:**
        - `amount_min`: Minimum transaction amount in cents
        - `amount_max`: Maximum transaction amount in cents

        **Status Filters:**
        - `is_reconciled`: Filter by reconciliation status
        - `needs_categorization`: Filter transactions needing categorization
        - `is_categorized`: Filter categorized transactions
        - `has_parent`: Filter split transactions
        - `has_children`: Filter transactions with splits

        **Search:**
        - `search`: Search across description, counterparty, merchant, and reference

        **Ordering:**
        - `ordering`: Order by any field (prefix with '-' for descending)
        - Default: `-date, -created_at` (newest first)

        **Examples:**
        - Get credit transactions: `?direction=credit`
        - Get pending categorization: `?categorization_status=pending`
        - Get multiple statuses: `?categorization_status=pending&categorization_status=manual_review`
        - Get transactions for date range: `?date_from=2025-01-01&date_to=2025-01-31`
        - Search transactions: `?search=amazon`
        - Filter by amount: `?amount_min=10000&amount_max=100000` (amounts in cents)

## Path parameters

- `business_id` string, required

## Query parameters

- `account_id` string
- `amount_max` integer
- `amount_min` integer
- `approval_status` string[]
- `bank_account_connection_id` string
- `business_id` string, uuid
- `categorization_status` 'approved' | 'categorized' | 'manual_review' | 'pending'
- `category_code` string
- `category_id` string, uuid
- `currency` 'EUR' | 'GBP' | 'USD'
- `date_from` string
- `date_to` string
- `direction` 'credit' | 'debit'
- `has_children` boolean
- `has_parent` boolean
- `is_categorized` boolean
- `is_reconciled` boolean
- `needs_categorization` boolean
- `ordering` string
- `page` integer
- `page_size` integer
- `search` string
- `source` 'api' | 'csv_import' | 'manual' | 'open_banking' | 'plaid'
- `subcategory_code` string
- `subcategory_id` string, uuid
- `transaction_type` 'atm_withdrawal' | 'bacs' | 'bank_transfer' | 'card_payment' | 'chaps' | 'direct_debit' | 'fee' | 'fps' | 'interest' | 'other' | 'sepa_credit' | 'sepa_debit' | 'sepa_instant' | 'standing_order'

## Response `200`

- PaginatedBankTransactionList
  - `count` integer, required: Total number of items
  - `page_info` object, required
    - `total_count` integer, required: Total number of items (same as count)
    - `current_page` integer, required: Current page number (1-indexed)
    - `total_pages` integer, required: Total number of pages
    - `page_size` integer, required: Number of items per page
  - `results` BankTransaction[], required
    - `id` string, uuid, required: Unique bank transaction identifier
    - `date` string, date-time, required: Transaction date (YYYY-MM-DD format)
    - `amount` integer, required: Transaction amount in cents (unsigned, e.g., 450000 for £4,500.00)
    - `display_amount` string, required: Formatted transaction amount for display (e.g., '£4,500.00')
    - `signed_amount` integer, required: Signed transaction amount in cents (positive for credit/incoming, negative for debit/outgoing)
    - `direction` 'credit' | 'debit', required: Transaction direction: 'credit' (money in/incoming) or 'debit' (money out/outgoing) * `credit` - Credit (Money In) * `debit` - Debit (Money Out)
    - `currency` 'EUR' | 'GBP' | 'USD' | 'SEK' | 'NOK' | 'DKK' | 'ISK' | 'MYR' | 'SGD': Transaction currency code (GBP, EUR, USD) * `EUR` - Euro * `GBP` - British Pound * `USD` - US Dollar * `SEK` - Swedish Krona * `NOK` - Norwegian Krone * `DKK` - Danish Krone * `ISK` - Icelandic Króna * `MYR` - Malaysian Ringgit * `SGD` - Singapore Dollar
    - `counterparty_name` string: Name of the other party in the transaction (customer/vendor name, null if not available)
    - `merchant_name` string: Merchant or business name (from card payment data, null if not available)
    - `description` string: Transaction description from bank feed (e.g., 'Payment for Invoice INV-0042')
    - `categorization_status` 'pending' | 'categorized' | 'manual_review' | 'approved': Categorization workflow status: pending, categorized, manual_review, approved * `pending` - Pending Review * `categorized` - AI Categorized * `manual_review` - Requires Manual Review * `approved` - Approved
    - `approval_status` 'pending_approval' | 'ai_approved' | 'approved': Approval status for posting: pending_approval (needs review), ai_approved (auto-approved by AI), approved (human approved). JE triggers when approved. * `pending_approval` - Pending Approval * `ai_approved` - AI Approved * `approved` - Approved
    - `transaction_type` 'fps' | 'bacs' | 'chaps' | 'direct_debit' | 'standing_order' | 'sepa_credit' | 'sepa_debit' | 'sepa_instant' | 'card_payment' | 'atm_withdrawal' | 'bank_transfer' | 'fee' | 'interest' | 'other' | '': UK/EU bank transaction type: fps (Faster Payments), bacs, chaps, direct_debit, standing_order, sepa_credit, sepa_debit, sepa_instant, card_payment, atm_withdrawal, bank_transfer, fee, interest, other * `fps` - Faster Payment * `bacs` - BACS Payment * `chaps` - CHAPS Payment * `direct_debit` - Direct Debit * `standing_order` - Standing Order * `sepa_credit` - SEPA Credit Transfer * `sepa_debit` - SEPA Direct Debit * `sepa_instant` - SEPA Instant Payment * `card_payment` - Card Payment * `atm_withdrawal` - ATM Withdrawal * `bank_transfer` - Bank Transfer * `fee` - Bank Fee * `interest` - Interest * `other` - Other
    - `subcategory` SubcategoryWithCategory, required: Serializer for subcategory with parent category details. Used in transaction responses to show both category and subcategory.
      - `id` string, uuid, required
      - `code` string, required: Code for the subcategory (e.g., 'local_transport', 'saas_subscriptions')
      - `name` string, required: Display name for the subcategory (e.g., 'Local Transport', 'SaaS Subscriptions')
      - `description` string: Detailed description of what types of transactions belong to this subcategory
      - `full_code` string, required
      - `category` TransactionCategory, required: Serializer for transaction category without nested subcategories. Used when only category information is needed.
        - `id` string, uuid, required
        - `code` string, required: Unique code for the category (e.g., 'travel_and_transport', 'software_and_it')
        - `name` string, required: Display name for the category (e.g., 'Travel & Transport', 'Software & IT')
        - `description` string: Detailed description of what types of transactions belong to this category
        - `is_active` boolean: Whether this category is active and available for selection
      - `is_active` boolean: Whether this subcategory is active and available for selection
    - `business_id` string, uuid, nullable, required: Business UUID that owns this transaction
    - `business_name` string, nullable, required: Business name for display purposes
    - `account_id` string, uuid, nullable, required: Chart of accounts ID this transaction is categorized to (null if not categorized)
    - `account_code` string, nullable, required: Account code from chart of accounts (e.g., '1000' for bank account)
    - `account_name` string, nullable, required: Account name from chart of accounts (e.g., 'Bank - Barclays Current')
    - `bank_account_connection_id` string, uuid, nullable, required: Bank account connection UUID this transaction belongs to
    - `bank_account_name` string, nullable, required: Display name of the bank account (e.g., 'Barclays Business Current Account')
    - `bank_account_mask` string, nullable, required: Last 4 digits of the bank account number (e.g., '1234')
    - `bank_account_currency` string, nullable, required: Currency of the bank account (GBP, EUR, USD)
    - `is_reconciled` boolean, required: Whether this transaction has been reconciled to invoices/bills/payments
    - `reconciled_at` string, date-time, nullable, required: Timestamp when transaction was first reconciled (null if not reconciled)
    - `reconciled_amount_cents` integer, required: Total amount reconciled in cents (sum of all confirmed reconciliation links)
    - `remaining_amount_cents` integer, required: Remaining unreconciled amount in cents (amount - reconciled_amount_cents)
    - `reconciliations` BankTransactionReconciliationDetail[], nullable, required: List of reconciliation links showing what this transaction is matched to (invoices/bills/payments) - only populated in detail view
      - `reconciliation_link_id` string, uuid, required
      - `entity_type` string, required: Type: payment, bill_payment, receipt, refund_payment, vendor_refund_payment
      - `entity_id` string, uuid, required
      - `amount_cents` integer, required
      - `status` string, required
      - `created_at` string, date-time, required
      - `created_by` string
      - `notes` string
    - `created_at` string, date-time, required: Timestamp when transaction was imported into the system

## Other responses

- `400`: Validation errors in request data
- `401`: Authentication required - missing or invalid API key
- `403`: Permission denied - insufficient privileges
- `404`: Resource not found
- `409`: Conflict - resource already exists or invalid state transition
- `422`: Unprocessable entity - business logic validation failed
- `500`: Internal server error

---

[API](https://skmtc.dev/thredfi/apis/thredfi-accounting-platform-api.md) - [All operations](https://skmtc.dev/thredfi/apis/thredfi-accounting-platform-api/llms.txt) - [OpenAPI document](https://skmtc.dev/thredfi/apis/thredfi-accounting-platform-api/revisions/0c1918254db3?raw)
