# info.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.

# paths./ca/api/account.get.description
        Retrieve a paginated list of bank accounts.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=true, deleted records will have is_deleted=true
        and include deletion metadata (deleted_at timestamp).

        Supports sorting by all returned fields:
        - name, -name (account name)
        - nickname, -nickname (account nickname)
        - type, -type (account type)
        - status, -status (account status)
        - currency, -currency (account currency)
        - external_account_id, -external_account_id (external account ID)
        - institution_id, -institution_id (institution ID)
        - source, -source (account source)
        - current_balance, -current_balance (current balance)
        - available_balance, -available_balance (available balance)
        - created_at, -created_at (creation date)
        - last_modified_at, -last_modified_at (last modified date)
        - account_type, -account_type (chart account type)
        - account_subtype, -account_subtype (chart account subtype)
        - account_cashflow_classification, -account_cashflow_classification (cashflow classification)
        - type_name, -type_name (human-readable account type)
        - subtype_name, -subtype_name (human-readable account subtype)
        - cashflow_classification_name, -cashflow_classification_name (human-readable cashflow classification)
        - entity_name, -entity_name (entity name)
        - department, -department (department name)
        - id, -id (account ID)
        - account_id, -account_id (UUID account ID)
        

# paths./ca/api/account.get.parameters[].description
Filter bank accounts by their linked chart of accounts account ID

# paths./ca/api/account.get.parameters[].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.

# paths./ca/api/account.get.parameters[].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).

# paths./ca/api/account.get.parameters[].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).

# paths./ca/api/account.get.parameters[].description
The initial index from which to return the results.

# paths./ca/api/account/{id}.delete.parameters[].description
ID of the bank account to reassign transactions to before deletion

# paths./ca/api/balance-sheet/comparative.get.description
API view for comparative balance sheet that handles budget vs actual comparisons

# paths./ca/api/balance-sheet/comparative.get.parameters[].description
Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array

# paths./ca/api/balance-sheet/comparative.get.parameters[].description
If true, includes all data of children entities in consolidation

# paths./ca/api/bank-feed/{account_id}.post.description
Ingest bank feed data for a specific bank account. Creates bank transactions with corresponding journal entries, updates account balances, and triggers auto-categorization.

# paths./ca/api/cash-basis.get.parameters[].description
If true, uses full transaction date range for the customer; start_date and end_date are ignored

# paths./ca/api/cash-basis.get.parameters[].description
Latest date (inclusive) for which to retrieve data. Defaults to end of current month

# paths./ca/api/cash-basis.get.parameters[].description
Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array

# paths./ca/api/cash-basis.get.parameters[].description
If true, includes all data of children entities in consolidation

# paths./ca/api/cash-basis.get.parameters[].description
If xlsx, returns Excel file (income_statement.xlsx) instead of JSON

# paths./ca/api/cash-basis.get.parameters[].description
Tag group ID. Required when group_by=tag

# paths./ca/api/cash-basis.get.parameters[].description
Breakdown dimension: vendor, department, tag, currency, entity. For tag, also pass group (tag group ID). For cash-basis, department_row_children, department_row_parents, department_only normalize to department

# paths./ca/api/cash-basis.get.parameters[].description
If true, roll up child account totals to parent accounts. Set to false for export

# paths./ca/api/cash-basis.get.parameters[].description
Earliest date (inclusive) for which to retrieve data. Defaults to six months ago

# paths./ca/api/cash-basis.get.parameters[].description
If true, use book currency amounts instead of presentation currency

# paths./ca/api/cash-basis-operating-statement.get.parameters[].description
If true, uses full transaction date range for the customer; start_date and end_date are ignored

# paths./ca/api/cash-basis-operating-statement.get.parameters[].description
Latest date (inclusive) for which to retrieve data. Defaults to end of current month

# paths./ca/api/cash-basis-operating-statement.get.parameters[].description
Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array

# paths./ca/api/cash-basis-operating-statement.get.parameters[].description
If true, includes all data of children entities in consolidation

# paths./ca/api/cash-basis-operating-statement.get.parameters[].description
If xlsx, returns Excel file (income_statement.xlsx) instead of JSON

# paths./ca/api/cash-basis-operating-statement.get.parameters[].description
Tag group ID. Required when group_by=tag

# paths./ca/api/cash-basis-operating-statement.get.parameters[].description
Breakdown dimension: vendor, department, tag, currency, entity. For tag, also pass group (tag group ID). For cash-basis, department_row_children, department_row_parents, department_only normalize to department

# paths./ca/api/cash-basis-operating-statement.get.parameters[].description
If true, roll up child account totals to parent accounts. Set to false for export

# paths./ca/api/cash-basis-operating-statement.get.parameters[].description
Earliest date (inclusive) for which to retrieve data. Defaults to six months ago

# paths./ca/api/cash-operating-statement/transactions.get.summary
Get Cash Operating Transactions with Projected Transactions

# paths./ca/api/cash-operating-statement/transactions.get.parameters[].description
Latest date (inclusive) for which to retrieve data. Defaults to end of current month

# paths./ca/api/cash-operating-statement/transactions.get.parameters[].description
Earliest date (inclusive) for which to retrieve data. Defaults to six months ago

# paths./ca/api/file.get.description
        Retrieve a list of files with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./ca/api/file.get.parameters[].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.

# paths./ca/api/file.get.parameters[].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).

# paths./ca/api/file.get.parameters[].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).

# paths./ca/api/file.get.parameters[].description
The initial index from which to return the results.

# paths./ca/api/file/{id}/temp-download-url.get.description
Return a short-lived presigned S3 URL for downloading a file.

Pass ``?disposition=inline`` to render preview-safe types (PDF, images)
in the browser instead of forcing a download.

:param request: The incoming DRF request (must be authenticated).
:return: JSON response with ``url`` key or an error.

# paths./ca/api/file/upload.post.description
        Upload a file directly to Campfire. This is the primary way to upload files.

        **Supported Models:**
        bill, chat, close_task, closecheckitem, contract, credit_memo, customer, debit_memo, draft_queue, fixed_asset, intercompany_journal, invoice, journal_entry, journalentry, lease_v2, migration_record, policy, reconciliation, reconciliation_report

        **Supported Content Types:**
        application/msword, application/pdf, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/gif, image/jpeg, image/jpg, image/png, image/webp, text/csv, text/markdown, text/plain, text/x-markdown

        **Maximum File Size:** 100MB

        **Example:**
        ```bash
        curl -X POST "https://api.meetcampfire.com/ca/api/file/upload?model=bill&object_id=12345" \
          -H "Authorization: Token YOUR_TOKEN" \
          -F "file=@receipt.pdf"
        ```

        **Query Parameters:**
        - `model` (required): Model type (e.g., "bill", "invoice", "contract")
        - `object_id` (optional): ID of the object to attach the file to

        **Request Body:**
        - `file` (required): The file to upload (multipart/form-data)
        

# paths./ca/api/get_balance_sheet.get.description
Returns ending account balances for each period between `start_date` and `end_date` (both inclusive), split by `cadence`. This is the recommended endpoint for balance sheet ending balances.

**How the date range works:** `start_date` is *not* the date balances are calculated *from*. Account balances are always accumulated from the beginning of time through each period end. `start_date`, `end_date`, and `cadence` only determine how the report is split into periods (columns).

**Retained earnings:** included as its own row.

**Breakdowns:** the report can be broken down or filtered by entity, department, and tag dimensions via `group_by` (pass `group` with a tag group ID when grouping by tag).

# paths./ca/api/get_balance_sheet.get.parameters[].description
Latest date (inclusive) for which to retrieve data. Defaults to end of current month

# paths./ca/api/get_balance_sheet.get.parameters[].description
Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array

# paths./ca/api/get_balance_sheet.get.parameters[].description
If true, includes all data of children entities in consolidation

# paths./ca/api/get_balance_sheet.get.parameters[].description
Earliest period (inclusive) shown in the report. NOTE: balances are NOT calculated starting from this date - account balances are always accumulated from the beginning of time through each period end. start_date, end_date, and cadence only control how the report is split into periods (columns). Defaults to six months ago.

# paths./ca/api/get_balance_sheet.get.x-mint.mcp.description
Generate balance sheet data for a specified time period and cadence

# paths./ca/api/get_cash_flow.get.parameters[].description
Latest date (inclusive) for which to retrieve data. Defaults to end of current month

# paths./ca/api/get_cash_flow.get.parameters[].description
Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array

# paths./ca/api/get_cash_flow.get.parameters[].description
If true, includes all data of children entities in consolidation

# paths./ca/api/get_cash_flow.get.parameters[].description
Earliest date (inclusive) for which to retrieve data. Defaults to six months ago

# paths./ca/api/get_cash_flow.get.x-mint.mcp.description
Generate cash flow statement data for a specified time period and cadence

# paths./ca/api/get_cash_flow_activity.get.parameters[].description
Latest date (inclusive) for which to retrieve data. Defaults to end of current month

# paths./ca/api/get_cash_flow_activity.get.parameters[].description
Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array

# paths./ca/api/get_cash_flow_activity.get.parameters[].description
If true, includes all data of children entities in consolidation

# paths./ca/api/get_cash_flow_activity.get.parameters[].description
Earliest date (inclusive) for which to retrieve data. Defaults to six months ago

# paths./ca/api/get_cash_flow_v2.get.description
Sectioned cash flow statement (indirect method): operating (net income, non-cash adjustments, working-capital deltas), transactional investing and financing lines, the effect of exchange-rate changes on cash, and non-cash disclosures. The statement reconciles beginning to ending cash with a zero plug or is not rendered: an unreconciled ledger returns HTTP 422 with the plug by period and the journal entries whose accounts need cashflow classification. Monetary amounts are decimal strings. Pass export=xlsx for a workbook download.

# paths./ca/api/get_cash_flow_v2.get.parameters[].description
Latest date (inclusive) for which to retrieve data. Defaults to end of current month

# paths./ca/api/get_cash_flow_v2.get.parameters[].description
Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array

# paths./ca/api/get_cash_flow_v2.get.parameters[].description
If true, includes all data of children entities in consolidation

# paths./ca/api/get_cash_flow_v2.get.parameters[].description
Earliest date (inclusive) for which to retrieve data. Defaults to six months ago

# paths./ca/api/get_income_statement.get.description
Returns account activity (revenue and expense movement) within the `start_date`-`end_date` range, split by `cadence`.

Unlike the balance sheet, the income statement reflects only the activity that falls *inside* the requested date range - `start_date` is the true start of the activity window.

**Breakdowns:** supports entity, department, vendor, and tag breakdowns/filters via `group_by` (pass `group` with a tag group ID when grouping by tag).

# paths./ca/api/get_income_statement.get.parameters[].description
Latest date (inclusive) for which to retrieve data. Defaults to end of current month

# paths./ca/api/get_income_statement.get.parameters[].description
Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array

# paths./ca/api/get_income_statement.get.parameters[].description
If true, includes all data of children entities in consolidation

# paths./ca/api/get_income_statement.get.parameters[].description
Earliest date (inclusive) for which to retrieve data. Defaults to six months ago

# paths./ca/api/get_income_statement.get.responses.200.content.application/json.examples.Example.value.income_statement[].account_name
Sales, General, and Administrative Expenses

# paths./ca/api/get_income_statement.get.x-mint.mcp.description
Generate income statement data for a specified time period and cadence

# paths./ca/api/get_trial_balance.get.description
Returns debit and credit totals for each account over a date range.

**The summation window depends on the account type:**
- **Balance sheet accounts** (assets, liabilities, equity): totals are summed from the beginning of time through `end_date`.
- **Income statement accounts** (revenue, expenses): totals are summed from `start_date` through `end_date`.

Retained earnings is included as its own row. For balance sheet ending balances specifically, prefer `GET /ca/api/get_balance_sheet`.

# paths./ca/api/get_trial_balance.get.parameters[].description
Filter by department ID. Can be specified multiple times for multiple departments

# paths./ca/api/get_trial_balance.get.parameters[].description
Latest date (inclusive) for which to retrieve data. Defaults to end of current month

# paths./ca/api/get_trial_balance.get.parameters[].description
Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array

# paths./ca/api/get_trial_balance.get.parameters[].description
If true, includes all data of children entities in consolidation

# paths./ca/api/get_trial_balance.get.parameters[].description
Earliest date (inclusive) for which to retrieve data. Defaults to six months ago

# paths./ca/api/income-statement/comparative.get.parameters[].description
Entity ID(s) to scope the report. Can be repeated (?entity=1&entity=2) or JSON array

# paths./ca/api/income-statement/comparative.get.parameters[].description
If true, includes all data of children entities in consolidation

# paths./ca/api/income-statement/comparative.get.responses.200.content.application/json.examples.Example.value.income_statement[].account_name
Sales, General, and Administrative Expenses

# paths./ca/api/transaction.get.description
        Retrieve a paginated list of bank transactions with optional filtering.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=true, deleted records will have is_deleted=true
        and include deletion metadata (deleted_at timestamp).
        

# paths./ca/api/transaction.get.parameters[].description
If true, hide bank transactions that have a pending cash-application DraftQueue attached (match drafts or categorize drafts). Default false.

# paths./ca/api/transaction.get.parameters[].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.

# paths./ca/api/transaction.get.parameters[].description
The initial index from which to return the results.

# paths./ca/api/user_currency.get.description
        Retrieve a list of customer currencies with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./ca/api/user_currency.get.parameters[].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.

# paths./ca/api/user_currency.get.parameters[].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).

# paths./ca/api/user_currency.get.parameters[].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).

# paths./ca/api/user_currency.get.parameters[].description
The initial index from which to return the results.

# paths./ca/api/user_currency.post.description
Complete mixin for history filtering with pagination support.
Returns either active OR deleted records based on include_deleted parameter.

# paths./ca/api/user_currency/with_rate.get.summary
Get Currencies Exchange Rates for Currency

# paths./ca/api/v1/custom-fields.get.description
        List all custom fields for a given app and model.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./ca/api/v1/custom-fields.get.parameters[].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.

# paths./ca/api/v1/custom-fields.get.parameters[].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).

# paths./ca/api/v1/custom-fields.get.parameters[].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).

# paths./ca/api/v1/custom-fields.get.parameters[].description
The initial index from which to return the results.

# paths./ca/api/v1/custom-fields.post.description
Create a new custom field for a given app and model

# paths./coa/api/account.get.description
Lists the chart of accounts (GL accounts). Each account includes metadata about its parent account and its full lineage (the ordered chain of ancestor accounts), so parent/child account relationships can be reconstructed from the response.

# paths./coa/api/account.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/account.post.description
Lists the chart of accounts (GL accounts). Each account includes metadata about its parent account and its full lineage (the ordered chain of ancestor accounts), so parent/child account relationships can be reconstructed from the response.

# paths./coa/api/account/balance-sheet.get.description
Retrieve a list of chart accounts with optional filtering and sorting

# paths./coa/api/account/balance-sheet.get.parameters[].description
Filter by account ID. Can be specified multiple times for multiple accounts

# paths./coa/api/account/balance-sheet.get.parameters[].description
Filter by account subtype. Can be specified multiple times for multiple subtypes

# paths./coa/api/account/balance-sheet.get.parameters[].description
Filter by account type. Can be specified multiple times for multiple types

# paths./coa/api/account/balance-sheet.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/account/balance-sheet.get.parameters[].description
Search query - searches by account name or number

# paths./coa/api/account/balance-sheet.post.description
Lists the chart of accounts (GL accounts). Each account includes metadata about its parent account and its full lineage (the ordered chain of ancestor accounts), so parent/child account relationships can be reconstructed from the response.

# paths./coa/api/account/income-statement.get.description
Lists the chart of accounts (GL accounts). Each account includes metadata about its parent account and its full lineage (the ordered chain of ancestor accounts), so parent/child account relationships can be reconstructed from the response.

# paths./coa/api/account/income-statement.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/account/income-statement.post.description
Lists the chart of accounts (GL accounts). Each account includes metadata about its parent account and its full lineage (the ordered chain of ancestor accounts), so parent/child account relationships can be reconstructed from the response.

# paths./coa/api/budgets.get.description
        Retrieve a list of budgets with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./coa/api/budgets.get.parameters[].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.

# paths./coa/api/budgets.get.parameters[].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).

# paths./coa/api/budgets.get.parameters[].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).

# paths./coa/api/budgets.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/budgets.get.parameters[].description
Sort order. Use field name for ascending, -field for descending. Supports multiple fields separated by comma. Default: name

# paths./coa/api/budgets.get.x-mint.mcp.description
Retrieve budget information with optional filtering

# paths./coa/api/budgets.post.description
Complete mixin for history filtering with pagination support.
Returns either active OR deleted records based on include_deleted parameter.

# paths./coa/api/budgets/{budget_pk}/accounts.get.description
        Retrieve a list of budget accounts with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./coa/api/budgets/{budget_pk}/accounts.get.parameters[].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.

# paths./coa/api/budgets/{budget_pk}/accounts.get.parameters[].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).

# paths./coa/api/budgets/{budget_pk}/accounts.get.parameters[].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).

# paths./coa/api/budgets/{budget_pk}/accounts.post.description
Complete mixin for history filtering with pagination support.
Returns either active OR deleted records based on include_deleted parameter.

# paths./coa/api/chart-account-settings.get.description
These are the defaults chart accounts to be used across the platform. Each input is the id to an existing chart account.

# paths./coa/api/chart-account-settings.put.description
These are the defaults chart accounts to be used across the platform. Each input is the id to an existing chart account.

# paths./coa/api/chart-account-settings.patch.description
Partially update the default chart accounts to be used across the platform. Each input is the id to an existing chart account.

# paths./coa/api/cost-allocations.get.description
        Retrieve a list of cost allocations with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./coa/api/cost-allocations.get.parameters[].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.

# paths./coa/api/cost-allocations.get.parameters[].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).

# paths./coa/api/cost-allocations.get.parameters[].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).

# paths./coa/api/cost-allocations.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/cost-allocations.post.description
Complete mixin for history filtering with pagination support.
Returns either active OR deleted records based on include_deleted parameter.

# paths./coa/api/department.get.description
        Retrieve a list of departments with optional filtering and sorting.

        Each department includes metadata about its parent department (`parent`, `parent_name`),
        so parent/child department relationships can be reconstructed from the response.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./coa/api/department.get.parameters[].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.

# paths./coa/api/department.get.parameters[].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).

# paths./coa/api/department.get.parameters[].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).

# paths./coa/api/department.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/department.get.parameters[].description
Search query - searches by department name or code

# paths./coa/api/department.get.parameters[].description
Sort order. Use field name for ascending, -field for descending. Supports multiple fields separated by comma. Default: name

# paths./coa/api/department.get.x-mint.mcp.description
Retrieve department information with optional filtering

# paths./coa/api/department.post.description
Complete mixin for history filtering with pagination support.
Returns either active OR deleted records based on include_deleted parameter.

# paths./coa/api/department/{id}.delete.description
Delete a department and optionally reassign all related records to another department

# paths./coa/api/department/{id}.delete.parameters[].description
ID of the department to reassign all related records to before deletion

# paths./coa/api/department/bulk-search.post.description
Search for thousands of departments by exact name match in a single request. Optimized for performance. Supports upsert to create missing departments.

# paths./coa/api/entity.get.description
Retrieve a list of chart entities with optional filtering

# paths./coa/api/entity.get.parameters[].description
Exclude adjusting entities (those with a primary_entity set) from results. Defaults to false for backwards compatibility.

# paths./coa/api/entity.get.x-mint.mcp.description
Retrieve chart entities (companies, subsidiaries, etc.)

# paths./coa/api/entity.post.description
Complete mixin for history filtering with pagination support.
Returns either active OR deleted records based on include_deleted parameter.

# paths./coa/api/entity/{entity_id}/attachment.post.description
Upload invoice email attachment with proper permissions

# paths./coa/api/entity/for-intercompany.get.description
Returns ALL entities for intercompany journal entry creation.

This endpoint bypasses entity-scoped filtering because users need to
select entities they don't normally have access to when creating
intercompany journal entries (per the entity-scoped-user-access spec).

Uses minimal serializer to only expose id, name, and currency - preventing
data leakage of sensitive entity details to users who may not have full
access to all entities.

# paths./coa/api/fixed-asset.get.description
        Retrieve a list of fixed assets with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./coa/api/fixed-asset.get.parameters[].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.

# paths./coa/api/fixed-asset.get.parameters[].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).

# paths./coa/api/fixed-asset.get.parameters[].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).

# paths./coa/api/fixed-asset.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/fixed-asset.post.description
Wraps ``CreateModelMixin.create`` (or any method named ``create``) with
``Idempotency-Key`` handling.

Place this mixin **before** the view's other base classes so its ``create``
overrides the inherited one::

    class JournalEntryListCreate(
        IdempotentCreateMixin,
        HistoryFilteringMixin,
        ListCreateAPIView,
    ):
        ...

