Campfire Bank Reconciliation API

The Bank Reconciliation API from Campfire — 6 operation(s) for bank reconciliation.

Operations 10

GET /coa/api/v2/reconciliation List Bank Reconciliation Reports #
POST /coa/api/v2/reconciliation Create Bank Reconciliation Report #
GET /coa/api/v2/reconciliation/{id} Get Bank Reconciliation Report #
PUT /coa/api/v2/reconciliation/{id} Update Bank Reconciliation Report #
PATCH /coa/api/v2/reconciliation/{id} Partial Update Bank Reconciliation Report #
DELETE /coa/api/v2/reconciliation/{id} Delete Bank Reconciliation Report #
POST /coa/api/v2/reconciliation/{id}/bulk-match-transactions Bulk Match GL Transactions to Statement Transactions #
GET /coa/api/v2/reconciliation/{id}/source-transactions List GL Transactions for Reconciliation #
POST /coa/api/v2/reconciliation/{id}/transactions/confirm Confirm Selection of Transactions to Reconcile #
POST /coa/api/v2/reconciliation/parse-statement-page Parse Bank Statement Page #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/campfire-bank-reconciliation-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

campfire-bank-reconciliation-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Campfire Developer APIs Accounts Payable Bank Reconciliation API
  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.

    '
servers:
- url: https://api.meetcampfire.com
  description: Production server
