> ## Documentation Index
> Fetch the complete documentation index at: https://docs.campfire.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List Chart Transactions

> Lists general-ledger transactions (`ChartTransaction` records) - Campfire's GL transaction log, and the recommended endpoint for retrieving GL transaction data.

Each transaction carries account, department, vendor, entity, journal/date metadata, and tags (where applicable). Product metadata is not stored directly on a transaction; it is reached through relations with other Campfire objects.

**Date range:** filter with `start_date` and `end_date` (both `YYYY-MM-DD`, inclusive); the bounds match on transaction date (the journal entry date, which `posted_at` mirrors).

**Pagination:** results are paginated via `limit` (default 100, max 10000) and `offset`. To retrieve more than 10000 records, page through with `offset`, or use cursor pagination by passing an empty `cursor=` parameter and following the `next` link.

**Key response fields:**
- `amount` - amount in consolidated currency (the root entity's currency).
- `amount_book` - amount in the currency of the entity the transaction belongs to.
- `amount_native` - amount in the currency the transaction was originally created in. Example: for a transaction made in GBP where the entity uses EUR and the root entity uses USD, `amount_native` is GBP, `amount_book` is EUR, and `amount` is USD.
- `posted_at` - the transaction date; determines which period the transaction falls in. `date_year` and `date_month` are derived from it.
- `vendor` / `vendor_name` - the linked Campfire `Vendor` object's ID and name.
- `merchant_name` - a free-text field stored directly on the transaction; not linked to any Campfire object.
- `account` - the Campfire `ChartAccount` (GL account) the transaction is posted to.
- `entity` - the Campfire `ChartEntity` ID.
- `tags` - the transaction's tags; each tag's `group`/`group_name` identify the tag group (dimension) it belongs to. List a customer's tag groups via `/coa/api/tag-group` and tags via `/coa/api/tag`.

**Dynamic tag-group columns:** in addition to `tags`, each row carries flattened per-dimension columns `tag_group_<id>` (tag ID) and `tag_group_<id>_name` (tag name), one pair per tag group defined by the customer, plus `tag_group_none` / `tag_group_none_name` for ungrouped tags. Journal-level custom fields are merged in as `custom_field_<name>` keys. These columns are customer-specific, so they cannot appear in this static schema - discover tag groups via `/coa/api/tag-group` and custom fields via `/ca/api/v1/custom-fields`.



## OpenAPI

````yaml https://api.meetcampfire.com/api/schema?format=json get /coa/api/transaction
openapi: 3.0.3
info:
  title: Campfire Developer APIs
  version: 1.0.0
  description: >
    ## Introduction

    Campfire's developer APIs offer granular access to Campfire's core
    accounting,

    revenue recognition, and financial data features.


    These APIs are designed to be used by developers to build custom
    integrations,

    automate workflows, and perform any other programmatic operations.


    ## Rate limits

    API users can make up to **5 requests per second**. This limit is shared
    across

    all endpoints for the same API user. Requests that exceed the limit receive
    a

    `429 Too Many Requests` response. Wait for the number of seconds specified
    in

    the `Retry-After` response header before retrying.
servers:
  - url: https://api.meetcampfire.com
    description: Production server
security: []
tags:
  - name: Cash Management
    description: Operations related to accounts, transactions, and other bank-related data.
  - name: Core Accounting
    description: >-
      Operations related to core accounting data, such as the chart of accounts,
      entity management, and the general ledger.
  - name: Revenue Recognition
    description: >-
      Operations related to revenue recognition, contract management, and
      contract data aggregation.
  - name: Accounts Receivable
    description: Operations related to invoicing and the AR subledger
  - name: Accounts Payable
    description: Operations related to billing and the AP subledger.
  - name: Financial Statements
    description: Operations related to financial statement generation and data aggregation.
  - name: Settings
    description: Operations related to system and accounting settings configuration.
paths:
  /coa/api/transaction:
    get:
      tags:
        - Core Accounting
      summary: List Chart Transactions
      description: >-
        Lists general-ledger transactions (`ChartTransaction` records) -
        Campfire's GL transaction log, and the recommended endpoint for
        retrieving GL transaction data.


        Each transaction carries account, department, vendor, entity,
        journal/date metadata, and tags (where applicable). Product metadata is
        not stored directly on a transaction; it is reached through relations
        with other Campfire objects.


        **Date range:** filter with `start_date` and `end_date` (both
        `YYYY-MM-DD`, inclusive); the bounds match on transaction date (the
        journal entry date, which `posted_at` mirrors).


        **Pagination:** results are paginated via `limit` (default 100, max
        10000) and `offset`. To retrieve more than 10000 records, page through
        with `offset`, or use cursor pagination by passing an empty `cursor=`
        parameter and following the `next` link.


        **Key response fields:**

        - `amount` - amount in consolidated currency (the root entity's
        currency).

        - `amount_book` - amount in the currency of the entity the transaction
        belongs to.

        - `amount_native` - amount in the currency the transaction was
        originally created in. Example: for a transaction made in GBP where the
        entity uses EUR and the root entity uses USD, `amount_native` is GBP,
        `amount_book` is EUR, and `amount` is USD.

        - `posted_at` - the transaction date; determines which period the
        transaction falls in. `date_year` and `date_month` are derived from it.

        - `vendor` / `vendor_name` - the linked Campfire `Vendor` object's ID
        and name.

        - `merchant_name` - a free-text field stored directly on the
        transaction; not linked to any Campfire object.

        - `account` - the Campfire `ChartAccount` (GL account) the transaction
        is posted to.

        - `entity` - the Campfire `ChartEntity` ID.

        - `tags` - the transaction's tags; each tag's `group`/`group_name`
        identify the tag group (dimension) it belongs to. List a customer's tag
        groups via `/coa/api/tag-group` and tags via `/coa/api/tag`.


        **Dynamic tag-group columns:** in addition to `tags`, each row carries
        flattened per-dimension columns `tag_group_<id>` (tag ID) and
        `tag_group_<id>_name` (tag name), one pair per tag group defined by the
        customer, plus `tag_group_none` / `tag_group_none_name` for ungrouped
        tags. Journal-level custom fields are merged in as `custom_field_<name>`
        keys. These columns are customer-specific, so they cannot appear in this
        static schema - discover tag groups via `/coa/api/tag-group` and custom
        fields via `/ca/api/v1/custom-fields`.
      operationId: coa_api_transaction_list
      parameters:
        - in: query
          name: account
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: account_id
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: account_rollup
          schema:
            type: boolean
            default: false
        - in: query
          name: account_subtype
          schema:
            type: string
          explode: true
          style: form
        - in: query
          name: account_type
          schema:
            type: string
          explode: true
          style: form
        - in: query
          name: accounts
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: aggregation_fields
          schema:
            type: string
          description: Comma-separated aggregations, e.g. sum:amount,count:id
        - in: query
          name: all_time
          schema:
            type: boolean
            default: false
          description: >-
            If true, uses full transaction date range for the customer;
            start_date and end_date are ignored
        - in: query
          name: bank
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: bank_description
          schema:
            type: string
        - in: query
          name: bank_id
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: categorized
          schema:
            type: string
          description: Filter by categorization state (true/false)
        - in: query
          name: credit_amount_equal
          schema:
            type: number
            format: double
        - in: query
          name: credit_amount_gte
          schema:
            type: number
            format: double
        - in: query
          name: credit_amount_lte
          schema:
            type: number
            format: double
        - in: query
          name: credit_amount_null
          schema:
            type: boolean
            default: false
        - in: query
          name: currency
          schema:
            type: string
          explode: true
          style: form
        - in: query
          name: debit_amount_equal
          schema:
            type: number
            format: double
        - in: query
          name: debit_amount_gte
          schema:
            type: number
            format: double
        - in: query
          name: debit_amount_lte
          schema:
            type: number
            format: double
        - in: query
          name: debit_amount_null
          schema:
            type: boolean
            default: false
        - in: query
          name: department
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: department_id
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: department_or_unassigned
          schema:
            type: boolean
            default: false
        - in: query
          name: download
          schema:
            type: boolean
            default: false
          description: >-
            If true, dispatch async CSV/Excel email export instead of returning
            rows
        - in: query
          name: end_date
          schema:
            type: string
            format: date
          description: >-
            Latest date (inclusive) for which to retrieve data. Defaults to end
            of current month
        - in: query
          name: entity
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: entity_id
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: entity_rollup
          schema:
            type: boolean
            default: false
        - in: query
          name: exclude_entity
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: exclude_entity_id
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: exclude_id
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: exclude_journal
          schema:
            type: integer
        - in: query
          name: exclude_reconciliation_report
          schema:
            type: integer
        - in: query
          name: exclude_uncategorized_accounts
          schema:
            type: boolean
            default: false
        - in: query
          name: expense_or_ap
          schema:
            type: boolean
        - in: query
          name: fields
          schema:
            type: string
          description: >-
            Comma-separated list of columns to return, e.g.
            'posted_at,debit_amount,account'. Omit to receive the full payload.
            'id' is always included. Narrowing the column list also skips the
            derived values behind the omitted columns, so it is the recommended
            way to pull large pages: a 1000-row page returns roughly 90% less
            data and responds materially faster when only a few columns are
            needed. Unrecognized names are ignored.
        - in: query
          name: group
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: group_fields
          schema:
            type: string
          description: >-
            Comma-separated list of fields to group by (e.g.
            account,vendor,tag_group_<id>)
        - in: query
          name: group_id
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: group_keys
          schema:
            type: string
          description: >-
            Comma-separated values matched positionally to group_fields for
            drill-down
        - in: query
          name: has_linked_fixed_asset
          schema:
            type: string
        - in: query
          name: has_parent_bank_transaction
          schema:
            type: string
        - in: query
          name: include_deleted
          schema:
            type: boolean
            default: false
          description: >-
            When set to 'true', returns ONLY deleted records instead of active
            records. Deleted records contain minimal data: 'id',
            'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'.
            When 'false' or omitted, returns ONLY active records. This provides
            clean separation between active and deleted data.
        - in: query
          name: include_matches
          schema:
            type: boolean
            default: false
          description: >-
            If true, include match metadata (has_matches, primary_action_type)
            in serialized rows
        - in: query
          name: is_not_reconciled
          schema:
            type: boolean
            default: false
        - in: query
          name: is_reconciled
          schema:
            type: boolean
            default: false
        - in: query
          name: journal_type
          schema:
            type: string
        - in: query
          name: journal_type__nin
          schema:
            type: string
          explode: true
          style: form
        - in: query
          name: last_modified_at__gte
          schema:
            type: string
          description: >-
            Filter for records modified on or after this timestamp. Format: ISO
            8601 (e.g., '2024-01-01T00:00:00Z' or '2024-01-01'). Works with both
            active records and deleted records (filters by deletion time for
            deleted records).
        - in: query
          name: last_modified_at__lte
          schema:
            type: string
          description: >-
            Filter for records modified on or before this timestamp. Format: ISO
            8601 (e.g., '2024-12-31T23:59:59Z' or '2024-12-31'). Works with both
            active records and deleted records (filters by deletion time for
            deleted records).
        - in: query
          name: limit
          schema:
            type: integer
            default: 100
          description: >-
            Maximum number of records to return per page. Default 100, maximum
            10000. Use with offset to paginate
        - in: query
          name: match_type
          schema:
            type: string
            enum:
              - all
              - any
            default: all
        - in: query
          name: needs_review
          schema:
            type: boolean
            default: false
        - in: query
          name: no_department
          schema:
            type: boolean
        - in: query
          name: no_tag
          schema:
            type: boolean
        - in: query
          name: no_vendor
          schema:
            type: boolean
        - in: query
          name: offset
          schema:
            type: integer
            default: 0
          description: >-
            Number of records to skip before collecting the result page. Use
            with limit to paginate
        - in: query
          name: opposing_account
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: opposing_account_subtype
          schema:
            type: string
        - in: query
          name: ordering
          schema:
            type: string
        - in: query
          name: payee
          schema:
            type: string
          description: Integer payee id or Campfire ID (VEN-/CUST-/EMP-)
          explode: true
          style: form
        - in: query
          name: payee_id
          schema:
            type: string
          description: Integer payee id or Campfire ID (VEN-/CUST-/EMP-)
          explode: true
          style: form
        - in: query
          name: pivot_fields
          schema:
            type: string
          description: Comma-separated list of pivot dimensions
        - in: query
          name: q
          schema:
            type: string
          description: >-
            Free-text search across journal memo, bank description, and related
            fields
        - in: query
          name: reconciliation_report
          schema:
            type: integer
        - in: query
          name: revenue_or_receivables
          schema:
            type: boolean
        - in: query
          name: shouldPivot
          schema:
            type: boolean
            default: false
        - in: query
          name: sort
          schema:
            type: string
          description: 'Sort field; prefix with - for descending. Default: -posted_at'
        - in: query
          name: start_date
          schema:
            type: string
            format: date
          description: >-
            Earliest date (inclusive) for which to retrieve data. Defaults to
            six months ago
        - in: query
          name: tag
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: tag_groups
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: tag_id
          schema:
            type: integer
          explode: true
          style: form
        - in: query
          name: vendor
          schema:
            type: string
          description: Integer payee id or Campfire ID (VEN-/CUST-/EMP-)
          explode: true
          style: form
        - in: query
          name: vendor_id
          schema:
            type: string
          description: Integer payee id or Campfire ID (VEN-/CUST-/EMP-)
          explode: true
          style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedChartTransactionList'
              examples:
                PaginatedTransactions:
                  value:
                    count: 123
                    next: http://api.example.org/accounts/?offset=400&limit=100
                    previous: http://api.example.org/accounts/?offset=200&limit=100
                    results:
                      - count: 1159
                        next: >-
                          https://api.meetcampfire.com/coa/api/transaction?account=335924&include_matches=true&limit=100&offset=100&shouldPivot=false&sort=-posted_at
                        previous: null
                        results:
                          - id: 377990505
                            is_deleted: false
                            deleted_at: null
                            entity_name: Adjusting
                            entity_currency: AUD
                            account_name: 00000 - Uncategorized
                            account_number: '00000'
                            vendor_name: 100 Thieves
                            vendor_id: '7604020'
                            tags:
                              - id: 259426
                                group_name: Customer Group
                                parent_name: null
                                parent: null
                                is_deleted: false
                                deleted_at: null
                                is_active: true
                                name: Customer Group 1
                                created_at: 2026-04-30T19:31:21+0000
                                last_modified_at: 2026-04-30T19:31:21+0000
                                group: 19601
                            journal: 136516715
                            journal_order: '0044169'
                            journal_memo: 'Invoice #ENTITY1-0000090'
                            journal_type: invoice
                            intercompany_journal: null
                            created_automatically: false
                            journal_type_name: Invoice
                            invoice: null
                            bill: null
                            date_month: '03'
                            date_year: '2027'
                            balance_after_transaction: 39.73
                            account: 335924
                            last_modified_by_name: Zack McAccountant
                            account_type: UNCATEGORIZED
                            account_subtype: UNCATEGORIZED
                            files: []
                            invoice_id: null
                            invoice_number: null
                            bill_id: null
                            bill_number: null
                            file_names: []
                            has_matches: false
                            has_ai: false
                            has_rules: false
                            has_merges: false
                            has_fixed_asset_rule_matches: false
                            primary_action_type: ''
                            suggested_account: null
                            suggested_account_name: null
                            suggested_account_number: null
                            amount: 39.73
                            amount_native: 30
                            amount_book: 30
                            created_fixed_assets: []
                            reconciliation_report: null
                            opposing_account_name: Multiple Accounts
                            opposing_account_number: null
                            transaction_id: b756fde3-51d6-42da-88cb-ac46c4df4da9
                            debit_amount: null
                            credit_amount: 39.73
                            debit_amount_book: null
                            credit_amount_book: 30
                            debit_amount_native: null
                            credit_amount_native: 30
                            currency: GBP
                            exchange_rate: 1.324389
                            exchange_rate_book: 1
                            posted_at: '2027-03-01'
                            merchant_name: null
                            bank_description: CA SPECIAL TAX
                            tag_ids: []
                            tag_group_ids: []
                            note: null
                            receipt_url: null
                            balance_before_transaction: null
                            created_at: 2026-03-16T22:43:17+0000
                            external_id: null
                            needs_review: true
                            last_modified_at: 2026-04-30T19:57:25+0000
                            draft_matches: null
                            last_lam_prediction_attempt: null
                            entity: 4
                            parent_bank_transaction: null
                            vendor: 7604020
                            department: null
                            last_modified_by: 17737
                            tag_group_19601: 259426
                            tag_group_19601_name: Customer Group 1
                            consolidation_currency: USD
                        is_truncated: true
                        truncation_message: >-
                          Showing 100 of 1159 results. Use filters or pagination
                          to see more.
                  summary: Paginated transactions
          description: ''
components:
  schemas:
    PaginatedChartTransactionList:
      type: object
      required:
        - count
        - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?offset=400&limit=100
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/ChartTransaction'
    ChartTransaction:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        is_deleted:
          type: boolean
          readOnly: true
          default: false
        deleted_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        entity_name:
          type: string
          readOnly: true
        entity_currency:
          type: string
          readOnly: true
        account_name:
          type: string
          nullable: true
          description: Combines account number and name in the format "number - name"
          readOnly: true
        account_number:
          type: string
          readOnly: true
        vendor_name:
          type: string
          readOnly: true
          description: >-
            Name of the linked Campfire Vendor object. Distinct from
            `merchant_name`, which is free text stored directly on the
            transaction and not linked to a Campfire object.
        vendor_id:
          type: string
          readOnly: true
        vendor_campfire_id:
          type: string
          readOnly: true
          nullable: true
          description: >-
            Stable, user-facing Campfire ID of the linked Campfire Vendor object
            (e.g. `VEN-0000001`).
        department_name:
          type: string
          readOnly: true
        department_code:
          type: string
          readOnly: true
        parent_department_name:
          type: string
          readOnly: true
        parent_department:
          type: integer
          readOnly: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TransactionTag'
          readOnly: true
        journal:
          type: integer
          readOnly: true
        journal_order:
          type: string
          readOnly: true
        journal_memo:
          type: string
          readOnly: true
        journal_type:
          type: string
          readOnly: true
        intercompany_journal:
          type: integer
          readOnly: true
        created_automatically:
          type: boolean
          readOnly: true
        journal_attachments:
          type: array
          items:
            $ref: '#/components/schemas/File'
          readOnly: true
        journal_type_name:
          type: string
          readOnly: true
          nullable: true
        invoice:
          type: string
          readOnly: true
          nullable: true
        bill:
          type: string
          readOnly: true
          nullable: true
        date_month:
          type: string
          nullable: true
          readOnly: true
          description: Two-digit month (MM) derived from `posted_at`, the transaction date.
        date_year:
          type: string
          nullable: true
          readOnly: true
          description: >-
            Four-digit year (YYYY) derived from `posted_at`, the transaction
            date.
        balance_after_transaction:
          type: number
          format: double
          readOnly: true
        bank_account:
          type: string
          readOnly: true
        bank_account_name:
          type: string
          readOnly: true
        account:
          type: integer
          nullable: true
        last_modified_by_name:
          type: string
          readOnly: true
        account_type:
          type: string
          readOnly: true
        account_subtype:
          type: string
          readOnly: true
        parent_account_name:
          type: string
          readOnly: true
        files:
          type: string
          readOnly: true
        invoice_id:
          type: integer
          nullable: true
          readOnly: true
        invoice_number:
          type: string
          readOnly: true
          nullable: true
        bill_id:
          type: integer
          nullable: true
          readOnly: true
        bill_number:
          type: string
          readOnly: true
          nullable: true
        file_names:
          type: string
          readOnly: true
        has_matches:
          type: boolean
          readOnly: true
        has_ai:
          type: boolean
          readOnly: true
        has_rules:
          type: boolean
          readOnly: true
        has_merges:
          type: boolean
          readOnly: true
        has_fixed_asset_rule_matches:
          type: boolean
          readOnly: true
        has_suggested_rule:
          type: boolean
          readOnly: true
        suggested_rule_account_name:
          type: string
          readOnly: true
          nullable: true
        primary_action_type:
          type: string
          readOnly: true
        suggested_account:
          type: integer
          nullable: true
          readOnly: true
        suggested_account_name:
          type: string
          readOnly: true
          nullable: true
        suggested_account_number:
          type: string
          readOnly: true
          nullable: true
        amount:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          readOnly: true
          description: Amount in consolidated currency (the currency of the root entity).
        amount_native:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          readOnly: true
          description: Amount in the currency the transaction was originally created in.
        amount_book:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          readOnly: true
          description: Amount in the currency of the entity this transaction belongs to.
        amortization_schedule:
          type: array
          items:
            $ref: '#/components/schemas/AmortizationSchedule'
          readOnly: true
        linked_amortizations:
          type: array
          items:
            type: object
            additionalProperties: {}
          readOnly: true
        created_fixed_assets:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
          description: >-
            Return all fixed assets this transaction is linked to — via the
            legacy

            `purchase_transaction` FK (reverse: `created_fixed_assets`) AND the

            new `purchase_transactions` M2M (reverse: `linked_fixed_assets`).

            Dual-write keeps the FK target in the M2M, but using both covers any

            pre-backfill drift and surfaces non-primary M2M-only links (e.g. the

            secondary txns in a multi-txn fixed asset, or a split-resized txn).
          readOnly: true
        reconciliation_report:
          type: string
          readOnly: true
        opposing_account_name:
          type: string
          readOnly: true
        opposing_account_number:
          type: string
          readOnly: true
        tax_rate:
          type: integer
          writeOnly: true
          nullable: true
        apply_both_sides:
          type: boolean
          writeOnly: true
          default: false
        transaction_match_id:
          type: integer
          writeOnly: true
          nullable: true
        transaction_id:
          type: string
          format: uuid
          readOnly: true
        debit_amount:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        credit_amount:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        debit_amount_book:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        credit_amount_book:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        debit_amount_native:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        credit_amount_native:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        currency:
          type: string
          maxLength: 3
        exchange_rate:
          type: number
          format: double
          maximum: 100000000000000
          minimum: -100000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        exchange_rate_book:
          type: number
          format: double
          maximum: 100000000000000
          minimum: -100000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        posted_at:
          type: string
          format: date
          nullable: true
          title: Posted Date
        merchant_name:
          type: string
          nullable: true
        bank_description:
          type: string
          nullable: true
        tag_ids:
          type: array
          items:
            type: integer
            maximum: 9223372036854776000
            minimum: -9223372036854776000
            format: int64
        tag_group_ids:
          type: array
          items:
            type: integer
            maximum: 9223372036854776000
            minimum: -9223372036854776000
            format: int64
        note:
          type: string
          nullable: true
        receipt_url:
          type: string
          format: uri
          nullable: true
          maxLength: 512
        balance_before_transaction:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          readOnly: true
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        external_id:
          type: string
          nullable: true
        producer:
          type: string
          readOnly: true
          nullable: true
          description: >-
            Lane that owns this leg's money and date fields. NULL for every
            pre-loader producer.
        warehouse_row_key:
          type: string
          readOnly: true
          nullable: true
          description: >-
            Identity of the warehouse row this leg projects, as
            <connection_id>:<row_key>. Distinct from external_id, which holds
            the bare Stripe object id that other lanes resolve back to Stripe by
            prefix. NULL for every producer except the Stripe top-down loader.
        needs_review:
          type: boolean
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        draft_matches:
          nullable: true
        last_lam_prediction_attempt:
          type: string
          format: date-time
          nullable: true
        source_group:
          type: string
          format: uuid
          readOnly: true
          nullable: true
        customer:
          type: integer
          readOnly: true
        entity:
          type: integer
        source_entity:
          type: integer
          nullable: true
          title: Source Operating Entity
        parent_bank_transaction:
          type: integer
          nullable: true
        vendor:
          type: integer
          nullable: true
        department:
          type: integer
          nullable: true
        last_modified_by:
          type: integer
          nullable: true
        cost_allocation:
          type: integer
          nullable: true
          readOnly: true
        last_sync_run:
          type: integer
          nullable: true
          readOnly: true
      required:
        - account_name
        - account_number
        - account_subtype
        - account_type
        - amortization_schedule
        - amount
        - amount_book
        - amount_native
        - balance_after_transaction
        - balance_before_transaction
        - bank_account
        - bank_account_name
        - bill
        - bill_id
        - bill_number
        - cost_allocation
        - created_at
        - created_automatically
        - created_fixed_assets
        - customer
        - date_month
        - date_year
        - deleted_at
        - department_code
        - department_name
        - entity
        - entity_currency
        - entity_name
        - file_names
        - files
        - has_ai
        - has_fixed_asset_rule_matches
        - has_matches
        - has_merges
        - has_rules
        - has_suggested_rule
        - id
        - intercompany_journal
        - invoice
        - invoice_id
        - invoice_number
        - is_deleted
        - journal
        - journal_attachments
        - journal_memo
        - journal_order
        - journal_type
        - journal_type_name
        - last_modified_at
        - last_modified_by_name
        - last_sync_run
        - linked_amortizations
        - opposing_account_name
        - opposing_account_number
        - parent_account_name
        - parent_department
        - parent_department_name
        - primary_action_type
        - producer
        - reconciliation_report
        - source_group
        - suggested_account
        - suggested_account_name
        - suggested_account_number
        - suggested_rule_account_name
        - tags
        - transaction_id
        - vendor_campfire_id
        - vendor_id
        - vendor_name
        - warehouse_row_key
    TransactionTag:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        group_name:
          type: string
          readOnly: true
        parent_name:
          type: string
          readOnly: true
          nullable: true
        parent:
          type: integer
          nullable: true
        is_deleted:
          type: boolean
          readOnly: true
          default: false
        deleted_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        is_active:
          type: boolean
          default: true
        name:
          type: string
          nullable: true
          maxLength: 250
        created_at:
          type: string
          format: date-time
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        customer:
          type: integer
          readOnly: true
        group:
          type: integer
          nullable: true
      required:
        - created_at
        - customer
        - deleted_at
        - group_name
        - id
        - is_deleted
        - last_modified_at
        - name
        - parent_name
    File:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        customer:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        created_by:
          type: integer
          nullable: true
          readOnly: true
        created_by_name:
          type: string
          readOnly: true
        created_by_email:
          type: string
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        name:
          type: string
        url:
          type: string
          readOnly: true
        s3_content_type:
          type: string
          nullable: true
        s3_content_length:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
        s3_path:
          type: string
        object_id:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
        app:
          type: string
          readOnly: true
        model:
          type: string
          readOnly: true
        is_deleted:
          type: boolean
          readOnly: true
          default: false
        deleted_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
      required:
        - app
        - created_at
        - created_by
        - created_by_email
        - created_by_name
        - customer
        - deleted_at
        - id
        - is_deleted
        - last_modified_at
        - model
        - name
        - s3_path
        - url
    AmortizationSchedule:
      type: object
      properties:
        id:
          type: integer
        amortization:
          type: integer
          writeOnly: true
        accounting_amortization:
          type: integer
          writeOnly: true
        journal_entry_order:
          type: string
          readOnly: true
        date:
          type: string
          format: date
        amount:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
        posted:
          type: boolean
        customer:
          type: integer
          readOnly: true
        transaction:
          type: integer
          nullable: true
        bill_line:
          type: integer
          nullable: true
        debit_memo_line:
          type: integer
          nullable: true
        journal_entry:
          type: integer
          nullable: true
      required:
        - amount
        - customer
        - date
        - journal_entry_order

````