# paths./coa/api/fixed-asset-automation/.get.description
List all automation rules or create a new one.
GET /api/fixed-asset-automation/
POST /api/fixed-asset-automation/

# paths./coa/api/fixed-asset-automation/.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/fixed-asset-automation/.get.parameters[].description
Which field to use when ordering the results.

# paths./coa/api/fixed-asset-automation/.post.description
List all automation rules or create a new one.
GET /api/fixed-asset-automation/
POST /api/fixed-asset-automation/

# paths./coa/api/fixed-asset-automation-match/{id}/.get.description
Retrieve or update an automation match (for editing proposed values before acceptance).
GET/PATCH /api/fixed-asset-automation-match/<id>/

# paths./coa/api/fixed-asset-automation-match/{id}/.put.description
Retrieve or update an automation match (for editing proposed values before acceptance).
GET/PATCH /api/fixed-asset-automation-match/<id>/

# paths./coa/api/fixed-asset-automation-match/{id}/.patch.description
Retrieve or update an automation match (for editing proposed values before acceptance).
GET/PATCH /api/fixed-asset-automation-match/<id>/

# paths./coa/api/fixed-asset-automation-match/{id}/.patch.summary
Partial Update Fixed Asset Automation Match

# paths./coa/api/fixed-asset-automation/accounts.get.description
List accounts that are of type FIXED_ASSET for use in automation rule creation.
GET /api/fixed-asset-automation/accounts

This endpoint returns only accounts with account_subtype='FIXED_ASSET' to ensure
automation rules are created with appropriate accounts.

# paths./coa/api/fixed-asset-automation/asset-classes.get.description
List fixed asset classes that match a specific account.
GET /api/fixed-asset-automation/asset-classes?account_id=<id>

Filters asset classes to only those where asset_account matches the provided account_id.
This ensures users can only select compatible asset classes for the chosen account.

# paths./coa/api/fixed-asset-automation/asset-classes.get.summary
List Fixed Asset Automation Asset Classes

# paths./coa/api/fixed-asset-automation/matches.get.description
List pending asset matches for review.
GET /api/fixed-asset-automation/matches

# paths./coa/api/fixed-asset-automation/matches.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/fixed-asset-automation/matches.get.parameters[].description
Which field to use when ordering the results.

# paths./coa/api/fixed-asset-automation/run.post.description
Trigger automation processing.
POST /api/fixed-asset-automation/run

Optional body: {"rule_id": 123}

# paths./coa/api/fixed-asset-class.get.description
        Retrieve a list of fixed asset classes with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./coa/api/fixed-asset-class.get.parameters[].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.

# paths./coa/api/fixed-asset-class.get.parameters[].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).

# paths./coa/api/fixed-asset-class.get.parameters[].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).

# paths./coa/api/fixed-asset-class.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/fixed-asset-class.post.description
Complete mixin for history filtering with pagination support.
Returns either active OR deleted records based on include_deleted parameter.

# paths./coa/api/fixed-asset/reconciliation/unmatched-gl.get.description
Drilldown showing GL transactions NOT linked to any fixed asset.

Returns the journal entries on a control account that cannot be traced
back to a specific asset's purchase, depreciation, or disposal entries.
These are the transactions that make up the "Unmatched GL" amount in
the reconciliation report.

# paths./coa/api/fixed-asset/reconciliation/unmatched-gl.get.summary
List Unmatched GL Transactions for Fixed Asset Reconciliation

# paths./coa/api/intercompany-journal-entry.get.description
        Retrieves a paginated list of intercompany journal entries for the authenticated user's customer.

        This endpoint returns:
        - Summary information for each intercompany journal entry
        - Basic transaction details (simplified view for list performance)
        - Entity and exchange rate information
        - Pagination metadata (count, next, previous)
        - Reversal relationships and attachment counts

        The response includes:
        - Intercompany journal entry metadata
        - Associated transaction summaries
        - Exchange rate information for currency conversions
        - Links to related reversals
        - Attachment information

        Results can be sorted using the 'sort' query parameter with field names like 'date', 'id', etc.
        Prefix with '-' for descending order (e.g., '-date').
        

# paths./coa/api/intercompany-journal-entry.get.parameters[].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.

# paths./coa/api/intercompany-journal-entry.get.parameters[].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).

# paths./coa/api/intercompany-journal-entry.get.parameters[].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).

# paths./coa/api/intercompany-journal-entry.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/intercompany-journal-entry.get.responses.200.content.application/json.examples.ListIntercompanyJournalEntriesResponse.summary
Paginated list of intercompany journal entries

# paths./coa/api/intercompany-journal-entry.get.responses.200.content.application/json.examples.ListIntercompanyJournalEntriesResponse.description
Example response showing a list of intercompany journal entries with pagination metadata and summary transaction information

# paths./coa/api/intercompany-journal-entry.post.description
        Creates a new intercompany journal entry

        This endpoint allows for complex multi-entity transactions where:
        - Transactions are balanced across different entities
        - Exchange rates are handled for multi-currency transactions

        Key requirements:
        - Total debits must equal total credits for each entity (debit_amount_native must equal credit_amount_native)
        - Cannot create entries before closed book dates
        - All referenced accounts must be active
        - Exchange rates must be provided for all currency conversions (native to book, book to consolidation)
        

# paths./coa/api/intercompany-journal-entry.post.requestBody.content.application/json.examples.IntercompanyJournalEntryRequest.summary
Standard intercompany journal entry with multiple entities

# paths./coa/api/intercompany-journal-entry.post.requestBody.content.application/json.examples.IntercompanyJournalEntryRequest.description
Example of an intercompany journal entry transferring funds between entities with automatic intercompany account reconciliation

# paths./coa/api/intercompany-journal-entry.post.requestBody.content.application/json.examples.CreateIntercompanyJournalEntryResponse.summary
Response after successfully creating an intercompany journal entry

# paths./coa/api/intercompany-journal-entry.post.requestBody.content.application/json.examples.CreateIntercompanyJournalEntryResponse.description
Example response showing the created intercompany journal entry with generated IDs, timestamps, and detailed transaction information

# paths./coa/api/intercompany-journal-entry.post.responses.201.content.application/json.examples.CreateIntercompanyJournalEntryResponse.summary
Response after successfully creating an intercompany journal entry

# paths./coa/api/intercompany-journal-entry.post.responses.201.content.application/json.examples.CreateIntercompanyJournalEntryResponse.description
Example response showing the created intercompany journal entry with generated IDs, timestamps, and detailed transaction information

# paths./coa/api/intercompany-journal-entry/{id}.get.description
        Retrieves a single intercompany journal entry by its ID with complete details.

        This endpoint returns:
        - Complete intercompany journal entry information
        - Full transaction details with all accounting fields
        - Entity information and exchange rates
        - Attachment and reversal information
        - Comprehensive transaction metadata

        The response includes:
        - All transaction details with account information
        - Exchange rate data for all currency conversions (native to book, book to consolidation)
        - Vendor, department, and tag information
        - Balance calculations and transaction history
        - File attachments and reversal relationships
        - Complete audit trail information

        This is the detailed view used for editing and complete transaction analysis.
        

# paths./coa/api/intercompany-journal-entry/{id}.get.responses.200.content.application/json.examples.GetIntercompanyJournalEntryResponse.summary
Complete intercompany journal entry with full transaction details

# paths./coa/api/intercompany-journal-entry/{id}.get.responses.200.content.application/json.examples.GetIntercompanyJournalEntryResponse.description
Example response showing a single intercompany journal entry retrieved by ID with comprehensive transaction information

# paths./coa/api/intercompany-journal-entry/{id}.put.description
        Updates an existing intercompany journal entry with new transaction details.

        This endpoint allows for:
        - Modifying transaction amounts and details
        - Updating entity assignments and exchange rates
        - Changing account assignments and categorizations
        - Updating vendor, department, and tag information
        - Maintaining balance validation across all entities

        Key requirements:
        - Total debits must equal total credits for each entity
        - All account balances must be valid in all currencies
        - Cannot modify entries in closed periods
        - All referenced accounts must be active
        - Existing transactions are replaced with new transaction set
        - Exchange rates must be provided for all currency conversions

        The update process atomically replaces all transactions while preserving the journal entry ID and audit trail.
        

# paths./coa/api/intercompany-journal-entry/{id}.put.requestBody.content.application/json.examples.UpdateIntercompanyJournalEntryRequest.summary
Update request with modified transaction amounts

# paths./coa/api/intercompany-journal-entry/{id}.put.requestBody.content.application/json.examples.UpdateIntercompanyJournalEntryRequest.description
Example request showing how to update an intercompany journal entry with new transaction amounts and details

# paths./coa/api/intercompany-journal-entry/{id}.put.requestBody.content.application/json.examples.UpdateIntercompanyJournalEntryResponse.summary
Response after successfully updating an intercompany journal entry

# paths./coa/api/intercompany-journal-entry/{id}.put.requestBody.content.application/json.examples.UpdateIntercompanyJournalEntryResponse.description
Example response showing the updated intercompany journal entry with modified amounts and updated timestamps

# paths./coa/api/intercompany-journal-entry/{id}.put.responses.200.content.application/json.examples.UpdateIntercompanyJournalEntryResponse.summary
Response after successfully updating an intercompany journal entry

# paths./coa/api/intercompany-journal-entry/{id}.put.responses.200.content.application/json.examples.UpdateIntercompanyJournalEntryResponse.description
Example response showing the updated intercompany journal entry with modified amounts and updated timestamps

# paths./coa/api/intercompany-journal-entry/{id}.patch.description
        Performs a partial update of an intercompany journal entry, allowing modification of specific fields without replacing the entire entry.

        This endpoint supports partial updates to:
        - Journal entry metadata (memo, date, currency, reference number)
        - Individual transaction modifications
        - Entity exchange rate adjustments
        - Vendor, department, and tag assignments
        - Account categorizations and amounts

        Key differences from PUT:
        - Only specified fields are updated (vs. full replacement)
        - Maintains existing data for unspecified fields
        - Supports granular transaction modifications
        - Preserves audit trail and timestamps
        - Allows incremental changes without full transaction rebuilds

        Validation requirements:
        - Modified transactions must maintain entity balance (debits = credits)
        - Cannot modify entries in closed accounting periods
        - All referenced accounts, vendors, departments must be active
        - Exchange rates must be valid for multi-currency transactions
        - Account assignments must be appropriate for transaction types
        

# paths./coa/api/intercompany-journal-entry/{id}.patch.summary
Partial Update Intercompany Journal Entry

# paths./coa/api/intercompany-journal-entry/{id}.delete.description
        Permanently deletes an intercompany journal entry and all related transactions.

        This endpoint performs a comprehensive cleanup when deleting an intercompany journal entry:
        - Validates that the entry can be deleted (not in closed period)
        - Removes all associated journal entries across entities
        - Updates summary tables and account balances
        - Handles cascade deletion of related transactions
        - Ensures data integrity across the accounting system

        Deletion restrictions:
        - Cannot delete entries in closed accounting periods

        Error conditions:
        - 400 Bad Request: Entry date is in a closed period
        - 409 Conflict: Entry has protected relationships (e.g., close checklist tasks)
        - 404 Not Found: Entry does not exist or user lacks access

        On successful deletion, all related journal entries are removed and accounting summaries are recalculated.
        

# paths./coa/api/intercompany-journal-entry/balance.post.description
        Balances an intercompany journal entry by entity and currency.

        This endpoint performs the same balancing logic as the frontend, applying:
        1. Auto-fetching of exchange rates if not provided (requires date field)
        2. Exchange rate roll-forward from native to book to consolidation currencies
        3. Exchange rate plugging to ensure consolidation amounts match across currencies within an entity
        4. Automatic creation of balancing transactions when debits != credits at any currency level

        The endpoint accepts a partial intercompany journal entry with transactions and optionally exchange rates,
        and returns the balanced version with:
        - Auto-fetched exchange rates (if exchange_rates is empty and date is provided)
        - Updated transactions with calculated book and consolidation amounts
        - New balancing transactions added where needed
        - Plugged exchange rates to maintain consolidation consistency

        This is useful for:
        - Validating journal entries before submission
        - Understanding what balancing entries will be created
        - Testing multi-currency and multi-entity scenarios
        - Auto-fetching exchange rates for the journal date
        

# paths./coa/api/intercompany-journal-entry/balance.post.requestBody.content.application/json.schema.properties.date.description
Journal entry date (ISO format: YYYY-MM-DD). Used for auto-fetching exchange rates if exchange_rates is empty.

# paths./coa/api/intercompany-journal-entry/balance.post.requestBody.content.application/json.schema.properties.exchange_rates.description
List of exchange rate objects (optional - will be auto-fetched if empty and date is provided)

# paths./coa/api/intercompany-journal-entry/balance.post.requestBody.content.application/json.examples.BalanceRequest.summary
Example balancing request with multi-currency transactions

# paths./coa/api/intercompany-journal-entry/balance.post.requestBody.content.application/json.examples.BalanceRequest.description
Request to balance transactions across two entities with different currencies

# paths./coa/api/journal_entry.get.description
        Retrieve a paginated list of journal entries with optional filtering and sorting.

        **Query Parameters:**
        - `start_date`, `end_date`: Filter by date range (defaults to last 6 months)
        - `account`: Filter by account ID(s) - supports multiple values
        - `source`: Filter by journal entry source
        - `journal_id`: Filter by specific journal ID
        - `all_time`: Include all entries regardless of date (true/false)
        - `sort`: Sort field (default: "date")

        **Response includes:**
        - Complete journal entry details with all transactions
        - Account information with names and numbers
        - Vendor and department details
        - Tag associations with groups
        - Attachment information
        - Exchange rate data for multi-currency entries
        

# paths./coa/api/journal_entry.get.parameters[].description
Filter by account ID(s). Can specify multiple values.

# paths./coa/api/journal_entry.get.parameters[].description
Include all entries regardless of date range

# paths./coa/api/journal_entry.get.parameters[].description
End date for filtering (YYYY-MM-DD format)

# paths./coa/api/journal_entry.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/journal_entry.get.parameters[].description
Filter by journal entry source (e.g., 'manual', 'CSV Upload')

# paths./coa/api/journal_entry.get.parameters[].description
Start date for filtering (YYYY-MM-DD format)

# paths./coa/api/journal_entry.get.responses.200.content.application/json.examples.JournalEntryResponse.summary
Complete journal entry with transactions

# paths./coa/api/journal_entry.get.responses.200.content.application/json.examples.JournalEntryResponse.description
Example response showing a journal entry with detailed transaction information

# paths./coa/api/journal_entry.post.description
        Create a new journal entry with transactions. Journal entries must balance - total debits must equal total credits.

        **Key Features:**
        - Automatic currency conversion using exchange rates
        - Vendor, Department and Custom Dimension assignment
        - Optional reversal date for automatic reversal entries
        - Validation against closed book periods

        **Validation Rules:**
        - Debits must equal credits in transaction currency (debit_native and credit_native)
        - Cannot create entries before closed book dates
        - Accounts must be active
        - Exchange rates are auto-calculated if not provided
        

# paths./coa/api/journal_entry.post.requestBody.content.application/json.examples.BasicJournalEntryRequest.summary
Standard journal entry with two transactions

# paths./coa/api/journal_entry.post.requestBody.content.application/json.examples.BasicJournalEntryRequest.description
Example of a basic journal entry moving money from cash to fixed assets

# paths./coa/api/journal_entry.post.responses.201.content.application/json.examples.CreateJournalEntryResponse.summary
Response after successfully creating a journal entry

# paths./coa/api/journal_entry.post.responses.201.content.application/json.examples.CreateJournalEntryResponse.description
Example response showing the created journal entry with generated IDs and timestamps

# paths./coa/api/journal_entry/{id}.get.description
        Retrieve a specific journal entry by ID with all transaction details.

        **Response includes:**
        - Complete journal entry with all transactions
        - Account names, numbers, and types
        - Vendor and department information
        - Tag associations with groups
        - Exchange rate data for multi-currency entries
        - Attachment information
        - Reversal information if applicable
        

# paths./coa/api/journal_entry/{id}.get.responses.200.content.application/json.examples.RetrieveJournalEntryResponse.summary
Complete journal entry with all transaction details

# paths./coa/api/journal_entry/{id}.get.responses.200.content.application/json.examples.RetrieveJournalEntryResponse.description
Example response showing a journal entry retrieved by ID

# paths./coa/api/journal_entry/{id}.put.description
        Update a journal entry completely. All transactions will be replaced with the new ones provided.

        **Important Notes:**
        - Cannot update entries before closed book dates
        - Must maintain double-entry bookkeeping (debits = credits)
        - All existing transactions will be replaced
        - Exchange rates will be recalculated if not provided

        **Validation Rules:**
        - Journal entry must balance in all currencies
        - Accounts must be active
        - Cannot modify entries in closed periods
        

# paths./coa/api/journal_entry/{id}.put.responses.200.content.application/json.examples.UpdateJournalEntryResponse.summary
Response after successfully updating a journal entry

# paths./coa/api/journal_entry/{id}.put.responses.200.content.application/json.examples.UpdateJournalEntryResponse.description
Example response showing the updated journal entry with new transaction details

# paths./coa/api/journal_entry/{id}.patch.description
        Partially update a journal entry. Only provided fields will be updated.

        **Common Use Cases:**
        - Update memo or reference number
        - Change journal entry date
        - Modify specific transaction amounts
        - Add or remove tags from transactions

        **Validation Rules:**
        - Journal entry must still balance after updates
        - Cannot modify entries in closed periods
        - Account changes must maintain chart of accounts rules
        

# paths./coa/api/journal_entry/{id}.delete.description
        Delete a journal entry and all its associated transactions.

        **Restrictions:**
        - Cannot delete entries before closed book dates

        **Response Codes:**
        - 204: Successfully deleted
        - 400: Cannot delete (books closed for this date)
        - 409: Cannot delete (associated with other objects)
        

# paths./coa/api/journal_entry/{id}.delete.responses.409.content.application/json.schema.description
Journal entry is associated with other objects

# paths./coa/api/tag.get.description
        Retrieve a list of transaction tags (custom dimensions) with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./coa/api/tag.get.parameters[].description
Comma-separated list of tag IDs to exclude

# paths./coa/api/tag.get.parameters[].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.

# paths./coa/api/tag.get.parameters[].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).

# paths./coa/api/tag.get.parameters[].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).

# paths./coa/api/tag.get.parameters[].description
If true, only return tags without a group

# paths./coa/api/tag.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/tag.get.parameters[].description
Search query - searches by tag name or group name

# paths./coa/api/tag.get.parameters[].description
Sort order. Use field name for ascending, -field for descending. Special field: group_name. Default: name

# paths./coa/api/tag.get.x-mint.mcp.description
Retrieve transaction tags (custom dimensions) with optional filtering

# paths./coa/api/tag.post.description
Complete mixin for history filtering with pagination support.
Returns either active OR deleted records based on include_deleted parameter.

# paths./coa/api/tag-group.get.description
        Retrieve a list of transaction tag groups with optional filtering and sorting.

        Supports timestamp-based filtering for synchronization and audit purposes.
        

# paths./coa/api/tag-group.get.parameters[].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).

# paths./coa/api/tag-group.get.parameters[].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).

# paths./coa/api/tag-group.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/tag-group.get.parameters[].description
Sort order. Use field name for ascending, -field for descending. Default: name

# paths./coa/api/tag-group.post.description
Mixin to provide consistent last_modified_at filtering and sorting functionality
for List APIs with comprehensive timestamp computation.

# paths./coa/api/tag/{id}.delete.description
Delete a transaction tag and optionally merge it with another tag

# paths./coa/api/tag/{id}.delete.parameters[].description
ID of the tag to merge with before deletion

# paths./coa/api/tag/bulk-search.post.description
Search for tags by exact name match in a single request. Supports upsert to create missing tags.

# paths./coa/api/transaction.get.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.

# paths./coa/api/transaction.get.parameters[].description
If true, uses full transaction date range for the customer; start_date and end_date are ignored

# paths./coa/api/transaction.get.parameters[].description
Filter by categorization state (true/false)

# paths./coa/api/transaction.get.parameters[].description
If true, skip opening-balance computation

# paths./coa/api/transaction.get.parameters[].description
If true, dispatch async CSV/Excel email export instead of returning rows

# paths./coa/api/transaction.get.parameters[].description
Latest date (inclusive) for which to retrieve data. Defaults to end of current month

# paths./coa/api/transaction.get.parameters[].description
Comma-separated list of fields to group by (e.g. account,vendor,tag_group_<id>)

# paths./coa/api/transaction.get.parameters[].description
Comma-separated values matched positionally to group_fields for drill-down