tags:
- name: Bank Reconciliation
paths:
  /coa/api/v2/reconciliation:
    get:
      operationId: coa_api_v2_reconciliation_list
      description: Retrieve a paginated list of bank reconciliation reports. Supports filtering by start_date, end_date, entity, account, and search query (q). Default sort is by statement_ending_date descending.
      summary: List Bank Reconciliation Reports
      parameters:
      - in: query
        name: account
        schema:
          type: integer
        description: Filter by account ID
      - in: query
        name: end_date
        schema:
          type: string
        description: Filter by maximum statement ending date (YYYY-MM-DD)
      - in: query
        name: entity
        schema:
          type: integer
        description: Filter by entity ID
      - name: limit
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: The initial index from which to return the results.
        schema:
          type: integer
      - in: query
        name: q
        schema:
          type: string
        description: Search term for account name, number, or reconciled_by name
      - in: query
        name: sort
        schema:
          type: string
        description: Sort field (prefix with - for descending)
      - in: query
        name: start_date
        schema:
          type: string
        description: Filter by minimum statement ending date (YYYY-MM-DD)
      tags:
      - Bank Reconciliation
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedReconciliationReportV2ListList'
          description: ''
    post:
      operationId: coa_api_v2_reconciliation_create
      description: Create a new bank reconciliation report for a specific account and date range. Cannot create overlapping date ranges for the same account and entity.
      summary: Create Bank Reconciliation Report
      tags:
      - Bank Reconciliation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
        required: true
      security:
      - knoxApiToken: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconciliationReportV2'
          description: ''
  /coa/api/v2/reconciliation/{id}:
    get:
      operationId: coa_api_v2_reconciliation_retrieve
      description: Retrieve a specific bank reconciliation report by ID. Includes report metadata, status, async task status for PDF processing, and attached files/CSV statements.
      summary: Get Bank Reconciliation Report
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconciliationReportV2'
          description: ''
    put:
      operationId: coa_api_v2_reconciliation_update
      description: Update a bank reconciliation report. Supports partial updates via PATCH.
      summary: Update Bank Reconciliation Report
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ReconciliationReportV2'
        required: true
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconciliationReportV2'
          description: ''
    patch:
      operationId: coa_api_v2_reconciliation_partial_update
      description: Partially update a bank reconciliation report. Only provided fields are modified.
      summary: Partial Update Bank Reconciliation Report
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedReconciliationReportV2'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedReconciliationReportV2'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedReconciliationReportV2'
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconciliationReportV2'
          description: ''
    delete:
      operationId: coa_api_v2_reconciliation_destroy
      description: Delete a bank reconciliation report and all associated data.
      summary: Delete Bank Reconciliation Report
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      security:
      - knoxApiToken: []
      responses:
        '204':
          description: No response body
  /coa/api/v2/reconciliation/{id}/bulk-match-transactions:
    post:
      operationId: coa_api_v2_reconciliation_bulk_match_transactions_create
      description: Match multiple GL transactions to statement transactions in a single request. Pairs are validated atomically — all succeed or none are created.
      summary: Bulk Match GL Transactions to Statement Transactions
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMatchTransactionRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BulkMatchTransactionRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BulkMatchTransactionRequest'
        required: true
      security:
      - knoxApiToken: []
      responses:
        '201':
          description: All pairs matched successfully
        '400':
          description: Validation error (duplicates, already reconciled, non-draft report)
        '404':
          description: Report, GL transaction, or statement transaction not found
  /coa/api/v2/reconciliation/{id}/source-transactions:
    get:
      operationId: coa_api_v2_reconciliation_source_transactions_list
      description: List source (GL) transactions available for reconciliation. Supports filtering by date range, bank, vendor, department, tag, currency, and reconciliation status.
      summary: List GL Transactions for Reconciliation
      parameters:
      - in: query
        name: bank
        schema:
          type: integer
        description: Filter by bank account ID
      - in: query
        name: currency
        schema:
          type: string
        description: Filter by currency code (e.g., USD, EUR)
      - in: query
        name: department
        schema:
          type: integer
        description: Filter by department ID
      - in: query
        name: end_date
        schema:
          type: string
        description: Filter by maximum posted date (YYYY-MM-DD)
      - in: query
        name: group
        schema:
          type: integer
        description: Filter by tag group ID
      - in: path
        name: id
        schema:
          type: integer
        required: true
      - name: limit
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: matched
        schema:
          type: string
        description: Set to 'true' to show only transactions with an explicit statement match, or 'false' to show transactions without an explicit statement match
      - name: offset
        required: false
        in: query
        description: The initial index from which to return the results.
        schema:
          type: integer
      - in: query
        name: q
        schema:
          type: string
        description: Search term for bank description, journal memo, journal order, or amount
      - in: query
        name: reconciled_only
        schema:
          type: string
        description: Set to 'true' to show only reconciled transactions for this report
      - in: query
        name: sort
        schema:
          type: string
        description: 'Sort field(s), comma-separated (prefix with - for descending). Default: posted_at'
      - in: query
        name: start_date
        schema:
          type: string
        description: Filter by minimum posted date (YYYY-MM-DD)
      - in: query
        name: tag
        schema:
          type: integer
        description: Filter by tag ID
      - in: query
        name: unreconciled
        schema:
          type: string
        description: Set to 'true' to show only unreconciled transactions
      - in: query
        name: vendor
        schema:
          type: integer
        description: Filter by vendor/payee ID
      tags:
      - Bank Reconciliation
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedReconciliationReportV2SourceTransactionListList'
          description: ''
  /coa/api/v2/reconciliation/{id}/transactions/confirm:
    post:
      operationId: coa_api_v2_reconciliation_transactions_confirm_create
      description: Confirm the selection of GL transactions for reconciliation. Pass selected transaction IDs in the request body. Selected transactions are marked as RECONCILED; deselected transactions have their status as suggested matches to this reconciliation report cleared.
      summary: Confirm Selection of Transactions to Reconcile
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Bank Reconciliation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmTransactionSelectionRequest'
            examples:
              ConfirmSelectedTransactions:
                value:
                  selected:
                  - 1001
                  - 1002
                  - 1003
                  - 1004
                  - 1005
                summary: Confirm selected transactions
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ConfirmTransactionSelectionRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ConfirmTransactionSelectionRequest'
        required: true
      security:
      - knoxApiToken: []
      responses:
        '204':
          description: No response body
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: ''
  /coa/api/v2/reconciliation/parse-statement-page:
    post:
      operationId: parse_bank_statement_page
      description: "Parse a bank statement PDF.\n\nAccepts:\n    ``file_id`` (required) -- ID of the uploaded PDF ``File``.\n    ``pages`` (optional, int) -- How many pages to include in the first parse batch.\n        Defaults to ``BATCH_PAGE_SIZE``. Use a small value (e.g. 2) for\n        a fast initial response with just balances and dates.\n\nOnly the first batch is parsed in this request. Parsed output is cached under\n``file_id`` and the effective first-batch page count (``pages`` or default\n``BATCH_PAGE_SIZE``) so different ``pages`` values do not share one cache entry."
      summary: Parse Bank Statement Page
      tags:
      - Bank Reconciliation
      security:
      - knoxApiToken: []
      responses:
        '200':
          description: No response body
