---
title: "List bank-feed transactions"
method: GET
path: "/public/v2/bank-match/bank-transactions/"
tags: ["Bank Match"]
---

# List bank-feed transactions

`GET /public/v2/bank-match/bank-transactions/`

Return bank-feed rows (one per debit/credit on a connected bank or credit-card
account), newest first. Use this to drive reconciliation externally: page
through the rows, decide which DualEntry transaction each one corresponds to,
then `POST /matches/` to record the pairing.

## Query parameters

- `financial_account_id` integer, nullable — Limit to a single bank/credit-card account.
- `matching_status` 'unprocessed' | 'deterministic_suggested' | 'awaiting_ai' | 'ai_in_progress' | 'ai_suggested' | 'ai_no_match' | 'no_match' | 'excluded' | 'matched'
- `date_from` string, date-time, nullable — Inclusive lower bound on `date`.
- `date_to` string, date-time, nullable — Inclusive upper bound on `date`.
- `is_posted` boolean, nullable — `true` for posted-only, `false` for pending-only, omit for both.
- `include_expired` boolean — By default expired rows are hidden; pass `true` to see them.
- `limit` integer — Number of records to return per page (capped at 100)
- `offset` integer — Number of records to skip before starting to return results

## Response `200`

OK

- PagedPublicBankTransactionSchemaOut
  - `items` PublicBankTransactionSchemaOut[], required
    - `id` integer, required
    - `financial_account_id` integer, required
    - `financial_account_name` string, nullable — Human-readable name of the bank/credit-card account this row belongs to.
    - `date` string, date-time, required
    - `posted_at` string, date-time, nullable, required
    - `amount` string, required — Signed amount. Positive = debit (money in), negative = credit (money out).
    - `debit_amount` string, required — `max(amount, 0)`. Zero when this row is a credit.
    - `credit_amount` string, required — `abs(min(amount, 0))`. Zero when this row is a debit.
    - `description` string, required
    - `payee` string, nullable — Merchant or counterparty, when the bank reports one.
    - `currency_iso_4217_code` string, nullable, required
    - `source` 'pdf_upload' | 'csv_upload' | 'manual_upload' | 'bai_upload' | 'meld' | 'plaid' | 'waycore' | 'saltedge' | 'customer_api', required
    - `is_posted` boolean, required
    - `is_expired` boolean, required
    - `matching_status` 'unprocessed' | 'deterministic_suggested' | 'awaiting_ai' | 'ai_in_progress' | 'ai_suggested' | 'ai_no_match' | 'no_match' | 'excluded' | 'matched', required
    - `matched_transaction_ids` integer[] — DualEntry transaction IDs currently matched to this row. Empty unless `matching_status == 'matched'`.
    - `matched_entry_ids` integer[] — DualEntry entry IDs currently matched to this row (used for partial matches like journal entries).
  - `count` integer, required

---

[API](https://skmtc.net/dualentry/apis/dualentry-public-api.md) · [All operations](https://skmtc.net/dualentry/apis/dualentry-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/dualentry/dualentry-public-api/revisions/dcb8297898a2/schema)