# paths./coa/api/transaction.get.parameters[].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.

# paths./coa/api/transaction.get.parameters[].description
If true, include match metadata (has_matches, primary_action_type) in serialized rows

# paths./coa/api/transaction.get.parameters[].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).

# paths./coa/api/transaction.get.parameters[].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).

# paths./coa/api/transaction.get.parameters[].description
Maximum number of records to return per page. Default 100, maximum 10000. Use with offset to paginate

# paths./coa/api/transaction.get.parameters[].description
Number of records to skip before collecting the result page. Use with limit to paginate

# paths./coa/api/transaction.get.parameters[].description
Comma-separated list of pivot dimensions

# paths./coa/api/transaction.get.parameters[].description
Free-text search across journal memo, bank description, and related fields

# paths./coa/api/transaction.get.parameters[].description
Sort field; prefix with - for descending. Default: -posted_at

# paths./coa/api/transaction.get.parameters[].description
Earliest date (inclusive) for which to retrieve data. Defaults to six months ago

# paths./coa/api/transaction.get.x-mint.mcp.description
Search and filter chart transactions with various criteria

# paths./coa/api/transaction-matches.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/transaction-matches/{id}/status.post.description
Handle POST requests with 'action' parameter (accept/reject)

# paths./coa/api/transaction/{transaction_id}/credit_memo_payments.post.summary
Create Credit Memo Payments for Transaction

# paths./coa/api/transaction/{transaction_id}/debit_memo_payments.post.summary
Create Debit Memo Payments for Transaction

# paths./coa/api/transaction/merge.get.description
        Preview the result of merging two chart transactions.

        This endpoint shows what the merged journal entry will look like, allowing you to verify
        the merge before committing. The preview includes the journal that will be retained and
        the transactions that will remain after the merge.

        **Parameters:**
        - `transaction_ids` (query, required): Comma-separated list of exactly two transaction IDs

        **Returns:**
        A journal entry object containing the merged result with all remaining transactions.

        **Requirements:**
        - Must provide exactly two transaction IDs
        - Transactions must be from different journals
        - Transactions must have matching amounts
        - Transactions must belong to the same entity
        

# paths./coa/api/transaction/merge.get.responses.400.content.application/json.schema.description
Validation error - invalid transaction count, same journal, mismatched amounts, or mismatched entities

# paths./coa/api/transaction/merge.post.description
        Merge two offsetting chart transactions from different journals.

        This endpoint consolidates journals containing offsetting transactions by removing
        the specified transactions and combining the remaining transactions into a single journal entry.

        **Request Body:**
        - `transaction_ids` (array, required): Array of exactly two transaction IDs to merge
        - `transaction_match_id` (integer, optional): The AutoMergeSuggestion TransactionMatch
          the user explicitly accepted; when it names a suggestion over exactly this pair, the
          merge is recorded as a suggestion accept rather than a manual merge

        **Returns:**
        The merged journal entry with all remaining transactions.

        **Requirements:**
        - Must provide exactly two transaction IDs
        - Transactions must be from different journals
        - Transactions must have matching amounts
        - Transactions must belong to the same entity

        **Result:**
        - The two specified transactions are deleted
        - Other transactions from both journals are consolidated into a single journal
        - A draft queue record is created for audit purposes and auto-approved
        

# paths./coa/api/transaction/merge.post.requestBody.content.application/json.schema.properties.transaction_ids.description
Array of exactly two transaction IDs to merge

# paths./coa/api/transaction/merge.post.requestBody.content.application/json.schema.properties.transaction_match_id.description
Optional id of the AutoMergeSuggestion TransactionMatch the user explicitly accepted; marks the merge as a suggestion accept

# paths./coa/api/transaction/merge.post.responses.400.content.application/json.schema.description
Validation error - invalid transaction count, draft queue not found, same journal, mismatched amounts, or mismatched entities

# paths./coa/api/transaction/totals.get.description
Complete mixin for history filtering with pagination support.
Returns either active OR deleted records based on include_deleted parameter.

# paths./coa/api/v1/bill/.get.description
        Retrieve a paginated list of accounting bills with comprehensive filtering, search, and sorting capabilities.

        This endpoint provides complete access to your bills data with:
        - Advanced filtering by date ranges, payment status, vendors, entities, and currency
        - Full-text search across bill numbers, vendor names, addresses, and bill messages
        - Flexible sorting by any field including calculated fields (totals, amounts due, etc.)
        - Comprehensive pagination with customizable page sizes
        - Aging calculations and payment status categorization
        - Automatic calculation of totals, amounts paid, and amounts due

        **Deleted Records Support:**
        - When include_deleted=true: Returns ONLY deleted bills with minimal data (id, is_deleted, deleted_at, last_modified_at)
        - When include_deleted=false or omitted: Returns ONLY active bills with full data
        - Timestamp filtering (last_modified_at__gte/lte) works with both active and deleted records
        

# paths./coa/api/v1/bill/.get.parameters[].description
Filter by currency code (e.g., USD, EUR)

# paths./coa/api/v1/bill/.get.parameters[].description
If true, triggers async download workflow and sends bills via email

# paths./coa/api/v1/bill/.get.parameters[].description
Filter bills with bill_date on or before this date (YYYY-MM-DD)

# paths./coa/api/v1/bill/.get.parameters[].description
Filter by entity ID. Can be specified multiple times for multiple entities

# paths./coa/api/v1/bill/.get.parameters[].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.

# paths./coa/api/v1/bill/.get.parameters[].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).

# paths./coa/api/v1/bill/.get.parameters[].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).

# paths./coa/api/v1/bill/.get.parameters[].description
Number of results to return per page (default: 50, max: 1000)

# paths./coa/api/v1/bill/.get.parameters[].description
The initial index from which to return the results

# paths./coa/api/v1/bill/.get.parameters[].description
Search query - searches by mailing address, bill number, message on bill, or vendor name

# paths./coa/api/v1/bill/.get.parameters[].description
Sort order. Use field name for ascending, -field for descending. Special fields: vendor_name, total_amount, amount_paid, amount_due, payment. Default: -bill_date

# paths./coa/api/v1/bill/.get.parameters[].description
Filter bills with bill_date on or after this date (YYYY-MM-DD)

# paths./coa/api/v1/bill/.get.parameters[].description
Filter by vendor ID. Can be specified multiple times for multiple vendors

# paths./coa/api/v1/bill/.post.description
        Creates a new accounting bill with line items and automatic journal entry generation.

        This endpoint allows for complex bill creation with:
        - Multiple line items with different accounts, departments, and vendor assignments
        - Automatic accounts payable journal entry creation
        - Tax calculations and tax account handling
        - Exchange rate support for multi-currency transactions
        - Custom field support for additional bill metadata

        Requirements:
        - All referenced accounts must exist and be active
        - Vendor must exist
        - Entity must exist
        - Line items must have valid amounts and descriptions
        - Currency must be valid for the entity
        - Accounting date must be before closed book date
        

# paths./coa/api/v1/bill/.post.requestBody.content.application/json.examples.CreateBillRequest.value.mailing_address
1234 Campground Road. San Francisco CA 98765

# paths./coa/api/v1/bill/.post.requestBody.content.application/json.examples.CreateBillRequest.summary
Standard bill creation with multiple line items

# paths./coa/api/v1/bill/.post.requestBody.content.application/json.examples.CreateBillRequest.description
Example of creating a bill with multiple expense line items, vendor assignment, and payment terms

# paths./coa/api/v1/bill/.post.requestBody.content.application/json.examples.CreateBillResponse.value.mailing_address
1234 Campground Road. San Francisco CA 98765

# paths./coa/api/v1/bill/.post.requestBody.content.application/json.examples.CreateBillResponse.summary
Response after successfully creating a bill

# paths./coa/api/v1/bill/.post.requestBody.content.application/json.examples.CreateBillResponse.description
Example response showing the created bill with generated IDs, calculated totals, and journal entry information

# paths./coa/api/v1/bill/.post.responses.201.content.application/json.examples.CreateBillResponse.value.mailing_address
1234 Campground Road. San Francisco CA 98765

# paths./coa/api/v1/bill/.post.responses.201.content.application/json.examples.CreateBillResponse.summary
Response after successfully creating a bill

# paths./coa/api/v1/bill/.post.responses.201.content.application/json.examples.CreateBillResponse.description
Example response showing the created bill with generated IDs, calculated totals, and journal entry information

# paths./coa/api/v1/bill-draft.get.description
GET list (customer-scoped, ``status`` / ``source`` filterable) + POST UI upload.

# paths./coa/api/v1/bill-draft.post.description
GET list (customer-scoped, ``status`` / ``source`` filterable) + POST UI upload.

# paths./coa/api/v1/bill-draft/{id}.get.description
GET detail + PATCH update on a single BillDraft.

# paths./coa/api/v1/bill-draft/{id}.put.description
GET detail + PATCH update on a single BillDraft.

# paths./coa/api/v1/bill-draft/{id}.patch.description
GET detail + PATCH update on a single BillDraft.

# paths./coa/api/v1/bill-draft/{id}/discard.post.description
POST /bill-draft/<pk>/discard — terminal state with a required reason.

# paths./coa/api/v1/bill-draft/{id}/promote.post.description
POST /bill-draft/<pk>/promote — routes through the promote service.

# paths./coa/api/v1/bill-payments.get.description
        Retrieve a paginated list of bill payments (payments applied against accounts
        payable bills), designed for syncing payment data into external systems.

        Results are ordered by (last_modified_at, id) ascending, so pages are stable and
        a sync can resume from where it left off.

        **Full sync (cursor pagination):**
        - Pass an empty cursor parameter (cursor=) on the first request
        - Follow the 'next' URL from each response until it is null

        **Incremental sync (time-based):**
        - Store the highest last_modified_at value you have processed
        - On the next run, pass it as last_modified_at__gte to fetch only new and updated payments

        **Voids:**
        - Voided payments are included by default with voided_date set, so integrators can
          detect payments that were reversed after a previous sync
        - Filter with voided=true or voided=false to fetch only one kind
        

# paths./coa/api/v1/bill-payments.get.parameters[].description
Opts into cursor pagination. Pass an empty value (cursor=) on the first request, then follow the 'next' URL from each response until it is null. The cursor value is opaque - do not parse or construct it. Cursor pagination is recommended for full syncs as it avoids the performance penalty of deep offsets on large result sets.

# paths./coa/api/v1/bill-payments.get.parameters[].description
Filter for payments modified on or after this timestamp. Format: ISO 8601 (e.g., '2024-01-01T00:00:00Z' or '2024-01-01'). Use this for incremental syncs: store the highest last_modified_at you have processed and pass it on the next sync run.

# paths./coa/api/v1/bill-payments.get.parameters[].description
Filter for payments modified on or before this timestamp. Format: ISO 8601 (e.g., '2024-12-31T23:59:59Z' or '2024-12-31'). Date-only values are inclusive of the entire day.

# paths./coa/api/v1/bill-payments.get.parameters[].description
Maximum number of records to return per page. Default 100, maximum 10000. Use with offset to paginate

# paths./coa/api/v1/bill-payments.get.parameters[].description
Number of records to skip before collecting the result page. Use with limit to paginate

# paths./coa/api/v1/bill-payments.get.parameters[].description
When 'true', skips the total COUNT query and returns a lower-bound 'count' instead. Recommended for large syncs where the exact total is not needed.

# paths./coa/api/v1/bill-payments.get.parameters[].description
Filter by void status. When 'true', returns only voided payments (voided_date is set). When 'false', returns only active payments. When omitted, returns both so integrators can detect and propagate voids.

# paths./coa/api/v1/bill/{bill_id}/empty-transaction-default-department-.get.description
Get the default department and tags from the bill line with the largest total amount.

        This endpoint is used to provide default values when creating empty transactions (marking as paid without a transaction).
        The total amount is calculated as: amount + tax.
        If multiple lines have the same total amount, the line with the lowest ID (first created) is selected.
        The department and tags are retrieved directly from the bill line.

# paths./coa/api/v1/bill/{bill_id}/empty-transaction-default-department-.get.summary
Get Default Department and Tags for Empty Transaction

# paths./coa/api/v1/bill/{bill_id}/pay/.post.description
Mark a bill as paid, allowing partial payments.

        This endpoint supports multiple payment methods:
        - Apply existing transactions as payments
        - Apply debit memos to reduce the bill balance
        - Create manual payments without a transaction

        The request body should contain at least one of:
        - transactions: List of transaction payments to apply
        - debit_memos: List of debit memos to apply
        - empty_transactions: List of manual payments without transactions

# paths./coa/api/v1/bill/{bill_id}/payment/{payment_id}/void/.post.description
Void an existing bill payment.

        This creates a reversing journal entry to void the payment and updates the bill status.

        Optionally accepts a void_date in the request body to specify when the payment should be voided.
        If not provided, defaults to today's date.

# paths./coa/api/v1/bill/{bill_id}/payment/{payment_id}/void/.delete.description
Delete a bill payment.

        This removes the payment record and updates the transaction to uncategorized.

# paths./coa/api/v1/bill/{bill_id}/reopen/.post.description
Reopen a voided bill.

        This removes the void date and void journal entry, and sets the bill status back to open.
        The voiding journal entry will be deleted to reverse the void operation.

# paths./coa/api/v1/bill/{bill_id}/sync-to-ramp/.post.description
Sync a bill without a source to Ramp using the enabled Ramp connection

# paths./coa/api/v1/bill/{bill_id}/void/.post.description
Void an existing bill.

        This creates a reversing journal entry to void the bill by reversing all debit and credit amounts.
        The bill status will be updated to reflect the void.

# paths./coa/api/v1/bill/{id}/.get.description
        Retrieve a single accounting bill by ID with complete detail including all line items, payments, and related data.

        This endpoint returns comprehensive bill information including:
        - Full bill details with vendor, entity, and customer information
        - All line items with account details, departments, tags, and amortization schedules
        - Complete payment history with journal entry references
        - Calculated fields including total amounts, amounts paid, amounts due, and payment status
        - Journal entry references for accounting integration
        - Exchange rate information for multi-currency bills
        

# paths./coa/api/v1/bill/{id}/.get.responses.200.content.application/json.examples.SingleBillResponse.value.search_text
ABC Bead Supply 1234567 A really big expense

# paths./coa/api/v1/bill/{id}/.get.responses.200.content.application/json.examples.SingleBillResponse.value.mailing_address
1234 Campground Road. San Francisco CA 98765

# paths./coa/api/v1/bill/{id}/.get.responses.200.content.application/json.examples.SingleBillResponse.summary
Complete bill details with line items and payments

# paths./coa/api/v1/bill/{id}/.get.responses.200.content.application/json.examples.SingleBillResponse.description
Example response showing a fully detailed bill with line items, payment history, and all related metadata

# paths./coa/api/v1/bill/{id}/.put.description
        Update an existing accounting bill with complete replacement of all data including line items and metadata.

        This endpoint performs a full update (PUT) of an accounting bill with:
        - Complete replacement of all bill data including vendor, entity, dates, and terms
        - Full replacement of all line items with new account assignments, amounts, and descriptions
        - Automatic recalculation of journal entries and accounting transactions
        - Preservation of payment history while updating balances and amounts due
        - Validation of all referenced accounts, vendors, entities, and departments
        - Automatic exchange rate updates for multi-currency bills
        - Custom field updates and attachment management
        

# paths./coa/api/v1/bill/{id}/.put.requestBody.content.application/json.examples.UpdateBillRequest.value.message_on_bill
Updated large expense with additional items

# paths./coa/api/v1/bill/{id}/.put.requestBody.content.application/json.examples.UpdateBillRequest.value.mailing_address
1234 Campground Road. San Francisco CA 98765

# paths./coa/api/v1/bill/{id}/.put.requestBody.content.application/json.examples.UpdateBillRequest.summary
Complete bill update with modified line items

# paths./coa/api/v1/bill/{id}/.put.requestBody.content.application/json.examples.UpdateBillRequest.description
Example of updating a bill with modified amounts, line items, and vendor information

# paths./coa/api/v1/bill/{id}/.put.requestBody.content.application/json.examples.UpdateBillResponse.value.mailing_address
1234 Campground Road. San Francisco CA 98765

# paths./coa/api/v1/bill/{id}/.put.requestBody.content.application/json.examples.UpdateBillResponse.value.message_on_bill
Updated large expense with additional items

# paths./coa/api/v1/bill/{id}/.put.requestBody.content.application/json.examples.UpdateBillResponse.summary
Response after successfully updating a bill

# paths./coa/api/v1/bill/{id}/.put.requestBody.content.application/json.examples.UpdateBillResponse.description
Example response showing the updated bill with new amounts, recalculated totals, and preserved payment history

# paths./coa/api/v1/bill/{id}/.put.responses.200.content.application/json.examples.UpdateBillResponse.value.mailing_address
1234 Campground Road. San Francisco CA 98765

# paths./coa/api/v1/bill/{id}/.put.responses.200.content.application/json.examples.UpdateBillResponse.value.message_on_bill
Updated large expense with additional items

# paths./coa/api/v1/bill/{id}/.put.responses.200.content.application/json.examples.UpdateBillResponse.summary
Response after successfully updating a bill

# paths./coa/api/v1/bill/{id}/.put.responses.200.content.application/json.examples.UpdateBillResponse.description
Example response showing the updated bill with new amounts, recalculated totals, and preserved payment history

# paths./coa/api/v1/bill/{id}/.patch.description
        Performs a partial update of an existing accounting bill using PATCH semantics.

        This endpoint allows selective modification of bill fields without requiring
        a complete bill replacement. You can update specific aspects of the bill while
        leaving other fields unchanged.

        **Updatable Fields:**
        - Bill metadata (number, dates, descriptions, vendor, entity)
        - Line items (amounts, accounts, descriptions, departments)
        - Payment terms and due dates
        - Tax calculations and allocations
        - Custom fields and tags
        - Currency and exchange rates
        

# paths./coa/api/v1/bill/{id}/.delete.description
        Permanently deletes an accounting bill and its associated journal entry.

        This endpoint performs a complete deletion of the bill including:
        - Removal of all bill line items and associated data
        - Deletion of the corresponding accounts payable journal entry
        - Cleanup of any tax calculations and allocations
        - Removal of vendor payment allocations if applicable

        **Important Notes:**
        - This operation is irreversible and permanently removes the bill from the system
        - The associated journal entry will be automatically deleted to maintain accounting integrity
        - All double-entry bookkeeping records related to this bill will be removed
        - Any payments allocated to this bill should be handled separately before deletion
        - Deletion may affect financial reports and account balances

        **Restrictions:**
        - Bills with allocated payments may require payment reallocation first
        - Consider the impact on historical financial reporting
        - Bills cannot be deleted in a closed period
        

# paths./coa/api/v1/bill/bulk-search.post.description
Search for thousands of bills by exact bill number match in a single request. Optimized for performance.

# paths./coa/api/v1/bill/bulk-sync-to-ramp/.post.description
Sync multiple bills without a source to Ramp using the enabled Ramp connection

# paths./coa/api/v1/credit-memo.get.description
        Retrieves a paginated list of accounting credit memos with comprehensive filtering and sorting capabilities.

        This endpoint provides a powerful interface for browsing and searching credit memos with:
        - Advanced filtering by date ranges, status, clients, entities, and contracts
        - Full-text search across credit memo numbers, messages, and client names
        - Flexible sorting by multiple fields including amounts and relationships
        - Optimized performance with efficient database queries and pagination
        - Complete credit memo details including line items, payment status, and accounting relationships

        **Key Features:**
        - Date range filtering for credit memo creation and application dates
        - Status-based filtering (open, partially_used, used, voided)
        - Client and entity-based filtering with hierarchical client support
        - Contract association filtering for revenue recognition workflows
        - Full-text search capabilities across key fields

        **Query Parameters:**
        - `start_date`, `end_date`: Filter by credit memo date range
        - `status`: Filter by application status (open, partially_used, used, voided)
        - `q`: Full-text search across credit memo number, message, and client name
        - `client`: Filter by specific client IDs (supports multiple values)
        - `entity`: Filter by specific entity IDs (supports multiple values)
        - `contract`: Filter by specific contract IDs (supports multiple values)
        - `sort`: Sort by various fields (credit_memo_date, client_name, total_amount, etc.)
        - `limit`, `offset`: Pagination controls for large result sets
        

# paths./coa/api/v1/credit-memo.get.parameters[].description
Filter by client IDs (can specify multiple)

# paths./coa/api/v1/credit-memo.get.parameters[].description
Filter by contract IDs (can specify multiple)

# paths./coa/api/v1/credit-memo.get.parameters[].description
Filter credit memos created on or before this date (YYYY-MM-DD format)

# paths./coa/api/v1/credit-memo.get.parameters[].description
Filter by entity IDs (can specify multiple)