components:
  schemas:
    PaginatedReconciliationReportV2SourceTransactionListList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=400&limit=100
        previous:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/ReconciliationReportV2SourceTransactionList'
    ConfirmTransactionSelectionRequest:
      type: object
      properties:
        selected:
          type: array
          items:
            type: integer
          description: List of GL transaction IDs to mark as reconciled
        selected_statements:
          type: array
          items:
            type: integer
          description: Statement transaction IDs to auto-match to GL selections by amount
      required:
      - selected
    ReconciliationReportV2List:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        customer:
          type: integer
          readOnly: true
        entity:
          type:
          - integer
          - 'null'
        entity_name:
          type: string
          readOnly: true
        account:
          type: integer
        account_name:
          type: string
          readOnly: true
        account_number:
          type: string
          readOnly: true
        account_type:
          type: string
          readOnly: true
        account_subtype:
          type: string
          readOnly: true
        currency:
          type: string
          maxLength: 3
        statement_starting_date:
          type:
          - string
          - 'null'
          format: date
        statement_ending_date:
          type:
          - string
          - 'null'
          format: date
        starting_balance:
          type: number
          format: double
          exclusiveMinimum: -1000000000000000000
          exclusiveMaximum: 1000000000000000000
        ending_balance:
          type: number
          format: double
          exclusiveMinimum: -1000000000000000000
          exclusiveMaximum: 1000000000000000000
        total_credit_amount:
          type:
          - number
          - 'null'
          format: double
          exclusiveMinimum: -1000000000000000000
          exclusiveMaximum: 1000000000000000000
        total_debit_amount:
          type:
          - number
          - 'null'
          format: double
          exclusiveMinimum: -1000000000000000000
          exclusiveMaximum: 1000000000000000000
        adjustments:
          type:
          - number
          - 'null'
          format: double
          exclusiveMinimum: -1000000000000000000
          exclusiveMaximum: 1000000000000000000
        created_at:
          type: string
          format: date-time
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        async_task:
          allOf:
          - $ref: '#/components/schemas/AsyncTask'
          readOnly: true
        matching_task:
          type:
          - integer
          - 'null'
        reconciled_by:
          type:
          - integer
          - 'null'
        reconciled_by_name:
          type: string
          readOnly: true
        reconciled_by_email:
          type: string
          readOnly: true
        reconciled_on:
          type:
          - string
          - 'null'
          format: date
        approved_by:
          type:
          - integer
          - 'null'
          readOnly: true
        approved_by_name:
          type: string
          readOnly: true
        approved_by_email:
          type: string
          readOnly: true
        approved_on:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        status:
          $ref: '#/components/schemas/Status8ecEnum'
        unmatched_statement_transactions: {}
        statement_recognition_cost_usd:
          type:
          - number
          - 'null'
          format: double
          description: Estimated USD cost of AI bank-statement parsing for this report (from summed page token usage).
          exclusiveMinimum: -100000000
          exclusiveMaximum: 100000000
        statement_recognition_input_tokens:
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: 0
          description: Sum of input tokens from statement parsing across all pages (set on finalize).
        statement_recognition_output_tokens:
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: 0
          description: Sum of output tokens from statement parsing across all pages (set on finalize).
        statement_recognition_token_total:
          type:
          - integer
          - 'null'
          maximum: 9223372036854775807
          minimum: 0
          format: int64
          description: Input plus output tokens for this report (set on finalize).
        statement_recognition_model_name:
          type:
          - string
          - 'null'
          description: LLM model used for statement parsing when token totals were recorded.
          maxLength: 128
      required:
      - account
      - account_name
      - account_number
      - account_subtype
      - account_type
      - approved_by
      - approved_by_email
      - approved_by_name
      - approved_on
      - async_task
      - created_at
      - customer
      - entity_name
      - id
      - last_modified_at
      - reconciled_by_email
      - reconciled_by_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
          - 'null'
          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
          - 'null'
        s3_content_length:
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: 0
        s3_path:
          type: string
        object_id:
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: 0
        app:
          type: string
          readOnly: true
        model:
          type: string
          readOnly: true
        is_deleted:
          type: boolean
          readOnly: true
          default: false
        deleted_at:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: 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
    PatchedReconciliationReportV2:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        entity_name:
          type: string
          readOnly: true
        account_name:
          type: string
          readOnly: true
        account_number:
          type: string
          readOnly: true
        account_type:
          type: string
          readOnly: true
        account_subtype:
          type: string
          readOnly: true
        reconciled_by_name:
          type: string
          readOnly: true
        reconciled_by_email:
          type: string
          readOnly: true
        approved_by_name:
          type: string
          readOnly: true
        approved_by_email:
          type: string
          readOnly: true
        async_task:
          allOf:
          - $ref: '#/components/schemas/AsyncTask'
          readOnly: true
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/File'
          readOnly: true
        csv_statements:
          type: string
          readOnly: true
        cleared_total_debits:
          type: string
          readOnly: true
        cleared_total_credits:
          type: string
          readOnly: true
        cleared_activity:
          type: string
          readOnly: true
        cleared_item_count:
          type: string
          readOnly: true
        matched_total_debits:
          type: string
          readOnly: true
        matched_total_credits:
          type: string
          readOnly: true
        matched_activity:
          type: string
          readOnly: true
        matched_item_count:
          type: string
          readOnly: true
        unreconciled_total_debits:
          type: string
          readOnly: true
        unreconciled_total_credits:
          type: string
          readOnly: true
        unreconciled_activity:
          type: string
          readOnly: true
        unreconciled_gl_item_count:
          type: string
          readOnly: true
        unreconciled_statement_line_count:
          type: string
          readOnly: true
        unreconciled_statement_activity:
          type: string
          readOnly: true
        reconciliation_difference:
          type: string
          readOnly: true
        open_total_debits:
          type: string
          readOnly: true
        open_total_credits:
          type: string
          readOnly: true
        open_activity:
          type: string
          readOnly: true
        open_gl_item_count:
          type: string
          readOnly: true
        open_statement_line_count:
          type: string
          readOnly: true
        open_statement_activity:
          type: string
          readOnly: true
        statement_activity:
          type: string
          readOnly: true
        open_difference:
          type: string
          readOnly: true
        currency:
          type: string
          maxLength: 3
        statement_starting_date:
          type:
          - string
          - 'null'
          format: date
        statement_ending_date:
          type:
          - string
          - 'null'
          format: date
        starting_balance:
          type: number
          format: double
          exclusiveMinimum: -1000000000000000000
          exclusiveMaximum: 1000000000000000000
        ending_balance:
          type: number
          format: double
          exclusiveMinimum: -1000000000000000000
          exclusiveMaximum: 1000000000000000000
        total_credit_amount:
          type:
          - number
          - 'null'
          format: double
          exclusiveMinimum: -1000000000000000000
          exclusiveMaximum: 1000000000000000000
        total_debit_amount:
          type:
          - number
          - 'null'
          format: double
          exclusiveMinimum: -1000000000000000000
          exclusiveMaximum: 1000000000000000000
        adjustments:
          type:
          - number
          - 'null'
          format: double
          exclusiveMinimum: -1000000000000000000
          exclusiveMaximum: 1000000000000000000
        created_at:
          type: string
          format: date-time
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        reconciled_on:
          type:
          - string
          - 'null'
          format: date
        approved_on:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        status:
          $ref: '#/components/schemas/Status8ecEnum'
        unmatched_statement_transactions: {}
        statement_recognition_cost_usd:
          type:
          - number
          - 'null'
          format: double
          description: Estimated USD cost of AI bank-statement parsing for this report (from summed page token usage).
          exclusiveMinimum: -100000000
          exclusiveMaximum: 100000000
        statement_recognition_input_tokens:
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: 0
          description: Sum of input tokens from statement parsing across all pages (set on finalize).
        statement_recognition_output_tokens:
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: 0
          description: Sum of output tokens from statement parsing across all pages (set on finalize).
        statement_recognition_token_total:
          type:
          - integer
          - 'null'
          maximum: 9223372036854775807
          minimum: 0
          format: int64
          description: Input plus output tokens for this report (set on finalize).
        statement_recognition_model_name:
          type:
          - string
          - 'null'
          description: LLM model used for statement parsing when token totals were recorded.
          maxLength: 128
        customer:
          type: integer
          readOnly: true
        entity:
          type:
          - integer
          - 'null'
        account:
          type: integer
        matching_task:
          type:
          - integer
          - 'null'
        reconciled_by:
          type:
          - integer
          - 'null'
        approved_by:
          type:
          - integer
          - 'null'
          readOnly: true
    ReconciliationReportV2SourceTransactionList:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        currency:
          type: string
          readOnly: true
        posted_at:
          type:
          - string
          - 'null'
          format: date
          title: Posted Date
        debit_amount_in_currency:
          type: string
          readOnly: true
        credit_amount_in_currency:
          type: string
          readOnly: true
        bank_description:
          type:
          - string
          - 'null'
        reconciliation_transaction:
          type: array
          items:
            $ref: '#/components/schemas/ReconciliationReportV2SourceReconciliationTransaction'
          readOnly: true
        is_cleared:
          type: string
          readOnly: true
        is_matched:
          type: string
          readOnly: true
        journal_id:
          type: integer
          readOnly: true
        journal_order:
          type: string
          readOnly: true
      required:
      - credit_amount_in_currency
      - currency
      - debit_amount_in_currency
      - id
      - is_cleared
      - is_matched
      - journal_id
      - journal_order
      - reconciliation_transaction
    ReconciliationReportV2SourceReconciliationTransactionStatusEnum:
      enum:
      - DRAFT
      - RECONCILED
      type: string
      description: '* `DRAFT` - Draft

        * `RECONCILED` - Reconciled'
    Status8ecEnum:
      enum:
      - DRAFT
      - PENDING_APPROVAL
      - APPROVED
      - DELETED
      type: string
      description: '* `DRAFT` - Draft

        * `PENDING_APPROVAL` - Pending Approval

        * `APPROVED` - Approved

        * `DELETED` - Deleted'
    ErrorResponse:
      type: object
      description: Standard error response.
      properties:
        error:
          type: string
          description: Error message describing what went wrong
      required:
      - error
    PaginatedReconciliationReportV2ListList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=400&limit=100
        previous:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/ReconciliationReportV2List'
    BulkMatchTransactionRequest:
      type: object
      properties:
        pairs:
          type: array
          items:
            $ref: '#/components/schemas/MatchTransactionRequest'
          description: Ordered list of GL-to-statement transaction pairs to match
          minItems: 1
      required:
      - pairs
    ReconciliationReportV2:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        entity_name:
          type: string
          readOnly: true
        account_name:
          type: string
          readOnly: true
        account_number:
          type: string
          readOnly: true
        account_type:
          type: string
          readOnly: true
        account_subtype:
          type: string
          readOnly: true
        reconciled_by_name:
          type: string
          readOnly: true
        reconciled_by_email:
          type: string
          readOnly: true
        approved_by_name:
          type: string
          readOnly: true
        approved_by_email:
          type: string
          readOnly: true
        async_task:
          allOf:
          - $ref: '#/components/schemas/AsyncTask'
          readOnly: true
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/File'
          readOnly: true
        csv_statements:
          type: string
          readOnly: true
        cleared_total_debits:
          type: string
          readOnly: true
        cleared_total_credits:
          type: string
          readOnly: true
        cleared_activity:
          type: string
          readOnly: true
        cleared_item_count:
          type: string
          readOnly: true
        matched_total_debits:
          type: string
          readOnly: true
        matched_total_credits:
          type: string
          readOnly: true
        matched_activity:
          type: string
          readOnly: true
        matched_item_count:
          type: string
          readOnly: true
        unreconciled_total_debits:
          type: string
          readOnly: true
        unreconciled_total_credits:
          type: string
          readOnly: true
        unreconciled_activity:
          type: string
          readOnly: true
        unreconciled_gl_item_count:
          type: string
          readOnly: true
        unreconciled_statement_line_count:
          type: string
          readOnly: true
        unreconciled_stat

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/campfire/refs/heads/main/openapi/campfire-bank-reconciliation-api-openapi.yml