---
title: "Search for transactions"
method: GET
path: "/v1/search/transactions"
tags: ["search"]
---

# Search for transactions

`GET /v1/search/transactions`

## Request

- Base URL: `https://demo.firefly-iii.org/api`
- URL: `https://demo.firefly-iii.org/api/v1/search/transactions`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://demo.firefly-iii.org/oauth/authorize`
    - Token URL: `https://demo.firefly-iii.org/oauth/token`
  - HTTP bearer

Searches through the users transactions.

## Query parameters

- `limit` integer
- `page` integer
- `query` string, required

## Headers

- `X-Trace-Id` string, uuid

## Response `200`

A list of transactions.

- TransactionArray
  - `data` TransactionRead[], required
    - `type` string, string, required: Immutable value
    - `id` string, string, required
    - `attributes` Transaction, required
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `user` string, string: User ID
      - `group_title` string, string, nullable: Title of the transaction if it has been split in more than one piece. Empty otherwise.
      - `transactions` TransactionSplit[], required
        - `user` string, string: User ID
        - `transaction_journal_id` string, string: ID of the underlying transaction journal. Each transaction consists of a transaction group (see the top ID) and one or more journals making up the splits of the transaction.
        - `type` 'withdrawal' | 'deposit' | 'transfer' | 'reconciliation' | 'opening balance', string, required
        - `date` string, date-time, required: Date of the transaction
        - `order` integer, nullable: Order of this entry in the list of transactions.
        - `object_has_currency_setting` boolean: Indicates whether the transaction has a currency setting. For transactions this is always true.
        - `currency_id` string, string: Currency ID for the currency of this transaction.
        - `currency_code` string, string: Currency code for the currency of this transaction.
        - `currency_symbol` string, string: Currency symbol for the currency of this transaction.
        - `currency_name` string, string: Currency name for the currency of this transaction.
        - `currency_decimal_places` integer: Number of decimals used in this currency.
        - `foreign_currency_id` string, string, nullable: Currency ID of the foreign currency, if this transaction has a foreign amount.
        - `foreign_currency_code` string, string, nullable: Currency code of the foreign currency. Default is NULL.
        - `foreign_currency_symbol` string, string, nullable
        - `foreign_currency_decimal_places` integer, nullable: Number of decimals in the foreign currency.
        - `primary_currency_id` string, string, nullable: Returns the primary currency ID of the administration. This currency is used as the currency for all `pc_*` amount and balance fields of this account.
        - `primary_currency_code` string, string, nullable: Returns the primary currency code of the administration. This currency is used as the currency for all `pc_*` amount and balance fields of this account.
        - `primary_currency_symbol` string, string, nullable: See the other `primary_*` fields.
        - `primary_currency_decimal_places` integer, nullable: See the other `primary_*` fields.
        - `amount` string, amount, required: Amount of the transaction.
        - `pc_amount` string, amount: Amount of the transaction in the primary currency of this administration. The `primary_currency_*` fields reflect the currency used. This field is NULL if the user does have 'convert to primary' set to true in their settings.
        - `foreign_amount` string, amount, nullable: The amount in the set foreign currency. May be NULL if the transaction does not have a foreign amount.
        - `pc_foreign_amount` string, amount: Foreign amount of the transaction in the primary currency of this administration. The `primary_currency_*` fields reflect the currency used. This field is NULL if the user does have 'convert to primary' set to true in their settings.
        - `source_balance_after` string, amount, nullable: The balance of the source account. This is the balance in the account's currency which may be different from this transaction, and is not provided in this model.
        - `pc_source_balance_after` string, amount, nullable: The balance of the source account in the primary currency of this administration. The `primary_currency_*` fields reflect the currency used. This field is NULL if the user does have 'convert to primary' set to true in their settings.
        - `destination_balance_after` string, amount, nullable: The balance of the destination account. This is the balance in the account's currency which may be different from this transaction, and is not provided in this model.
        - `pc_destination_balance_after` string, amount, nullable: The balance of the destination account in the primary currency of this administration. The `primary_currency_*` fields reflect the currency used. This field is NULL if the user does have 'convert to primary' set to true in their settings.
        - `description` string, string, required: Description of the transaction.
        - `source_id` string, string, nullable, required: ID of the source account. For a withdrawal or a transfer, this must always be an asset account. For deposits, this must be a revenue account.
        - `source_name` string, string, nullable: Name of the source account. For a withdrawal or a transfer, this must always be an asset account. For deposits, this must be a revenue account. Can be used instead of the source_id. If the transaction is a deposit, the source_name can be filled in freely: the account will be created based on the name.
        - `source_iban` string, string, nullable
        - `source_type` 'Default account' | 'Cash account' | 'Asset account' | 'Expense account' | 'Revenue account' | 'Initial balance account' | 'Beneficiary account' | 'Import account' | 'Reconciliation account' | 'Loan' | 'Debt' | 'Mortgage', string
        - `destination_id` string, string, nullable, required: ID of the destination account. For a deposit or a transfer, this must always be an asset account. For withdrawals this must be an expense account.
        - `destination_name` string, string, nullable: Name of the destination account. You can submit the name instead of the ID. For everything except transfers, the account will be auto-generated if unknown, so submitting a name is enough.
        - `destination_iban` string, string, nullable
        - `destination_type` 'Default account' | 'Cash account' | 'Asset account' | 'Expense account' | 'Revenue account' | 'Initial balance account' | 'Beneficiary account' | 'Import account' | 'Reconciliation account' | 'Loan' | 'Debt' | 'Mortgage', string
        - `budget_id` string, string, nullable: The budget ID for this transaction.
        - `budget_name` string, string, nullable: The name of the budget used.
        - `category_id` string, string, nullable: The category ID for this transaction.
        - `category_name` string, string, nullable: The name of the category to be used. If the category is unknown, it will be created. If the ID and the name point to different categories, the ID overrules the name.
        - `bill_id` string, string, nullable: The associated subscription ID for this transaction. `bill` refers to the OLD name for subscriptions and this field will be removed.
        - `bill_name` string, string, nullable: The associated subscription name for this transaction. `bill` refers to the OLD name for subscriptions and this field will be removed.
        - `subscription_id` string, string, nullable: The associated subscription ID for this transaction.
        - `subscription_name` string, string, nullable: The associated subscription name for this transaction.
        - `reconciled` boolean: If the transaction has been reconciled already. When you set this, the amount can no longer be edited by the user.
        - `notes` string, string, nullable
        - `tags` string[], nullable: Array of tags.
        - `internal_reference` string, string, nullable: Reference to internal reference of other systems.
        - `external_id` string, string, nullable: Reference to external ID in other systems.
        - `external_url` string, string, nullable: External, custom URL for this transaction.
        - `original_source` string, string, nullable: System generated identifier for original creator of transaction.
        - `recurrence_id` string, string, nullable: Reference to recurrence that made the transaction.
        - `recurrence_total` integer, nullable: Total number of transactions expected to be created by this recurrence repetition. Will be 0 if infinite.
        - `recurrence_count` integer, nullable: The # of the current transaction created under this recurrence.
        - `import_hash_v2` string, string, nullable: Hash value of original import transaction (for duplicate detection).
        - `sepa_cc` string, string, nullable: SEPA Clearing Code
        - `sepa_ct_op` string, string, nullable: SEPA Opposing Account Identifier
        - `sepa_ct_id` string, string, nullable: SEPA end-to-end Identifier
        - `sepa_db` string, string, nullable: SEPA mandate identifier
        - `sepa_country` string, string, nullable: SEPA Country
        - `sepa_ep` string, string, nullable: SEPA External Purpose indicator
        - `sepa_ci` string, string, nullable: SEPA Creditor Identifier
        - `sepa_batch_id` string, string, nullable: SEPA Batch ID
        - `interest_date` string, date-time, nullable
        - `book_date` string, date-time, nullable
        - `process_date` string, date-time, nullable
        - `due_date` string, date-time, nullable
        - `payment_date` string, date-time, nullable
        - `invoice_date` string, date-time, nullable
        - `latitude` number, double, nullable: Latitude of the transaction's location, if applicable. Can be used to draw a map.
        - `longitude` number, double, nullable: Latitude of the transaction's location, if applicable. Can be used to draw a map.
        - `zoom_level` integer, nullable: Zoom level for the map, if drawn. This to set the box right. Unfortunately this is a proprietary value because each map provider has different zoom levels.
        - `has_attachments` boolean: If the transaction has attachments.
    - `links` ObjectLink, required
      - `0` object
        - `rel` string, string
        - `uri` string, string
      - `self` string, uri
  - `meta` Meta, required
    - `pagination` object
      - `total` integer
      - `count` integer
      - `per_page` integer
      - `current_page` integer
      - `total_pages` integer
  - `links` PageLink, required
    - `self` string, uri
    - `first` string, uri
    - `next` string, uri, nullable
    - `prev` string, uri, nullable
    - `last` string, uri

## Other responses

- `400`: Bad request
- `401`: Unauthenticated
- `404`: Page not found
- `500`: Internal exception

---

[API](https://skmtc.dev/firefly-iii/apis/firefly-iii-api-v6-4-16.md) - [All operations](https://skmtc.dev/firefly-iii/apis/firefly-iii-api-v6-4-16/llms.txt) - [OpenAPI document](https://skmtc.dev/firefly-iii/apis/firefly-iii-api-v6-4-16/revisions/9935effbe852?raw)