# paths./coa/api/v1/credit-memo.get.parameters[].description
Number of results to skip for pagination

# paths./coa/api/v1/credit-memo.get.parameters[].description
Search credit memo numbers, messages, and client names

# paths./coa/api/v1/credit-memo.get.parameters[].description
Sort results by field (prefix with - for descending)

# paths./coa/api/v1/credit-memo.get.parameters[].description
Filter credit memos created on or after this date (YYYY-MM-DD format)

# paths./coa/api/v1/credit-memo.get.responses.200.content.application/json.examples.CreditMemosListResponse.value.results[].results[].lines[].description
Credit for overpayment on annual subscription

# paths./coa/api/v1/credit-memo.get.responses.200.content.application/json.examples.CreditMemosListResponse.value.results[].results[].message_on_credit_memo
Credit memo for annual subscription overpayment. Thank you for your business.

# paths./coa/api/v1/credit-memo.post.description
        Creates a new accounting credit memo with line items and automatic journal entry generation.

        This endpoint allows for comprehensive credit memo creation with:
        - Multiple line items with different products, accounts, amounts, and departmental allocations
        - Automatic journal entry creation following double-entry bookkeeping principles
        - Multi-currency support with exchange rate handling
        - Client and entity relationship management
        - Contract associations for revenue recognition tracking
        - Product-based line item categorization with tax handling
        - Tag-based transaction categorization and reporting
        

# paths./coa/api/v1/credit-memo.post.requestBody.content.application/json.examples.CreateCreditMemoRequest.value.lines[].description
Credit for overpayment on annual subscription

# paths./coa/api/v1/credit-memo.post.requestBody.content.application/json.examples.CreateCreditMemoRequest.value.message_on_credit_memo
Credit memo for annual subscription overpayment. Thank you for your business.

# paths./coa/api/v1/credit-memo.post.responses.201.content.application/json.examples.CreateCreditMemoResponse.value.lines[].description
Credit for overpayment on annual subscription

# paths./coa/api/v1/credit-memo.post.responses.201.content.application/json.examples.CreateCreditMemoResponse.value.message_on_credit_memo
Credit memo for annual subscription overpayment. Thank you for your business.

# paths./coa/api/v1/credit-memo/{credit_memo_id}/mark-used.post.description
Mark a credit memo as used by linking to an existing transaction.

        The transaction's debit amount will be recategorized to A/R to clear the credit memo.
        The credit memo's status will be updated to "used" or "partially_used" based on
        the amount applied vs the total amount.

# paths./coa/api/v1/credit-memo/{credit_memo_id}/payment/{payment_id}/vo.post.description
Void a credit memo 'mark used' payment by creating a reversing journal entry.

        This creates a reversing JE that credits the A/R account and debits Uncategorized,
        then marks the payment as voided.

# paths./coa/api/v1/credit-memo/{credit_memo_id}/payment/{payment_id}/vo.delete.description
Remove a credit memo 'mark used' payment application.

        This recategorizes the transaction back to Uncategorized and deletes the payment record.

# paths./coa/api/v1/credit-memo/{credit_memo_id}/reopen/.post.description
Reopen a voided credit memo.

        This removes the void date and void journal entry, and sets the credit memo status back to open.
        The voiding journal entry will be deleted to reverse the void operation.

# paths./coa/api/v1/credit-memo/{credit_memo_id}/void/.post.description
Void an existing credit memo.

        This creates a reversing journal entry to void the credit memo by reversing all debit and credit amounts.
        The credit memo status will be updated to reflect the void.

# paths./coa/api/v1/credit-memo/{id}.get.description
        Retrieves a single accounting credit memo with complete details including line items, payments, and accounting relationships.

        This endpoint provides comprehensive credit memo information with:
        - Complete credit memo metadata (dates, amounts, status, currency, terms)
        - All associated line items with product details, account information, and departmental allocations
        - Payment application history with journal entry references and transaction details
        - Client and entity information with relationship details
        - Contract associations for revenue recognition and reporting
        - File attachments and supporting documentation
        - Journal entry references for accounting audit trails and compliance
        

# paths./coa/api/v1/credit-memo/{id}.get.responses.200.content.application/json.examples.CreditMemoDetailsResponse.value.lines[].description
Credit for overpayment on annual subscription

# paths./coa/api/v1/credit-memo/{id}.get.responses.200.content.application/json.examples.CreditMemoDetailsResponse.value.message_on_credit_memo
Credit memo for annual subscription overpayment. Thank you for your business.

# paths./coa/api/v1/credit-memo/{id}.put.description
        Performs a complete update of an existing accounting credit memo using PUT semantics.

        This endpoint allows full replacement of credit memo data including:
        - Complete credit memo metadata update (dates, amounts, client, entity, currency)
        - Full line item replacement with new products, accounts, amounts, and departmental allocations
        - Journal entry recalculation and update with new accounting transactions
        - Exchange rate updates for multi-currency credit memos
        - Contract and reference number association updates
        - Custom field updates and modifications

        **Important Notes:**
        - This is a full replacement operation - all credit memo data will be updated
        - Missing fields in the request will be set to null or default values
        - Existing line items will be completely replaced with the new line items
        - Journal entries will be updated to reflect all changes
        

# paths./coa/api/v1/credit-memo/{id}.put.requestBody.content.application/json.examples.UpdateCreditMemoRequest.value.lines[].description
Updated credit for subscription overpayment

# paths./coa/api/v1/credit-memo/{id}.put.requestBody.content.application/json.examples.UpdateCreditMemoRequest.value.message_on_credit_memo
Updated credit memo for subscription overpayment and additional services. Thank you for your business.

# paths./coa/api/v1/credit-memo/{id}.put.responses.200.content.application/json.examples.UpdateCreditMemoResponse.value.lines[].description
Updated credit for subscription overpayment

# paths./coa/api/v1/credit-memo/{id}.put.responses.200.content.application/json.examples.UpdateCreditMemoResponse.value.message_on_credit_memo
Updated credit memo for subscription overpayment and additional services. Thank you for your business.

# paths./coa/api/v1/credit-memo/{id}.patch.description
        Performs a partial update of an existing accounting credit memo using PATCH semantics.

        This endpoint allows selective modification of credit memo fields without requiring
        a complete credit memo replacement. You can update specific aspects of the credit memo while
        leaving other fields unchanged.

        **Updatable Fields:**
        - Credit memo metadata (dates, messages, descriptions, client, entity, currency)
        - Line items (amounts, accounts, descriptions, departments, products)
        - Reference numbers and contract associations
        - Exchange rates and currency information
        - Custom fields and additional metadata
        - Application status and tracking information
        

# paths./coa/api/v1/credit-memo/{id}.patch.requestBody.content.application/json.examples.UpdateCreditMemoAmount.value.internal_message
Adjusted credit amount per client request - approval #CM-2024-456

# paths./coa/api/v1/credit-memo/{id}.patch.requestBody.content.application/json.examples.UpdateCreditMemoAmount.description
Partial update to adjust the credit memo amount and add internal notes

# paths./coa/api/v1/credit-memo/{id}.patch.requestBody.content.application/json.examples.UpdateLineItem.value.line_items[].description
Updated: Credit for Enterprise license overpayment - Q1 2024

# paths./coa/api/v1/credit-memo/{id}.patch.requestBody.content.application/json.examples.UpdateLineItem.description
Partial update to modify a specific line item description and department

# paths./coa/api/v1/credit-memo/{id}.patch.responses.200.content.application/json.examples.UpdateCreditMemoResponse.value.internal_message
Adjusted credit amount per client request - approval #CM-2024-456

# paths./coa/api/v1/credit-memo/{id}.patch.responses.200.content.application/json.examples.UpdateCreditMemoResponse.value.client_message
Credit for overpayment on Invoice #INV-2024-001

# paths./coa/api/v1/credit-memo/{id}.patch.responses.200.content.application/json.examples.UpdateCreditMemoResponse.description
Response showing the updated credit memo with modified amount and notes

# paths./coa/api/v1/credit-memo/{id}.delete.description
        Permanently deletes an accounting credit memo and all associated data from the system.

        This endpoint performs a complete removal of the credit memo including:
        - Complete credit memo record deletion with all line items
        - Automatic journal entry removal and accounting transaction cleanup

        **Accounting Impact:**
        - Associated journal entries are automatically deleted to maintain accounting integrity
        - Exchange rate records and multi-currency data are cleaned up

        **Restrictions:**
        - Credit memos that have been applied to invoices cannot be deleted
        - Credit memos in closed accounting periods may have deletion restrictions
        - Consider the impact on historical financial reporting
        

# paths./coa/api/v1/credit-memo/bulk-search.post.description
Search for thousands of credit memos by exact credit memo number match in a single request. Optimized for performance.

# paths./coa/api/v1/debit-memo.get.description
        Retrieves a paginated list of accounting debit memos with filtering and sorting capabilities.

        Supports filtering by date ranges, status, vendors, entities, and full-text search.
        

# paths./coa/api/v1/debit-memo.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/v1/debit-memo.post.description
        Creates a new accounting debit memo with line items and automatic journal entry generation.

        Debit memos are used to record amounts owed to vendors or to adjust vendor account balances.
        This endpoint handles multi-currency transactions, departmental allocations, and automatic
        double-entry bookkeeping.
        

# paths./coa/api/v1/debit-memo/{debit_memo_id}/mark-used.post.description
Mark a debit memo as used by linking to an existing credit-side transaction.

        The transaction's credit amount will be recategorized to A/P to clear the debit memo.
        The debit memo's status will be updated to "used" or "partially_used" based on
        the amount applied vs the total amount.

# paths./coa/api/v1/debit-memo/{debit_memo_id}/payment/{payment_id}/void.post.description
Void a debit memo 'mark used' payment by creating a reversing journal entry.

        This creates a reversing JE that credits the A/P account and debits Uncategorized,
        then marks the payment as voided.

# paths./coa/api/v1/debit-memo/{debit_memo_id}/payment/{payment_id}/void.delete.description
Remove a debit memo 'mark used' payment application.

        This recategorizes the transaction back to Uncategorized and deletes the payment record.

# paths./coa/api/v1/debit-memo/{debit_memo_id}/reopen/.post.description
Reopen a voided debit memo.

        This removes the void date and void journal entry, and sets the debit memo status back to open.
        The voiding journal entry will be deleted to reverse the void operation.

# paths./coa/api/v1/debit-memo/{debit_memo_id}/void/.post.description
Void an existing debit memo.

        This creates a reversing journal entry to void the debit memo by reversing all debit and credit amounts.
        The debit memo status will be updated to reflect the void.

# paths./coa/api/v1/debit-memo/{id}.get.description
        Retrieves a single accounting debit memo with complete details including line items,
        payments, and accounting relationships.
        

# paths./coa/api/v1/debit-memo/{id}.put.description
        Performs a complete update of an existing accounting debit memo using PUT semantics.

        This endpoint allows full replacement of debit memo data including line items
        and journal entry recalculation.
        

# paths./coa/api/v1/debit-memo/{id}.patch.description
        Performs a partial update of an existing accounting debit memo using PATCH semantics.

        This endpoint allows selective modification of debit memo fields without requiring
        a complete replacement.
        

# paths./coa/api/v1/debit-memo/bulk-search.post.description
Search for thousands of debit memos by exact debit memo number match in a single request. Optimized for performance.

# paths./coa/api/v1/invoice/.get.description
        Retrieve a paginated list of invoices with comprehensive filtering, sorting, and download capabilities.

        This endpoint provides powerful invoice listing with:
        - Advanced filtering by date ranges, status, clients, and entities
        - Full-text search across multiple fields
        - Flexible sorting options including custom calculated fields
        - Async CSV export functionality via email
        - Optimized queries with prefetched relationships

        **Filtering Options:**
        - Date-based filtering (invoice_date, due_date ranges)
        - Status-based filtering (payment status, sent status, aging buckets)
        - Entity and client-based filtering (supports multiple selections)
        - Contract and currency filtering
        - Full-text search across invoice numbers, addresses, messages, and client names

        **Sorting Capabilities:**
        - Standard field sorting (invoice_date, total_amount, due_date, etc.)
        - Custom calculated field sorting (amount_due, client_name, contract_name)
        - Ascending/descending order with null handling

        **Performance Features:**
        - Efficient database queries with proper indexing
        - Prefetched related objects (lines, payments, clients, entities)
        - Pagination support for large datasets
        - Optimized for high-volume invoice management

        **Export Functionality:**
        - Async CSV generation and email delivery
        - Filtered export based on current query parameters
        - Background processing to handle large datasets
        

# paths./coa/api/v1/invoice/.get.parameters[].description
Filter by client ID. Can be specified multiple times

# paths./coa/api/v1/invoice/.get.parameters[].description
Filter by currency code (e.g., USD, EUR)

# paths./coa/api/v1/invoice/.get.parameters[].description
If true, triggers async CSV download workflow and sends result via email

# paths./coa/api/v1/invoice/.get.parameters[].description
Filter invoices with invoice_date on or before this date (YYYY-MM-DD)

# paths./coa/api/v1/invoice/.get.parameters[].description
Filter by entity ID. Can be specified multiple times

# paths./coa/api/v1/invoice/.get.parameters[].description
Filter invoices with at least one line item assigned a tag from this tag group ID

# paths./coa/api/v1/invoice/.get.parameters[].description
Filter invoices with at least one line item assigned this tag ID

# paths./coa/api/v1/invoice/.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/v1/invoice/.get.parameters[].description
Filter invoices with paid_date on or after this date (YYYY-MM-DD)

# paths./coa/api/v1/invoice/.get.parameters[].description
Filter invoices with paid_date on or before this date (YYYY-MM-DD)

# paths./coa/api/v1/invoice/.get.parameters[].description
Filter by parent client (Vendor) ID. Returns invoices for the specified client and all of its descendants via vendor lineage.

# paths./coa/api/v1/invoice/.get.parameters[].description
Search query - searches shipping address, invoice number, message, or client name

# paths./coa/api/v1/invoice/.get.parameters[].description
Sort order. Use field name for ascending, -field for descending. Special fields: client_name, amount_due. Default: -invoice_date

# paths./coa/api/v1/invoice/.get.parameters[].description
Filter invoices with invoice_date on or after this date (YYYY-MM-DD)

# paths./coa/api/v1/invoice/.post.description
        Creates a new accounting invoice with line items and automatic journal entry generation.

        This endpoint allows for comprehensive invoice creation with:
        - Multiple line items with different products, rates, quantities, and tax handling
        - Automatic accounts receivable journal entry creation
        - Tax calculations and tax account handling
        - Multi-currency support with exchange rate handling
        - Product-based taxation rules
        - Service date tracking for revenue recognition
        - Contract and purchase order integration
        - Stripe payment integration support

        Key features:
        - Credits revenue accounts for each line item amount
        - Debits accounts receivable for the total amount
        - Handles tax calculations with appropriate tax accounts
        - Supports entity-specific currency conversions
        - Creates proper double-entry accounting transactions
        - Validates client, entity, and product relationships
        - Integrates with Stripe for payment processing

        Requirements:
        - All referenced products, clients, and entities must exist and be active
        - Client must be of type 'customer'
        - Line items must have valid amounts, quantities, and rates
        - Currency must be valid for the entity
        - Tax calculations must comply with configured tax rules
        

# paths./coa/api/v1/invoice/.post.requestBody.content.application/json.examples.CreateInvoiceRequest.value.entity_invoice_message
Please make a payment to the following bank:

Bank Name: JP Morgan Chase
Bank Address: 456 Another Rd, San Francisco, CA, USA
SWIFT/BIC Code: XYZBUS22
Account Number: 123456789
Account Type: Checking
Account Name: Campfire Software

# paths./coa/api/v1/invoice/.post.requestBody.content.application/json.examples.CreateInvoiceRequest.value.message_on_invoice
Please make a payment to the following bank:

Bank Name: JP Morgan Chase
Bank Address: 456 Another Rd, San Francisco, CA, USA
SWIFT/BIC Code: XYZBUS22
Account Number: 123456789
Account Type: Checking
Account Name: Campfire Software

# paths./coa/api/v1/invoice/.post.responses.201.content.application/json.examples.CreateInvoiceResponse.value.entity_invoice_message
Please make a payment to the following bank:

Bank Name: JP Morgan Chase
Bank Address: 456 Another Rd, San Francisco, CA, USA
SWIFT/BIC Code: XYZBUS22
Account Number: 123456789
Account Type: Checking
Account Name: Campfire Software

# paths./coa/api/v1/invoice/.post.responses.201.content.application/json.examples.CreateInvoiceResponse.value.message_on_invoice
Please make a payment to the following bank:

Bank Name: JP Morgan Chase
Bank Address: 456 Another Rd, San Francisco, CA, USA
SWIFT/BIC Code: XYZBUS22
Account Number: 123456789
Account Type: Checking
Account Name: Campfire Software

# paths./coa/api/v1/invoice-payments.get.description
        Retrieve a paginated list of invoice payments (payments applied against accounts
        receivable invoices), designed for syncing payment data into external systems.

        Results are ordered by (last_modified_at, id) ascending, so pages are stable and
        a sync can resume from where it left off.

        **Full sync (cursor pagination):**
        - Pass an empty cursor parameter (cursor=) on the first request
        - Follow the 'next' URL from each response until it is null

        **Incremental sync (time-based):**
        - Store the highest last_modified_at value you have processed
        - On the next run, pass it as last_modified_at__gte to fetch only new and updated payments

        **Voids:**
        - Voided payments are included by default with voided_date set, so integrators can
          detect payments that were reversed after a previous sync
        - Filter with voided=true or voided=false to fetch only one kind
        

# paths./coa/api/v1/invoice-payments.get.parameters[].description
Opts into cursor pagination. Pass an empty value (cursor=) on the first request, then follow the 'next' URL from each response until it is null. The cursor value is opaque - do not parse or construct it. Cursor pagination is recommended for full syncs as it avoids the performance penalty of deep offsets on large result sets.

# paths./coa/api/v1/invoice-payments.get.parameters[].description
Filter for the payment carrying this upstream external_id. Use it to reconcile a payment you created via the invoice pay endpoint back to your source-system record. An empty value is ignored and returns all payments.

# paths./coa/api/v1/invoice-payments.get.parameters[].description
Filter for payments applied to this invoice id.

# paths./coa/api/v1/invoice-payments.get.parameters[].description
Filter for payments modified on or after this timestamp. Format: ISO 8601 (e.g., '2024-01-01T00:00:00Z' or '2024-01-01'). Use this for incremental syncs: store the highest last_modified_at you have processed and pass it on the next sync run.

# paths./coa/api/v1/invoice-payments.get.parameters[].description
Filter for payments modified on or before this timestamp. Format: ISO 8601 (e.g., '2024-12-31T23:59:59Z' or '2024-12-31'). Date-only values are inclusive of the entire day.

# paths./coa/api/v1/invoice-payments.get.parameters[].description
Maximum number of records to return per page. Default 100, maximum 10000. Use with offset to paginate

# paths./coa/api/v1/invoice-payments.get.parameters[].description
Number of records to skip before collecting the result page. Use with limit to paginate

# paths./coa/api/v1/invoice-payments.get.parameters[].description
When 'true', skips the total COUNT query and returns a lower-bound 'count' instead. Recommended for large syncs where the exact total is not needed.

# paths./coa/api/v1/invoice-payments.get.parameters[].description
Filter by void status. When 'true', returns only voided payments (voided_date is set). When 'false', returns only active payments. When omitted, returns both so integrators can detect and propagate voids.

# paths./coa/api/v1/invoice/{invoice_id}/calculate-payment.post.description
Calculate the payment details for an invoice.

        This endpoint calculates:
        - Total amount due on the invoice
        - Applied payments (existing + proposed)
        - Applied credits (existing + proposed credit memos)
        - Payment term discounts (based on payment dates) - ALL OR NOTHING: discount only applies if paying full invoice
        - Remaining balance due

        Supports payment terms with early payment discounts (all-or-nothing).
        

# paths./coa/api/v1/invoice/{invoice_id}/default-payment.post.description
Get the default payment amount for an invoice based on when payment is posted.

        If the invoice has discount terms and the posted date is within the discount period,
        the discounted amount is returned. Otherwise, the full amount is returned.
        

# paths./coa/api/v1/invoice/{invoice_id}/pay/.post.description
Mark an invoice as paid, allowing partial payments.

        This endpoint supports multiple payment methods:
        - Apply existing transactions as payments
        - Apply credit memos to reduce the invoice balance
        - Create manual payments without a transaction

        The request body should contain at least one of:
        - transactions: List of transaction payments to apply
        - credit_memos: List of credit memos to apply
        - empty_transactions: List of manual payments without transactions

