openapi: 3.0.3 info: title: Campfire Developer APIs Accounts Payable Core Accounting API version: 1.0.0 description: '## Introduction Campfire''s developer APIs offer granular access to Campfire''s core accounting, revenue recognition, and financial data features. These APIs are designed to be used by developers to build custom integrations, automate workflows, and perform any other programmatic operations. ' servers: - url: https://api.meetcampfire.com description: Production server tags: - name: Core Accounting description: Operations related to core accounting data, such as the chart of accounts, entity management, and the general ledger. paths: /coa/api/budgets: get: operationId: coa_api_budgets_list description: "\n Retrieve a list of budgets with optional filtering and sorting.\n\n Supports including soft-deleted records for audit and recovery purposes.\n When include_deleted=true, returns ONLY deleted records instead of active records.\n Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp,\n and 'last_modified_at'. When 'false' or omitted, returns ONLY active records.\n This provides clean separation between active and deleted data.\n " summary: List Budgets parameters: - in: query name: entity schema: type: integer description: Filter by entity ID - in: query name: entity_name schema: type: string description: Filter by entity name (partial match) - in: query name: include_deleted schema: type: boolean default: false description: 'When set to ''true'', returns ONLY deleted records instead of active records. Deleted records contain minimal data: ''id'', ''is_deleted=true'', ''deleted_at'' timestamp, and ''last_modified_at''. When ''false'' or omitted, returns ONLY active records. This provides clean separation between active and deleted data.' - in: query name: last_modified_at__gte schema: type: string description: 'Filter for records modified on or after this timestamp. Format: ISO 8601 (e.g., ''2024-01-01T00:00:00Z'' or ''2024-01-01''). Works with both active records and deleted records (filters by deletion time for deleted records).' - in: query name: last_modified_at__lte schema: type: string description: 'Filter for records modified on or before this timestamp. Format: ISO 8601 (e.g., ''2024-12-31T23:59:59Z'' or ''2024-12-31''). Works with both active records and deleted records (filters by deletion time for deleted records).' - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: q schema: type: string description: Search query - searches by budget name - in: query name: sort schema: type: string default: name description: 'Sort order. Use field name for ascending, -field for descending. Supports multiple fields separated by comma. Default: name' tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBudgetList' description: '' x-mint: mcp: enabled: true name: get_budgets description: Retrieve budget information with optional filtering post: operationId: coa_api_budgets_create description: 'Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter.' summary: Create Budget tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/Budget' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Budget' multipart/form-data: schema: $ref: '#/components/schemas/Budget' required: true security: - knoxApiToken: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/Budget' description: '' /coa/api/budgets/{budget_pk}/accounts: get: operationId: coa_api_budgets_accounts_list description: "\n Retrieve a list of budget accounts with optional filtering and sorting.\n\n Supports including soft-deleted records for audit and recovery purposes.\n When include_deleted=true, returns ONLY deleted records instead of active records.\n Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp,\n and 'last_modified_at'. When 'false' or omitted, returns ONLY active records.\n This provides clean separation between active and deleted data.\n " summary: List Budget Accounts parameters: - in: path name: budget_pk schema: type: integer required: true - in: query name: include_deleted schema: type: boolean default: false description: 'When set to ''true'', returns ONLY deleted records instead of active records. Deleted records contain minimal data: ''id'', ''is_deleted=true'', ''deleted_at'' timestamp, and ''last_modified_at''. When ''false'' or omitted, returns ONLY active records. This provides clean separation between active and deleted data.' - in: query name: last_modified_at__gte schema: type: string description: 'Filter for records modified on or after this timestamp. Format: ISO 8601 (e.g., ''2024-01-01T00:00:00Z'' or ''2024-01-01''). Works with both active records and deleted records (filters by deletion time for deleted records).' - in: query name: last_modified_at__lte schema: type: string description: 'Filter for records modified on or before this timestamp. Format: ISO 8601 (e.g., ''2024-12-31T23:59:59Z'' or ''2024-12-31''). Works with both active records and deleted records (filters by deletion time for deleted records).' tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/BudgetAccount' description: '' post: operationId: coa_api_budgets_accounts_create description: 'Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter.' summary: Create Budget parameters: - in: path name: budget_pk schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/BudgetAccount' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BudgetAccount' multipart/form-data: schema: $ref: '#/components/schemas/BudgetAccount' security: - knoxApiToken: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/BudgetAccount' description: '' /coa/api/budgets/{budget_pk}/accounts/{id}: get: operationId: coa_api_budgets_accounts_retrieve summary: Retrieve Budget Account parameters: - in: path name: budget_pk schema: type: integer required: true - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BudgetAccount' description: '' put: operationId: coa_api_budgets_accounts_update summary: Update Budget Account parameters: - in: path name: budget_pk schema: type: integer required: true - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/BudgetAccount' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BudgetAccount' multipart/form-data: schema: $ref: '#/components/schemas/BudgetAccount' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BudgetAccount' description: '' patch: operationId: coa_api_budgets_accounts_partial_update summary: Partial Update Budget Account parameters: - in: path name: budget_pk schema: type: integer required: true - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBudgetAccount' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBudgetAccount' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBudgetAccount' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BudgetAccount' description: '' delete: operationId: coa_api_budgets_accounts_destroy summary: Delete Budget Account parameters: - in: path name: budget_pk schema: type: integer required: true - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '204': description: No response body /coa/api/budgets/{id}: get: operationId: coa_api_budgets_retrieve summary: Retrieve Budget parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Budget' description: '' put: operationId: coa_api_budgets_update summary: Update Budget parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/Budget' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Budget' multipart/form-data: schema: $ref: '#/components/schemas/Budget' required: true security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Budget' description: '' patch: operationId: coa_api_budgets_partial_update summary: Partial Update Budget parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBudget' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBudget' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBudget' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Budget' description: '' delete: operationId: coa_api_budgets_destroy summary: Delete Budget parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '204': description: No response body /coa/api/department/bulk-search: post: operationId: coa_api_department_bulk_search_create description: Search for thousands of departments by exact name match in a single request. Optimized for performance. Supports upsert to create missing departments. summary: Bulk Search Departments by Name tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkDepartmentSearch' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BulkDepartmentSearch' multipart/form-data: schema: $ref: '#/components/schemas/BulkDepartmentSearch' required: true security: - knoxApiToken: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/Department' description: '' /coa/api/fixed-asset: get: operationId: coa_api_fixed_asset_list description: "\n Retrieve a list of fixed assets with optional filtering and sorting.\n\n Supports including soft-deleted records for audit and recovery purposes.\n When include_deleted=true, returns ONLY deleted records instead of active records.\n Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp,\n and 'last_modified_at'. When 'false' or omitted, returns ONLY active records.\n This provides clean separation between active and deleted data.\n " summary: List Fixed Assets parameters: - in: query name: include_deleted schema: type: boolean default: false description: 'When set to ''true'', returns ONLY deleted records instead of active records. Deleted records contain minimal data: ''id'', ''is_deleted=true'', ''deleted_at'' timestamp, and ''last_modified_at''. When ''false'' or omitted, returns ONLY active records. This provides clean separation between active and deleted data.' - in: query name: last_modified_at__gte schema: type: string description: 'Filter for records modified on or after this timestamp. Format: ISO 8601 (e.g., ''2024-01-01T00:00:00Z'' or ''2024-01-01''). Works with both active records and deleted records (filters by deletion time for deleted records).' - in: query name: last_modified_at__lte schema: type: string description: 'Filter for records modified on or before this timestamp. Format: ISO 8601 (e.g., ''2024-12-31T23:59:59Z'' or ''2024-12-31''). Works with both active records and deleted records (filters by deletion time for deleted records).' - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedFixedAssetList' description: '' post: operationId: coa_api_fixed_asset_create description: "Wraps ``CreateModelMixin.create`` (or any method named ``create``) with\n``Idempotency-Key`` handling.\n\nPlace this mixin **before** the view's other base classes so its ``create``\noverrides the inherited one::\n\n class JournalEntryListCreate(\n IdempotentCreateMixin,\n HistoryFilteringMixin,\n ListCreateAPIView,\n ):\n ..." summary: Create Fixed Asset tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/FixedAsset' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/FixedAsset' multipart/form-data: schema: $ref: '#/components/schemas/FixedAsset' required: true security: - knoxApiToken: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/FixedAsset' description: '' /coa/api/fixed-asset-automation/: get: operationId: list_fixed_asset_automations description: 'List all automation rules or create a new one. GET /api/fixed-asset-automation/ POST /api/fixed-asset-automation/' summary: List Fixed Asset Automations parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedFixedAssetAutomationRuleList' description: '' post: operationId: create_fixed_asset_automation description: 'List all automation rules or create a new one. GET /api/fixed-asset-automation/ POST /api/fixed-asset-automation/' summary: Create Fixed Asset Automation tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/FixedAssetAutomationRule' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/FixedAssetAutomationRule' multipart/form-data: schema: $ref: '#/components/schemas/FixedAssetAutomationRule' required: true security: - knoxApiToken: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/FixedAssetAutomationRule' description: '' /coa/api/fixed-asset-automation-match/{id}/: get: operationId: get_fixed_asset_automation_match description: 'Retrieve or update an automation match (for editing proposed values before acceptance). GET/PATCH /api/fixed-asset-automation-match//' summary: Retrieve Fixed Asset Automation Match parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/FixedAssetAutomationMatch' description: '' put: operationId: update_fixed_asset_automation_match description: 'Retrieve or update an automation match (for editing proposed values before acceptance). GET/PATCH /api/fixed-asset-automation-match//' summary: Update Fixed Asset Automation Match parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/FixedAssetAutomationMatch' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/FixedAssetAutomationMatch' multipart/form-data: schema: $ref: '#/components/schemas/FixedAssetAutomationMatch' required: true security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/FixedAssetAutomationMatch' description: '' patch: operationId: partial_update_fixed_asset_automation_match description: 'Retrieve or update an automation match (for editing proposed values before acceptance). GET/PATCH /api/fixed-asset-automation-match//' summary: Partial Update Fixed Asset Automation Match parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedFixedAssetAutomationMatch' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedFixedAssetAutomationMatch' multipart/form-data: schema: $ref: '#/components/schemas/PatchedFixedAssetAutomationMatch' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/FixedAssetAutomationMatch' description: '' /coa/api/fixed-asset-automation/{id}/: get: operationId: get_fixed_asset_automation description: 'Retrieve, update, or delete an automation rule. GET/PUT/PATCH/DELETE /api/fixed-asset-automation//' summary: Retrieve Fixed Asset Automation parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/FixedAssetAutomationRule' description: '' put: operationId: update_fixed_asset_automation description: 'Retrieve, update, or delete an automation rule. GET/PUT/PATCH/DELETE /api/fixed-asset-automation//' summary: Update Fixed Asset Automation parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/FixedAssetAutomationRule' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/FixedAssetAutomationRule' multipart/form-data: schema: $ref: '#/components/schemas/FixedAssetAutomationRule' required: true security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/FixedAssetAutomationRule' description: '' patch: operationId: partial_update_fixed_asset_automation description: 'Retrieve, update, or delete an automation rule. GET/PUT/PATCH/DELETE /api/fixed-asset-automation//' summary: Partial Update Fixed Asset Automation parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedFixedAssetAutomationRule' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedFixedAssetAutomationRule' multipart/form-data: schema: $ref: '#/components/schemas/PatchedFixedAssetAutomationRule' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/FixedAssetAutomationRule' description: '' delete: operationId: delete_fixed_asset_automation description: 'Retrieve, update, or delete an automation rule. GET/PUT/PATCH/DELETE /api/fixed-asset-automation//' summary: Delete Fixed Asset Automation parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '204': description: No response body /coa/api/fixed-asset-automation/accounts: get: operationId: list_fixed_asset_automation_accounts 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.' summary: List Fixed Asset Automation Accounts tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body /coa/api/fixed-asset-automation/asset-classes: get: operationId: list_fixed_asset_automation_asset_classes description: 'List fixed asset classes that match a specific account. GET /api/fixed-asset-automation/asset-classes?account_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.' summary: List Fixed Asset Automation Asset Classes tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body /coa/api/fixed-asset-automation/matches: get: operationId: list_fixed_asset_automation_matches description: 'List pending asset matches for review. GET /api/fixed-asset-automation/matches' summary: List Fixed Asset Automation Matches parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedFixedAssetAutomationMatchList' description: '' /coa/api/fixed-asset-automation/run: post: operationId: run_fixed_asset_automation description: 'Trigger automation processing. POST /api/fixed-asset-automation/run Optional body: {"rule_id": 123}' summary: Run Fixed Asset Automation tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body /coa/api/fixed-asset/{id}: get: operationId: coa_api_fixed_asset_retrieve summary: Retrieve Fixed Asset parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/FixedAsset' description: '' put: operationId: coa_api_fixed_asset_update summary: Update Fixed Asset parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/FixedAsset' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/FixedAsset' multipart/form-data: schema: $ref: '#/components/schemas/FixedAsset' required: true security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/FixedAsset' description: '' patch: operationId: coa_api_fixed_asset_partial_update summary: Partial Update Fixed Asset parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedFixedAsset' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedFixedAsset' multipart/form-data: schema: $ref: '#/components/schemas/PatchedFixedAsset' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/FixedAsset' description: '' delete: operationId: coa_api_fixed_asset_destroy summary: Delete Fixed Asset parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '204': description: No response body /coa/api/fixed-asset/reconciliation/unmatched-gl: get: operationId: list_fixed_asset_reconciliation_unmatched_gl 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.' summary: List Unmatched GL Transactions for Fixed Asset Reconciliation tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body /coa/api/intercompany-journal-entry: get: operationId: coa_api_intercompany_journal_entry_list description: "\n Retrieves a paginated list of intercompany journal entries for the authenticated user's customer.\n\n This endpoint returns:\n - Summary information for each intercompany journal entry\n - Basic transaction details (simplified view for list performance)\n - Entity and exchange rate information\n - Pagination metadata (count, next, previous)\n - Reversal relationships and attachment counts\n\n The response includes:\n - Intercompany journal entry metadata\n - Associated transaction summaries\n - Exchange rate information for currency conversions\n - Links to related reversals\n - Attachment information\n\n Results can be sorted using the 'sort' query parameter with field names like 'date', 'id', etc.\n Prefix with '-' for descending order (e.g., '-date').\n " summary: List Intercompany Journal Entries parameters: - in: query name: include_deleted schema: type: boolean default: false description: 'When set to ''true'', returns ONLY deleted records instead of active records. Deleted records contain minimal data: ''id'', ''is_deleted=true'', ''deleted_at'' timestamp, and ''last_modified_at''. When ''false'' or omitted, returns ONLY active records. This provides clean separation between active and deleted data.' - in: query name: last_modified_at__gte schema: type: string description: 'Filter for records modified on or after this timestamp. Format: ISO 8601 (e.g., ''2024-01-01T00:00:00Z'' or ''2024-01-01''). Works with both active records and deleted records (filters by deletion time for deleted records).' - in: query name: last_modified_at__lte schema: type: string description: 'Filter for records modified on or before this timestamp. Format: ISO 8601 (e.g., ''2024-12-31T23:59:59Z'' or ''2024-12-31''). Works with both active records and deleted records (filters by deletion time for deleted records).' - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedIntercompanyJournalEntryList' examples: ListIntercompanyJournalEntriesResponse: value: count: 123 next: http://api.example.org/accounts/?offset=400&limit=100 previous: http://api.example.org/accounts/?offset=200&limit=100 results: - count: 1 next: null previous: null results: - id: 331 attachments: [] reversals: - id: 332 order: '0004361' order: '0004360' type: journal_entry journal_id: bf3fb423-12a9-47cb-9dca-18e6b9d8296b memo: Example Inter-company Journal currency: USD created_automatically: false date: '2025-07-25' ref_number: null created_at: 2025-07-25T03:45:59+0000 last_modified_at: 2025-07-25T03:45:59+0000 reversal_of: null transactions: - id: 24429466 entity_name: Top Level entity_currency: USD account_name: 1000 - Cash and Cash Equivalents account_number: '1000' debit_amount: 9876.54 credit_amount: null bank_description: 'Example Inter-company Journal ' account: 180564 entity: 54 - id: 24429467 entity_name: Top Level entity_currency: USD account_name: 1900 - Intercompany Accounts Receivable account_number: '1900' debit_amount: null credit_amount: 9876.54 bank_description: 'Example Inter-company Journal ' account: 14239 entity: 54 - id: 24429470 entity_name: Eliminations entity_currency: USD account_name: 1014 - JPMC Cash account_number: '1014' debit_amount: null credit_amount: 9876.54 bank_description: 'Example Inter-company Journal ' account: 8855 entity: 55 - id: 24429471 entity_name: Eliminations entity_currency: USD account_name: 2020 - Intercompany Accounts Payable account_number: '2020' debit_amount: 9876.54 credit_amount: null bank_description: 'Example Inter-company Journal ' account: 14240 entity: 55 exchange_rates: - entity: 54 entity_name: Top Level originating_currency: USD target_currency: USD exchange_rate: 1.0 - entity: 55 entity_name: Eliminations originating_currency: USD target_currency: USD exchange_rate: 1.0 summary: Paginated list of intercompany journal entries description: Example response showing a list of intercompany journal entries with pagination metadata and summary transaction information description: '' post: operationId: coa_api_intercompany_journal_entry_create description: "\n Creates a new intercompany journal entry\n\n This endpoint allows for complex multi-entity transactions where:\n - Transactions are balanced across different entities\n - Exchange rates are handled for multi-currency transactions\n\n Key requirements:\n - Total debits must equal total credits for each entity (debit_amount_native must equal credit_amount_native)\n - Cannot create entries before closed book dates\n - All referenced accounts must be active\n - Exchange rates must be provided for all currency conversions (native to book, book to consolidation)\n " summary: Create Intercompany Journal Entry tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/IntercompanyJournalEntry' examples: IntercompanyJournalEntryRequest: value: date: '2025-07-25' type: journal_entry transactions: - entity: 54 entity_name: Top Level account: '180564' account_name: 1000 - Cash and Cash Equivalents debit_amount_native: 9876.54 debit_amount_book: 9876.54 debit_amount: 9876.54 bank_description: 'Example Inter-company Journal ' vendor: '34182' vendor_name: ABC Bead Supply department: '364' department_name: Executive tags: - id: '8304' name: North America group: 669 - entity: 55 entity_name: Eliminations account: '8855' account_name: 1014 - JPMC Cash credit_amount_native: 9876.54 credit_amount_book: 9876.54 credit_amount: 9876.54 bank_description: 'Example Inter-company Journal ' - entity: 54 entity_name: Top Level tags: [] credit_amount_native: 9876.54 credit_amount_book: 9876.54 credit_amount: 9876.54 account: '14239' account_name: 1900 - Intercompany Accounts Receivable bank_description: 'Example Inter-company Journal ' - entity: 55 entity_name: Eliminations tags: [] debit_amount_native: 9876.54 debit_amount_book: 9876.54 debit_amount: 9876.54 account: '14240' account_name: 2020 - Intercompany Accounts Payable bank_description: 'Example Inter-company Journal ' memo: 'Example Inter-company Journal ' currency: USD reversal_date: '2025-08-01' exchange_rates: - entity: 54 entity_name: Top Level originating_currency: USD target_currency: USD exchange_rate: 1.0 - entity: 55 entity_name: Eliminations originating_currency: USD target_currency: USD exchange_rate: 1.0 summary: Standard intercompany journal entry with multiple entities description: Example of an intercompany journal entry transferring funds between entities with automatic intercompany account reconciliation CreateIntercompanyJournalEntryResponse: value: id: 331 attachments: [] reversals: - id: 332 order: '0004361' order: '0004360' type: journal_entry journal_id: bf3fb423-12a9-47cb-9dca-18e6b9d8296b memo: Example Inter-company Journal currency: USD created_automatically: false date: '2025-07-25' ref_number: null created_at: 2025-07-25T03:45:59+0000 last_modified_at: 2025-07-25T03:45:59+0000 reversal_of: null transactions: - id: 24429466 entity_name: Top Level entity_currency: USD account_name: 1000 - Cash and Cash Equivalents account_number: '1000' vendor_name: ABC Bead Supply department_name: Executive parent_department_name: General and Administrative parent_department: 108 tags: - id: 8304 group_name: Region parent_name: null parent: null name: North America created_at: 2025-07-10T20:50:45+0000 last_modified_at: 2025-07-10T20:50:45+0000 group: 669 journal: 7491947 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: 9876.54 account: 180564 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: 393478d2-b523-4b42-bbd1-5952a7fd5eb1 debit_amount: 9876.54 credit_amount: null debit_amount_book: 9876.54 credit_amount_book: null debit_amount_native: 9876.54 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:45:59+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:45:59+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: 34182 department: 364 last_modified_by: 904 - id: 24429467 entity_name: Top Level entity_currency: USD account_name: 1900 - Intercompany Accounts Receivable account_number: '1900' tags: [] journal: 7491947 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -9876.54 account: 14239 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: daeefb8c-b548-47dc-8546-cac1e3e745b3 debit_amount: null credit_amount: 9876.54 debit_amount_book: null credit_amount_book: 9876.54 debit_amount_native: null credit_amount_native: 9876.54 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:45:59+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:45:59+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429470 entity_name: Eliminations entity_currency: USD account_name: 1014 - JPMC Cash account_number: '1014' tags: [] journal: 7491949 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -9876.54 account: 8855 last_modified_by_name: Zack Moss account_type: ASSET parent_account_name: Cash and Cash Equivalents files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: 058c8386-3a78-4477-97aa-2fe2427a982a debit_amount: null credit_amount: 9876.54 debit_amount_book: null credit_amount_book: 9876.54 debit_amount_native: null credit_amount_native: 9876.54 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:46:00+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:46:00+0000 draft_matches: null entity: 55 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429471 entity_name: Eliminations entity_currency: USD account_name: 2020 - Intercompany Accounts Payable account_number: '2020' tags: [] journal: 7491949 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -9876.54 account: 14240 last_modified_by_name: Zack Moss account_type: LIABILITY files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: 04e16db2-5df1-4a7d-8d13-be0bad45ccdf debit_amount: 9876.54 credit_amount: null debit_amount_book: 9876.54 credit_amount_book: null debit_amount_native: 9876.54 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:46:00+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:46:00+0000 draft_matches: null entity: 55 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 exchange_rates: - entity: 54 entity_name: Top Level originating_currency: USD target_currency: USD exchange_rate: 1.0 - entity: 55 entity_name: Eliminations originating_currency: USD target_currency: USD exchange_rate: 1.0 summary: Response after successfully creating an intercompany journal entry description: Example response showing the created intercompany journal entry with generated IDs, timestamps, and detailed transaction information application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/IntercompanyJournalEntry' multipart/form-data: schema: $ref: '#/components/schemas/IntercompanyJournalEntry' security: - knoxApiToken: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/IntercompanyJournalEntry' examples: CreateIntercompanyJournalEntryResponse: value: id: 331 attachments: [] reversals: - id: 332 order: '0004361' order: '0004360' type: journal_entry journal_id: bf3fb423-12a9-47cb-9dca-18e6b9d8296b memo: Example Inter-company Journal currency: USD created_automatically: false date: '2025-07-25' ref_number: null created_at: 2025-07-25T03:45:59+0000 last_modified_at: 2025-07-25T03:45:59+0000 reversal_of: null transactions: - id: 24429466 entity_name: Top Level entity_currency: USD account_name: 1000 - Cash and Cash Equivalents account_number: '1000' vendor_name: ABC Bead Supply department_name: Executive parent_department_name: General and Administrative parent_department: 108 tags: - id: 8304 group_name: Region parent_name: null parent: null name: North America created_at: 2025-07-10T20:50:45+0000 last_modified_at: 2025-07-10T20:50:45+0000 group: 669 journal: 7491947 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: 9876.54 account: 180564 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: 393478d2-b523-4b42-bbd1-5952a7fd5eb1 debit_amount: 9876.54 credit_amount: null debit_amount_book: 9876.54 credit_amount_book: null debit_amount_native: 9876.54 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:45:59+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:45:59+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: 34182 department: 364 last_modified_by: 904 - id: 24429467 entity_name: Top Level entity_currency: USD account_name: 1900 - Intercompany Accounts Receivable account_number: '1900' tags: [] journal: 7491947 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -9876.54 account: 14239 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: daeefb8c-b548-47dc-8546-cac1e3e745b3 debit_amount: null credit_amount: 9876.54 debit_amount_book: null credit_amount_book: 9876.54 debit_amount_native: null credit_amount_native: 9876.54 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:45:59+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:45:59+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429470 entity_name: Eliminations entity_currency: USD account_name: 1014 - JPMC Cash account_number: '1014' tags: [] journal: 7491949 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -9876.54 account: 8855 last_modified_by_name: Zack Moss account_type: ASSET parent_account_name: Cash and Cash Equivalents files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: 058c8386-3a78-4477-97aa-2fe2427a982a debit_amount: null credit_amount: 9876.54 debit_amount_book: null credit_amount_book: 9876.54 debit_amount_native: null credit_amount_native: 9876.54 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:46:00+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:46:00+0000 draft_matches: null entity: 55 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429471 entity_name: Eliminations entity_currency: USD account_name: 2020 - Intercompany Accounts Payable account_number: '2020' tags: [] journal: 7491949 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -9876.54 account: 14240 last_modified_by_name: Zack Moss account_type: LIABILITY files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: 04e16db2-5df1-4a7d-8d13-be0bad45ccdf debit_amount: 9876.54 credit_amount: null debit_amount_book: 9876.54 credit_amount_book: null debit_amount_native: 9876.54 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:46:00+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:46:00+0000 draft_matches: null entity: 55 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 exchange_rates: - entity: 54 entity_name: Top Level originating_currency: USD target_currency: USD exchange_rate: 1.0 - entity: 55 entity_name: Eliminations originating_currency: USD target_currency: USD exchange_rate: 1.0 summary: Response after successfully creating an intercompany journal entry description: Example response showing the created intercompany journal entry with generated IDs, timestamps, and detailed transaction information description: '' /coa/api/intercompany-journal-entry/{id}: get: operationId: coa_api_intercompany_journal_entry_retrieve description: "\n Retrieves a single intercompany journal entry by its ID with complete details.\n\n This endpoint returns:\n - Complete intercompany journal entry information\n - Full transaction details with all accounting fields\n - Entity information and exchange rates\n - Attachment and reversal information\n - Comprehensive transaction metadata\n\n The response includes:\n - All transaction details with account information\n - Exchange rate data for all currency conversions (native to book, book to consolidation)\n - Vendor, department, and tag information\n - Balance calculations and transaction history\n - File attachments and reversal relationships\n - Complete audit trail information\n\n This is the detailed view used for editing and complete transaction analysis.\n " summary: Get Intercompany Journal Entry parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/IntercompanyJournalEntry' examples: GetIntercompanyJournalEntryResponse: value: id: 331 attachments: [] reversals: - id: 332 order: '0004361' order: '0004360' type: journal_entry journal_id: bf3fb423-12a9-47cb-9dca-18e6b9d8296b memo: Example Inter-company Journal currency: USD created_automatically: false date: '2025-07-25' ref_number: null created_at: 2025-07-25T03:45:59+0000 last_modified_at: 2025-07-25T03:45:59+0000 reversal_of: null transactions: - id: 24429466 entity_name: Top Level entity_currency: USD account_name: 1000 - Cash and Cash Equivalents account_number: '1000' vendor_name: ABC Bead Supply department_name: Executive parent_department_name: General and Administrative parent_department: 108 tags: - id: 8304 group_name: Region parent_name: null parent: null name: North America created_at: 2025-07-10T20:50:45+0000 last_modified_at: 2025-07-10T20:50:45+0000 group: 669 journal: 7491947 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: 9876.54 account: 180564 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: 393478d2-b523-4b42-bbd1-5952a7fd5eb1 debit_amount: 9876.54 credit_amount: null debit_amount_book: 9876.54 credit_amount_book: null debit_amount_native: 9876.54 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:45:59+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:45:59+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: 34182 department: 364 last_modified_by: 904 - id: 24429467 entity_name: Top Level entity_currency: USD account_name: 1900 - Intercompany Accounts Receivable account_number: '1900' tags: [] journal: 7491947 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -9876.54 account: 14239 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: daeefb8c-b548-47dc-8546-cac1e3e745b3 debit_amount: null credit_amount: 9876.54 debit_amount_book: null credit_amount_book: 9876.54 debit_amount_native: null credit_amount_native: 9876.54 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:45:59+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:45:59+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429470 entity_name: Eliminations entity_currency: USD account_name: 1014 - JPMC Cash account_number: '1014' tags: [] journal: 7491949 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -9876.54 account: 8855 last_modified_by_name: Zack Moss account_type: ASSET parent_account_name: Cash and Cash Equivalents files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: 058c8386-3a78-4477-97aa-2fe2427a982a debit_amount: null credit_amount: 9876.54 debit_amount_book: null credit_amount_book: 9876.54 debit_amount_native: null credit_amount_native: 9876.54 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:46:00+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:46:00+0000 draft_matches: null entity: 55 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429471 entity_name: Eliminations entity_currency: USD account_name: 2020 - Intercompany Accounts Payable account_number: '2020' tags: [] journal: 7491949 journal_order: '0004360' journal_memo: Example Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -9876.54 account: 14240 last_modified_by_name: Zack Moss account_type: LIABILITY files: [] file_names: [] amount: 9876.54 amount_native: 9876.54 amount_book: 9876.54 amortization_schedule: [] transaction_id: 04e16db2-5df1-4a7d-8d13-be0bad45ccdf debit_amount: 9876.54 credit_amount: null debit_amount_book: 9876.54 credit_amount_book: null debit_amount_native: 9876.54 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Example Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:46:00+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T03:46:00+0000 draft_matches: null entity: 55 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 exchange_rates: - entity: 54 entity_name: Top Level originating_currency: USD target_currency: USD exchange_rate: 1.0 - entity: 55 entity_name: Eliminations originating_currency: USD target_currency: USD exchange_rate: 1.0 summary: Complete intercompany journal entry with full transaction details description: Example response showing a single intercompany journal entry retrieved by ID with comprehensive transaction information description: '' put: operationId: coa_api_intercompany_journal_entry_update description: "\n Updates an existing intercompany journal entry with new transaction details.\n\n This endpoint allows for:\n - Modifying transaction amounts and details\n - Updating entity assignments and exchange rates\n - Changing account assignments and categorizations\n - Updating vendor, department, and tag information\n - Maintaining balance validation across all entities\n\n Key requirements:\n - Total debits must equal total credits for each entity\n - All account balances must be valid in all currencies\n - Cannot modify entries in closed periods\n - All referenced accounts must be active\n - Existing transactions are replaced with new transaction set\n - Exchange rates must be provided for all currency conversions\n\n The update process atomically replaces all transactions while preserving the journal entry ID and audit trail.\n " summary: Update Intercompany Journal Entry parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/IntercompanyJournalEntry' examples: UpdateIntercompanyJournalEntryRequest: value: date: '2025-07-25' type: journal_entry transactions: - entity: 54 entity_name: Top Level account: '180564' account_name: 1000 - Cash and Cash Equivalents debit_amount_native: 12345.67 debit_amount_book: 12345.67 debit_amount: 12345.67 bank_description: 'Updated Inter-company Journal ' vendor: '34182' vendor_name: ABC Bead Supply department: '364' department_name: Executive tags: - id: '8304' name: North America group: 669 - entity: 55 entity_name: Eliminations account: '8855' account_name: 1014 - JPMC Cash credit_amount_native: 12345.67 credit_amount_book: 12345.67 credit_amount: 12345.67 bank_description: 'Updated Inter-company Journal ' - entity: 54 entity_name: Top Level tags: [] credit_amount_native: 12345.67 credit_amount_book: 12345.67 credit_amount: 12345.67 account: '14239' account_name: 1900 - Intercompany Accounts Receivable bank_description: 'Updated Inter-company Journal ' - entity: 55 entity_name: Eliminations tags: [] debit_amount_native: 12345.67 debit_amount_book: 12345.67 debit_amount: 12345.67 account: '14240' account_name: 2020 - Intercompany Accounts Payable bank_description: 'Updated Inter-company Journal ' memo: 'Updated Inter-company Journal ' currency: USD exchange_rates: - entity: 54 entity_name: Top Level originating_currency: USD target_currency: USD exchange_rate: 1.0 - entity: 55 entity_name: Eliminations originating_currency: USD target_currency: USD exchange_rate: 1.0 summary: Update request with modified transaction amounts description: Example request showing how to update an intercompany journal entry with new transaction amounts and details UpdateIntercompanyJournalEntryResponse: value: id: 331 attachments: [] reversals: [] order: '0004360' type: journal_entry journal_id: bf3fb423-12a9-47cb-9dca-18e6b9d8296b memo: Updated Inter-company Journal currency: USD created_automatically: false date: '2025-07-25' ref_number: null created_at: 2025-07-25T03:45:59+0000 last_modified_at: 2025-07-25T04:15:32+0000 reversal_of: null transactions: - id: 24429466 entity_name: Top Level entity_currency: USD account_name: 1000 - Cash and Cash Equivalents account_number: '1000' vendor_name: ABC Bead Supply department_name: Executive parent_department_name: General and Administrative parent_department: 108 tags: - id: 8304 group_name: Region parent_name: null parent: null name: North America created_at: 2025-07-10T20:50:45+0000 last_modified_at: 2025-07-10T20:50:45+0000 group: 669 journal: 7491947 journal_order: '0004360' journal_memo: Updated Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: 12345.67 account: 180564 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: 393478d2-b523-4b42-bbd1-5952a7fd5eb1 debit_amount: 12345.67 credit_amount: null debit_amount_book: 12345.67 credit_amount_book: null debit_amount_native: 12345.67 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Updated Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:45:59+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T04:15:32+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: 34182 department: 364 last_modified_by: 904 - id: 24429467 entity_name: Top Level entity_currency: USD account_name: 1900 - Intercompany Accounts Receivable account_number: '1900' tags: [] journal: 7491947 journal_order: '0004360' journal_memo: Updated Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -12345.67 account: 14239 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: daeefb8c-b548-47dc-8546-cac1e3e745b3 debit_amount: null credit_amount: 12345.67 debit_amount_book: null credit_amount_book: 12345.67 debit_amount_native: null credit_amount_native: 12345.67 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Updated Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:45:59+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T04:15:32+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429470 entity_name: Eliminations entity_currency: USD account_name: 1014 - JPMC Cash account_number: '1014' tags: [] journal: 7491949 journal_order: '0004360' journal_memo: Updated Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -12345.67 account: 8855 last_modified_by_name: Zack Moss account_type: ASSET parent_account_name: Cash and Cash Equivalents files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: 058c8386-3a78-4477-97aa-2fe2427a982a debit_amount: null credit_amount: 12345.67 debit_amount_book: null credit_amount_book: 12345.67 debit_amount_native: null credit_amount_native: 12345.67 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Updated Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:46:00+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T04:15:32+0000 draft_matches: null entity: 55 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429471 entity_name: Eliminations entity_currency: USD account_name: 2020 - Intercompany Accounts Payable account_number: '2020' tags: [] journal: 7491949 journal_order: '0004360' journal_memo: Updated Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -12345.67 account: 14240 last_modified_by_name: Zack Moss account_type: LIABILITY files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: 04e16db2-5df1-4a7d-8d13-be0bad45ccdf debit_amount: 12345.67 credit_amount: null debit_amount_book: 12345.67 credit_amount_book: null debit_amount_native: 12345.67 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Updated Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:46:00+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T04:15:32+0000 draft_matches: null entity: 55 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 exchange_rates: - entity: 54 entity_name: Top Level originating_currency: USD target_currency: USD exchange_rate: 1.0 - entity: 55 entity_name: Eliminations originating_currency: USD target_currency: USD exchange_rate: 1.0 summary: Response after successfully updating an intercompany journal entry description: Example response showing the updated intercompany journal entry with modified amounts and updated timestamps application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/IntercompanyJournalEntry' multipart/form-data: schema: $ref: '#/components/schemas/IntercompanyJournalEntry' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/IntercompanyJournalEntry' examples: UpdateIntercompanyJournalEntryResponse: value: id: 331 attachments: [] reversals: [] order: '0004360' type: journal_entry journal_id: bf3fb423-12a9-47cb-9dca-18e6b9d8296b memo: Updated Inter-company Journal currency: USD created_automatically: false date: '2025-07-25' ref_number: null created_at: 2025-07-25T03:45:59+0000 last_modified_at: 2025-07-25T04:15:32+0000 reversal_of: null transactions: - id: 24429466 entity_name: Top Level entity_currency: USD account_name: 1000 - Cash and Cash Equivalents account_number: '1000' vendor_name: ABC Bead Supply department_name: Executive parent_department_name: General and Administrative parent_department: 108 tags: - id: 8304 group_name: Region parent_name: null parent: null name: North America created_at: 2025-07-10T20:50:45+0000 last_modified_at: 2025-07-10T20:50:45+0000 group: 669 journal: 7491947 journal_order: '0004360' journal_memo: Updated Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: 12345.67 account: 180564 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: 393478d2-b523-4b42-bbd1-5952a7fd5eb1 debit_amount: 12345.67 credit_amount: null debit_amount_book: 12345.67 credit_amount_book: null debit_amount_native: 12345.67 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Updated Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:45:59+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T04:15:32+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: 34182 department: 364 last_modified_by: 904 - id: 24429467 entity_name: Top Level entity_currency: USD account_name: 1900 - Intercompany Accounts Receivable account_number: '1900' tags: [] journal: 7491947 journal_order: '0004360' journal_memo: Updated Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -12345.67 account: 14239 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: daeefb8c-b548-47dc-8546-cac1e3e745b3 debit_amount: null credit_amount: 12345.67 debit_amount_book: null credit_amount_book: 12345.67 debit_amount_native: null credit_amount_native: 12345.67 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Updated Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:45:59+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T04:15:32+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429470 entity_name: Eliminations entity_currency: USD account_name: 1014 - JPMC Cash account_number: '1014' tags: [] journal: 7491949 journal_order: '0004360' journal_memo: Updated Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -12345.67 account: 8855 last_modified_by_name: Zack Moss account_type: ASSET parent_account_name: Cash and Cash Equivalents files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: 058c8386-3a78-4477-97aa-2fe2427a982a debit_amount: null credit_amount: 12345.67 debit_amount_book: null credit_amount_book: 12345.67 debit_amount_native: null credit_amount_native: 12345.67 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Updated Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:46:00+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T04:15:32+0000 draft_matches: null entity: 55 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429471 entity_name: Eliminations entity_currency: USD account_name: 2020 - Intercompany Accounts Payable account_number: '2020' tags: [] journal: 7491949 journal_order: '0004360' journal_memo: Updated Inter-company Journal journal_type: journal_entry intercompany_journal: 331 created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -12345.67 account: 14240 last_modified_by_name: Zack Moss account_type: LIABILITY files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: 04e16db2-5df1-4a7d-8d13-be0bad45ccdf debit_amount: 12345.67 credit_amount: null debit_amount_book: 12345.67 credit_amount_book: null debit_amount_native: 12345.67 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-25' merchant_name: null bank_description: 'Updated Inter-company Journal ' note: null balance_before_transaction: null created_at: 2025-07-25T03:46:00+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T04:15:32+0000 draft_matches: null entity: 55 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 exchange_rates: - entity: 54 entity_name: Top Level originating_currency: USD target_currency: USD exchange_rate: 1.0 - entity: 55 entity_name: Eliminations originating_currency: USD target_currency: USD exchange_rate: 1.0 summary: Response after successfully updating an intercompany journal entry description: Example response showing the updated intercompany journal entry with modified amounts and updated timestamps description: '' patch: operationId: coa_api_intercompany_journal_entry_partial_update description: "\n Performs a partial update of an intercompany journal entry, allowing modification of specific fields without replacing the entire entry.\n\n This endpoint supports partial updates to:\n - Journal entry metadata (memo, date, currency, reference number)\n - Individual transaction modifications\n - Entity exchange rate adjustments\n - Vendor, department, and tag assignments\n - Account categorizations and amounts\n\n Key differences from PUT:\n - Only specified fields are updated (vs. full replacement)\n - Maintains existing data for unspecified fields\n - Supports granular transaction modifications\n - Preserves audit trail and timestamps\n - Allows incremental changes without full transaction rebuilds\n\n Validation requirements:\n - Modified transactions must maintain entity balance (debits = credits)\n - Cannot modify entries in closed accounting periods\n - All referenced accounts, vendors, departments must be active\n - Exchange rates must be valid for multi-currency transactions\n - Account assignments must be appropriate for transaction types\n " summary: Partial Update Intercompany Journal Entry parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedIntercompanyJournalEntry' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedIntercompanyJournalEntry' multipart/form-data: schema: $ref: '#/components/schemas/PatchedIntercompanyJournalEntry' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/IntercompanyJournalEntry' description: '' delete: operationId: coa_api_intercompany_journal_entry_destroy description: "\n Permanently deletes an intercompany journal entry and all related transactions.\n\n This endpoint performs a comprehensive cleanup when deleting an intercompany journal entry:\n - Validates that the entry can be deleted (not in closed period)\n - Removes all associated journal entries across entities\n - Updates summary tables and account balances\n - Handles cascade deletion of related transactions\n - Ensures data integrity across the accounting system\n\n Deletion restrictions:\n - Cannot delete entries in closed accounting periods\n\n Error conditions:\n - 400 Bad Request: Entry date is in a closed period\n - 409 Conflict: Entry has protected relationships (e.g., close checklist tasks)\n - 404 Not Found: Entry does not exist or user lacks access\n\n On successful deletion, all related journal entries are removed and accounting summaries are recalculated.\n " summary: Delete Intercompany Journal Entry parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '204': description: No response body /coa/api/intercompany-journal-entry/balance: post: operationId: coa_api_intercompany_journal_entry_balance_create description: "\n Balances an intercompany journal entry by entity and currency.\n\n This endpoint performs the same balancing logic as the frontend, applying:\n 1. Auto-fetching of exchange rates if not provided (requires date field)\n 2. Exchange rate roll-forward from native to book to consolidation currencies\n 3. Exchange rate plugging to ensure consolidation amounts match across currencies within an entity\n 4. Automatic creation of balancing transactions when debits != credits at any currency level\n\n The endpoint accepts a partial intercompany journal entry with transactions and optionally exchange rates,\n and returns the balanced version with:\n - Auto-fetched exchange rates (if exchange_rates is empty and date is provided)\n - Updated transactions with calculated book and consolidation amounts\n - New balancing transactions added where needed\n - Plugged exchange rates to maintain consolidation consistency\n\n This is useful for:\n - Validating journal entries before submission\n - Understanding what balancing entries will be created\n - Testing multi-currency and multi-entity scenarios\n - Auto-fetching exchange rates for the journal date\n " summary: Balance Intercompany Journal Entry tags: - Core Accounting requestBody: content: application/json: schema: type: object properties: date: type: string format: date description: 'Journal entry date (ISO format: YYYY-MM-DD). Used for auto-fetching exchange rates if exchange_rates is empty.' transactions: type: array items: type: object description: List of transaction objects exchange_rates: type: array items: type: object description: List of exchange rate objects (optional - will be auto-fetched if empty and date is provided) required: - transactions examples: BalanceRequest: value: transactions: - entity: 54 entity_name: Top Level entity_currency: USD currency: EUR debit_amount_native: 1000.0 tags: [] - entity: 54 entity_name: Top Level entity_currency: USD currency: EUR credit_amount_native: 999.5 tags: [] exchange_rates: - entity: 54 entity_name: Top Level originating_currency: EUR target_currency: USD exchange_rate: 1.1 - entity: 54 entity_name: Top Level originating_currency: USD target_currency: USD exchange_rate: 1.0 summary: Example balancing request with multi-currency transactions description: Request to balance transactions across two entities with different currencies security: - knoxApiToken: [] responses: '200': description: No response body /coa/api/journal_entry: get: operationId: coa_api_journal_entry_list description: "\n Retrieve a paginated list of journal entries with optional filtering and sorting.\n\n **Query Parameters:**\n - `start_date`, `end_date`: Filter by date range (defaults to last 6 months)\n - `account`: Filter by account ID(s) - supports multiple values\n - `source`: Filter by journal entry source\n - `journal_id`: Filter by specific journal ID\n - `all_time`: Include all entries regardless of date (true/false)\n - `sort`: Sort field (default: \"date\")\n\n **Response includes:**\n - Complete journal entry details with all transactions\n - Account information with names and numbers\n - Vendor and department details\n - Tag associations with groups\n - Attachment information\n - Exchange rate data for multi-currency entries\n " summary: List Journal Entries parameters: - in: query name: account schema: type: string description: Filter by account ID(s). Can specify multiple values. explode: true style: form - in: query name: all_time schema: type: boolean default: false description: Include all entries regardless of date range - in: query name: end_date schema: type: string description: End date for filtering (YYYY-MM-DD format) - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: source schema: type: string description: Filter by journal entry source (e.g., 'manual', 'CSV Upload') - in: query name: start_date schema: type: string description: Start date for filtering (YYYY-MM-DD format) tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedJournalEntryList' examples: JournalEntryResponse: value: count: 123 next: http://api.example.org/accounts/?offset=400&limit=100 previous: http://api.example.org/accounts/?offset=200&limit=100 results: - id: 7491945 transactions: - id: 24429462 entity_name: Top Level entity_currency: USD account_name: 1000 - Cash and Cash Equivalents account_number: '1000' tags: [] journal: 7491945 journal_order: 0004358 journal_memo: Test Journal Memo journal_type: journal_entry intercompany_journal: null created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: 12345.67 account: 180564 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: 285b736b-5dd4-4cd3-9c46-683bd1972042 debit_amount: 12345.67 credit_amount: null debit_amount_book: 12345.67 credit_amount_book: null debit_amount_native: 12345.67 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-31' merchant_name: null bank_description: Test Line Description note: null balance_before_transaction: null created_at: 2025-07-25T00:01:28+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T00:01:28+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429463 entity_name: Top Level entity_currency: USD account_name: 1600 - Fixed Assets account_number: '1600' vendor_name: ABC Bead Supply department_name: Engineering parent_department_name: R&D parent_department: 2127 tags: - id: 8360 group_name: Entity Type parent_name: null parent: null name: Operational Companies created_at: 2025-07-18T15:23:56+0000 last_modified_at: 2025-07-18T15:23:56+0000 group: 760 journal: 7491945 journal_order: 0004358 journal_memo: Test Journal Memo journal_type: journal_entry intercompany_journal: null created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -12345.67 account: 2563 last_modified_by_name: Zack Moss account_type: ASSET files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: a8002c20-549e-4bc6-969e-dbc2288f45ba debit_amount: null credit_amount: 12345.67 debit_amount_book: null credit_amount_book: 12345.67 debit_amount_native: null credit_amount_native: 12345.67 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-31' merchant_name: null bank_description: Test Line Description note: null balance_before_transaction: null created_at: 2025-07-25T00:01:28+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T00:01:28+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: 34182 department: 35 last_modified_by: 904 attachments: [] invoice: null reversals: - id: 7491946 order: 0004359 entity_name: Top Level entity_currency: USD order: 0004358 revenue_transactions: [] search_vector: '''0004358'':1A ''07'':3C ''2025'':2C ''31'':4C' search_text: ' 0004358' type: journal_entry journal_id: 5be022f1-77df-4cc7-977d-1c3d7d5828c8 memo: Test Journal Memo currency: USD exchange_rate: 1 exchange_rate_book: 1 created_automatically: false date: '2025-07-31' ref_number: null created_at: 2025-07-25T00:01:28+0000 source: manual source_id: null last_modified_at: 2025-07-25T00:01:28+0000 recurrent_journal_entry: null entity: 54 reversal_of: null intercompany_journal: null source_file: null chat: null summary: Complete journal entry with transactions description: Example response showing a journal entry with detailed transaction information description: '' post: operationId: coa_api_journal_entry_create description: "\n Create a new journal entry with transactions. Journal entries must balance - total debits must equal total credits.\n\n **Key Features:**\n - Automatic currency conversion using exchange rates\n - Vendor, Department and Custom Dimension assignment\n - Optional reversal date for automatic reversal entries\n - Validation against closed book periods\n\n **Validation Rules:**\n - Debits must equal credits in transaction currency (debit_native and credit_native)\n - Cannot create entries before closed book dates\n - Accounts must be active\n - Exchange rates are auto-calculated if not provided\n " summary: Create Journal Entry tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/JournalEntry' examples: BasicJournalEntryRequest: value: date: '2025-07-31' type: journal_entry transactions: - account: '180564' account_name: 1000 - Cash and Cash Equivalents debit_amount_native: 12345.67 debit_amount_book: 12345.67 debit_amount: 12345.67 bank_description: Test Line Description - account: '2563' account_name: 1600 - Fixed Assets credit_amount_native: 12345.67 credit_amount_book: 12345.67 credit_amount: 12345.67 bank_description: Test Line Description vendor: '34182' vendor_name: ABC Bead Supply department: '35' department_name: Engineering tags: - id: '8360' name: Operational Companies group: 760 memo: Test Journal Memo reversal_date: '2025-08-01' entity: '54' entity_name: Top Level entity_currency: USD currency: USD exchange_rate_book: 1 exchange_rate: 1 summary: Standard journal entry with two transactions description: Example of a basic journal entry moving money from cash to fixed assets application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/JournalEntry' multipart/form-data: schema: $ref: '#/components/schemas/JournalEntry' security: - knoxApiToken: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/JournalEntry' examples: CreateJournalEntryResponse: value: id: 7491945 transactions: - id: 24429462 entity_name: Top Level entity_currency: USD account_name: 1000 - Cash and Cash Equivalents account_number: '1000' tags: [] journal: 7491945 journal_order: 0004358 journal_memo: Test Journal Memo journal_type: journal_entry intercompany_journal: null created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: 12345.67 account: 180564 last_modified_by_name: API User account_type: ASSET files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 transaction_id: 285b736b-5dd4-4cd3-9c46-683bd1972042 debit_amount: 12345.67 credit_amount: null debit_amount_book: 12345.67 credit_amount_book: null debit_amount_native: 12345.67 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-31' merchant_name: null bank_description: Test Line Description note: null balance_before_transaction: null created_at: 2025-07-25T00:01:28+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T00:01:28+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429463 entity_name: Top Level entity_currency: USD account_name: 1600 - Fixed Assets account_number: '1600' vendor_name: ABC Bead Supply department_name: Engineering parent_department_name: R&D parent_department: 2127 tags: - id: 8360 group_name: Entity Type parent_name: null parent: null name: Operational Companies created_at: 2025-07-18T15:23:56+0000 last_modified_at: 2025-07-18T15:23:56+0000 group: 760 journal: 7491945 journal_order: 0004358 journal_memo: Test Journal Memo journal_type: journal_entry intercompany_journal: null created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -12345.67 account: 2563 last_modified_by_name: API User account_type: ASSET files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 transaction_id: a8002c20-549e-4bc6-969e-dbc2288f45ba debit_amount: null credit_amount: 12345.67 debit_amount_book: null credit_amount_book: 12345.67 debit_amount_native: null credit_amount_native: 12345.67 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-31' merchant_name: null bank_description: Test Line Description note: null balance_before_transaction: null created_at: 2025-07-25T00:01:28+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T00:01:28+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: 34182 department: 35 last_modified_by: 904 attachments: [] invoice: null reversals: - id: 7491946 order: 0004359 entity_name: Top Level entity_currency: USD order: 0004358 revenue_transactions: [] search_vector: '''0004358'':1A ''07'':3C ''2025'':2C ''31'':4C' search_text: ' 0004358' type: journal_entry journal_id: 5be022f1-77df-4cc7-977d-1c3d7d5828c8 memo: Test Journal Memo currency: USD exchange_rate: 1 exchange_rate_book: 1 created_automatically: false date: '2025-07-31' ref_number: null created_at: 2025-07-25T00:01:28+0000 source: manual source_id: null last_modified_at: 2025-07-25T00:01:28+0000 recurrent_journal_entry: null entity: 54 reversal_of: null intercompany_journal: null source_file: null chat: null summary: Response after successfully creating a journal entry description: Example response showing the created journal entry with generated IDs and timestamps description: '' /coa/api/journal_entry/{id}: get: operationId: coa_api_journal_entry_retrieve description: "\n Retrieve a specific journal entry by ID with all transaction details.\n\n **Response includes:**\n - Complete journal entry with all transactions\n - Account names, numbers, and types\n - Vendor and department information\n - Tag associations with groups\n - Exchange rate data for multi-currency entries\n - Attachment information\n - Reversal information if applicable\n " summary: Retrieve Journal Entry parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/JournalEntry' examples: RetrieveJournalEntryResponse: value: id: 7491945 transactions: - id: 24429462 entity_name: Top Level entity_currency: USD account_name: 1000 - Cash and Cash Equivalents account_number: '1000' tags: [] journal: 7491945 journal_order: 0004358 journal_memo: Test Journal Memo journal_type: journal_entry intercompany_journal: null created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: 12345.67 account: 180564 last_modified_by_name: API User account_type: ASSET files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: 285b736b-5dd4-4cd3-9c46-683bd1972042 debit_amount: 12345.67 credit_amount: null debit_amount_book: 12345.67 credit_amount_book: null debit_amount_native: 12345.67 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-31' merchant_name: null bank_description: Test Line Description note: null balance_before_transaction: null created_at: 2025-07-25T00:01:28+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T00:01:28+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429463 entity_name: Top Level entity_currency: USD account_name: 1600 - Fixed Assets account_number: '1600' vendor_name: ABC Bead Supply department_name: Engineering parent_department_name: R&D parent_department: 2127 tags: - id: 8360 group_name: Entity Type parent_name: null parent: null name: Operational Companies created_at: 2025-07-18T15:23:56+0000 last_modified_at: 2025-07-18T15:23:56+0000 group: 760 journal: 7491945 journal_order: 0004358 journal_memo: Test Journal Memo journal_type: journal_entry intercompany_journal: null created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -12345.67 account: 2563 last_modified_by_name: API User account_type: ASSET files: [] file_names: [] amount: 12345.67 amount_native: 12345.67 amount_book: 12345.67 amortization_schedule: [] transaction_id: a8002c20-549e-4bc6-969e-dbc2288f45ba debit_amount: null credit_amount: 12345.67 debit_amount_book: null credit_amount_book: 12345.67 debit_amount_native: null credit_amount_native: 12345.67 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-31' merchant_name: null bank_description: Test Line Description note: null balance_before_transaction: null created_at: 2025-07-25T00:01:28+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T00:01:28+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: 34182 department: 35 last_modified_by: 904 attachments: [] invoice: null reversals: [] entity_name: Top Level entity_currency: USD order: 0004358 revenue_transactions: [] search_vector: '''0004358'':1A ''07'':3C ''2025'':2C ''31'':4C' search_text: ' 0004358' type: journal_entry journal_id: 5be022f1-77df-4cc7-977d-1c3d7d5828c8 memo: Test Journal Memo currency: USD exchange_rate: 1 exchange_rate_book: 1 created_automatically: false date: '2025-07-31' ref_number: null created_at: 2025-07-25T00:01:28+0000 source: manual source_id: null last_modified_at: 2025-07-25T00:01:28+0000 recurrent_journal_entry: null entity: 54 reversal_of: null intercompany_journal: null source_file: null chat: null summary: Complete journal entry with all transaction details description: Example response showing a journal entry retrieved by ID description: '' put: operationId: coa_api_journal_entry_update description: "\n Update a journal entry completely. All transactions will be replaced with the new ones provided.\n\n **Important Notes:**\n - Cannot update entries before closed book dates\n - Must maintain double-entry bookkeeping (debits = credits)\n - All existing transactions will be replaced\n - Exchange rates will be recalculated if not provided\n\n **Validation Rules:**\n - Journal entry must balance in all currencies\n - Accounts must be active\n - Cannot modify entries in closed periods\n " summary: Update Journal Entry parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/JournalEntry' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/JournalEntry' multipart/form-data: schema: $ref: '#/components/schemas/JournalEntry' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/JournalEntry' examples: UpdateJournalEntryResponse: value: id: 7491945 transactions: - id: 24429464 entity_name: Top Level entity_currency: USD account_name: 1200 - Accounts Receivable account_number: '1200' tags: [] journal: 7491945 journal_order: 0004358 journal_memo: Updated Journal Memo journal_type: journal_entry intercompany_journal: null created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: 15000.0 account: 180565 last_modified_by_name: API User account_type: ASSET files: [] file_names: [] amount: 15000.0 amount_native: 15000.0 amount_book: 15000.0 amortization_schedule: [] transaction_id: 285b736b-5dd4-4cd3-9c46-683bd1972043 debit_amount: 15000.0 credit_amount: null debit_amount_book: 15000.0 credit_amount_book: null debit_amount_native: 15000.0 credit_amount_native: null currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-31' merchant_name: null bank_description: Updated Line Description note: null balance_before_transaction: null created_at: 2025-07-25T00:01:28+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T00:15:30+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: null department: null last_modified_by: 904 - id: 24429465 entity_name: Top Level entity_currency: USD account_name: 4000 - Sales Revenue account_number: '4000' vendor_name: XYZ Corporation department_name: Sales parent_department_name: Revenue parent_department: 2128 tags: - id: 8361 group_name: Revenue Type parent_name: null parent: null name: Product Sales created_at: 2025-07-18T15:23:56+0000 last_modified_at: 2025-07-18T15:23:56+0000 group: 761 journal: 7491945 journal_order: 0004358 journal_memo: Updated Journal Memo journal_type: journal_entry intercompany_journal: null created_automatically: false journal_attachments: [] journal_type_name: Journal Entry invoice: null bill: null date_month: '07' date_year: '2025' balance_after_transaction: -15000.0 account: 4001 last_modified_by_name: API User account_type: REVENUE files: [] file_names: [] amount: 15000.0 amount_native: 15000.0 amount_book: 15000.0 amortization_schedule: [] transaction_id: a8002c20-549e-4bc6-969e-dbc2288f45bb debit_amount: null credit_amount: 15000.0 debit_amount_book: null credit_amount_book: 15000.0 debit_amount_native: null credit_amount_native: 15000.0 currency: USD exchange_rate: 1 exchange_rate_book: 1 posted_at: '2025-07-31' merchant_name: null bank_description: Updated Line Description note: null balance_before_transaction: null created_at: 2025-07-25T00:01:28+0000 external_id: null needs_review: false last_modified_at: 2025-07-25T00:15:30+0000 draft_matches: null entity: 54 parent_bank_transaction: null vendor: 34183 department: 36 last_modified_by: 904 attachments: [] invoice: null reversals: [] entity_name: Top Level entity_currency: USD order: 0004358 revenue_transactions: [] search_vector: '''0004358'':1A ''07'':3C ''2025'':2C ''31'':4C' search_text: ' 0004358' type: journal_entry journal_id: 5be022f1-77df-4cc7-977d-1c3d7d5828c8 memo: Updated Journal Memo currency: USD exchange_rate: 1 exchange_rate_book: 1 created_automatically: false date: '2025-07-31' ref_number: null created_at: 2025-07-25T00:01:28+0000 source: manual source_id: null last_modified_at: 2025-07-25T00:15:30+0000 recurrent_journal_entry: null entity: 54 reversal_of: null intercompany_journal: null source_file: null chat: null summary: Response after successfully updating a journal entry description: Example response showing the updated journal entry with new transaction details description: '' patch: operationId: coa_api_journal_entry_partial_update description: "\n Partially update a journal entry. Only provided fields will be updated.\n\n **Common Use Cases:**\n - Update memo or reference number\n - Change journal entry date\n - Modify specific transaction amounts\n - Add or remove tags from transactions\n\n **Validation Rules:**\n - Journal entry must still balance after updates\n - Cannot modify entries in closed periods\n - Account changes must maintain chart of accounts rules\n " summary: Partial Update Journal Entry parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedJournalEntry' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedJournalEntry' multipart/form-data: schema: $ref: '#/components/schemas/PatchedJournalEntry' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/JournalEntry' description: '' delete: operationId: coa_api_journal_entry_destroy description: "\n Delete a journal entry and all its associated transactions.\n\n **Restrictions:**\n - Cannot delete entries before closed book dates\n\n **Response Codes:**\n - 204: Successfully deleted\n - 400: Cannot delete (books closed for this date)\n - 409: Cannot delete (associated with other objects)\n " summary: Delete Journal Entry parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '204': description: No response body '400': content: application/json: schema: description: Books are closed for this date description: '' '409': content: application/json: schema: description: Journal entry is associated with other objects description: '' /coa/api/tag/bulk-search: post: operationId: coa_api_tag_bulk_search_create description: Search for tags by exact name match in a single request. Supports upsert to create missing tags. summary: Bulk Search Custom Dimensions by Name tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkTagSearch' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BulkTagSearch' multipart/form-data: schema: $ref: '#/components/schemas/BulkTagSearch' required: true security: - knoxApiToken: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/TransactionTag' description: '' /coa/api/transaction: get: operationId: coa_api_transaction_retrieve 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.' summary: List Chart Transactions parameters: - in: query name: account schema: type: integer explode: true style: form - in: query name: account_id schema: type: integer explode: true style: form - in: query name: account_rollup schema: type: boolean default: false - in: query name: account_subtype schema: type: string explode: true style: form - in: query name: account_type schema: type: string explode: true style: form - in: query name: accounts schema: type: integer explode: true style: form - in: query name: aggregation_fields schema: type: string description: Comma-separated aggregations, e.g. sum:amount,count:id - in: query name: all_time schema: type: boolean default: false description: If true, uses full transaction date range for the customer; start_date and end_date are ignored - in: query name: bank schema: type: integer explode: true style: form - in: query name: bank_description schema: type: string - in: query name: bank_id schema: type: integer explode: true style: form - in: query name: categorized schema: type: string description: Filter by categorization state (true/false) - in: query name: credit_amount_equal schema: type: number format: double - in: query name: credit_amount_gte schema: type: number format: double - in: query name: credit_amount_lte schema: type: number format: double - in: query name: credit_amount_null schema: type: boolean default: false - in: query name: currency schema: type: string explode: true style: form - in: query name: debit_amount_equal schema: type: number format: double - in: query name: debit_amount_gte schema: type: number format: double - in: query name: debit_amount_lte schema: type: number format: double - in: query name: debit_amount_null schema: type: boolean default: false - in: query name: department schema: type: integer explode: true style: form - in: query name: department_id schema: type: integer explode: true style: form - in: query name: department_or_unassigned schema: type: boolean default: false - in: query name: display_opening_balance schema: type: boolean default: false description: If true, skip opening-balance computation - in: query name: download schema: type: boolean default: false description: If true, dispatch async CSV/Excel email export instead of returning rows - in: query name: end_date schema: type: string format: date description: Latest date (inclusive) for which to retrieve data. Defaults to end of current month - in: query name: entity schema: type: integer explode: true style: form - in: query name: entity_id schema: type: integer explode: true style: form - in: query name: entity_rollup schema: type: boolean default: false - in: query name: exclude_entity schema: type: integer explode: true style: form - in: query name: exclude_entity_id schema: type: integer explode: true style: form - in: query name: exclude_id schema: type: integer explode: true style: form - in: query name: exclude_journal schema: type: integer - in: query name: exclude_reconciliation_report schema: type: integer - in: query name: exclude_uncategorized_accounts schema: type: boolean default: false - in: query name: expense_or_ap schema: type: boolean - in: query name: group schema: type: integer explode: true style: form - in: query name: group_fields schema: type: string description: Comma-separated list of fields to group by (e.g. account,vendor,tag_group_) - in: query name: group_id schema: type: integer explode: true style: form - in: query name: group_keys schema: type: string description: Comma-separated values matched positionally to group_fields for drill-down - in: query name: has_linked_fixed_asset schema: type: string - in: query name: has_parent_bank_transaction schema: type: string - in: query name: include_deleted schema: type: boolean default: false description: 'When set to ''true'', returns ONLY deleted records instead of active records. Deleted records contain minimal data: ''id'', ''is_deleted=true'', ''deleted_at'' timestamp, and ''last_modified_at''. When ''false'' or omitted, returns ONLY active records. This provides clean separation between active and deleted data.' - in: query name: include_matches schema: type: boolean default: false description: If true, include match metadata (has_matches, primary_action_type) in serialized rows - in: query name: is_not_reconciled schema: type: boolean default: false - in: query name: is_reconciled schema: type: boolean default: false - in: query name: journal_type schema: type: string - in: query name: journal_type__nin schema: type: string explode: true style: form - in: query name: last_modified_at__gte schema: type: string description: 'Filter for records modified on or after this timestamp. Format: ISO 8601 (e.g., ''2024-01-01T00:00:00Z'' or ''2024-01-01''). Works with both active records and deleted records (filters by deletion time for deleted records).' - in: query name: last_modified_at__lte schema: type: string description: 'Filter for records modified on or before this timestamp. Format: ISO 8601 (e.g., ''2024-12-31T23:59:59Z'' or ''2024-12-31''). Works with both active records and deleted records (filters by deletion time for deleted records).' - in: query name: limit schema: type: integer default: 100 description: Maximum number of records to return per page. Default 100, maximum 10000. Use with offset to paginate - in: query name: match_type schema: type: string enum: - all - any default: all - in: query name: needs_review schema: type: boolean default: false - in: query name: no_department schema: type: boolean - in: query name: no_tag schema: type: boolean - in: query name: no_vendor schema: type: boolean - in: query name: offset schema: type: integer default: 0 description: Number of records to skip before collecting the result page. Use with limit to paginate - in: query name: opposing_account schema: type: integer explode: true style: form - in: query name: opposing_account_subtype schema: type: string - in: query name: ordering schema: type: string - in: query name: payee schema: type: integer explode: true style: form - in: query name: payee_id schema: type: integer explode: true style: form - in: query name: pivot_fields schema: type: string description: Comma-separated list of pivot dimensions - in: query name: q schema: type: string description: Free-text search across journal memo, bank description, and related fields - in: query name: reconciliation_report schema: type: integer - in: query name: revenue_or_receivables schema: type: boolean - in: query name: shouldPivot schema: type: boolean default: false - in: query name: sort schema: type: string description: 'Sort field; prefix with - for descending. Default: -posted_at' - in: query name: start_date schema: type: string format: date description: Earliest date (inclusive) for which to retrieve data. Defaults to six months ago - in: query name: tag schema: type: integer explode: true style: form - in: query name: tag_groups schema: type: integer explode: true style: form - in: query name: tag_id schema: type: integer explode: true style: form - in: query name: vendor schema: type: integer explode: true style: form - in: query name: vendor_id schema: type: integer explode: true style: form tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body x-mint: mcp: enabled: true name: get_transactions description: Search and filter chart transactions with various criteria /coa/api/transaction-match-process: post: operationId: process_transaction_match summary: Process Transaction Match tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body /coa/api/transaction-matches: get: operationId: list_transaction_matches summary: List Transaction Matches parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTransactionMatchList' description: '' /coa/api/transaction-matches-count: get: operationId: get_transaction_matches_count summary: Get Transaction Matches Count tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body /coa/api/transaction-matches/{id}: get: operationId: get_transaction_match summary: Retrieve Transaction Match parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TransactionMatch' description: '' put: operationId: update_transaction_match summary: Update Transaction Match parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/TransactionMatch' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TransactionMatch' multipart/form-data: schema: $ref: '#/components/schemas/TransactionMatch' required: true security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TransactionMatch' description: '' patch: operationId: partial_update_transaction_match summary: Partial Update Transaction Match parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedTransactionMatch' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedTransactionMatch' multipart/form-data: schema: $ref: '#/components/schemas/PatchedTransactionMatch' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TransactionMatch' description: '' delete: operationId: delete_transaction_match summary: Delete Transaction Match parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '204': description: No response body /coa/api/transaction-matches/{id}/reject: post: operationId: reject_transaction_match summary: Reject Transaction Match parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body /coa/api/transaction-matches/{id}/status: post: operationId: set_transaction_match_status description: Handle POST requests with 'action' parameter (accept/reject) summary: Set Transaction Match Status parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body put: operationId: update_transaction_match_status summary: Update Transaction Match Status parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body /coa/api/transaction/{id}: get: operationId: coa_api_transaction_retrieve_2 summary: Retrieve Chart Transaction parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ChartTransaction' description: '' put: operationId: coa_api_transaction_update summary: Update Chart Transaction parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/ChartTransaction' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ChartTransaction' multipart/form-data: schema: $ref: '#/components/schemas/ChartTransaction' required: true security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ChartTransaction' description: '' patch: operationId: coa_api_transaction_partial_update summary: Partial Update Chart Transaction parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedChartTransaction' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedChartTransaction' multipart/form-data: schema: $ref: '#/components/schemas/PatchedChartTransaction' security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ChartTransaction' description: '' delete: operationId: delete_chart_transaction summary: Delete Chart Transaction parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '204': description: No response body /coa/api/transaction/{transaction_id}/bill_payments: post: operationId: create_transaction_bill_payments summary: Create Bill Payments for Transaction parameters: - in: path name: transaction_id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '201': description: No response body /coa/api/transaction/{transaction_id}/credit_memo_payments: post: operationId: create_transaction_credit_memo_payments summary: Create Credit Memo Payments for Transaction parameters: - in: path name: transaction_id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '201': description: No response body /coa/api/transaction/{transaction_id}/debit_memo_payments: post: operationId: create_transaction_debit_memo_payments summary: Create Debit Memo Payments for Transaction parameters: - in: path name: transaction_id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '201': description: No response body /coa/api/transaction/{transaction_id}/invoice_payments: post: operationId: create_transaction_invoice_payments summary: Create Invoice Payments for Transaction parameters: - in: path name: transaction_id schema: type: integer required: true tags: - Core Accounting security: - knoxApiToken: [] responses: '201': description: No response body /coa/api/transaction/bulk-update: post: operationId: bulk_update_chart_transactions summary: Bulk Update Chart Transactions tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body /coa/api/transaction/merge: get: operationId: preview_chart_transaction_merge description: "\n Preview the result of merging two chart transactions.\n\n This endpoint shows what the merged journal entry will look like, allowing you to verify\n the merge before committing. The preview includes the journal that will be retained and\n the transactions that will remain after the merge.\n\n **Parameters:**\n - `transaction_ids` (query, required): Comma-separated list of exactly two transaction IDs\n\n **Returns:**\n A journal entry object containing the merged result with all remaining transactions.\n\n **Requirements:**\n - Must provide exactly two transaction IDs\n - Transactions must be from different journals\n - Transactions must have matching amounts\n - Transactions must belong to the same entity\n " summary: Preview Chart Transaction Merge tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/JournalEntry' description: '' '400': content: application/json: schema: description: Validation error - invalid transaction count, same journal, mismatched amounts, or mismatched entities description: '' post: operationId: merge_chart_transactions description: "\n Merge two offsetting chart transactions from different journals.\n\n This endpoint consolidates journals containing offsetting transactions by removing\n the specified transactions and combining the remaining transactions into a single journal entry.\n\n **Request Body:**\n - `transaction_ids` (array, required): Array of exactly two transaction IDs to merge\n - `transaction_match_id` (integer, optional): The AutoMergeSuggestion TransactionMatch\n the user explicitly accepted; when it names a suggestion over exactly this pair, the\n merge is recorded as a suggestion accept rather than a manual merge\n\n **Returns:**\n The merged journal entry with all remaining transactions.\n\n **Requirements:**\n - Must provide exactly two transaction IDs\n - Transactions must be from different journals\n - Transactions must have matching amounts\n - Transactions must belong to the same entity\n\n **Result:**\n - The two specified transactions are deleted\n - Other transactions from both journals are consolidated into a single journal\n - A draft queue record is created for audit purposes and auto-approved\n " summary: Merge Chart Transactions tags: - Core Accounting requestBody: content: application/json: schema: type: object properties: transaction_ids: type: array items: type: integer description: Array of exactly two transaction IDs to merge example: - 12345 - 67890 transaction_match_id: type: integer description: Optional id of the AutoMergeSuggestion TransactionMatch the user explicitly accepted; marks the merge as a suggestion accept required: - transaction_ids security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/JournalEntry' description: '' '400': content: application/json: schema: description: Validation error - invalid transaction count, draft queue not found, same journal, mismatched amounts, or mismatched entities description: '' /coa/api/transaction/totals: get: operationId: get_chart_transaction_totals description: 'Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter.' summary: Get Chart Transaction Totals tags: - Core Accounting security: - knoxApiToken: [] responses: '200': description: No response body /coa/api/vendor/{id}/contacts: get: operationId: coa_api_vendor_contacts_list description: 'Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter.' summary: List Vendor Contacts parameters: - in: path name: id schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - Core Accounting security: - knoxApiToken: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedVendorContactList' description: '' post: operationId: coa_api_vendor_contacts_create description: 'Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter.' summary: Create Vendor Contact parameters: - in: path name: id schema: type: integer required: true tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/VendorContact' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VendorContact' multipart/form-data: schema: $ref: '#/components/schemas/VendorContact' security: - knoxApiToken: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/VendorContact' description: '' /coa/api/vendor/bulk-search: post: operationId: coa_api_vendor_bulk_search_create 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. summary: Bulk Search Vendors by External ID or Name tags: - Core Accounting requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkVendorSearch' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BulkVendorSearch' multipart/form-data: schema: $ref: '#/components/schemas/BulkVendorSearch' required: true security: - knoxApiToken: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/Vendor' description: '' components: schemas: PatchedBudgetAccount: type: object properties: id: type: integer readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true account_name: type: string readOnly: true account_lineage: type: string readOnly: true department_name: type: string readOnly: true period: type: integer maximum: 32767 minimum: 0 default: 1 amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true budget: type: integer readOnly: true account: type: integer readOnly: true department: type: integer readOnly: true nullable: true PatchedIntercompanyJournalEntry: type: object properties: id: type: integer readOnly: true transactions: type: array items: $ref: '#/components/schemas/ChartTransaction' readOnly: true attachments: type: array items: $ref: '#/components/schemas/File' readOnly: true reversal_of_order: type: string readOnly: true reversals: type: array items: type: object additionalProperties: {} readOnly: true reversal_date: type: string format: date writeOnly: true nullable: true order: type: string journals_to_delete: type: array items: type: integer writeOnly: true exchange_rates: writeOnly: true source: type: string nullable: true source_file: type: integer nullable: true close_task_id: type: string chat_uuid: type: string format: uuid writeOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true type: $ref: '#/components/schemas/TypeF19Enum' journal_id: type: string format: uuid memo: type: string nullable: true maxLength: 1024 currency: type: string maxLength: 3 created_automatically: type: boolean date: type: string format: date ref_number: type: string nullable: true maxLength: 100 created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true reversal_of: type: integer nullable: true entities: type: array items: type: integer description: Entities involved in this intercompany journal entry. Used for consolidation filtering. BulkVendor: type: object properties: name: type: string external_id: type: string nullable: true vendor_type: nullable: true oneOf: - $ref: '#/components/schemas/BulkVendorVendorTypeEnum' - $ref: '#/components/schemas/NullEnum' email: type: string format: email nullable: true required: - name PatchedFixedAsset: type: object properties: id: type: integer readOnly: true entity_name: type: string readOnly: true entity_currency: type: string readOnly: true useful_life: type: string readOnly: true asset_class_useful_life: type: integer readOnly: true asset_class_name: type: string readOnly: true asset_account: type: string readOnly: true asset_account_name: type: string readOnly: true depreciation_expense_account: type: string readOnly: true depreciation_expense_account_name: type: string readOnly: true accumulated_depreciation_account: type: string readOnly: true accumulated_depreciation_account_name: type: string readOnly: true purchase_journal_entry_order: type: string readOnly: true purchase_transaction_id: type: string readOnly: true vendor_name: type: string readOnly: true department_name: type: string readOnly: true tags: type: array items: type: object additionalProperties: {} readOnly: true attachments: type: array items: $ref: '#/components/schemas/File' readOnly: true depreciations: type: array items: $ref: '#/components/schemas/FixedAssetDepreciation' nullable: true depreciation_start_date: type: string format: date nullable: true depreciation_end_date: type: string format: date nullable: true disposals: type: array items: $ref: '#/components/schemas/FixedAssetDisposal' readOnly: true nullable: true transfers: type: array items: $ref: '#/components/schemas/FixedAssetTransfer' readOnly: true nullable: true net_book_value: type: string readOnly: true depreciated_until: type: string format: date writeOnly: true nullable: true last_modified_at: type: string format: date-time readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true chat_uuid: type: string format: uuid writeOnly: true name: type: string maxLength: 250 description: type: string nullable: true currency: type: string maxLength: 3 initial_value: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true salvage_value: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true purchase_date: type: string format: date created_at: type: string format: date-time readOnly: true status: $ref: '#/components/schemas/FixedAssetStatusEnum' tag_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 tag_group_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 exchange_rate: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true exchange_rate_book: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true is_non_depreciable: type: boolean nullable: true pause_date: type: string format: date readOnly: true nullable: true pause_reason: type: string readOnly: true nullable: true last_resume_date: type: string format: date readOnly: true nullable: true chat_id: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true customer: type: integer readOnly: true entity: type: integer nullable: true asset_class: type: integer nullable: true purchase_journal_entry: type: integer nullable: true purchase_transaction: type: integer nullable: true vendor: type: integer nullable: true department: type: integer nullable: true purchase_transactions: type: array items: type: integer PaginatedJournalEntryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/JournalEntry' FixedAssetTransfer: type: object properties: id: type: integer readOnly: true source_asset_class_name: type: string readOnly: true new_asset_class_name: type: string readOnly: true reclassification_journal_entry_order: type: string readOnly: true catchup_depreciation_journal_entry_order: type: string readOnly: true created_asset_name: type: string readOnly: true effective_date: type: string format: date is_partial: type: boolean transfer_amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true transfer_accumulated_depreciation: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true transfer_percentage: type: number format: double maximum: 1000 minimum: -1000 exclusiveMaximum: true exclusiveMinimum: true new_useful_life_months: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true new_salvage_value: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true new_depreciation_start_date: type: string format: date nullable: true new_depreciation_end_date: type: string format: date nullable: true memo: type: string nullable: true created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true fixed_asset: type: integer source_asset_class: type: integer new_asset_class: type: integer reclassification_journal_entry: type: integer nullable: true catchup_depreciation_journal_entry: type: integer nullable: true created_asset: type: integer nullable: true required: - catchup_depreciation_journal_entry_order - created_asset_name - created_at - customer - effective_date - fixed_asset - id - last_modified_at - new_asset_class - new_asset_class_name - reclassification_journal_entry_order - source_asset_class - source_asset_class_name PaginatedFixedAssetAutomationMatchList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/FixedAssetAutomationMatch' FixedAsset: type: object properties: id: type: integer readOnly: true entity_name: type: string readOnly: true entity_currency: type: string readOnly: true useful_life: type: string readOnly: true asset_class_useful_life: type: integer readOnly: true asset_class_name: type: string readOnly: true asset_account: type: string readOnly: true asset_account_name: type: string readOnly: true depreciation_expense_account: type: string readOnly: true depreciation_expense_account_name: type: string readOnly: true accumulated_depreciation_account: type: string readOnly: true accumulated_depreciation_account_name: type: string readOnly: true purchase_journal_entry_order: type: string readOnly: true purchase_transaction_id: type: string readOnly: true vendor_name: type: string readOnly: true department_name: type: string readOnly: true tags: type: array items: type: object additionalProperties: {} readOnly: true attachments: type: array items: $ref: '#/components/schemas/File' readOnly: true depreciations: type: array items: $ref: '#/components/schemas/FixedAssetDepreciation' nullable: true depreciation_start_date: type: string format: date nullable: true depreciation_end_date: type: string format: date nullable: true disposals: type: array items: $ref: '#/components/schemas/FixedAssetDisposal' readOnly: true nullable: true transfers: type: array items: $ref: '#/components/schemas/FixedAssetTransfer' readOnly: true nullable: true net_book_value: type: string readOnly: true depreciated_until: type: string format: date writeOnly: true nullable: true last_modified_at: type: string format: date-time readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true chat_uuid: type: string format: uuid writeOnly: true name: type: string maxLength: 250 description: type: string nullable: true currency: type: string maxLength: 3 initial_value: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true salvage_value: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true purchase_date: type: string format: date created_at: type: string format: date-time readOnly: true status: $ref: '#/components/schemas/FixedAssetStatusEnum' tag_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 tag_group_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 exchange_rate: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true exchange_rate_book: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true is_non_depreciable: type: boolean nullable: true pause_date: type: string format: date readOnly: true nullable: true pause_reason: type: string readOnly: true nullable: true last_resume_date: type: string format: date readOnly: true nullable: true chat_id: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true customer: type: integer readOnly: true entity: type: integer nullable: true asset_class: type: integer nullable: true purchase_journal_entry: type: integer nullable: true purchase_transaction: type: integer nullable: true vendor: type: integer nullable: true department: type: integer nullable: true purchase_transactions: type: array items: type: integer required: - accumulated_depreciation_account - accumulated_depreciation_account_name - asset_account - asset_account_name - asset_class_name - asset_class_useful_life - attachments - created_at - customer - deleted_at - department_name - depreciation_expense_account - depreciation_expense_account_name - disposals - entity_currency - entity_name - id - is_deleted - last_modified_at - last_resume_date - name - net_book_value - pause_date - pause_reason - purchase_date - purchase_journal_entry_order - purchase_transaction_id - tags - transfers - useful_life - vendor_name FixedAssetStatusEnum: enum: - ACTIVE - PAUSED - DEPRECIATED - DISPOSED type: string description: '* `ACTIVE` - Active * `PAUSED` - Paused * `DEPRECIATED` - Depreciated * `DISPOSED` - Disposed' BlankEnum: enum: - '' Source3b3Enum: enum: - BILL - BREX - HUBSPOT - MANUAL - PAYROLL - SALESFORCE type: string description: '* `BILL` - Bill * `BREX` - Brex * `HUBSPOT` - Hubspot * `MANUAL` - Manual * `PAYROLL` - Payroll * `SALESFORCE` - Salesforce' PaginatedBudgetList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Budget' BulkDepartment: type: object properties: name: type: string parent_id: type: integer nullable: true required: - name BulkTagSearch: type: object properties: tags: type: array items: $ref: '#/components/schemas/BulkTag' upsert: type: boolean default: false description: If true, create tags that don't exist required: - tags PatchedBudget: type: object properties: id: type: integer readOnly: true entity_name: type: string readOnly: true prior_start_date: type: string readOnly: true prior_end_date: type: string readOnly: true department_name: type: string readOnly: true tags: type: array items: type: object additionalProperties: {} readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true name: type: string description: type: string nullable: true cadence: type: string nullable: true start_date: type: string format: date end_date: type: string format: date nullable: true periods: type: integer maximum: 32767 minimum: 0 breakdown_type: $ref: '#/components/schemas/BreakdownTypeEnum' tag_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 tag_group_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 currency: type: string maxLength: 3 created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true entity: type: integer nullable: true department: type: integer nullable: true TypeF19Enum: enum: - bill - bill_payment - bill_prepayment - check - credit_card - credit_memo - credit_memo_payment - debit_memo - debit_memo_payment - deposit - expense - invoice - intercompany_journal - invoice_payment - journal_entry - lease - payment - receive_payment - refund - revenue_recognition - sales_receipt - transfer - vendor_credit - void_bill - void_bill_payment - void_invoice_payment - void_credit_memo - void_credit_memo_payment - void_debit_memo_payment - void_invoice - elimination - revaluation - asset_reclassification type: string 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' BulkVendorSearch: type: object properties: vendors: type: array items: $ref: '#/components/schemas/BulkVendor' maxItems: 10000 minItems: 1 upsert: type: boolean default: false description: If true, create vendors that don't exist required: - vendors IntercompanyJournalEntry: type: object properties: id: type: integer readOnly: true transactions: type: array items: $ref: '#/components/schemas/ChartTransaction' readOnly: true attachments: type: array items: $ref: '#/components/schemas/File' readOnly: true reversal_of_order: type: string readOnly: true reversals: type: array items: type: object additionalProperties: {} readOnly: true reversal_date: type: string format: date writeOnly: true nullable: true order: type: string journals_to_delete: type: array items: type: integer writeOnly: true exchange_rates: writeOnly: true source: type: string nullable: true source_file: type: integer nullable: true close_task_id: type: string chat_uuid: type: string format: uuid writeOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true type: $ref: '#/components/schemas/TypeF19Enum' journal_id: type: string format: uuid memo: type: string nullable: true maxLength: 1024 currency: type: string maxLength: 3 created_automatically: type: boolean date: type: string format: date ref_number: type: string nullable: true maxLength: 100 created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true reversal_of: type: integer nullable: true entities: type: array items: type: integer description: Entities involved in this intercompany journal entry. Used for consolidation filtering. required: - attachments - created_at - customer - deleted_at - id - is_deleted - last_modified_at - reversal_of_order - reversals - transactions PatchedFixedAssetAutomationRule: type: object description: Serializer for automation rules properties: id: type: integer readOnly: true name: type: string description: Descriptive name for this rule maxLength: 255 entity: type: integer description: Entity this rule applies to (determines book currency) entity_name: type: string readOnly: true currency: type: string readOnly: true description: Book currency from entity (auto-populated) account: type: integer description: Create assets when transactions are posted to this account account_name: type: string readOnly: true account_number: type: string readOnly: true amount_threshold: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true description: Minimum transaction amount in book currency (materiality threshold) asset_class: type: integer description: Asset class to use for created assets asset_class_name: type: string readOnly: true needs_review: type: boolean description: If true, queue assets for review before creation forward_looking: type: boolean description: Only apply to transactions created after this rule created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true Budget: type: object properties: id: type: integer readOnly: true entity_name: type: string readOnly: true prior_start_date: type: string readOnly: true prior_end_date: type: string readOnly: true department_name: type: string readOnly: true tags: type: array items: type: object additionalProperties: {} readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true name: type: string description: type: string nullable: true cadence: type: string nullable: true start_date: type: string format: date end_date: type: string format: date nullable: true periods: type: integer maximum: 32767 minimum: 0 breakdown_type: $ref: '#/components/schemas/BreakdownTypeEnum' tag_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 tag_group_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 currency: type: string maxLength: 3 created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true entity: type: integer nullable: true department: type: integer nullable: true required: - created_at - customer - deleted_at - department_name - entity_name - id - is_deleted - last_modified_at - name - prior_end_date - prior_start_date - start_date - tags FixedAssetAutomationRule: type: object description: Serializer for automation rules properties: id: type: integer readOnly: true name: type: string description: Descriptive name for this rule maxLength: 255 entity: type: integer description: Entity this rule applies to (determines book currency) entity_name: type: string readOnly: true currency: type: string readOnly: true description: Book currency from entity (auto-populated) account: type: integer description: Create assets when transactions are posted to this account account_name: type: string readOnly: true account_number: type: string readOnly: true amount_threshold: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true description: Minimum transaction amount in book currency (materiality threshold) asset_class: type: integer description: Asset class to use for created assets asset_class_name: type: string readOnly: true needs_review: type: boolean description: If true, queue assets for review before creation forward_looking: type: boolean description: Only apply to transactions created after this rule created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true required: - account - account_name - account_number - amount_threshold - asset_class - asset_class_name - created_at - currency - entity - entity_name - id - last_modified_at - name PaginatedVendorContactList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/VendorContact' Department: type: object properties: id: type: integer readOnly: true parent_name: type: string readOnly: true tags: type: array items: type: object additionalProperties: {} readOnly: true last_modified_at: type: string format: date-time readOnly: true active: type: boolean default: true code: type: string maxLength: 250 name: type: string nullable: true maxLength: 250 display_name: type: string nullable: true maxLength: 600 tag_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 tag_group_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 created_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true parent: type: integer nullable: true required: - code - created_at - customer - id - last_modified_at - name - parent_name - tags BulkVendorVendorTypeEnum: enum: - vendor - customer - employee type: string description: '* `vendor` - vendor * `customer` - customer * `employee` - employee' TransactionTag: type: object properties: id: type: integer readOnly: true group_name: type: string readOnly: true parent_name: type: string readOnly: true nullable: true parent: type: integer nullable: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true is_active: type: boolean default: true name: type: string nullable: true maxLength: 250 created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true group: type: integer nullable: true required: - created_at - customer - deleted_at - group_name - id - is_deleted - last_modified_at - name - parent_name BudgetAccount: type: object properties: id: type: integer readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true account_name: type: string readOnly: true account_lineage: type: string readOnly: true department_name: type: string readOnly: true period: type: integer maximum: 32767 minimum: 0 default: 1 amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true budget: type: integer readOnly: true account: type: integer readOnly: true department: type: integer readOnly: true nullable: true required: - account - account_lineage - account_name - budget - created_at - customer - deleted_at - department - department_name - id - is_deleted - last_modified_at FixedAssetDisposal: type: object properties: id: type: integer readOnly: true journal_entry_order: type: string readOnly: true transaction_id: type: string writeOnly: true disposal_percentage: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true disposal_date: type: string format: date proceeds_amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true fixed_asset: type: integer journal_entry: type: integer nullable: true required: - created_at - customer - disposal_date - disposal_percentage - fixed_asset - id - journal_entry_order - last_modified_at File: type: object properties: id: type: integer readOnly: true customer: type: integer readOnly: true created_at: type: string format: date-time readOnly: true created_by: type: integer readOnly: true nullable: true created_by_name: type: string readOnly: true created_by_email: type: string readOnly: true last_modified_at: type: string format: date-time readOnly: true name: type: string url: type: string readOnly: true s3_content_type: type: string nullable: true s3_content_length: type: integer maximum: 2147483647 minimum: 0 nullable: true s3_path: type: string object_id: type: integer maximum: 2147483647 minimum: 0 nullable: true app: type: string readOnly: true model: type: string readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true required: - app - created_at - created_by - created_by_email - created_by_name - customer - deleted_at - id - is_deleted - last_modified_at - model - name - s3_path - url TermsEnum: enum: - custom - net_5 - net_7 - net_10 - net_15 - net_20 - net_30 - net_40 - net_45 - net_60 - net_90 - net_105 - net_120 - due_on_receipt type: string description: '* `custom` - Custom * `net_5` - Net 5 * `net_7` - Net 7 * `net_10` - Net 10 * `net_15` - Net 15 * `net_20` - Net 20 * `net_30` - Net 30 * `net_40` - Net 40 * `net_45` - Net 45 * `net_60` - Net 60 * `net_90` - Net 90 * `net_105` - Net 105 * `net_120` - Net 120 * `due_on_receipt` - Due on Receipt' BulkTag: type: object properties: name: type: string required: - name FixedAssetDepreciation: type: object properties: id: type: integer fixed_asset: type: integer writeOnly: true journal_entry_order: type: string readOnly: true depreciated_until: type: string format: date writeOnly: true nullable: true posted: type: boolean post_date: type: string format: date amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true created_at: type: string format: date-time readOnly: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true journal_entry: type: integer nullable: true required: - created_at - customer - journal_entry_order - last_modified_at - post_date JournalEntry: type: object properties: id: type: integer readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true transactions: type: array items: $ref: '#/components/schemas/ChartTransaction' readOnly: true attachments: type: array items: $ref: '#/components/schemas/File' readOnly: true invoice: type: integer nullable: true readOnly: true reversal_of_order: type: string readOnly: true reversals: type: array items: type: object additionalProperties: {} readOnly: true reversal_date: type: string format: date writeOnly: true nullable: true entity_name: type: string readOnly: true entity_currency: type: string readOnly: true created_by: type: integer nullable: true readOnly: true description: Derived user ID of the journal entry creator. Check created_by_source before explaining provenance. created_by_name: type: string nullable: true readOnly: true description: Derived name of the journal entry creator. Check created_by_source before explaining provenance. created_by_source: type: string nullable: true readOnly: true description: 'Provenance for created_by and created_by_name: ''draft_queue_created_by'', ''chart_transaction_last_modified_by_fallback'', or null.' order: type: string revenue_transactions: type: array items: type: integer writeOnly: true bulk_upload: type: boolean writeOnly: true chat_uuid: type: string format: uuid writeOnly: true nullable: true close_task_id: type: string update_reversal: type: boolean writeOnly: true default: false credit_memos: type: array items: type: object additionalProperties: {} readOnly: true debit_memos: type: array items: type: object additionalProperties: {} readOnly: true journals_to_delete: type: array items: type: integer writeOnly: true ramp_use_sandbox: type: string readOnly: true navan_region: type: string nullable: true 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.' readOnly: true search_vector: type: string readOnly: true nullable: true search_text: type: string readOnly: true nullable: true type: $ref: '#/components/schemas/TypeF19Enum' journal_id: type: string format: uuid memo: type: string nullable: true currency: type: string maxLength: 3 exchange_rate: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true exchange_rate_book: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true use_average_rate: type: boolean nullable: true created_automatically: type: boolean date: type: string format: date ref_number: type: string nullable: true maxLength: 100 created_at: type: string format: date-time readOnly: true source: type: string nullable: true maxLength: 250 source_id: type: string nullable: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true recurrent_journal_entry: type: integer nullable: true entity: type: integer nullable: true reversal_of: type: integer nullable: true intercompany_journal: type: integer nullable: true source_file: type: integer nullable: true chat: type: integer nullable: true last_draft: type: integer readOnly: true nullable: true required: - attachments - created_at - created_by - created_by_name - created_by_source - credit_memos - customer - debit_memos - deleted_at - entity_currency - entity_name - id - invoice - is_deleted - last_draft - last_modified_at - navan_region - ramp_use_sandbox - reversal_of_order - reversals - search_text - search_vector - transactions PaginatedFixedAssetAutomationRuleList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/FixedAssetAutomationRule' VendorType391Enum: enum: - vendor - customer - employee type: string description: '* `vendor` - Vendor * `customer` - Customer * `employee` - Employee' Status372Enum: enum: - ACTIVE - INACTIVE type: string description: '* `ACTIVE` - Active * `INACTIVE` - Inactive' VendorContact: type: object properties: id: type: integer readOnly: true name: type: string nullable: true first_name: type: string nullable: true maxLength: 250 last_name: type: string nullable: true maxLength: 250 email: type: string format: email nullable: true maxLength: 250 phone_number: type: string nullable: true maxLength: 250 mobile_number: type: string nullable: true maxLength: 250 last_modified_at: type: string format: date-time readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true required: - deleted_at - id - is_deleted - last_modified_at NullEnum: enum: - null PatchedTransactionMatch: type: object properties: id: type: integer readOnly: true matched_object: type: string readOnly: true app_label: type: string readOnly: true model: type: string readOnly: true drafts: type: string readOnly: true object_id: type: integer maximum: 2147483647 minimum: 0 created_at: type: string format: date-time readOnly: true reviewed_at: type: string format: date-time nullable: true status: $ref: '#/components/schemas/TransactionMatchStatusEnum' confidence_score: type: number format: double maximum: 1.0 minimum: 0.0 nullable: true reason: type: string nullable: true description: Why the matcher assigned this status (e.g. reference_surfaced, reference_auto_approved, needs_review, auto_approved). Display/observability only. maxLength: 64 snapshot: nullable: true description: Snapshot of transaction data preserved for training data when the transaction is deleted. customer: type: integer transaction: type: integer nullable: true content_type: type: integer reviewed_by: type: integer nullable: true AmortizationSchedule: type: object properties: id: type: integer amortization: type: integer writeOnly: true accounting_amortization: type: integer writeOnly: true journal_entry_order: type: string readOnly: true date: type: string format: date amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true posted: type: boolean customer: type: integer readOnly: true transaction: type: integer nullable: true bill_line: type: integer nullable: true journal_entry: type: integer nullable: true required: - amount - customer - date - journal_entry_order Vendor: type: object properties: id: type: integer readOnly: true contacts: type: array items: $ref: '#/components/schemas/VendorContact' parent_name: type: string readOnly: true stripe_connection_name: type: string readOnly: true nullable: true stripe_connection_entity: type: integer readOnly: true nullable: true stripe_connection_portal_url: type: string readOnly: true nullable: true stripe_connection_portal_enabled: type: boolean readOnly: true nullable: true stripe_connection_invoicing_enabled: type: boolean readOnly: true nullable: true vendor_custom_field_1_name: type: string readOnly: true payment_term_name_display: type: string readOnly: true last_modified_at: type: string format: date-time readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true search_vector: type: string readOnly: true nullable: true search_text: type: string readOnly: true nullable: true vendor_type: nullable: true default: vendor title: Payee Type oneOf: - $ref: '#/components/schemas/VendorType391Enum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' name: type: string nullable: true maxLength: 250 dba: type: string nullable: true maxLength: 250 company_name: type: string nullable: true maxLength: 250 website: type: string nullable: true maxLength: 250 first_name: type: string nullable: true maxLength: 250 last_name: type: string nullable: true maxLength: 250 email: type: string format: email nullable: true maxLength: 250 phone_number: type: string nullable: true maxLength: 250 mobile_number: type: string nullable: true maxLength: 250 address_street_1: type: string nullable: true maxLength: 250 address_street_2: type: string nullable: true maxLength: 250 city: type: string nullable: true maxLength: 250 state: type: string nullable: true maxLength: 250 zip_code: type: string nullable: true maxLength: 250 country: type: string nullable: true maxLength: 250 billing_address_street_1: type: string nullable: true maxLength: 250 billing_address_street_2: type: string nullable: true maxLength: 250 billing_city: type: string nullable: true maxLength: 250 billing_state: type: string nullable: true maxLength: 250 billing_zip_code: type: string nullable: true maxLength: 250 billing_country: type: string nullable: true maxLength: 250 shipping_addressee: type: string nullable: true maxLength: 255 billing_addressee: type: string nullable: true maxLength: 255 notes: type: string nullable: true maxLength: 250 business_id_ssn: type: string nullable: true title: Business ID/SSN maxLength: 250 is_1099: type: boolean vat_number: type: string nullable: true maxLength: 250 business_type: type: string nullable: true description: Business type classification (e.g., Korean NTS 업태) maxLength: 250 business_category: type: string nullable: true description: Business category classification (e.g., Korean NTS 종목) maxLength: 250 entity_use_code: type: string nullable: true description: Avalara entity/use code for tax exemptions (e.g., A - Federal Government, B - State/Local Govt) maxLength: 25 withholding_tax_id: type: string nullable: true 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. maxLength: 250 stripe_customer_id: type: string nullable: true maxLength: 250 use_stripe_auto_bill: type: boolean nullable: true bill_vendor_id: type: string nullable: true maxLength: 250 external_id: type: string nullable: true maxLength: 250 source: nullable: true oneOf: - $ref: '#/components/schemas/Source3b3Enum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' invoice_message: type: string nullable: true abbreviation: type: string nullable: true maxLength: 250 created_at: type: string format: date-time readOnly: true status: $ref: '#/components/schemas/Status372Enum' anrok_customer_id: type: string nullable: true maxLength: 250 terms: nullable: true oneOf: - $ref: '#/components/schemas/TermsEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' invoice_labels: nullable: true invoice_language: type: string nullable: true maxLength: 10 lineage_array: type: array items: type: string maxLength: 50 nullable: true description: Pre-computed lineage array from root to this vendor customer: type: integer readOnly: true parent: type: integer nullable: true stripe_connection: type: integer nullable: true default_expense_category: type: integer nullable: true vendor_custom_field_1: type: integer nullable: true payment_term: type: integer nullable: true description: Payment term for this vendor required: - created_at - customer - deleted_at - id - is_deleted - last_modified_at - name - parent_name - payment_term_name_display - search_text - search_vector - stripe_connection_entity - stripe_connection_invoicing_enabled - stripe_connection_name - stripe_connection_portal_enabled - stripe_connection_portal_url - vendor_custom_field_1_name PatchedChartTransaction: type: object properties: id: type: integer readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true entity_name: type: string readOnly: true entity_currency: type: string readOnly: true account_name: type: string nullable: true description: Combines account number and name in the format "number - name" readOnly: true account_number: type: string readOnly: true vendor_name: type: string readOnly: true description: Name of the linked Campfire Vendor object. Distinct from `merchant_name`, which is free text stored directly on the transaction and not linked to a Campfire object. vendor_id: type: string readOnly: true department_name: type: string readOnly: true department_code: type: string readOnly: true parent_department_name: type: string readOnly: true parent_department: type: integer readOnly: true tags: type: array items: type: object additionalProperties: {} readOnly: true journal: type: integer readOnly: true journal_order: type: string readOnly: true journal_memo: type: string readOnly: true journal_type: type: string readOnly: true intercompany_journal: type: integer readOnly: true created_automatically: type: boolean readOnly: true journal_attachments: type: array items: $ref: '#/components/schemas/File' readOnly: true journal_type_name: type: string nullable: true readOnly: true invoice: type: string nullable: true readOnly: true bill: type: string nullable: true readOnly: true date_month: type: string nullable: true readOnly: true description: Two-digit month (MM) derived from `posted_at`, the transaction date. date_year: type: string nullable: true readOnly: true description: Four-digit year (YYYY) derived from `posted_at`, the transaction date. balance_after_transaction: type: number format: double readOnly: true bank_account: type: string readOnly: true bank_account_name: type: string readOnly: true account: type: integer nullable: true last_modified_by_name: type: string readOnly: true account_type: type: string readOnly: true account_subtype: type: string readOnly: true parent_account_name: type: string readOnly: true files: type: string readOnly: true invoice_id: type: integer nullable: true readOnly: true invoice_number: type: string nullable: true readOnly: true bill_id: type: integer nullable: true readOnly: true bill_number: type: string nullable: true readOnly: true file_names: type: string readOnly: true has_matches: type: boolean readOnly: true has_ai: type: boolean readOnly: true has_rules: type: boolean readOnly: true has_merges: type: boolean readOnly: true has_fixed_asset_rule_matches: type: boolean readOnly: true primary_action_type: type: string readOnly: true suggested_account: type: integer readOnly: true nullable: true suggested_account_name: type: string readOnly: true nullable: true suggested_account_number: type: string readOnly: true nullable: true amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true readOnly: true description: Amount in consolidated currency (the currency of the root entity). amount_native: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true readOnly: true description: Amount in the currency the transaction was originally created in. amount_book: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true readOnly: true description: Amount in the currency of the entity this transaction belongs to. amortization_schedule: type: array items: $ref: '#/components/schemas/AmortizationSchedule' readOnly: true linked_amortizations: type: array items: type: object additionalProperties: {} readOnly: true created_fixed_assets: type: array items: type: object additionalProperties: type: string description: 'Return all fixed assets this transaction is linked to — via the legacy `purchase_transaction` FK (reverse: `created_fixed_assets`) AND the new `purchase_transactions` M2M (reverse: `linked_fixed_assets`). Dual-write keeps the FK target in the M2M, but using both covers any pre-backfill drift and surfaces non-primary M2M-only links (e.g. the secondary txns in a multi-txn fixed asset, or a split-resized txn).' readOnly: true reconciliation_report: type: string readOnly: true opposing_account_name: type: string readOnly: true opposing_account_number: type: string readOnly: true tax_rate: type: integer writeOnly: true nullable: true apply_both_sides: type: boolean writeOnly: true default: false transaction_match_id: type: integer writeOnly: true nullable: true transaction_id: type: string format: uuid readOnly: true debit_amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true credit_amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true debit_amount_book: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true credit_amount_book: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true debit_amount_native: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true credit_amount_native: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true currency: type: string maxLength: 3 exchange_rate: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true exchange_rate_book: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true posted_at: type: string format: date nullable: true title: Posted Date merchant_name: type: string nullable: true bank_description: type: string nullable: true tag_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 tag_group_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 note: type: string nullable: true receipt_url: type: string format: uri nullable: true maxLength: 512 balance_before_transaction: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true readOnly: true nullable: true created_at: type: string format: date-time readOnly: true external_id: type: string nullable: true needs_review: type: boolean last_modified_at: type: string format: date-time readOnly: true draft_matches: nullable: true last_lam_prediction_attempt: type: string format: date-time nullable: true customer: type: integer readOnly: true entity: type: integer source_entity: type: integer nullable: true title: Source Operating Entity parent_bank_transaction: type: integer nullable: true vendor: type: integer nullable: true department: type: integer nullable: true last_modified_by: type: integer nullable: true PatchedJournalEntry: type: object properties: id: type: integer readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true transactions: type: array items: $ref: '#/components/schemas/ChartTransaction' readOnly: true attachments: type: array items: $ref: '#/components/schemas/File' readOnly: true invoice: type: integer nullable: true readOnly: true reversal_of_order: type: string readOnly: true reversals: type: array items: type: object additionalProperties: {} readOnly: true reversal_date: type: string format: date writeOnly: true nullable: true entity_name: type: string readOnly: true entity_currency: type: string readOnly: true created_by: type: integer nullable: true readOnly: true description: Derived user ID of the journal entry creator. Check created_by_source before explaining provenance. created_by_name: type: string nullable: true readOnly: true description: Derived name of the journal entry creator. Check created_by_source before explaining provenance. created_by_source: type: string nullable: true readOnly: true description: 'Provenance for created_by and created_by_name: ''draft_queue_created_by'', ''chart_transaction_last_modified_by_fallback'', or null.' order: type: string revenue_transactions: type: array items: type: integer writeOnly: true bulk_upload: type: boolean writeOnly: true chat_uuid: type: string format: uuid writeOnly: true nullable: true close_task_id: type: string update_reversal: type: boolean writeOnly: true default: false credit_memos: type: array items: type: object additionalProperties: {} readOnly: true debit_memos: type: array items: type: object additionalProperties: {} readOnly: true journals_to_delete: type: array items: type: integer writeOnly: true ramp_use_sandbox: type: string readOnly: true navan_region: type: string nullable: true 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.' readOnly: true search_vector: type: string readOnly: true nullable: true search_text: type: string readOnly: true nullable: true type: $ref: '#/components/schemas/TypeF19Enum' journal_id: type: string format: uuid memo: type: string nullable: true currency: type: string maxLength: 3 exchange_rate: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true exchange_rate_book: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true use_average_rate: type: boolean nullable: true created_automatically: type: boolean date: type: string format: date ref_number: type: string nullable: true maxLength: 100 created_at: type: string format: date-time readOnly: true source: type: string nullable: true maxLength: 250 source_id: type: string nullable: true last_modified_at: type: string format: date-time readOnly: true customer: type: integer readOnly: true recurrent_journal_entry: type: integer nullable: true entity: type: integer nullable: true reversal_of: type: integer nullable: true intercompany_journal: type: integer nullable: true source_file: type: integer nullable: true chat: type: integer nullable: true last_draft: type: integer readOnly: true nullable: true BulkDepartmentSearch: type: object properties: departments: type: array items: $ref: '#/components/schemas/BulkDepartment' maxItems: 10000 minItems: 1 upsert: type: boolean default: false description: If true, create departments that don't exist required: - departments PaginatedIntercompanyJournalEntryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/IntercompanyJournalEntry' PaginatedTransactionMatchList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/TransactionMatch' FixedAssetAutomationMatch: type: object description: Serializer for pending asset matches in review queue properties: id: type: integer readOnly: true rule: type: integer rule_name: type: string readOnly: true rule_account_name: type: string readOnly: true rule_threshold: type: number format: double maximum: 10000000000000 minimum: -10000000000000 exclusiveMaximum: true exclusiveMinimum: true readOnly: true rule_needs_review: type: boolean readOnly: true transaction: type: integer readOnly: true transaction_description: type: string readOnly: true transaction_date: type: string format: date readOnly: true transaction_amount: type: string readOnly: true proposed_name: type: string maxLength: 250 proposed_asset_class: type: integer proposed_initial_value: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true proposed_salvage_value: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true proposed_purchase_date: type: string format: date proposed_depreciation_start_date: type: string format: date proposed_entity: type: integer nullable: true proposed_department: type: integer nullable: true proposed_vendor: type: integer nullable: true created_asset: type: integer readOnly: true nullable: true description: The asset created when this match was accepted created_at: type: string format: date-time readOnly: true required: - created_asset - created_at - id - proposed_asset_class - proposed_depreciation_start_date - proposed_initial_value - proposed_name - proposed_purchase_date - rule - rule_account_name - rule_name - rule_needs_review - rule_threshold - transaction - transaction_amount - transaction_date - transaction_description TransactionMatchStatusEnum: enum: - pending - draft - accepted - rejected type: string description: '* `pending` - Pending * `draft` - Draft * `accepted` - Accepted * `rejected` - Rejected' ChartTransaction: type: object properties: id: type: integer readOnly: true is_deleted: type: boolean readOnly: true default: false deleted_at: type: string format: date-time readOnly: true nullable: true entity_name: type: string readOnly: true entity_currency: type: string readOnly: true account_name: type: string nullable: true description: Combines account number and name in the format "number - name" readOnly: true account_number: type: string readOnly: true vendor_name: type: string readOnly: true description: Name of the linked Campfire Vendor object. Distinct from `merchant_name`, which is free text stored directly on the transaction and not linked to a Campfire object. vendor_id: type: string readOnly: true department_name: type: string readOnly: true department_code: type: string readOnly: true parent_department_name: type: string readOnly: true parent_department: type: integer readOnly: true tags: type: array items: type: object additionalProperties: {} readOnly: true journal: type: integer readOnly: true journal_order: type: string readOnly: true journal_memo: type: string readOnly: true journal_type: type: string readOnly: true intercompany_journal: type: integer readOnly: true created_automatically: type: boolean readOnly: true journal_attachments: type: array items: $ref: '#/components/schemas/File' readOnly: true journal_type_name: type: string nullable: true readOnly: true invoice: type: string nullable: true readOnly: true bill: type: string nullable: true readOnly: true date_month: type: string nullable: true readOnly: true description: Two-digit month (MM) derived from `posted_at`, the transaction date. date_year: type: string nullable: true readOnly: true description: Four-digit year (YYYY) derived from `posted_at`, the transaction date. balance_after_transaction: type: number format: double readOnly: true bank_account: type: string readOnly: true bank_account_name: type: string readOnly: true account: type: integer nullable: true last_modified_by_name: type: string readOnly: true account_type: type: string readOnly: true account_subtype: type: string readOnly: true parent_account_name: type: string readOnly: true files: type: string readOnly: true invoice_id: type: integer nullable: true readOnly: true invoice_number: type: string nullable: true readOnly: true bill_id: type: integer nullable: true readOnly: true bill_number: type: string nullable: true readOnly: true file_names: type: string readOnly: true has_matches: type: boolean readOnly: true has_ai: type: boolean readOnly: true has_rules: type: boolean readOnly: true has_merges: type: boolean readOnly: true has_fixed_asset_rule_matches: type: boolean readOnly: true primary_action_type: type: string readOnly: true suggested_account: type: integer readOnly: true nullable: true suggested_account_name: type: string readOnly: true nullable: true suggested_account_number: type: string readOnly: true nullable: true amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true readOnly: true description: Amount in consolidated currency (the currency of the root entity). amount_native: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true readOnly: true description: Amount in the currency the transaction was originally created in. amount_book: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true readOnly: true description: Amount in the currency of the entity this transaction belongs to. amortization_schedule: type: array items: $ref: '#/components/schemas/AmortizationSchedule' readOnly: true linked_amortizations: type: array items: type: object additionalProperties: {} readOnly: true created_fixed_assets: type: array items: type: object additionalProperties: type: string description: 'Return all fixed assets this transaction is linked to — via the legacy `purchase_transaction` FK (reverse: `created_fixed_assets`) AND the new `purchase_transactions` M2M (reverse: `linked_fixed_assets`). Dual-write keeps the FK target in the M2M, but using both covers any pre-backfill drift and surfaces non-primary M2M-only links (e.g. the secondary txns in a multi-txn fixed asset, or a split-resized txn).' readOnly: true reconciliation_report: type: string readOnly: true opposing_account_name: type: string readOnly: true opposing_account_number: type: string readOnly: true tax_rate: type: integer writeOnly: true nullable: true apply_both_sides: type: boolean writeOnly: true default: false transaction_match_id: type: integer writeOnly: true nullable: true transaction_id: type: string format: uuid readOnly: true debit_amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true credit_amount: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true debit_amount_book: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true credit_amount_book: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true debit_amount_native: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true credit_amount_native: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true currency: type: string maxLength: 3 exchange_rate: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true exchange_rate_book: type: number format: double maximum: 100000000000000 minimum: -100000000000000 exclusiveMaximum: true exclusiveMinimum: true nullable: true posted_at: type: string format: date nullable: true title: Posted Date merchant_name: type: string nullable: true bank_description: type: string nullable: true tag_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 tag_group_ids: type: array items: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 note: type: string nullable: true receipt_url: type: string format: uri nullable: true maxLength: 512 balance_before_transaction: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true readOnly: true nullable: true created_at: type: string format: date-time readOnly: true external_id: type: string nullable: true needs_review: type: boolean last_modified_at: type: string format: date-time readOnly: true draft_matches: nullable: true last_lam_prediction_attempt: type: string format: date-time nullable: true customer: type: integer readOnly: true entity: type: integer source_entity: type: integer nullable: true title: Source Operating Entity parent_bank_transaction: type: integer nullable: true vendor: type: integer nullable: true department: type: integer nullable: true last_modified_by: type: integer nullable: true required: - account_name - account_number - account_subtype - account_type - amortization_schedule - amount - amount_book - amount_native - balance_after_transaction - balance_before_transaction - bank_account - bank_account_name - bill - bill_id - bill_number - created_at - created_automatically - created_fixed_assets - customer - date_month - date_year - deleted_at - department_code - department_name - entity - entity_currency - entity_name - file_names - files - has_ai - has_fixed_asset_rule_matches - has_matches - has_merges - has_rules - id - intercompany_journal - invoice - invoice_id - invoice_number - is_deleted - journal - journal_attachments - journal_memo - journal_order - journal_type - journal_type_name - last_modified_at - last_modified_by_name - linked_amortizations - opposing_account_name - opposing_account_number - parent_account_name - parent_department - parent_department_name - primary_action_type - reconciliation_report - suggested_account - suggested_account_name - suggested_account_number - tags - transaction_id - vendor_id - vendor_name TransactionMatch: type: object properties: id: type: integer readOnly: true matched_object: type: string readOnly: true app_label: type: string readOnly: true model: type: string readOnly: true drafts: type: string readOnly: true object_id: type: integer maximum: 2147483647 minimum: 0 created_at: type: string format: date-time readOnly: true reviewed_at: type: string format: date-time nullable: true status: $ref: '#/components/schemas/TransactionMatchStatusEnum' confidence_score: type: number format: double maximum: 1.0 minimum: 0.0 nullable: true reason: type: string nullable: true description: Why the matcher assigned this status (e.g. reference_surfaced, reference_auto_approved, needs_review, auto_approved). Display/observability only. maxLength: 64 snapshot: nullable: true description: Snapshot of transaction data preserved for training data when the transaction is deleted. customer: type: integer transaction: type: integer nullable: true content_type: type: integer reviewed_by: type: integer nullable: true required: - app_label - content_type - created_at - customer - drafts - id - matched_object - model - object_id - transaction PaginatedFixedAssetList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/FixedAsset' PatchedFixedAssetAutomationMatch: type: object description: Serializer for pending asset matches in review queue properties: id: type: integer readOnly: true rule: type: integer rule_name: type: string readOnly: true rule_account_name: type: string readOnly: true rule_threshold: type: number format: double maximum: 10000000000000 minimum: -10000000000000 exclusiveMaximum: true exclusiveMinimum: true readOnly: true rule_needs_review: type: boolean readOnly: true transaction: type: integer readOnly: true transaction_description: type: string readOnly: true transaction_date: type: string format: date readOnly: true transaction_amount: type: string readOnly: true proposed_name: type: string maxLength: 250 proposed_asset_class: type: integer proposed_initial_value: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true proposed_salvage_value: type: number format: double maximum: 1000000000000000000 minimum: -1000000000000000000 exclusiveMaximum: true exclusiveMinimum: true proposed_purchase_date: type: string format: date proposed_depreciation_start_date: type: string format: date proposed_entity: type: integer nullable: true proposed_department: type: integer nullable: true proposed_vendor: type: integer nullable: true created_asset: type: integer readOnly: true nullable: true description: The asset created when this match was accepted created_at: type: string format: date-time readOnly: true BreakdownTypeEnum: enum: - standard - department_row type: string description: '* `standard` - Standard (Account-based) * `department_row` - Department (Row)' securitySchemes: knoxApiToken: type: apiKey in: header name: Authorization description: Token-based authentication with required prefix "Token"