# paths./coa/api/v1/invoice/{invoice_id}/payment/{payment_id}/void/.post.description
Void an existing invoice payment.

        This creates a reversing journal entry to void the payment and updates the invoice status.
        For Stripe payments, this will also process a refund through Stripe.

        Optionally accepts a void_date in the request body to specify when the payment should be voided.
        If not provided, defaults to today's date.

# paths./coa/api/v1/invoice/{invoice_id}/payment/{payment_id}/void/.delete.description
Delete an invoice payment.

        This removes the payment record and updates the transaction to uncategorized.
        For Stripe payments, this will also process a refund through Stripe.

# paths./coa/api/v1/invoice/{invoice_id}/reopen/.post.description
Reopen a voided invoice.

        This removes the void date and void journal entry, and sets the invoice status back to open.
        The voiding journal entry will be deleted to reverse the void operation.

# paths./coa/api/v1/invoice/{invoice_id}/void/.post.description
Void an existing invoice.

        This creates a reversing journal entry to void the invoice by reversing all debit and credit amounts.
        The invoice status will be updated to reflect the void.

# paths./coa/api/v1/invoice/{id}/.get.description
        Retrieves a single accounting invoice with complete details including line items, payments, and accounting relationships.

        This endpoint provides comprehensive invoice information with:
        - Complete invoice metadata (dates, amounts, status, terms)
        - All associated line items with product details and tax information
        - Payment history with journal entry references and transaction details
        

# paths./coa/api/v1/invoice/{id}/.get.responses.200.content.application/json.examples.InvoiceWithPayment.value.entity_invoice_message
Please make a payment to the following bank:

Bank Name: JP Morgan Chase
Bank Address: 456 Another Rd, San Francisco, CA, USA
SWIFT/BIC Code: XYZBUS22
Account Number: 123456789
Account Type: Checking
Account Name: Campfire Software

# paths./coa/api/v1/invoice/{id}/.put.description
        Performs a complete update of an existing accounting invoice using PUT semantics.

        This endpoint allows full replacement of invoice data including:
        - Complete invoice metadata update (dates, amounts, terms, client, entity)
        - Full line item replacement with new products, quantities, rates, and tax calculations
        - Journal entry recalculation and update with new accounting transactions
        - Exchange rate updates for multi-currency invoices

        **Important Notes:**
        - This is a full replacement operation - all invoice data will be updated
        - Missing fields in the request will be set to null or default values
        - Existing line items will be completely replaced with the new line items
        - Journal entries will be updated to reflect all changes
        

# paths./coa/api/v1/invoice/{id}/.patch.description
        Performs a partial update of an existing accounting invoice using PATCH semantics.

        This endpoint allows selective modification of invoice fields without requiring
        a complete invoice replacement. You can update specific aspects of the invoice while
        leaving other fields unchanged.

        **Updatable Fields:**
        - Invoice metadata (dates, terms, descriptions, client, entity, currency)
        - Line items (amounts, accounts, descriptions, departments, products)
        - Payment terms and due dates
        - Tax calculations and allocations
        - Custom fields and tags
        - Contract and purchase order associations
        - Exchange rates and currency information
        

# paths./coa/api/v1/invoice/{id}/.delete.description
        Permanently deletes an accounting invoice and its associated journal entry and related data.

        This endpoint performs a complete deletion of the invoice including:
        - Removal of all invoice line items and associated product data
        - Deletion of the corresponding accounts receivable journal entry
        - Removal of payment records and journal entries

        **Important Notes:**
        - This operation is irreversible and permanently removes the invoice from the system
        - The associated journal entry will be automatically deleted to maintain accounting integrity

        **Restrictions:**
        - Invoices in closed accounting periods cannot be deleted
        - Consider the impact on historical financial reporting
        

# paths./coa/api/v1/invoice/bulk-apply-payment.post.description
Apply a single transaction payment to multiple selected invoices.

Supports two selection modes:
- Explicit invoice IDs (``invoice_ids``)
- Filter-based selection (``filters``) for "select all matching" behaviour

Reuses :meth:`MarkInvoicePaidView.apply_transaction_payment` so that
line-level payment splitting, FX gain/loss realisation, and transaction
cleanup are all respected.  A single ``DraftQueue`` is created when
approval is required.

# paths./coa/api/v1/invoice/bulk-apply-payment.post.summary
Bulk Apply Transaction Payment to Selected Invoices

# paths./coa/api/v1/invoice/bulk-create.post.description
    Create multiple invoices atomically in a single transaction.

    All invoices are created within a single database transaction. If any invoice creation fails,
    all invoices are rolled back and no invoices are created.

    This endpoint validates all invoices before creating any of them, ensuring data integrity.
    

# paths./coa/api/v1/invoice/bulk-search.post.description
Search for thousands of invoices by exact invoice number match in a single request. Optimized for performance.

# paths./coa/api/v1/invoice/report/{id}/data.get.description
Execute saved invoice report and return DataTable-compatible response.

:param request: HTTP request with query params
:param pk: Custom report ID
:return: Paginated, sparse-formatted response

# paths./coa/api/v1/invoice/report/{id}/data.get.parameters[].description
Column dimensions: product_id, client_id, etc.

# paths./coa/api/v1/invoice/report/preview.get.description
Execute invoice report preview from query params.

:param request: HTTP request with report configuration
:return: Paginated response or CSV stream

# paths./coa/api/v1/invoice/report/preview.get.parameters[].description
Column dimensions: product_id, client_id, etc.

# paths./coa/api/v1/invoice/statement/client/{client_id}/pdf/.get.description
Generate a customer statement PDF for a specific client.

This creates a professional, customer-facing statement showing:
- All outstanding invoices as of the specified date
- Running balance
- Total balance due
- Payment advice slip

# paths./coa/api/v2/reconciliation.get.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.

# paths./coa/api/v2/reconciliation.get.parameters[].description
Filter by maximum statement ending date (YYYY-MM-DD)

# paths./coa/api/v2/reconciliation.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/v2/reconciliation.get.parameters[].description
Search term for account name, number, or reconciled_by name

# paths./coa/api/v2/reconciliation.get.parameters[].description
Sort field (prefix with - for descending)

# paths./coa/api/v2/reconciliation.get.parameters[].description
Filter by minimum statement ending date (YYYY-MM-DD)

# paths./coa/api/v2/reconciliation.post.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.

# paths./coa/api/v2/reconciliation/{id}.get.description
Retrieve a specific bank reconciliation report by ID. Includes report metadata, status, async task status for PDF processing, and attached files/CSV statements.

# paths./coa/api/v2/reconciliation/{id}.put.description
Update a bank reconciliation report. Supports partial updates via PATCH.

# paths./coa/api/v2/reconciliation/{id}.patch.description
Partially update a bank reconciliation report. Only provided fields are modified.

# paths./coa/api/v2/reconciliation/{id}.patch.summary
Partial Update Bank Reconciliation Report

# paths./coa/api/v2/reconciliation/{id}.delete.description
Delete a bank reconciliation report and all associated data.

# paths./coa/api/v2/reconciliation/{id}/bulk-match-transactions.post.description
Match multiple GL transactions to statement transactions in a single request. Pairs are validated atomically — all succeed or none are created.

# paths./coa/api/v2/reconciliation/{id}/bulk-match-transactions.post.summary
Bulk Match GL Transactions to Statement Transactions

# paths./coa/api/v2/reconciliation/{id}/bulk-match-transactions.post.responses.400.description
Validation error (duplicates, already reconciled, non-draft report)

# paths./coa/api/v2/reconciliation/{id}/bulk-match-transactions.post.responses.404.description
Report, GL transaction, or statement transaction not found

# paths./coa/api/v2/reconciliation/{id}/source-transactions.get.description
List source (GL) transactions available for reconciliation. Supports filtering by date range, bank, vendor, department, tag, currency, and reconciliation status.

# paths./coa/api/v2/reconciliation/{id}/source-transactions.get.parameters[].description
Filter by currency code (e.g., USD, EUR)

# paths./coa/api/v2/reconciliation/{id}/source-transactions.get.parameters[].description
Filter by maximum posted date (YYYY-MM-DD)

# paths./coa/api/v2/reconciliation/{id}/source-transactions.get.parameters[].description
Set to 'true' to show only transactions with an explicit statement match, or 'false' to show transactions without an explicit statement match

# paths./coa/api/v2/reconciliation/{id}/source-transactions.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/v2/reconciliation/{id}/source-transactions.get.parameters[].description
Search term for bank description, journal memo, journal order, or amount

# paths./coa/api/v2/reconciliation/{id}/source-transactions.get.parameters[].description
Set to 'true' to show only reconciled transactions for this report

# paths./coa/api/v2/reconciliation/{id}/source-transactions.get.parameters[].description
Sort field(s), comma-separated (prefix with - for descending). Default: posted_at

# paths./coa/api/v2/reconciliation/{id}/source-transactions.get.parameters[].description
Filter by minimum posted date (YYYY-MM-DD)

# paths./coa/api/v2/reconciliation/{id}/source-transactions.get.parameters[].description
Set to 'true' to show only unreconciled transactions

# paths./coa/api/v2/reconciliation/{id}/transactions/confirm.post.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.

# paths./coa/api/v2/reconciliation/{id}/transactions/confirm.post.summary
Confirm Selection of Transactions to Reconcile

# paths./coa/api/v2/reconciliation/parse-statement-page.post.description
Parse a bank statement PDF.

Accepts:
    ``file_id`` (required) -- ID of the uploaded PDF ``File``.
    ``pages`` (optional, int) -- How many pages to include in the first parse batch.
        Defaults to ``BATCH_PAGE_SIZE``. Use a small value (e.g. 2) for
        a fast initial response with just balances and dates.

Only the first batch is parsed in this request. Parsed output is cached under
``file_id`` and the effective first-batch page count (``pages`` or default
``BATCH_PAGE_SIZE``) so different ``pages`` values do not share one cache entry.

# paths./coa/api/vendor.get.description
        Retrieve a list of vendors/customers with optional filtering and sorting.

        Each vendor includes metadata about its parent vendor (`parent`, `parent_name`) and its
        full `lineage` (the ordered chain of ancestor vendors), so parent/child vendor
        relationships can be reconstructed from the response.

        Supports retrieving deleted records for audit purposes. When include_deleted=true,
        returns ONLY deleted records with minimal data (id, is_deleted, deleted_at, last_modified_at).
        When false or omitted, returns ONLY active records.
        

# paths./coa/api/vendor.get.parameters[].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.

# paths./coa/api/vendor.get.parameters[].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).

# paths./coa/api/vendor.get.parameters[].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).

# paths./coa/api/vendor.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/vendor.get.parameters[].description
Search query - searches by name, DBA, email, or company name. If numeric, also searches by ID

# paths./coa/api/vendor.get.parameters[].description
Sort order. Use field name for ascending, -field for descending. Supports multiple fields separated by comma. Default: name

# paths./coa/api/vendor.get.parameters[].description
Filter by vendor type. Can be specified multiple times for multiple types

# paths./coa/api/vendor.get.x-mint.mcp.description
Retrieve vendor information with optional filtering

# paths./coa/api/vendor.post.description
Create a new vendor or customer in the system

# paths./coa/api/vendor/{id}.delete.description
Delete a vendor and optionally reassign all related records to another vendor. Returns 202 Accepted as deletion is processed asynchronously.

# paths./coa/api/vendor/{id}.delete.parameters[].description
ID of the vendor to reassign all related records to before deletion

# paths./coa/api/vendor/{id}/contacts.get.description
Complete mixin for history filtering with pagination support.
Returns either active OR deleted records based on include_deleted parameter.

# paths./coa/api/vendor/{id}/contacts.get.parameters[].description
The initial index from which to return the results.

# paths./coa/api/vendor/{id}/contacts.post.description
Complete mixin for history filtering with pagination support.
Returns either active OR deleted records based on include_deleted parameter.

# paths./coa/api/vendor/bulk-search.post.description
Search for thousands of vendors by external_id (priority) or name in a single request. Optimized for performance. Supports upsert to create missing vendors.

# paths./coa/api/vendor/bulk-search.post.summary
Bulk Search Vendors by External ID or Name

# paths./coa/api/vendor/summary.get.parameters[].description
The initial index from which to return the results.

# paths./rr/api/v1/contracts.get.description
        Retrieve a list of contracts with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.

        When download=true, triggers an async workflow that generates a ZIP file with
        contracts_summary.csv and contracts_detail.csv, uploads to S3, and sends an email
        with the download link.
        

# paths./rr/api/v1/contracts.get.parameters[].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.

# paths./rr/api/v1/contracts.get.parameters[].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).

# paths./rr/api/v1/contracts.get.parameters[].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).

# paths./rr/api/v1/contracts.get.parameters[].description
The initial index from which to return the results.

# paths./rr/api/v1/contracts.get.x-mint.mcp.description
Retrieve contract information with optional filtering

# paths./rr/api/v1/contracts.post.description
    Create a new contract.

    Evergreen vs standard:
    - Standard contract: set is_evergreen=false and provide a fixed contract_end_date.
    - Evergreen contract: set is_evergreen=true and leave contract_end_date as null.
      The system manages a rolling effective_end_date, exposes working_end_date for downstream usage,
      and returns evergreen_locked_date for immutable historical boundary rules.

    Additional evergreen constraints:
    - is_evergreen and auto_renew cannot both be true.
    - billing_frequency is required for evergreen behavior.
    - skip_evergreen_invoice_generation is creation-time only and cannot be changed on existing contracts.
    - skip_evergreen_invoice_generation=true skips only Campfire's auto-generated evergreen invoices.
      Revenue transactions still generate.
    

# paths./rr/api/v1/contracts.post.requestBody.content.application/json.examples.CreateEvergreenContractWithGeneratedInvoices.summary
Create Evergreen Contract with Generated Invoices

# paths./rr/api/v1/contracts.post.requestBody.content.application/json.examples.CreateEvergreenContractWithoutGeneratedInvoices.summary
Create Evergreen Contract without Generated Invoices

# paths./rr/api/v1/contracts/{contract_id}/bundles.get.description
        Retrieve a list of contract bundles with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./rr/api/v1/contracts/{contract_id}/bundles.get.parameters[].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.

# paths./rr/api/v1/contracts/{contract_id}/bundles.get.parameters[].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).

# paths./rr/api/v1/contracts/{contract_id}/bundles.get.parameters[].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).

# paths./rr/api/v1/contracts/{contract_id}/bundles.post.description
    Create a new contract bundle.

    Evergreen vs standard:
    - Standard contracts require a fixed bundle end_date.
    - Evergreen contracts allow end_date to be null (open-ended) or set to a billing-period end date.
      Evergreen bundle start/end dates must align with billing period boundaries.

    Evergreen-specific option:
    - rebalance_journal_entries_indefinitely=true keeps invoice-journal rebalancing in sync as the evergreen
      contract extends.
    

# paths./rr/api/v1/contracts/{contract_id}/milestones.get.description
        Retrieve a list of milestones for a specific contract with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./rr/api/v1/contracts/{contract_id}/milestones.get.parameters[].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.

# paths./rr/api/v1/contracts/{contract_id}/milestones.get.parameters[].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).

# paths./rr/api/v1/contracts/{contract_id}/milestones.get.parameters[].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).

# paths./rr/api/v1/contracts/{contract_id}/milestones.get.parameters[].description
The initial index from which to return the results.

# paths./rr/api/v1/contracts/{contract_id}/milestones.post.description
Create a new milestone for a contract. This will automatically create an associated revenue transaction.

# paths./rr/api/v1/contracts/{contract_id}/milestones/{milestone_id}/all.get.description
Retrieve the current bundle allocation details for a contract subscription, milestone, or usage.

# paths./rr/api/v1/contracts/{contract_id}/milestones/{milestone_id}/all.put.description
        Update the bundle allocations for a contract item.

        The sum of all line amounts must equal the bundle's total_amount.
        Changes will cascade to related RevenueTransactions and JournalEntries.
        

# paths./rr/api/v1/contracts/{contract_id}/milestones/{milestone_id}/all.patch.description
Partially update bundle allocations. Same behavior as PUT.

# paths./rr/api/v1/contracts/{contract_id}/prepaid-commits.get.parameters[].description
The initial index from which to return the results.

# paths./rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/c.get.parameters[].description
The initial index from which to return the results.

# paths./rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/p.post.description
Process adjustment events for a prepaid commit and create credit memos.

# paths./rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/u.get.parameters[].description
The initial index from which to return the results.

# paths./rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/u.get.description
Return distinct values for a given JSONB data field, for filter dropdowns.

# paths./rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/u.get.summary
Get Prepaid Commit Usage Event Distinct Values

# paths./rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/u.get.description
Download a CSV template (commit-scoped).

# paths./rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/u.get.summary
Get Prepaid Commit Usage Events Template

# paths./rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/u.post.description
Upload a CSV of usage events for a specific prepaid commit (commit-scoped).

# paths./rr/api/v1/contracts/{contract_id}/subscriptions.get.description
        Retrieve a list of contract subscriptions with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./rr/api/v1/contracts/{contract_id}/subscriptions.get.parameters[].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.

# paths./rr/api/v1/contracts/{contract_id}/subscriptions.get.parameters[].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).

# paths./rr/api/v1/contracts/{contract_id}/subscriptions.get.parameters[].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).

# paths./rr/api/v1/contracts/{contract_id}/subscriptions.post.description
    Create a new contract subscription.

    Evergreen vs standard:
    - Standard contract subscriptions generally provide explicit lines and fixed start/end dates.
    - Evergreen contract subscriptions can provide period_amount to auto-generate lines. Their dates must align
      to billing period boundaries and must not exceed the contract's current working_end_date.

    Notes:
    - Usage and milestone subscription flows are not supported for evergreen contracts.
    - For evergreen contracts, period_amount is the source-of-truth amount per billing period.
    - renewal_behavior:
      - FOLLOW_CONTRACT: subscription follows evergreen contract extension windows.
      - FIXED_END: subscription keeps its own fixed end_date and does not extend automatically.
    

# paths./rr/api/v1/contracts/{contract_id}/subscriptions.post.requestBody.content.application/json.examples.CreateEvergreenSubscriptionWithPeriodAmount.summary
Create Evergreen Subscription with period_amount

# paths./rr/api/v1/contracts/{contract_id}/subscriptions.post.requestBody.content.application/json.examples.CreateEvergreenSubscriptionWithFixedEndDate.summary
Create Evergreen Subscription with fixed end date

# paths./rr/api/v1/contracts/{contract_id}/subscriptions/{subscription_i.get.description
Retrieve the current bundle allocation details for a contract subscription, milestone, or usage.

# paths./rr/api/v1/contracts/{contract_id}/subscriptions/{subscription_i.put.description
        Update the bundle allocations for a contract item.

        The sum of all line amounts must equal the bundle's total_amount.
        Changes will cascade to related RevenueTransactions and JournalEntries.
        

# paths./rr/api/v1/contracts/{contract_id}/subscriptions/{subscription_i.patch.description
Partially update bundle allocations. Same behavior as PUT.

# paths./rr/api/v1/contracts/{contract_id}/tier-price-overrides.get.parameters[].description
The initial index from which to return the results.

# paths./rr/api/v1/contracts/{contract_id}/usage.get.parameters[].description
The initial index from which to return the results.

# paths./rr/api/v1/contracts/{contract_id}/usage/{id}.get.description
Retrieve, update, and delete contract usage revenue records

# paths./rr/api/v1/contracts/{contract_id}/usage/{id}.put.description
Retrieve, update, and delete contract usage revenue records

# paths./rr/api/v1/contracts/{contract_id}/usage/{id}.patch.description
Retrieve, update, and delete contract usage revenue records

# paths./rr/api/v1/contracts/{contract_id}/usage/{id}.delete.description
Retrieve, update, and delete contract usage revenue records

# paths./rr/api/v1/contracts/{contract_id}/usage/{usage_id}/allocations.get.description
Retrieve the current bundle allocation details for a contract subscription, milestone, or usage.

# paths./rr/api/v1/contracts/{contract_id}/usage/{usage_id}/allocations.put.description
        Update the bundle allocations for a contract item.

        The sum of all line amounts must equal the bundle's total_amount.
        Changes will cascade to related RevenueTransactions and JournalEntries.
        

# paths./rr/api/v1/contracts/{contract_id}/usage/{usage_id}/allocations.patch.description
Partially update bundle allocations. Same behavior as PUT.

# paths./rr/api/v1/contracts/{id}/minimum-commit-preview.get.description
Projected monthly minimum commitment true-up for a contract.

Read-only. Returns the shortfall the month-end batch *would* post if it ran
right now. Lets the contract detail screen show a live floor preview without
triggering writes from the UI.

# paths./rr/api/v1/contracts/{id}/terminate.post.description
Terminate a contract and optionally void associated invoices.

        If the user has permission to terminate contracts and void invoices, both operations
        are performed atomically. If the user lacks permission for either operation, a draft
        is created instead, and the response indicates which operations were drafted.

        Returns 400 if any of the provided void_invoice_ids are invalid (not found, already voided,
        has payments, void date is before the invoice date, or in a closed period).

# paths./rr/api/v1/contracts/bulk-search.post.description
Search for contracts by deal_name in a single request.

# paths./rr/api/v1/contracts/parse.post.description
Parse contract details from uploaded PDF files using AI.

# paths./rr/api/v1/customers.get.description
        Retrieve a list of contract customers with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./rr/api/v1/customers.get.parameters[].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.

# paths./rr/api/v1/customers.get.parameters[].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).

# paths./rr/api/v1/customers.get.parameters[].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).

# paths./rr/api/v1/customers.get.parameters[].description
The initial index from which to return the results.

# paths./rr/api/v1/modify-subscription-schedule.post.description
Generate a modified subscription schedule by comparing a new schedule against an existing subscription. Returns the delta between the original and modified schedules, with support for catch-up accounting and contract end date modifications.

# paths./rr/api/v1/product.get.description
        Retrieve a list of contract products with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./rr/api/v1/product.get.parameters[].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.

# paths./rr/api/v1/product.get.parameters[].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).

# paths./rr/api/v1/product.get.parameters[].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).

# paths./rr/api/v1/product.get.parameters[].description
The initial index from which to return the results.

# paths./rr/api/v1/product-bundles.get.description
        Retrieve a list of product bundles with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./rr/api/v1/product-bundles.get.parameters[].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.

# paths./rr/api/v1/product-bundles.get.parameters[].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).

# paths./rr/api/v1/product-bundles.get.parameters[].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).

# paths./rr/api/v1/product-bundles.get.parameters[].description
The initial index from which to return the results.

# paths./rr/api/v1/product-bundles.post.description
Create a new product bundle with products and percentage allocations. Total percentage must equal 100.

# paths./rr/api/v1/transactions.get.description
        Retrieve a list of revenue transactions with optional filtering and sorting.

        Supports including soft-deleted records for audit and recovery purposes.
        When include_deleted=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.
        

# paths./rr/api/v1/transactions.get.parameters[].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.

# paths./rr/api/v1/transactions.get.parameters[].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).

# paths./rr/api/v1/transactions.get.parameters[].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).

# paths./rr/api/v1/transactions.get.parameters[].description
The initial index from which to return the results.

# components.schemas.AccountCashflowClassificationEnum.description
* `NONE` - None
* `OPERATING` - Operating
* `INVESTING` - Investing
* `FINANCING` - Financing

# components.schemas.AccountSubtypeEnum.description
* `BANK` - Bank
* `ACCOUNTS_RECEIVABLE` - Accounts Receivable
* `OTHER_CURRENT_ASSET` - Other Current Asset
* `FIXED_ASSET` - Fixed Asset
* `OTHER_ASSET` - Other Asset
* `ACCOUNTS_PAYABLE` - Accounts Payable
* `UNAPPLIED_CREDITS` - Unapplied Credits
* `CREDIT_CARD` - Credit Card
* `ACCRUED_REVENUE` - Accrued Revenue
* `DEFERRED_REVENUE` - Deferred Revenue
* `OTHER_CURRENT_LIABILITY` - Other Current Liability
* `LONG_TERM_LIABILITY` - Long Term Liability
* `UNBILLED_RECEIVABLE` - Unbilled Receivable
* `EQUITY` - Equity
* `RETAINED_EARNINGS` - Retained Earnings
* `INCOME` - Income
* `COST_OF_GOODS_SOLD` - Cost of Goods Sold
* `EXPENSE` - Expense
* `DEFERRED_EXPENSE` - Deferred Expense
* `OTHER_INCOME` - Other Income
* `OTHER_EXPENSE` - Other Expense
* `REALIZED_GAIN_LOSS` - Realized Gain Loss
* `UNREALIZED_GAIN_LOSS` - Unrealized Gain Loss
* `PREPAID` - Prepaid
* `COST_ALLOCATION` - Cost Allocation
* `UNCATEGORIZED` - Uncategorized

# components.schemas.AccountTypeEnum.description
* `ASSET` - Asset
* `LIABILITY` - Liability
* `EQUITY` - Equity
* `REVENUE` - Revenue
* `COGS` - Cost of Goods Sold
* `OPERATING_EXPENSES` - Operating Expenses
* `OTHER_INCOME` - Other Income
* `OTHER_EXPENSE` - Other Expense
* `UNCATEGORIZED` - Uncategorized
* `COST_ALLOCATION` - Cost Allocation

# components.schemas.AccountingBill.properties.ap_account_name.description
Return AP account name with number in 'number - name' format, similar to name_and_number.

# components.schemas.AccountingBill.properties.navan_region.description
Navan data region (``US``/``EU``) for a Navan-sourced bill, else ``None``.

Mirrors ``ramp_use_sandbox``: the frontend builds the "Open in Navan" deep
link from ``source_id`` and uses this to pick the web-app host
(US -> app.navan.com, EU -> app-fra.navan.com). Navan bills carry no FK to
their connection, so the region is resolved per customer and memoized to
avoid an N+1 lookup across a bill list.

# components.schemas.AccountingBill.properties.withholding_info.description
Withholding context for the bill's entity (AP side).

``estimated_withholding_amount`` covers only the remaining amount due (null once
fully paid); ``withheld_to_date`` is the signed sum of posted withholding (AP legs
are credits, reversals debits), so actuals replace the estimate as payments post.
Certificate-based schemes estimate from the vendor certificate's rate valid today
(falling back to the scheme default).

# components.schemas.AccountingBill.properties.ita_bill_type.description
Israel tax compliance: bill classification type

* `other` - Other
* `equipment` - Equipment

# components.schemas.AccountingBillLine.properties.account_name.description
Combines account number and name in the format "number - name"

# components.schemas.AccountingBillPayment.properties.withheld_amount.description
Tax withheld on this payment (AP): sum of the payment's withholding credit legs.

Reads the ``bill_withheld_by_je`` map that ``AccountingBillSerializer`` populated from
prefetched records, so no per-payment query runs. Void reversals live on a different
journal, so they are naturally excluded.

# components.schemas.AccountingBillPaymentStatusEnum.description
* `partial` - Partially Paid
* `open` - Open
* `paid` - Paid
* `payment_not_found` - Payment Not Found
* `payment_pending` - Payment Pending
* `voided` - Voided

# components.schemas.AccountingCreditMemo.properties.amount_remaining.description
Calculate amount remaining from database fields

# components.schemas.AccountingCreditMemo.properties.credit_account_name.description
Combines account number and name in the format "number - name"

# components.schemas.AccountingCreditMemo.properties.anrok_transaction_id.description
ID of the negation transaction in Anrok for this credit memo

# components.schemas.AccountingCreditMemoLine.properties.account_name.description
Combines account number and name in the format "number - name"

# components.schemas.AccountingDebitMemo.properties.amount_remaining.description
Calculate amount remaining from database fields

# components.schemas.AccountingDebitMemo.properties.debit_account_name.description
Combines account number and name in the format "number - name"

# components.schemas.AccountingDebitMemoLine.properties.account_name.description
Combines account number and name in the format "number - name"

# components.schemas.AccountingInvoice.properties.withholding_info.description
Withholding context for the invoice's entity.

``estimated_withholding_amount`` covers only the remaining amount due (null once
fully paid); ``withheld_to_date`` is the signed sum of posted withholding, so
actuals replace the estimate as receipts come in. Certificate-based schemes
estimate from the entity certificate's rate (falling back to the scheme
default); rules-based schemes sum each line's selected rate over the line
amount, scaled by the remaining-due proportion.

# components.schemas.AccountingInvoice.properties.pre_due_reminder_sent_dates.description
Dictionary tracking when pre-due reminders were sent for each day before due date (e.g., {'3': '2024-01-10', '7': '2024-01-06'})

# components.schemas.AccountingInvoice.properties.anrok_transaction_id.description
ID of the transaction in Anrok (set when transaction is created)

# components.schemas.AccountingInvoice.properties.payment_term_applied_discount.description
Discount amount applied based on payment term early payment discount

# components.schemas.AccountingInvoice.properties.is_migrated.description
True for invoices imported via opening balance migration (no finalization JE).

# components.schemas.AccountingInvoice.properties.ar_account.description
Accounts Receivable account for this invoice. Populated for single-AR and migrated invoices. NULL for multi-AR invoices (aging uses ChartTransactions instead).

# components.schemas.AccountingInvoiceJournalEntryTypeEnum.description
* `reclassification` - Reclassification
* `adjustment` - Adjustment
* `dispute` - Dispute
* `refund` - Refund
* `refund_failure` - Refund Failure
* `fx_loss` - FX Loss
* `recoverables` - Recoverables

# components.schemas.AccountingInvoiceLine.properties.withholding_tax_rate_value.description
Sum of the selected withholding rate's component rates, for line-level preview.

# components.schemas.AccountingInvoiceLine.properties.entity_use_code.description
Avalara entity/use code for line-level tax exemptions

# components.schemas.AccountingInvoiceLine.properties.discount_amount.description
Discount amount calculated from percentage

# components.schemas.AccountingInvoiceLine.properties.withholding_tax_rate.description
Marks this line as subject to withholding; used for preview only. Null = not subject.

# components.schemas.AccountingInvoiceList.description
Lightweight serializer for the invoice list endpoint.

Excludes heavy nested fields (emails, payments, attachments, payment_journal_entries)
that are only needed on the detail view. Keeps lines for the duplicate invoice action.

# components.schemas.AccountingInvoiceList.properties.pre_due_reminder_sent_dates.description
Dictionary tracking when pre-due reminders were sent for each day before due date (e.g., {'3': '2024-01-10', '7': '2024-01-06'})

# components.schemas.AccountingInvoiceList.properties.anrok_transaction_id.description
ID of the transaction in Anrok (set when transaction is created)

# components.schemas.AccountingInvoiceList.properties.payment_term_applied_discount.description
Discount amount applied based on payment term early payment discount

# components.schemas.AccountingInvoiceList.properties.is_migrated.description
True for invoices imported via opening balance migration (no finalization JE).

# components.schemas.AccountingInvoiceList.properties.ar_account.description
Accounts Receivable account for this invoice. Populated for single-AR and migrated invoices. NULL for multi-AR invoices (aging uses ChartTransactions instead).

# components.schemas.AccountingInvoicePayment.properties.withheld_amount.description
Tax withheld on this payment: sum of the payment's own withholding GL legs.

Summed over the payment's legs (not the invoice's withholding records) so a
voided payment still shows what it originally withheld.

# components.schemas.AccountingInvoicePayment.properties.payment_type.description
Type of payment: credit memo application, bank transaction, or manual transaction

* `CREDIT_MEMO` - Credit Memo
* `BANK_TRANSACTION` - Bank Transaction
* `MANUAL_TRANSACTION` - Manual Transaction

# components.schemas.AccountingInvoicePayment.properties.external_id.description
Stable upstream identifier for this payment (e.g. Stripe balance transaction 'btxn_...', Stripe credit note 'cn_...', or the mart's event external_id for customer-balance applications). Used as the natural dedup/idempotency key. Null for manually-entered payments.

# components.schemas.ApplicationStatusEnum.description
* `open` - Open
* `partially_used` - Partially Used
* `used` - Used
* `voided` - Voided

# components.schemas.AsyncTaskStatusEnum.description
* `PENDING` - Pending
* `PROCESSING` - Processing
* `COMPLETED` - Completed
* `FAILED` - Failed
* `CANCELLED` - Cancelled

# components.schemas.BankAccount.properties.aba_routing_number.description
ABA routing number (9 digits) for US bank accounts

# components.schemas.BankAccount.properties.swift_bic.description
SWIFT BIC code (8 or 11 characters) for international accounts

# components.schemas.BankAccountTypeEnum.description
* `CHECKING` - Checking
* `SAVING` - Savings
* `CREDIT_CARD` - Credit Card
* `DEBIT_CARD` - Debit Card
* `INVESTMENT` - Investment
* `LOAN` - Loan

# components.schemas.BillDraftCreate.description
UI-upload create shape. ``source_file`` must be an already-uploaded File row.

# components.schemas.BillDraftRead.description
Full BillDraft read shape — feeds the Drafts tab and detail view.

# components.schemas.BillDraftReadSourceEnum.description
* `email` - Email
* `ui_upload` - UI Upload

# components.schemas.BillDraftReadStatusEnum.description
* `parsing` - Parsing
* `parse_failed` - Parse Failed
* `not_a_bill` - Not a Bill
* `needs_review` - Needs Review
* `unassigned` - Unassigned
* `ready` - Ready
* `promoted` - Promoted
* `discarded` - Discarded

# components.schemas.BillDraftWrite.description
Editable subset used during review (PATCH).

# components.schemas.BillTypeEnum.description
* `BILL` - Bill
* `PAYROLL` - Payroll
* `REIMBURSEMENT` - Reimbursement

# components.schemas.BillingFrequencyEnum.description
* `monthly` - Monthly
* `quarterly` - Quarterly
* `biannual` - Bi Annualy
* `annual` - Annual
* `one_time` - One Time
* `custom` - Custom

# components.schemas.BreakdownTypeEnum.description
* `standard` - Standard (Account-based)
* `department_row` - Department (Row)

# components.schemas.BulkCreateInvoices.description
Serializer for bulk invoice creation. Accepts a list of invoice data.

# components.schemas.BulkCreateInvoices.properties.invoices.description
List of invoice data dictionaries matching AccountingInvoiceSerializer structure

# components.schemas.BulkDepartmentSearch.properties.upsert.description
If true, create departments that don't exist

# components.schemas.BulkMatchTransactionRequest.properties.pairs.description
Ordered list of GL-to-statement transaction pairs to match

# components.schemas.BulkVendorSearch.properties.upsert.description
If true, create vendors that don't exist

# components.schemas.BulkVendorVendorTypeEnum.description
* `vendor` - vendor
* `customer` - customer
* `employee` - employee

# components.schemas.ChartAccount.properties.skip_subledger_validation.description
Allow manual journal entries to post to this AR/AP account, bypassing subledger validation

# components.schemas.ChartAccount.properties.lineage_array.description
Pre-computed lineage array from root to this account

# components.schemas.ChartAccountSettings.properties.recognize_discounts_as_contra_revenue.description
When enabled, recognized discounts post to the discount account instead of netting into revenue.

# components.schemas.ChartAccountSettings.properties.enable_mid_month_convention.description
When enabled, fixed assets placed in service after the threshold day will begin depreciation the following month (full-month depreciation only)

# components.schemas.ChartAccountSettings.properties.mid_month_threshold.description
Day of month threshold (0-31). Assets placed in service AFTER this day will start depreciation the following month

# components.schemas.ChartAccountSettings.properties.use_whole_month_accounting_for_prepaids.description
When enabled, prepaid amortizations will use whole-month accounting (no proration of first/last months)

# components.schemas.ChartAccountSettings.properties.split_invoice_payments_by_line.description
When enabled, invoice payments will be split by line items

# components.schemas.ChartAccountSettings.properties.split_eliminations_by_department.description
When enabled, elimination entries are broken out by department in addition to account and entity

# components.schemas.ChartAccountSettings.properties.platform_fees.description
Account for Stripe platform/subscription fees. Falls back to processing_fees if not set.

# components.schemas.ChartAccountSettings.properties.dispute_expense_account.description
Account for dispute withdrawals (debit) and dispute reinstatement reversals (credit). Falls back to bad_debt_account if not set.

# components.schemas.ChartAccountSettings.properties.dispute_reinstatement_account.description
Account credited when a dispute is reinstated (won). Falls back to dispute_expense_account if not set.

# components.schemas.ChartEntity.properties.primary_entity.description
When set, this entity is an adjusting entity linked to the specified primary entity.

# components.schemas.ChartEntity.properties.disable_service_date.description
When enabled, the Service Date field will be hidden on invoices for this entity

# components.schemas.ChartEntity.properties.enable_mid_month_convention.description
Override customer-level mid-month convention setting for this entity. Leave blank to inherit from customer.

# components.schemas.ChartEntity.properties.mid_month_threshold.description
Override customer-level threshold. Leave blank to inherit from customer.

# components.schemas.ChartEntity.properties.use_whole_month_accounting_for_prepaids.title
Use Whole-Month Accounting for Prepaids (Override)

# components.schemas.ChartEntity.properties.use_whole_month_accounting_for_prepaids.description
Override customer-level whole-month accounting setting for this entity. Leave blank to inherit from customer.

# components.schemas.ChartEntity.properties.allow_payments_in_closed_periods.description
When enabled, allows applying existing transactions as payments to invoices/bills even when the transaction date falls in a closed subledger period.

# components.schemas.ChartEntity.properties.auto_apply_catchup_for_closed_periods.title
Auto-Apply Catch-Up Revenue for Closed Periods

# components.schemas.ChartEntity.properties.auto_apply_catchup_for_closed_periods.description
When enabled, contracts signed after their revenue start month automatically catch up the elapsed revenue into the sign month, floored at the first open period under the close so it never posts to a closed period. Defaults off — flip in entity settings to opt in.

# components.schemas.ChartEntity.properties.lineage_array.description
Pre-computed lineage array from root to this entity

# components.schemas.ChartEntity.properties.tax_identification_number.description
Tax ID such as Korean BRN, GST number, or EU VAT number

# components.schemas.ChartEntity.properties.withholding_scheme.description
Withholding tax regime this entity operates under (e.g. Israel NB, India TDS). A bill resolves its scheme via bill.entity.withholding_scheme.

# components.schemas.ChartEntity.properties.withholding_certificate.description
This entity's own authority-issued certificate (AR side): determines the expected rate customers withhold when paying our invoices under a certificate-based scheme.

# components.schemas.ChartEntityMinimal.description
Minimal entity serializer for intercompany operations.

Only exposes id, name, and currency - the minimum needed for
entity selection in intercompany journal entries. This prevents
data leakage of sensitive entity details (addresses, emails, etc.)
to users who may not have full access to all entities.

# components.schemas.ChartTransaction.properties.account_name.description
Combines account number and name in the format "number - name"

# components.schemas.ChartTransaction.properties.vendor_name.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.

# components.schemas.ChartTransaction.properties.date_month.description
Two-digit month (MM) derived from `posted_at`, the transaction date.

# components.schemas.ChartTransaction.properties.date_year.description
Four-digit year (YYYY) derived from `posted_at`, the transaction date.

# components.schemas.ChartTransaction.properties.amount.description
Amount in consolidated currency (the currency of the root entity).

# components.schemas.ChartTransaction.properties.amount_native.description
Amount in the currency the transaction was originally created in.

# components.schemas.ChartTransaction.properties.amount_book.description
Amount in the currency of the entity this transaction belongs to.

# components.schemas.ChartTransaction.properties.created_fixed_assets.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).

# components.schemas.ComponentTypeEnum.description
* `SUBSCRIPTION` - Subscription
* `MILESTONE` - Milestone
* `USAGE` - Usage

# components.schemas.ConfirmTransactionSelectionRequest.properties.selected.description
List of GL transaction IDs to mark as reconciled

# components.schemas.ConfirmTransactionSelectionRequest.properties.selected_statements.description
Statement transaction IDs to auto-match to GL selections by amount

# components.schemas.Contract.properties.contract_end_date.description
Fixed end date for standard contracts. Leave null for evergreen contracts (is_evergreen=true).

# components.schemas.Contract.properties.is_evergreen.description
Set true for evergreen contracts (no fixed end date). Evergreen contracts cannot also be auto-renew. Auto-renew is a legacy method to extend contracts.

# components.schemas.Contract.properties.auto_send_invoices.description
When true, generated invoices are automatically sent on their invoice date.

# components.schemas.Contract.properties.skip_evergreen_invoice_generation.description
For Evergreen contracts only. Set at contract creation; existing contracts cannot change this setting. False means current behavior. True skips only Campfire's auto-generated evergreen invoices; revenue transactions still generate; existing invoices are not cleaned up.

# components.schemas.Contract.properties.auto_apply_customer_stripe_config_to_invoices.description
Evergreen contracts only. When true, evergreen-generated invoices inherit stripe_connection and use_stripe_auto_bill from the contract customer.

# components.schemas.Contract.properties.effective_end_date.description
Rolling horizon end date for active evergreen contracts. It will be auto-generated by Campfire backend. Null for standard contracts.

# components.schemas.Contract.properties.working_end_date.description
Canonical end date used by the system. Equals contract_end_date for standard or terminated contracts, and effective_end_date for active evergreen contracts.

# components.schemas.Contract.properties.evergreen_locked_date.description
Inclusive lock date for evergreen contracts based on paid invoices and close books date. Dates on or before this value are immutable. Null for non-evergreen contracts, or when no financial locking events exist.

# components.schemas.Contract.properties.minimum_monthly_commitment_amount.description
Minimum monthly commitment amount (allowance threshold)

# components.schemas.Contract.properties.minimum_monthly_commitment_quantity.description
Minimum monthly commitment quantity (allowance threshold in units)

# components.schemas.ContractBundle.properties.end_date.description
Bundle end date. Required for standard contracts. For evergreen contracts this may be null to follow the contract timeline, or set to a billing-period end date.

# components.schemas.ContractBundle.properties.rebalance_journal_entries_indefinitely.description
Should only be used for Evergreen contracts. When true, linked invoice journal entries are rebalanced on each evergreen contract extension.

# components.schemas.ContractCustomer.properties.business_type.description
Business type classification (e.g., Korean NTS 업태)

# components.schemas.ContractCustomer.properties.business_category.description
Business category classification (e.g., Korean NTS 종목)

# components.schemas.ContractCustomer.properties.entity_use_code.description
Avalara entity/use code for tax exemptions (e.g., A - Federal Government, B - State/Local Govt)

# components.schemas.ContractCustomer.properties.withholding_tax_id.description
Vendor's tax-authority ID for withholding (PAN for India, TZ for Israel). Dedicated field since these have format/checksum rules distinct from business_id_ssn.

# components.schemas.ContractCustomer.properties.lineage_array.description
Pre-computed lineage array from root to this vendor

# components.schemas.ContractPrepaidCommit.properties.discount_percentage.description
Discount applied to gross usage (e.g. 20.00 for 20%)

# components.schemas.ContractPrepaidCommit.properties.rate.description
List price per unit. Prepaid usage = rate * (1 - discount%). Overage = rate (no discount).

# components.schemas.ContractPrepaidCommit.properties.priority.description
Drawdown order when multiple commits exist (lower = higher priority)

# components.schemas.ContractPrepaidCommit.properties.overage_invoice_cadence.description
How often overage/on-demand usage is invoiced

* `monthly` - Monthly
* `quarterly` - Quarterly
* `biannual` - Bi Annualy
* `annual` - Annual
* `one_time` - One Time
* `custom` - Custom

# components.schemas.ContractPrepaidCommit.properties.auto_send_overage_invoices.description
Automatically send overage invoices when generated

# components.schemas.ContractPrepaidCommit.properties.overage_invoice_start_month.description
Anchor date for overage billing cycles. Defaults to start_date.

# components.schemas.ContractPrepaidCommitConsumption.properties.discount_amount.description
gross_usage_amount * discount_percentage / 100

# components.schemas.ContractPrepaidCommitConsumption.properties.revenue_transaction.description
Recognized revenue for included (prepaid) portion

# components.schemas.ContractPrepaidCommitConsumption.properties.adjustments.description
Return adjustments recorded during this period, grouped by original period with gross/discount/net/overage split.

# components.schemas.ContractPrepaidCommitStatusEnum.description
* `ACTIVE` - Active
* `EXHAUSTED` - Exhausted
* `EXPIRED` - Expired

# components.schemas.ContractProductBundle.description
Serializer for ContractProductBundle with nested lines.

Used for retrieving and updating contract-specific bundle allocations.
When updating, validates that line amounts sum to total_amount.

# components.schemas.ContractProductBundle.properties.source_bundle.description
Original ProductBundle template this was created from

# components.schemas.ContractProductBundle.properties.total_amount.description
Total amount to be allocated across products

# components.schemas.ContractProductBundle.properties.license_term_start_date.description
Date the license/service term begins. For SF-ingested mixed bundles, drives the linked subscription start_date and milestone milestone_date. Snapshotted at ingest time for audit.

# components.schemas.ContractProductBundleLine.description
Serializer for individual product allocation lines within a ContractProductBundle.

# components.schemas.ContractProductBundleLine.properties.percentage.description
Calculated percentage based on amount / total

# components.schemas.ContractProductBundleLine.properties.original_percentage.description
Original percentage from source ProductBundle for auditing

# components.schemas.ContractProductBundleLine.properties.component_type.description
Snapshotted from ProductBundleLine.component_type at snapshot time. NULL = legacy single-type bundle.

* `SUBSCRIPTION` - Subscription
* `MILESTONE` - Milestone
* `USAGE` - Usage

# components.schemas.ContractProductBundleLineRead.properties.original_percentage.description
Original percentage from source ProductBundle for auditing

# components.schemas.ContractProductBundleLineUpdate.description
Serializer for updating individual line amounts.

# components.schemas.ContractProductBundleLineUpdate.properties.amount.description
New dollar amount for this product allocation

# components.schemas.ContractProductBundleRead.description
Read-only serializer for ContractProductBundle in milestone responses.

# components.schemas.ContractProductBundleRead.properties.source_bundle.description
Original ProductBundle template this was created from

# components.schemas.ContractProductBundleRead.properties.total_amount.description
Total amount to be allocated across products

# components.schemas.ContractProductBundleUpdate.description
Serializer for the allocation update request body.

# components.schemas.ContractStatusEnum.description
* `ACTIVE` - Active
* `PENDING` - Pending
* `COMPLETED` - Completed
* `DELETED` - Deleted

# components.schemas.ContractSubscription.properties.renewal_behavior.description
Controls how this subscription ends. FOLLOW_CONTRACT extends with the evergreen contract's rolling end boundary (working_end_date / effective_end_date). FIXED_END keeps an explicit subscription end_date. Default is FIXED_END.

* `FOLLOW_CONTRACT` - Follow Contract
* `FIXED_END` - Fixed End Date

# components.schemas.ContractSubscription.properties.period_amount.description
Evergreen-only input amount per billing period (for example 10000.00 for a quarterly period). Provide this to auto-generate lines for evergreen subscriptions. Ignored for non-evergreen writes.

# components.schemas.ContractSubscription.properties.invoiced_amount_migration.description
Migration-only: total amount already invoiced in a prior system. When provided, marks revenue transactions as migration-invoiced up to this amount.

# components.schemas.ContractSubscription.properties.discount.description
Per-unit discount in contract currency. Line amount is Quantity × (Rate − Discount). Null when no discount is configured.

# components.schemas.ContractSubscription.properties.catchup_manually_overridden.description
True when a user explicitly set use_catchup or catchup_date via the modal. Suppresses automatic reconciliation by integration syncs so the user's choice survives.

# components.schemas.ContractSubscription.properties.invoice_calculation.description
Fixed Rate: rate stays constant, quantity calculated. Fixed Quantity: quantity stays constant (e.g., seats), rate calculated.

* `FIXED_RATE` - Fixed Rate
* `FIXED_QUANTITY` - Fixed Quantity

# components.schemas.ContractSubscription.properties.rates_are_net.description
When True, this subscription's rate and waterfall amounts already reflect post-discount (net) pricing. Prevents invoice creation from double-counting discounts via a separate Discount RevenueTransaction.

# components.schemas.CostAllocationLine.properties.account_name.description
Combines account number and name in the format "number - name"

# components.schemas.CreditMemoTypeEnum.description
* `credit_memo` - Credit Memo
* `overpayment` - Overpayment

# components.schemas.EmptyTransactionInput.properties.payment_date.description
Payment date for term discount calculation

# components.schemas.ErrorResponse.properties.error.description
Error message describing what went wrong

# components.schemas.FieldTypeEnum.description
* `text` - Free Text
* `single_select` - Single Select
* `date` - Date
* `number` - Number
* `boolean` - Boolean

# components.schemas.FixedAssetAutomationMatch.description
Serializer for pending asset matches in review queue

# components.schemas.FixedAssetAutomationMatch.properties.created_asset.description
The asset created when this match was accepted

# components.schemas.FixedAssetAutomationRule.properties.entity.description
Entity this rule applies to (determines book currency)

# components.schemas.FixedAssetAutomationRule.properties.currency.description
Book currency from entity (auto-populated)

# components.schemas.FixedAssetAutomationRule.properties.account.description
Create assets when transactions are posted to this account

# components.schemas.FixedAssetAutomationRule.properties.amount_threshold.description
Minimum transaction amount in book currency (materiality threshold)

# components.schemas.FixedAssetAutomationRule.properties.needs_review.description
If true, queue assets for review before creation

# components.schemas.FixedAssetAutomationRule.properties.forward_looking.description
Only apply to transactions created after this rule

# components.schemas.FixedAssetStatusEnum.description
* `ACTIVE` - Active
* `PAUSED` - Paused
* `DEPRECIATED` - Depreciated
* `DISPOSED` - Disposed

# components.schemas.GenerageSubscriptionSchedule.properties.end_date.description
End date of the subscription period. Defaults to 1 year from start date if not provided.

# components.schemas.GenerageSubscriptionSchedule.properties.total_value.description
Total contract value for the subscription period.

# components.schemas.GenerageSubscriptionSchedule.properties.mrr.description
Monthly recurring revenue. If not provided, it is calculated from total_value and the subscription period.

# components.schemas.GenerageSubscriptionSchedule.properties.use_daily_accounting.description
Whether to use daily (vs monthly) revenue recognition.

# components.schemas.GenerageSubscriptionSchedule.properties.proration_method.description
Proration method. When provided, takes precedence over use_daily_accounting (DAILY↔True, STANDARD/THIRTY_DAY↔False).

* `standard` - Standard (actual month length)
* `thirty_day` - Fixed 30-day month
* `daily` - Daily

# components.schemas.GenerageSubscriptionSchedule.properties.use_catchup.description
Enable catch-up accounting for retroactive amendments.

# components.schemas.GenerageSubscriptionSchedule.properties.catchup_date.description
Date from which to apply catch-up adjustments. Required if use_catchup is true.

# components.schemas.GenerageSubscriptionSchedule.properties.modified_subscription.description
ID of the existing contract subscription being modified.

# components.schemas.GenerageSubscriptionSchedule.properties.does_modify_contract_end_date.description
Whether this modification changes the contract end date.

# components.schemas.GenerageSubscriptionSchedule.properties.apply_prospectively.description
Apply changes prospectively from catchup_date instead of retroactively. Only valid when use_catchup is true.

# components.schemas.IntercompanyJournalEntry.properties.entities.description
Entities involved in this intercompany journal entry. Used for consolidation filtering.

# components.schemas.InvoiceCalculationEnum.description
* `FIXED_RATE` - Fixed Rate
* `FIXED_QUANTITY` - Fixed Quantity

# components.schemas.InvoicePaymentSync.properties.payment_type.description
Type of payment: credit memo application, bank transaction, or manual transaction

* `CREDIT_MEMO` - Credit Memo
* `BANK_TRANSACTION` - Bank Transaction
* `MANUAL_TRANSACTION` - Manual Transaction

# components.schemas.InvoicePaymentSync.properties.external_id.description
Stable upstream identifier for this payment (e.g. Stripe balance transaction 'btxn_...', Stripe credit note 'cn_...', or the mart's event external_id for customer-balance applications). Used as the natural dedup/idempotency key. Null for manually-entered payments.

# components.schemas.InvoiceReportResponse.description
Output schema for invoice report responses.

# components.schemas.InvoiceReportResponse.properties.next.description
Next page URL (null for datatable pagination)

# components.schemas.InvoiceReportResponse.properties.engine_used.description
Execution engine: 'postgres'

* `postgres` - postgres

# components.schemas.InvoiceReportResponse.properties.pivot_value_mappings.description
Mapping of pivot field -> {display_name: id} for drilldown

# components.schemas.InvoiceReportResultRow.description
Schema for a single result row (dimensions + aggregates + drilldown).

# components.schemas.InvoiceReportResultRow.properties.filter_params.description
Filter parameters for drilldown navigation

# components.schemas.ItaBillTypeEnum.description
* `other` - Other
* `equipment` - Equipment

# components.schemas.JournalEntry.properties.created_by.description
Derived user ID of the journal entry creator. Check created_by_source before explaining provenance.

# components.schemas.JournalEntry.properties.created_by_name.description
Derived name of the journal entry creator. Check created_by_source before explaining provenance.

# components.schemas.JournalEntry.properties.navan_region.description
Navan data region (``US``/``EU``) for a Navan-sourced journal entry, else ``None``.

Mirrors ``ramp_use_sandbox``: the frontend builds the "Open in Navan" deep
link from ``source_id`` and uses this to pick the web-app host
(US -> app.navan.com, EU -> app-fra.navan.com). Navan records carry no FK to
their connection, so the region is resolved per customer and memoized to
avoid an N+1 lookup across a transaction list.

# components.schemas.MarkCreditMemoUsed.description
Serializer for marking a credit memo as used with a transaction.

# components.schemas.MarkDebitMemoUsed.description
Serializer for marking a debit memo as used with a transaction.

# components.schemas.MarkInvoicePaidResponse.description
200 payload for the mark-invoice-paid endpoint.

The endpoint returns ids of the records it created rather than the invoice itself.
``auto_created_credit_memos`` is only present when an overpayment produced one.

# components.schemas.OverageInvoiceCadenceEnum.description
* `monthly` - Monthly
* `quarterly` - Quarterly
* `biannual` - Bi Annualy
* `annual` - Annual
* `one_time` - One Time
* `custom` - Custom

# components.schemas.PatchedAccountingBill.properties.ap_account_name.description
Return AP account name with number in 'number - name' format, similar to name_and_number.

# components.schemas.PatchedAccountingBill.properties.navan_region.description
Navan data region (``US``/``EU``) for a Navan-sourced bill, else ``None``.

Mirrors ``ramp_use_sandbox``: the frontend builds the "Open in Navan" deep
link from ``source_id`` and uses this to pick the web-app host
(US -> app.navan.com, EU -> app-fra.navan.com). Navan bills carry no FK to
their connection, so the region is resolved per customer and memoized to
avoid an N+1 lookup across a bill list.

# components.schemas.PatchedAccountingBill.properties.withholding_info.description
Withholding context for the bill's entity (AP side).

``estimated_withholding_amount`` covers only the remaining amount due (null once
fully paid); ``withheld_to_date`` is the signed sum of posted withholding (AP legs
are credits, reversals debits), so actuals replace the estimate as payments post.
Certificate-based schemes estimate from the vendor certificate's rate valid today
(falling back to the scheme default).

# components.schemas.PatchedAccountingBill.properties.ita_bill_type.description
Israel tax compliance: bill classification type

* `other` - Other
* `equipment` - Equipment

# components.schemas.PatchedAccountingCreditMemo.properties.amount_remaining.description
Calculate amount remaining from database fields

# components.schemas.PatchedAccountingCreditMemo.properties.credit_account_name.description
Combines account number and name in the format "number - name"

# components.schemas.PatchedAccountingCreditMemo.properties.anrok_transaction_id.description
ID of the negation transaction in Anrok for this credit memo

# components.schemas.PatchedAccountingDebitMemo.properties.amount_remaining.description
Calculate amount remaining from database fields

# components.schemas.PatchedAccountingDebitMemo.properties.debit_account_name.description
Combines account number and name in the format "number - name"

# components.schemas.PatchedAccountingInvoice.properties.withholding_info.description
Withholding context for the invoice's entity.

``estimated_withholding_amount`` covers only the remaining amount due (null once
fully paid); ``withheld_to_date`` is the signed sum of posted withholding, so
actuals replace the estimate as receipts come in. Certificate-based schemes
estimate from the entity certificate's rate (falling back to the scheme
default); rules-based schemes sum each line's selected rate over the line
amount, scaled by the remaining-due proportion.

# components.schemas.PatchedAccountingInvoice.properties.pre_due_reminder_sent_dates.description
Dictionary tracking when pre-due reminders were sent for each day before due date (e.g., {'3': '2024-01-10', '7': '2024-01-06'})

# components.schemas.PatchedAccountingInvoice.properties.anrok_transaction_id.description
ID of the transaction in Anrok (set when transaction is created)

# components.schemas.PatchedAccountingInvoice.properties.payment_term_applied_discount.description
Discount amount applied based on payment term early payment discount

# components.schemas.PatchedAccountingInvoice.properties.is_migrated.description
True for invoices imported via opening balance migration (no finalization JE).

# components.schemas.PatchedAccountingInvoice.properties.ar_account.description
Accounts Receivable account for this invoice. Populated for single-AR and migrated invoices. NULL for multi-AR invoices (aging uses ChartTransactions instead).

# components.schemas.PatchedBankAccount.properties.aba_routing_number.description
ABA routing number (9 digits) for US bank accounts

# components.schemas.PatchedBankAccount.properties.swift_bic.description
SWIFT BIC code (8 or 11 characters) for international accounts

# components.schemas.PatchedBillDraftWrite.description
Editable subset used during review (PATCH).

# components.schemas.PatchedChartAccount.properties.skip_subledger_validation.description
Allow manual journal entries to post to this AR/AP account, bypassing subledger validation

# components.schemas.PatchedChartAccount.properties.lineage_array.description
Pre-computed lineage array from root to this account

# components.schemas.PatchedChartAccountSettings.properties.recognize_discounts_as_contra_revenue.description
When enabled, recognized discounts post to the discount account instead of netting into revenue.

# components.schemas.PatchedChartAccountSettings.properties.enable_mid_month_convention.description
When enabled, fixed assets placed in service after the threshold day will begin depreciation the following month (full-month depreciation only)

# components.schemas.PatchedChartAccountSettings.properties.mid_month_threshold.description
Day of month threshold (0-31). Assets placed in service AFTER this day will start depreciation the following month

# components.schemas.PatchedChartAccountSettings.properties.use_whole_month_accounting_for_prepaids.description
When enabled, prepaid amortizations will use whole-month accounting (no proration of first/last months)

# components.schemas.PatchedChartAccountSettings.properties.split_invoice_payments_by_line.description
When enabled, invoice payments will be split by line items

# components.schemas.PatchedChartAccountSettings.properties.split_eliminations_by_department.description
When enabled, elimination entries are broken out by department in addition to account and entity

# components.schemas.PatchedChartAccountSettings.properties.platform_fees.description
Account for Stripe platform/subscription fees. Falls back to processing_fees if not set.

# components.schemas.PatchedChartAccountSettings.properties.dispute_expense_account.description
Account for dispute withdrawals (debit) and dispute reinstatement reversals (credit). Falls back to bad_debt_account if not set.

# components.schemas.PatchedChartAccountSettings.properties.dispute_reinstatement_account.description
Account credited when a dispute is reinstated (won). Falls back to dispute_expense_account if not set.

# components.schemas.PatchedChartEntity.properties.primary_entity.description
When set, this entity is an adjusting entity linked to the specified primary entity.

# components.schemas.PatchedChartEntity.properties.disable_service_date.description
When enabled, the Service Date field will be hidden on invoices for this entity

# components.schemas.PatchedChartEntity.properties.enable_mid_month_convention.description
Override customer-level mid-month convention setting for this entity. Leave blank to inherit from customer.

# components.schemas.PatchedChartEntity.properties.mid_month_threshold.description
Override customer-level threshold. Leave blank to inherit from customer.

# components.schemas.PatchedChartEntity.properties.use_whole_month_accounting_for_prepaids.title
Use Whole-Month Accounting for Prepaids (Override)

# components.schemas.PatchedChartEntity.properties.use_whole_month_accounting_for_prepaids.description
Override customer-level whole-month accounting setting for this entity. Leave blank to inherit from customer.

# components.schemas.PatchedChartEntity.properties.allow_payments_in_closed_periods.description
When enabled, allows applying existing transactions as payments to invoices/bills even when the transaction date falls in a closed subledger period.

# components.schemas.PatchedChartEntity.properties.auto_apply_catchup_for_closed_periods.title
Auto-Apply Catch-Up Revenue for Closed Periods

# components.schemas.PatchedChartEntity.properties.auto_apply_catchup_for_closed_periods.description
When enabled, contracts signed after their revenue start month automatically catch up the elapsed revenue into the sign month, floored at the first open period under the close so it never posts to a closed period. Defaults off — flip in entity settings to opt in.

# components.schemas.PatchedChartEntity.properties.lineage_array.description
Pre-computed lineage array from root to this entity

# components.schemas.PatchedChartEntity.properties.tax_identification_number.description
Tax ID such as Korean BRN, GST number, or EU VAT number

# components.schemas.PatchedChartEntity.properties.withholding_scheme.description
Withholding tax regime this entity operates under (e.g. Israel NB, India TDS). A bill resolves its scheme via bill.entity.withholding_scheme.

# components.schemas.PatchedChartEntity.properties.withholding_certificate.description
This entity's own authority-issued certificate (AR side): determines the expected rate customers withhold when paying our invoices under a certificate-based scheme.

# components.schemas.PatchedChartTransaction.properties.account_name.description
Combines account number and name in the format "number - name"

# components.schemas.PatchedChartTransaction.properties.vendor_name.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.

# components.schemas.PatchedChartTransaction.properties.date_month.description
Two-digit month (MM) derived from `posted_at`, the transaction date.

# components.schemas.PatchedChartTransaction.properties.date_year.description
Four-digit year (YYYY) derived from `posted_at`, the transaction date.

# components.schemas.PatchedChartTransaction.properties.amount.description
Amount in consolidated currency (the currency of the root entity).

# components.schemas.PatchedChartTransaction.properties.amount_native.description
Amount in the currency the transaction was originally created in.

# components.schemas.PatchedChartTransaction.properties.amount_book.description
Amount in the currency of the entity this transaction belongs to.

# components.schemas.PatchedChartTransaction.properties.created_fixed_assets.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).

# components.schemas.PatchedContract.properties.contract_end_date.description
Fixed end date for standard contracts. Leave null for evergreen contracts (is_evergreen=true).

# components.schemas.PatchedContract.properties.is_evergreen.description
Set true for evergreen contracts (no fixed end date). Evergreen contracts cannot also be auto-renew. Auto-renew is a legacy method to extend contracts.

# components.schemas.PatchedContract.properties.auto_send_invoices.description
When true, generated invoices are automatically sent on their invoice date.

# components.schemas.PatchedContract.properties.skip_evergreen_invoice_generation.description
For Evergreen contracts only. Set at contract creation; existing contracts cannot change this setting. False means current behavior. True skips only Campfire's auto-generated evergreen invoices; revenue transactions still generate; existing invoices are not cleaned up.

# components.schemas.PatchedContract.properties.auto_apply_customer_stripe_config_to_invoices.description
Evergreen contracts only. When true, evergreen-generated invoices inherit stripe_connection and use_stripe_auto_bill from the contract customer.

# components.schemas.PatchedContract.properties.effective_end_date.description
Rolling horizon end date for active evergreen contracts. It will be auto-generated by Campfire backend. Null for standard contracts.

# components.schemas.PatchedContract.properties.working_end_date.description
Canonical end date used by the system. Equals contract_end_date for standard or terminated contracts, and effective_end_date for active evergreen contracts.

# components.schemas.PatchedContract.properties.evergreen_locked_date.description
Inclusive lock date for evergreen contracts based on paid invoices and close books date. Dates on or before this value are immutable. Null for non-evergreen contracts, or when no financial locking events exist.

# components.schemas.PatchedContract.properties.minimum_monthly_commitment_amount.description
Minimum monthly commitment amount (allowance threshold)

# components.schemas.PatchedContract.properties.minimum_monthly_commitment_quantity.description
Minimum monthly commitment quantity (allowance threshold in units)

# components.schemas.PatchedContractBundle.properties.end_date.description
Bundle end date. Required for standard contracts. For evergreen contracts this may be null to follow the contract timeline, or set to a billing-period end date.

# components.schemas.PatchedContractBundle.properties.rebalance_journal_entries_indefinitely.description
Should only be used for Evergreen contracts. When true, linked invoice journal entries are rebalanced on each evergreen contract extension.

# components.schemas.PatchedContractCustomer.properties.business_type.description
Business type classification (e.g., Korean NTS 업태)

# components.schemas.PatchedContractCustomer.properties.business_category.description
Business category classification (e.g., Korean NTS 종목)

# components.schemas.PatchedContractCustomer.properties.entity_use_code.description
Avalara entity/use code for tax exemptions (e.g., A - Federal Government, B - State/Local Govt)

# components.schemas.PatchedContractCustomer.properties.withholding_tax_id.description
Vendor's tax-authority ID for withholding (PAN for India, TZ for Israel). Dedicated field since these have format/checksum rules distinct from business_id_ssn.

# components.schemas.PatchedContractCustomer.properties.lineage_array.description
Pre-computed lineage array from root to this vendor

# components.schemas.PatchedContractPrepaidCommit.properties.discount_percentage.description
Discount applied to gross usage (e.g. 20.00 for 20%)

# components.schemas.PatchedContractPrepaidCommit.properties.rate.description
List price per unit. Prepaid usage = rate * (1 - discount%). Overage = rate (no discount).

# components.schemas.PatchedContractPrepaidCommit.properties.priority.description
Drawdown order when multiple commits exist (lower = higher priority)

# components.schemas.PatchedContractPrepaidCommit.properties.overage_invoice_cadence.description
How often overage/on-demand usage is invoiced

* `monthly` - Monthly
* `quarterly` - Quarterly
* `biannual` - Bi Annualy
* `annual` - Annual
* `one_time` - One Time
* `custom` - Custom

# components.schemas.PatchedContractPrepaidCommit.properties.auto_send_overage_invoices.description
Automatically send overage invoices when generated

# components.schemas.PatchedContractPrepaidCommit.properties.overage_invoice_start_month.description
Anchor date for overage billing cycles. Defaults to start_date.

# components.schemas.PatchedContractProductBundleUpdate.description
Serializer for the allocation update request body.

# components.schemas.PatchedContractSubscription.properties.renewal_behavior.description
Controls how this subscription ends. FOLLOW_CONTRACT extends with the evergreen contract's rolling end boundary (working_end_date / effective_end_date). FIXED_END keeps an explicit subscription end_date. Default is FIXED_END.

* `FOLLOW_CONTRACT` - Follow Contract
* `FIXED_END` - Fixed End Date

# components.schemas.PatchedContractSubscription.properties.period_amount.description
Evergreen-only input amount per billing period (for example 10000.00 for a quarterly period). Provide this to auto-generate lines for evergreen subscriptions. Ignored for non-evergreen writes.

# components.schemas.PatchedContractSubscription.properties.invoiced_amount_migration.description
Migration-only: total amount already invoiced in a prior system. When provided, marks revenue transactions as migration-invoiced up to this amount.

# components.schemas.PatchedContractSubscription.properties.discount.description
Per-unit discount in contract currency. Line amount is Quantity × (Rate − Discount). Null when no discount is configured.

# components.schemas.PatchedContractSubscription.properties.catchup_manually_overridden.description
True when a user explicitly set use_catchup or catchup_date via the modal. Suppresses automatic reconciliation by integration syncs so the user's choice survives.

# components.schemas.PatchedContractSubscription.properties.invoice_calculation.description
Fixed Rate: rate stays constant, quantity calculated. Fixed Quantity: quantity stays constant (e.g., seats), rate calculated.

* `FIXED_RATE` - Fixed Rate
* `FIXED_QUANTITY` - Fixed Quantity

# components.schemas.PatchedContractSubscription.properties.rates_are_net.description
When True, this subscription's rate and waterfall amounts already reflect post-discount (net) pricing. Prevents invoice creation from double-counting discounts via a separate Discount RevenueTransaction.

# components.schemas.PatchedFixedAssetAutomationMatch.description
Serializer for pending asset matches in review queue

# components.schemas.PatchedFixedAssetAutomationMatch.properties.created_asset.description
The asset created when this match was accepted

# components.schemas.PatchedFixedAssetAutomationRule.properties.entity.description
Entity this rule applies to (determines book currency)

# components.schemas.PatchedFixedAssetAutomationRule.properties.currency.description
Book currency from entity (auto-populated)

# components.schemas.PatchedFixedAssetAutomationRule.properties.account.description
Create assets when transactions are posted to this account

# components.schemas.PatchedFixedAssetAutomationRule.properties.amount_threshold.description
Minimum transaction amount in book currency (materiality threshold)

# components.schemas.PatchedFixedAssetAutomationRule.properties.needs_review.description
If true, queue assets for review before creation

# components.schemas.PatchedFixedAssetAutomationRule.properties.forward_looking.description
Only apply to transactions created after this rule

# components.schemas.PatchedIntercompanyJournalEntry.properties.entities.description
Entities involved in this intercompany journal entry. Used for consolidation filtering.

# components.schemas.PatchedJournalEntry.properties.created_by.description
Derived user ID of the journal entry creator. Check created_by_source before explaining provenance.

# components.schemas.PatchedJournalEntry.properties.created_by_name.description
Derived name of the journal entry creator. Check created_by_source before explaining provenance.

# components.schemas.PatchedJournalEntry.properties.navan_region.description
Navan data region (``US``/``EU``) for a Navan-sourced journal entry, else ``None``.

Mirrors ``ramp_use_sandbox``: the frontend builds the "Open in Navan" deep
link from ``source_id`` and uses this to pick the web-app host
(US -> app.navan.com, EU -> app-fra.navan.com). Navan records carry no FK to
their connection, so the region is resolved per customer and memoized to
avoid an N+1 lookup across a transaction list.

# components.schemas.PatchedProduct.properties.recognize_revenue.description
If False, contract-sync skips the revenue-recognition waterfall for this product (no ContractSubscription / RevenueTransaction rows).

# components.schemas.PatchedProduct.properties.is_immediate_recognition.description
When true, revenue for this product is recognized in full on the invoice finalization date instead of being amortized over the service period.  Used by the Stripe accrual JE waterfall.

# components.schemas.PatchedProduct.properties.avalara_tax_code.description
Avalara tax code (e.g., SW052000 for SAAS)

# components.schemas.PatchedProduct.properties.apply_dept_tag_to_invoice_journals.description
Apply Department and Tag categorization to all lines on Invoice Journals

# components.schemas.PatchedReconciliationReportV2.properties.statement_recognition_cost_usd.description
Estimated USD cost of AI bank-statement parsing for this report (from summed page token usage).

# components.schemas.PatchedReconciliationReportV2.properties.statement_recognition_input_tokens.description
Sum of input tokens from statement parsing across all pages (set on finalize).

# components.schemas.PatchedReconciliationReportV2.properties.statement_recognition_output_tokens.description
Sum of output tokens from statement parsing across all pages (set on finalize).

# components.schemas.PatchedReconciliationReportV2.properties.statement_recognition_token_total.description
Input plus output tokens for this report (set on finalize).

# components.schemas.PatchedReconciliationReportV2.properties.statement_recognition_model_name.description
LLM model used for statement parsing when token totals were recorded.

# components.schemas.PatchedRevenueTransaction.properties.balance_adjustment.description
Invoice starting balance or other balance adjustments (e.g., previous balance applied to this transaction)

# components.schemas.PatchedRevenueTransaction.properties.is_migration_invoiced.description
Marked as invoiced during migration. Does not create GL entries or AR.

# components.schemas.PatchedRevenueTransaction.properties.contract_product_bundle.description
Reference to contract-specific editable product bundle allocation

# components.schemas.PatchedTransactionMatch.properties.snapshot.description
Snapshot of transaction data preserved for training data when the transaction is deleted.

# components.schemas.PatchedVendor.properties.business_type.description
Business type classification (e.g., Korean NTS 업태)

# components.schemas.PatchedVendor.properties.business_category.description
Business category classification (e.g., Korean NTS 종목)

# components.schemas.PatchedVendor.properties.entity_use_code.description
Avalara entity/use code for tax exemptions (e.g., A - Federal Government, B - State/Local Govt)

# components.schemas.PatchedVendor.properties.withholding_tax_id.description
Vendor's tax-authority ID for withholding (PAN for India, TZ for Israel). Dedicated field since these have format/checksum rules distinct from business_id_ssn.

# components.schemas.PatchedVendor.properties.lineage_array.description
Pre-computed lineage array from root to this vendor

# components.schemas.PaymentStatusCdcEnum.description
* `draft` - Draft
* `open` - Open
* `sent` - Sent
* `partial` - Partially Paid
* `paid` - Paid
* `uncollectible` - Uncollectible
* `voided` - Voided

# components.schemas.PaymentTypeEnum.description
* `CREDIT_MEMO` - Credit Memo
* `BANK_TRANSACTION` - Bank Transaction
* `MANUAL_TRANSACTION` - Manual Transaction

# components.schemas.PrepaidUsageEvent.properties.data.description
Flexible key-value pairs for customer-specific columns (team_id, product_feature, model_intent, etc.)

# components.schemas.PrepaidUsageEvent.properties.adjustment_date.description
Date the adjustment was recorded. Null for normal events.

# components.schemas.PrepaidUsageEvent.properties.original_period_month.description
The original period being corrected (only for adjustments)

# components.schemas.PricingModelEnum.description
* `unit_based` - Unit based pricing
* `fixed_fee` - Fixed fee pricing
* `percentage_based` - Percentage based pricing
* `graduated_tiered` - Graduated tiered pricing
* `volume_based` - Volume based pricing

# components.schemas.Product.properties.recognize_revenue.description
If False, contract-sync skips the revenue-recognition waterfall for this product (no ContractSubscription / RevenueTransaction rows).

# components.schemas.Product.properties.is_immediate_recognition.description
When true, revenue for this product is recognized in full on the invoice finalization date instead of being amortized over the service period.  Used by the Stripe accrual JE waterfall.

# components.schemas.Product.properties.avalara_tax_code.description
Avalara tax code (e.g., SW052000 for SAAS)

# components.schemas.Product.properties.apply_dept_tag_to_invoice_journals.description
Apply Department and Tag categorization to all lines on Invoice Journals

# components.schemas.ProductBundleLine.properties.component_type.description
Component type for this line in a mixed-type bundle. NULL = legacy single-type bundle (type inherited from the referencing ContractSubscription/Milestone/Usage).

* `SUBSCRIPTION` - Subscription
* `MILESTONE` - Milestone
* `USAGE` - Usage

# components.schemas.ProrationMethodEnum.description
* `standard` - Standard (actual month length)
* `thirty_day` - Fixed 30-day month
* `daily` - Daily

# components.schemas.ReconciliationReportV2.properties.statement_recognition_cost_usd.description
Estimated USD cost of AI bank-statement parsing for this report (from summed page token usage).

# components.schemas.ReconciliationReportV2.properties.statement_recognition_input_tokens.description
Sum of input tokens from statement parsing across all pages (set on finalize).

# components.schemas.ReconciliationReportV2.properties.statement_recognition_output_tokens.description
Sum of output tokens from statement parsing across all pages (set on finalize).

# components.schemas.ReconciliationReportV2.properties.statement_recognition_token_total.description
Input plus output tokens for this report (set on finalize).

# components.schemas.ReconciliationReportV2.properties.statement_recognition_model_name.description
LLM model used for statement parsing when token totals were recorded.

# components.schemas.ReconciliationReportV2List.properties.statement_recognition_cost_usd.description
Estimated USD cost of AI bank-statement parsing for this report (from summed page token usage).

# components.schemas.ReconciliationReportV2List.properties.statement_recognition_input_tokens.description
Sum of input tokens from statement parsing across all pages (set on finalize).

# components.schemas.ReconciliationReportV2List.properties.statement_recognition_output_tokens.description
Sum of output tokens from statement parsing across all pages (set on finalize).

# components.schemas.ReconciliationReportV2List.properties.statement_recognition_token_total.description
Input plus output tokens for this report (set on finalize).

# components.schemas.ReconciliationReportV2List.properties.statement_recognition_model_name.description
LLM model used for statement parsing when token totals were recorded.

# components.schemas.ReconciliationReportV2SourceReconciliationTransactionStatusEnum.description
* `DRAFT` - Draft
* `RECONCILED` - Reconciled

# components.schemas.RecordConsumptionInput.properties.period_month.description
First day of the consumption month (e.g. 2026-01-01)

# components.schemas.RenewalBehaviorEnum.description
* `FOLLOW_CONTRACT` - Follow Contract
* `FIXED_END` - Fixed End Date

# components.schemas.RevenueTransaction.properties.balance_adjustment.description
Invoice starting balance or other balance adjustments (e.g., previous balance applied to this transaction)

# components.schemas.RevenueTransaction.properties.is_migration_invoiced.description
Marked as invoiced during migration. Does not create GL entries or AR.

# components.schemas.RevenueTransaction.properties.contract_product_bundle.description
Reference to contract-specific editable product bundle allocation

# components.schemas.Source3b3Enum.description
* `BILL` - Bill
* `BREX` - Brex
* `HUBSPOT` - Hubspot
* `MANUAL` - Manual
* `PAYROLL` - Payroll
* `SALESFORCE` - Salesforce

# components.schemas.SourceFc1Enum.description
* `SALESFORCE` - Salesforce
* `HUBSPOT` - Hubspot
* `STRIPE` - Stripe
* `MANUAL` - Manual

# components.schemas.Status372Enum.description
* `ACTIVE` - Active
* `INACTIVE` - Inactive

# components.schemas.Status8ecEnum.description
* `DRAFT` - Draft
* `PENDING_APPROVAL` - Pending Approval
* `APPROVED` - Approved
* `DELETED` - Deleted

# components.schemas.TaxBehaviorEnum.description
* `inclusive` - Inclusive
* `exclusive` - Exclusive

# components.schemas.TerminateContract.properties.void_invoice_ids.description
List of invoice IDs to void atomically when terminating the contract.

# components.schemas.TerminateContract.properties.void_date.description
Date to use when voiding invoices. Required when void_invoice_ids is provided.

# components.schemas.TerminateContractResponse.description
Response serializer for contract termination with hints about drafted operations.

# components.schemas.TerminateContractResponse.properties.contract_terminated.description
Whether the contract was terminated directly (True) or drafted (False).

# components.schemas.TerminateContractResponse.properties.contract_draft_id.description
Draft queue ID if contract termination was drafted instead of executed.

# components.schemas.TerminateContractResponse.properties.voided_invoice_ids.description
List of invoice IDs that were voided directly.

# components.schemas.TerminateContractResponse.properties.drafted_invoice_ids.description
List of invoice IDs that were drafted for voiding (user lacks void permission).

# components.schemas.TierPriceOverride.properties.price.description
Override price per unit for this contract+tier

# components.schemas.TierPriceOverride.properties.percentage.description
Override percentage for this contract+tier (percentage-based pricing)

# components.schemas.TierPriceOverrideSourceEnum.description
* `manual` - Manual entry
* `integration` - Integration-driven

# components.schemas.TransactionMatch.properties.snapshot.description
Snapshot of transaction data preserved for training data when the transaction is deleted.

# components.schemas.TransactionMatchStatusEnum.description
* `pending` - Pending
* `draft` - Draft
* `accepted` - Accepted
* `rejected` - Rejected

# components.schemas.TransactionPaymentInput.properties.posted_at.description
Payment date for term discount calculation

# components.schemas.TypeF19Enum.description
* `bill` - Bill
* `bill_payment` - Bill Payment
* `bill_prepayment` - Bill Prepayment
* `check` - Check
* `credit_card` - Credit Card
* `credit_memo` - Credit Memo
* `credit_memo_payment` - Credit Memo Payment
* `debit_memo` - Debit Memo
* `debit_memo_payment` - Debit Memo Payment
* `deposit` - Deposit
* `expense` - Expense
* `invoice` - Invoice
* `intercompany_journal` - Intercompany Journal
* `invoice_payment` - Invoice Payment
* `journal_entry` - Journal Entry
* `lease` - Lease
* `payment` - Payment
* `receive_payment` - Receive Payment
* `refund` - Refund
* `revenue_recognition` - Revenue Recognition
* `sales_receipt` - Sales Receipt
* `transfer` - Transfer
* `vendor_credit` - Vendor Credit
* `void_bill` - Void Bill
* `void_bill_payment` - Void Bill Payment
* `void_invoice_payment` - Void Invoice Payment
* `void_credit_memo` - Void Credit Memo
* `void_credit_memo_payment` - Void Credit Memo Payment
* `void_debit_memo_payment` - Void Debit Memo Payment
* `void_invoice` - Void Invoice
* `elimination` - Elimination
* `revaluation` - Revaluation
* `asset_reclassification` - Asset Reclassification

# components.schemas.Vendor.properties.business_type.description
Business type classification (e.g., Korean NTS 업태)

# components.schemas.Vendor.properties.business_category.description
Business category classification (e.g., Korean NTS 종목)

# components.schemas.Vendor.properties.entity_use_code.description
Avalara entity/use code for tax exemptions (e.g., A - Federal Government, B - State/Local Govt)

# components.schemas.Vendor.properties.withholding_tax_id.description
Vendor's tax-authority ID for withholding (PAN for India, TZ for Israel). Dedicated field since these have format/checksum rules distinct from business_id_ssn.

# components.schemas.Vendor.properties.lineage_array.description
Pre-computed lineage array from root to this vendor

# components.schemas.VendorType391Enum.description
* `vendor` - Vendor
* `customer` - Customer
* `employee` - Employee

# components.securitySchemes.knoxApiToken.description
Token-based authentication with required prefix "Token"

# tags[].description
Operations related to accounts, transactions, and other bank-related data.

# tags[].description
Operations related to core accounting data, such as the chart of accounts, entity management, and the general ledger.

# tags[].description
Operations related to revenue recognition, contract management, and contract data aggregation.

# tags[].description
Operations related to invoicing and the AR subledger

# tags[].description
Operations related to billing and the AP subledger.

# tags[].description
Operations related to financial statement generation and data aggregation.

# tags[].description
Operations related to system and accounting settings configuration.