# Abandon Bill Draft Source: https://docs.campfire.ai/api-reference/accounts-payable/abandon-bill-draft https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill-draft/{id}/abandon POST /bill-draft//abandon — hard-delete an unfinished UI upload draft. # Bill Stat Card Aggregates Source: https://docs.campfire.ai/api-reference/accounts-payable/bill-stat-card-aggregates https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/bill/stats Customer-scoped counts and outstanding amounts for the Bills page Needs Approval / Awaiting Payment / Overdue stat cards. # Bills Inbox open-item count Source: https://docs.campfire.ai/api-reference/accounts-payable/bills-inbox-open-item-count https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/bill-draft/inbox-count GET /bill-draft/inbox-count — count of open inbox drafts for the nav badge. # Bulk Search Bills by Number Source: https://docs.campfire.ai/api-reference/accounts-payable/bulk-search-bills-by-number https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill/bulk-search Search for thousands of bills by exact bill number match in a single request. Optimized for performance. # Bulk Search Debit Memos by Number Source: https://docs.campfire.ai/api-reference/accounts-payable/bulk-search-debit-memos-by-number https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/debit-memo/bulk-search Search for thousands of debit memos by exact debit memo number match in a single request. Optimized for performance. # Bulk Sync Bills to Ramp Source: https://docs.campfire.ai/api-reference/accounts-payable/bulk-sync-bills-to-ramp https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill/bulk-sync-to-ramp/ Sync multiple bills without a source to Ramp using the enabled Ramp connection # Create Accounting Bill Source: https://docs.campfire.ai/api-reference/accounts-payable/create-accounting-bill https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill/ Creates a new accounting bill with line items and automatic journal entry generation. This endpoint allows for complex bill creation with: - Multiple line items with different accounts, departments, and vendor assignments - Automatic accounts payable journal entry creation - Tax calculations and tax account handling - Exchange rate support for multi-currency transactions - Custom field support for additional bill metadata Requirements: - All referenced accounts must exist and be active - Vendor must exist - Entity must exist - Line items must have valid amounts and descriptions - Currency must be valid for the entity - Accounting date must be before closed book date # Create Bill Draft Source: https://docs.campfire.ai/api-reference/accounts-payable/create-bill-draft https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill-draft GET list (customer-scoped, AG Grid server-side: paginate / sort / filter) + POST UI upload. # Create Debit Memo Source: https://docs.campfire.ai/api-reference/accounts-payable/create-debit-memo https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/debit-memo Creates a new accounting debit memo with line items and automatic journal entry generation. Debit memos are used to record amounts owed to vendors or to adjust vendor account balances. This endpoint handles multi-currency transactions, departmental allocations, and automatic double-entry bookkeeping. # Delete Accounting Bill Source: https://docs.campfire.ai/api-reference/accounts-payable/delete-accounting-bill https://api.meetcampfire.com/api/schema?format=json delete /coa/api/v1/bill/{id}/ Permanently deletes an accounting bill and its associated journal entry. This endpoint performs a complete deletion of the bill including: - Removal of all bill line items and associated data - Deletion of the corresponding accounts payable journal entry - Cleanup of any tax calculations and allocations - Removal of vendor payment allocations if applicable **Important Notes:** - This operation is irreversible and permanently removes the bill from the system - The associated journal entry will be automatically deleted to maintain accounting integrity - All double-entry bookkeeping records related to this bill will be removed - Any payments allocated to this bill should be handled separately before deletion - Deletion may affect financial reports and account balances **Restrictions:** - Bills with allocated payments may require payment reallocation first - Consider the impact on historical financial reporting - Bills cannot be deleted in a closed period # Delete Bill Payment Source: https://docs.campfire.ai/api-reference/accounts-payable/delete-bill-payment https://api.meetcampfire.com/api/schema?format=json delete /coa/api/v1/bill/{bill_id}/payment/{payment_id}/void/ Delete a bill payment. This removes the payment record and updates the transaction to uncategorized. # Delete Debit Memo Source: https://docs.campfire.ai/api-reference/accounts-payable/delete-debit-memo https://api.meetcampfire.com/api/schema?format=json delete /coa/api/v1/debit-memo/{id} # Delete Debit Memo Used Payment Source: https://docs.campfire.ai/api-reference/accounts-payable/delete-debit-memo-used-payment https://api.meetcampfire.com/api/schema?format=json delete /coa/api/v1/debit-memo/{debit_memo_id}/payment/{payment_id}/void Remove a debit memo 'mark used' payment application. This recategorizes the transaction back to Uncategorized and deletes the payment record. # Discard Bill Draft Source: https://docs.campfire.ai/api-reference/accounts-payable/discard-bill-draft https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill-draft/{id}/discard POST /bill-draft//discard — terminal state with a required reason. # Generate Bill Amortization Schedule Source: https://docs.campfire.ai/api-reference/accounts-payable/generate-bill-amortization-schedule https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/bill/amortization/generate-schedule # Get Default Department and Tags for Empty Transaction Source: https://docs.campfire.ai/api-reference/accounts-payable/get-default-department-and-tags-for-empty-transaction https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/bill/{bill_id}/empty-transaction-default-department-tags Get the default department and tags from the bill line with the largest total amount. This endpoint is used to provide default values when creating empty transactions (marking as paid without a transaction). The total amount is calculated as: amount + tax. If multiple lines have the same total amount, the line with the lowest ID (first created) is selected. The department and tags are retrieved directly from the bill line. # Get Next Debit Memo Number Source: https://docs.campfire.ai/api-reference/accounts-payable/get-next-debit-memo-number https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/debit-memo/next-debit-memo-number # List Accounting Bills Source: https://docs.campfire.ai/api-reference/accounts-payable/list-accounting-bills https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/bill/ Retrieve a paginated list of accounting bills with comprehensive filtering, search, and sorting capabilities. This endpoint provides complete access to your bills data with: - Advanced filtering by date ranges, payment status, vendors, entities, and currency - Full-text search across bill numbers, vendor names, addresses, and bill messages - Flexible sorting by any field including calculated fields (totals, amounts due, etc.) - Comprehensive pagination with customizable page sizes - Aging calculations and payment status categorization - Automatic calculation of totals, amounts paid, and amounts due **Deleted Records Support:** - When include_deleted=true: Returns ONLY deleted bills with minimal data (id, is_deleted, deleted_at, last_modified_at) - When include_deleted=false or omitted: Returns ONLY active bills with full data - Timestamp filtering (last_modified_at__gte/lte) works with both active and deleted records # List Bill Drafts Source: https://docs.campfire.ai/api-reference/accounts-payable/list-bill-drafts https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/bill-draft GET list (customer-scoped, AG Grid server-side: paginate / sort / filter) + POST UI upload. # List Bill Payments Source: https://docs.campfire.ai/api-reference/accounts-payable/list-bill-payments https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/bill-payments Retrieve a paginated list of bill payments (payments applied against accounts payable bills), designed for syncing payment data into external systems. Results are ordered by (last_modified_at, id) ascending, so pages are stable and a sync can resume from where it left off. **Full sync (cursor pagination):** - Pass an empty cursor parameter (cursor=) on the first request - Follow the 'next' URL from each response until it is null **Incremental sync (time-based):** - Store the highest last_modified_at value you have processed - On the next run, pass it as last_modified_at__gte to fetch only new and updated payments **Voids:** - Voided payments are included by default with voided_date set, so integrators can detect payments that were reversed after a previous sync - Filter with voided=true or voided=false to fetch only one kind # List Debit Memos Source: https://docs.campfire.ai/api-reference/accounts-payable/list-debit-memos https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/debit-memo Retrieves a paginated list of accounting debit memos with filtering and sorting capabilities. Supports filtering by date ranges, status, vendors, entities, and full-text search. # Mark Bill as Paid Source: https://docs.campfire.ai/api-reference/accounts-payable/mark-bill-as-paid https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill/{bill_id}/pay/ Mark a bill as paid, allowing partial payments. This endpoint supports multiple payment methods: - Apply existing transactions as payments - Apply debit memos to reduce the bill balance - Create manual payments without a transaction The request body should contain at least one of: - transactions: List of transaction payments to apply - debit_memos: List of debit memos to apply - empty_transactions: List of manual payments without transactions # Mark Debit Memo as Used Source: https://docs.campfire.ai/api-reference/accounts-payable/mark-debit-memo-as-used https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/debit-memo/{debit_memo_id}/mark-used Mark a debit memo as used by linking to an existing credit-side transaction. The transaction's credit amount will be recategorized to A/P to clear the debit memo. The debit memo's status will be updated to "used" or "partially_used" based on the amount applied vs the total amount. # Partial Update Accounting Bill Source: https://docs.campfire.ai/api-reference/accounts-payable/partial-update-accounting-bill https://api.meetcampfire.com/api/schema?format=json patch /coa/api/v1/bill/{id}/ Performs a partial update of an existing accounting bill using PATCH semantics. This endpoint allows selective modification of bill fields without requiring a complete bill replacement. You can update specific aspects of the bill while leaving other fields unchanged. **Updatable Fields:** - Bill metadata (number, dates, descriptions, vendor, entity) - Line items (amounts, accounts, descriptions, departments) - Payment terms and due dates - Tax calculations and allocations - Custom fields and tags - Currency and exchange rates # Partial Update Bill Draft Source: https://docs.campfire.ai/api-reference/accounts-payable/partial-update-bill-draft https://api.meetcampfire.com/api/schema?format=json patch /coa/api/v1/bill-draft/{id} GET detail + PATCH update on a single BillDraft. # Partial Update Debit Memo Source: https://docs.campfire.ai/api-reference/accounts-payable/partial-update-debit-memo https://api.meetcampfire.com/api/schema?format=json patch /coa/api/v1/debit-memo/{id} Performs a partial update of an existing accounting debit memo using PATCH semantics. This endpoint allows selective modification of debit memo fields without requiring a complete replacement. # Promote Bill Draft Source: https://docs.campfire.ai/api-reference/accounts-payable/promote-bill-draft https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill-draft/{id}/promote POST /bill-draft//promote — routes through the promote service. # Reopen Voided Bill Source: https://docs.campfire.ai/api-reference/accounts-payable/reopen-voided-bill https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill/{bill_id}/reopen/ Reopen a voided bill. This removes the void date and void journal entry, and sets the bill status back to open. The voiding journal entry will be deleted to reverse the void operation. # Reopen Voided Debit Memo Source: https://docs.campfire.ai/api-reference/accounts-payable/reopen-voided-debit-memo https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/debit-memo/{debit_memo_id}/reopen/ Reopen a voided debit memo. This removes the void date and void journal entry, and sets the debit memo status back to open. The voiding journal entry will be deleted to reverse the void operation. # Retrieve Accounting Bill Source: https://docs.campfire.ai/api-reference/accounts-payable/retrieve-accounting-bill https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/bill/{id}/ Retrieve a single accounting bill by ID with complete detail including all line items, payments, and related data. This endpoint returns comprehensive bill information including: - Full bill details with vendor, entity, and customer information - All line items with account details, departments, tags, and amortization schedules - Complete payment history with journal entry references - Calculated fields including total amounts, amounts paid, amounts due, and payment status - Journal entry references for accounting integration - Exchange rate information for multi-currency bills # Retrieve Bill Draft Source: https://docs.campfire.ai/api-reference/accounts-payable/retrieve-bill-draft https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/bill-draft/{id} GET detail + PATCH update on a single BillDraft. # Retrieve Debit Memo Source: https://docs.campfire.ai/api-reference/accounts-payable/retrieve-debit-memo https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/debit-memo/{id} Retrieves a single accounting debit memo with complete details including line items, payments, and accounting relationships. # Save Bill Amortization Schedule Source: https://docs.campfire.ai/api-reference/accounts-payable/save-bill-amortization-schedule https://api.meetcampfire.com/api/schema?format=json put /coa/api/v1/bill/amortization/generate-schedule # Sync Bill to Ramp Source: https://docs.campfire.ai/api-reference/accounts-payable/sync-bill-to-ramp https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill/{bill_id}/sync-to-ramp/ Sync a bill without a source to Ramp using the enabled Ramp connection # Update Accounting Bill Source: https://docs.campfire.ai/api-reference/accounts-payable/update-accounting-bill https://api.meetcampfire.com/api/schema?format=json put /coa/api/v1/bill/{id}/ Update an existing accounting bill with complete replacement of all data including line items and metadata. This endpoint performs a full update (PUT) of an accounting bill with: - Complete replacement of all bill data including vendor, entity, dates, and terms - Full replacement of all line items with new account assignments, amounts, and descriptions - Automatic recalculation of journal entries and accounting transactions - Preservation of payment history while updating balances and amounts due - Validation of all referenced accounts, vendors, entities, and departments - Automatic exchange rate updates for multi-currency bills - Custom field updates and attachment management # Update Bill Draft Source: https://docs.campfire.ai/api-reference/accounts-payable/update-bill-draft https://api.meetcampfire.com/api/schema?format=json put /coa/api/v1/bill-draft/{id} GET detail + PATCH update on a single BillDraft. # Update Debit Memo Source: https://docs.campfire.ai/api-reference/accounts-payable/update-debit-memo https://api.meetcampfire.com/api/schema?format=json put /coa/api/v1/debit-memo/{id} Performs a complete update of an existing accounting debit memo using PUT semantics. This endpoint allows full replacement of debit memo data including line items and journal entry recalculation. # Void Bill Source: https://docs.campfire.ai/api-reference/accounts-payable/void-bill https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill/{bill_id}/void/ Void an existing bill. This creates a reversing journal entry to void the bill by reversing all debit and credit amounts. The bill status will be updated to reflect the void. # Void Bill Payment Source: https://docs.campfire.ai/api-reference/accounts-payable/void-bill-payment https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/bill/{bill_id}/payment/{payment_id}/void/ Void an existing bill payment. This creates a reversing journal entry to void the payment and updates the bill status. Optionally accepts a void_date in the request body to specify when the payment should be voided. If not provided, defaults to today's date. # Void Debit Memo Source: https://docs.campfire.ai/api-reference/accounts-payable/void-debit-memo https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/debit-memo/{debit_memo_id}/void/ Void an existing debit memo. This creates a reversing journal entry to void the debit memo by reversing all debit and credit amounts. The debit memo status will be updated to reflect the void. # Void Debit Memo Used Payment Source: https://docs.campfire.ai/api-reference/accounts-payable/void-debit-memo-used-payment https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/debit-memo/{debit_memo_id}/payment/{payment_id}/void Void a debit memo 'mark used' payment by creating a reversing journal entry. This creates a reversing JE that credits the A/P account and debits Uncategorized, then marks the payment as voided. # Bulk Apply Transaction Payment to Selected Invoices Source: https://docs.campfire.ai/api-reference/accounts-receivable/bulk-apply-transaction-payment-to-selected-invoices https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/invoice/bulk-apply-payment Apply a single transaction payment to multiple selected invoices. Supports two selection modes: - Explicit invoice IDs (``invoice_ids``) - Filter-based selection (``filters``) for "select all matching" behaviour Reuses :meth:`MarkInvoicePaidView.apply_transaction_payment` so that line-level payment splitting, FX gain/loss realisation, and transaction cleanup are all respected. A single ``DraftQueue`` is created when approval is required. # Bulk Create Invoices Source: https://docs.campfire.ai/api-reference/accounts-receivable/bulk-create-invoices https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/invoice/bulk-create Create multiple invoices atomically in a single transaction. All invoices are created within a single database transaction. If any invoice creation fails, all invoices are rolled back and no invoices are created. This endpoint validates all invoices before creating any of them, ensuring data integrity. # Bulk Search Credit Memos by Number Source: https://docs.campfire.ai/api-reference/accounts-receivable/bulk-search-credit-memos-by-number https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/credit-memo/bulk-search Search for thousands of credit memos by exact credit memo number match in a single request. Optimized for performance. # Bulk Search Invoices by Number Source: https://docs.campfire.ai/api-reference/accounts-receivable/bulk-search-invoices-by-number https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/invoice/bulk-search Search for thousands of invoices by exact invoice number match in a single request. Optimized for performance. # Calculate Invoice Payment Source: https://docs.campfire.ai/api-reference/accounts-receivable/calculate-invoice-payment https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/invoice/{invoice_id}/calculate-payment Calculate the payment details for an invoice. This endpoint calculates: - Total amount due on the invoice - Applied payments (existing + proposed) - Applied credits (existing + proposed credit memos) - Payment term discounts (based on payment dates) - ALL OR NOTHING: discount only applies if paying full invoice - Remaining balance due Supports payment terms with early payment discounts (all-or-nothing). # Create Credit Memo Source: https://docs.campfire.ai/api-reference/accounts-receivable/create-credit-memo https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/credit-memo Creates a new accounting credit memo with line items and automatic journal entry generation. This endpoint allows for comprehensive credit memo creation with: - Multiple line items with different products, accounts, amounts, and departmental allocations - Automatic journal entry creation following double-entry bookkeeping principles - Multi-currency support with exchange rate handling - Client and entity relationship management - Contract associations for revenue recognition tracking - Product-based line item categorization with tax handling - Tag-based transaction categorization and reporting # Create Invoice Source: https://docs.campfire.ai/api-reference/accounts-receivable/create-invoice https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/invoice/ Creates a new accounting invoice with line items and automatic journal entry generation. This endpoint allows for comprehensive invoice creation with: - Multiple line items with different products, rates, quantities, and tax handling - Automatic accounts receivable journal entry creation - Tax calculations and tax account handling - Multi-currency support with exchange rate handling - Product-based taxation rules - Service date tracking for revenue recognition - Contract and purchase order integration - Stripe payment integration support Key features: - Credits revenue accounts for each line item amount - Debits accounts receivable for the total amount - Handles tax calculations with appropriate tax accounts - Supports entity-specific currency conversions - Creates proper double-entry accounting transactions - Validates client, entity, and product relationships - Integrates with Stripe for payment processing Requirements: - All referenced products, clients, and entities must exist and be active - Client must be of type 'customer' - Line items must have valid amounts, quantities, and rates - Currency must be valid for the entity - Tax calculations must comply with configured tax rules # Delete Credit Memo Source: https://docs.campfire.ai/api-reference/accounts-receivable/delete-credit-memo https://api.meetcampfire.com/api/schema?format=json delete /coa/api/v1/credit-memo/{id} Permanently deletes an accounting credit memo and all associated data from the system. This endpoint performs a complete removal of the credit memo including: - Complete credit memo record deletion with all line items - Automatic journal entry removal and accounting transaction cleanup **Accounting Impact:** - Associated journal entries are automatically deleted to maintain accounting integrity - Exchange rate records and multi-currency data are cleaned up **Restrictions:** - Credit memos that have been applied to invoices cannot be deleted - Credit memos in closed accounting periods may have deletion restrictions - Consider the impact on historical financial reporting # Delete Credit Memo Used Payment Source: https://docs.campfire.ai/api-reference/accounts-receivable/delete-credit-memo-used-payment https://api.meetcampfire.com/api/schema?format=json delete /coa/api/v1/credit-memo/{credit_memo_id}/payment/{payment_id}/void Remove a credit memo 'mark used' payment application. This recategorizes the transaction back to Uncategorized and deletes the payment record. # Delete Invoice Source: https://docs.campfire.ai/api-reference/accounts-receivable/delete-invoice https://api.meetcampfire.com/api/schema?format=json delete /coa/api/v1/invoice/{id}/ Permanently deletes an accounting invoice and its associated journal entry and related data. This endpoint performs a complete deletion of the invoice including: - Removal of all invoice line items and associated product data - Deletion of the corresponding accounts receivable journal entry - Removal of payment records and journal entries **Important Notes:** - This operation is irreversible and permanently removes the invoice from the system - The associated journal entry will be automatically deleted to maintain accounting integrity **Restrictions:** - Invoices in closed accounting periods cannot be deleted - Consider the impact on historical financial reporting # Delete Invoice Payment Source: https://docs.campfire.ai/api-reference/accounts-receivable/delete-invoice-payment https://api.meetcampfire.com/api/schema?format=json delete /coa/api/v1/invoice/{invoice_id}/payment/{payment_id}/void/ Delete an invoice payment. This removes the payment record and updates the transaction to uncategorized. For Stripe payments, this will also process a refund through Stripe. # Execute invoice report Source: https://docs.campfire.ai/api-reference/accounts-receivable/execute-invoice-report https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/invoice/report/{id}/data Execute saved invoice report and return DataTable-compatible response. :param request: HTTP request with query params :param pk: Custom report ID :return: Paginated, sparse-formatted response # Get Client Invoice Statement PDF Source: https://docs.campfire.ai/api-reference/accounts-receivable/get-client-invoice-statement-pdf https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/invoice/statement/client/{client_id}/pdf/ Generate a customer statement PDF for a specific client. This creates a professional, customer-facing statement showing: - All outstanding invoices as of the specified date - Running balance - Total balance due - Payment advice slip # Get Credit Memo PDF Source: https://docs.campfire.ai/api-reference/accounts-receivable/get-credit-memo-pdf https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/credit-memo/{id}/pdf/ # Get Default Payment Amount Source: https://docs.campfire.ai/api-reference/accounts-receivable/get-default-payment-amount https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/invoice/{invoice_id}/default-payment Get the default payment amount for an invoice based on when payment is posted. If the invoice has discount terms and the posted date is within the discount period, the discounted amount is returned. Otherwise, the full amount is returned. # Get Next Credit Memo Number Source: https://docs.campfire.ai/api-reference/accounts-receivable/get-next-credit-memo-number https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/credit-memo/next-credit-memo-number # Invoice Stat Card Aggregates Source: https://docs.campfire.ai/api-reference/accounts-receivable/invoice-stat-card-aggregates https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/invoice/stats Customer-scoped counts and outstanding amounts for the Invoices page Open / Sent / Overdue stat cards. # List Credit Memos Source: https://docs.campfire.ai/api-reference/accounts-receivable/list-credit-memos https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/credit-memo Retrieves a paginated list of accounting credit memos with comprehensive filtering and sorting capabilities. This endpoint provides a powerful interface for browsing and searching credit memos with: - Advanced filtering by date ranges, status, clients, entities, and contracts - Full-text search across credit memo numbers, messages, and client names - Flexible sorting by multiple fields including amounts and relationships - Optimized performance with efficient database queries and pagination - Complete credit memo details including line items, payment status, and accounting relationships **Key Features:** - Date range filtering for credit memo creation and application dates - Status-based filtering (open, partially_used, used, voided) - Client and entity-based filtering with hierarchical client support - Contract association filtering for revenue recognition workflows - Full-text search capabilities across key fields **Query Parameters:** - `start_date`, `end_date`: Filter by credit memo date range - `status`: Filter by application status (open, partially_used, used, voided) - `q`: Full-text search across credit memo number, message, and client name - `client`: Filter by specific client IDs (supports multiple values) - `entity`: Filter by specific entity IDs (supports multiple values) - `contract`: Filter by specific contract IDs (supports multiple values) - `sort`: Sort by various fields (credit_memo_date, client_name, total_amount, etc.) - `limit`, `offset`: Pagination controls for large result sets # List Invoice Payments Source: https://docs.campfire.ai/api-reference/accounts-receivable/list-invoice-payments https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/invoice-payments Retrieve a paginated list of invoice payments (payments applied against accounts receivable invoices), designed for syncing payment data into external systems. Results are ordered by (last_modified_at, id) ascending, so pages are stable and a sync can resume from where it left off. **Full sync (cursor pagination):** - Pass an empty cursor parameter (cursor=) on the first request - Follow the 'next' URL from each response until it is null **Incremental sync (time-based):** - Store the highest last_modified_at value you have processed - On the next run, pass it as last_modified_at__gte to fetch only new and updated payments **Voids:** - Voided payments are included by default with voided_date set, so integrators can detect payments that were reversed after a previous sync - Filter with voided=true or voided=false to fetch only one kind # List Invoices Source: https://docs.campfire.ai/api-reference/accounts-receivable/list-invoices https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/invoice/ Retrieve a paginated list of invoices with comprehensive filtering, sorting, and download capabilities. This endpoint provides powerful invoice listing with: - Advanced filtering by date ranges, status, clients, and entities - Full-text search across multiple fields - Flexible sorting options including custom calculated fields - Async CSV export functionality via email - Optimized queries with prefetched relationships **Filtering Options:** - Date-based filtering (invoice_date, due_date ranges) - Status-based filtering (payment status, sent status, aging buckets) - Entity and client-based filtering (supports multiple selections) - Contract and currency filtering - Full-text search across invoice numbers, addresses, messages, and client names **Sorting Capabilities:** - Standard field sorting (invoice_date, total_amount, due_date, etc.) - Custom calculated field sorting (amount_due, client_name, contract_name) - Ascending/descending order with null handling **Performance Features:** - Efficient database queries with proper indexing - Prefetched related objects (lines, payments, clients, entities) - Pagination support for large datasets - Optimized for high-volume invoice management **Export Functionality:** - Async CSV generation and email delivery - Filtered export based on current query parameters - Background processing to handle large datasets # Mark Credit Memo as Used Source: https://docs.campfire.ai/api-reference/accounts-receivable/mark-credit-memo-as-used https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/credit-memo/{credit_memo_id}/mark-used Mark a credit memo as used by linking to an existing transaction. The transaction's debit amount will be recategorized to A/R to clear the credit memo. The credit memo's status will be updated to "used" or "partially_used" based on the amount applied vs the total amount. # Mark Invoice as Paid Source: https://docs.campfire.ai/api-reference/accounts-receivable/mark-invoice-as-paid https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/invoice/{invoice_id}/pay/ Mark an invoice as paid, allowing partial payments. This endpoint supports multiple payment methods: - Apply existing transactions as payments - Apply credit memos to reduce the invoice balance - Create manual payments without a transaction The request body should contain at least one of: - transactions: List of transaction payments to apply - credit_memos: List of credit memos to apply - empty_transactions: List of manual payments without transactions # Partial Update Credit Memo Source: https://docs.campfire.ai/api-reference/accounts-receivable/partial-update-credit-memo https://api.meetcampfire.com/api/schema?format=json patch /coa/api/v1/credit-memo/{id} Performs a partial update of an existing accounting credit memo using PATCH semantics. This endpoint allows selective modification of credit memo fields without requiring a complete credit memo replacement. You can update specific aspects of the credit memo while leaving other fields unchanged. **Updatable Fields:** - Credit memo metadata (dates, messages, descriptions, client, entity, currency) - Line items (amounts, accounts, descriptions, departments, products) - Reference numbers and contract associations - Exchange rates and currency information - Custom fields and additional metadata - Application status and tracking information # Partial Update Invoice Source: https://docs.campfire.ai/api-reference/accounts-receivable/partial-update-invoice https://api.meetcampfire.com/api/schema?format=json patch /coa/api/v1/invoice/{id}/ Performs a partial update of an existing accounting invoice using PATCH semantics. This endpoint allows selective modification of invoice fields without requiring a complete invoice replacement. You can update specific aspects of the invoice while leaving other fields unchanged. **Updatable Fields:** - Invoice metadata (dates, terms, descriptions, client, entity, currency) - Line items (amounts, accounts, descriptions, departments, products) - Payment terms and due dates - Tax calculations and allocations - Custom fields and tags - Contract and purchase order associations - Exchange rates and currency information # Preview invoice report Source: https://docs.campfire.ai/api-reference/accounts-receivable/preview-invoice-report https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/invoice/report/preview Execute invoice report preview from query params. :param request: HTTP request with report configuration :return: Paginated response or CSV stream # Reopen Voided Credit Memo Source: https://docs.campfire.ai/api-reference/accounts-receivable/reopen-voided-credit-memo https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/credit-memo/{credit_memo_id}/reopen/ Reopen a voided credit memo. This removes the void date and void journal entry, and sets the credit memo status back to open. The voiding journal entry will be deleted to reverse the void operation. # Reopen Voided Invoice Source: https://docs.campfire.ai/api-reference/accounts-receivable/reopen-voided-invoice https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/invoice/{invoice_id}/reopen/ Reopen a voided invoice. This removes the void date and void journal entry, and sets the invoice status back to open. The voiding journal entry will be deleted to reverse the void operation. # Retrieve Credit Memo Source: https://docs.campfire.ai/api-reference/accounts-receivable/retrieve-credit-memo https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/credit-memo/{id} Retrieves a single accounting credit memo with complete details including line items, payments, and accounting relationships. This endpoint provides comprehensive credit memo information with: - Complete credit memo metadata (dates, amounts, status, currency, terms) - All associated line items with product details, account information, and departmental allocations - Payment application history with journal entry references and transaction details - Client and entity information with relationship details - Contract associations for revenue recognition and reporting - File attachments and supporting documentation - Journal entry references for accounting audit trails and compliance # Retrieve Invoice Source: https://docs.campfire.ai/api-reference/accounts-receivable/retrieve-invoice https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/invoice/{id}/ Retrieves a single accounting invoice with complete details including line items, payments, and accounting relationships. This endpoint provides comprehensive invoice information with: - Complete invoice metadata (dates, amounts, status, terms) - All associated line items with product details and tax information - Payment history with journal entry references and transaction details # Send Credit Memo Source: https://docs.campfire.ai/api-reference/accounts-receivable/send-credit-memo https://api.meetcampfire.com/api/schema?format=json put /coa/api/v1/credit-memo/{id}/send/ Send a single credit memo via email. # Update Credit Memo Source: https://docs.campfire.ai/api-reference/accounts-receivable/update-credit-memo https://api.meetcampfire.com/api/schema?format=json put /coa/api/v1/credit-memo/{id} Performs a complete update of an existing accounting credit memo using PUT semantics. This endpoint allows full replacement of credit memo data including: - Complete credit memo metadata update (dates, amounts, client, entity, currency) - Full line item replacement with new products, accounts, amounts, and departmental allocations - Journal entry recalculation and update with new accounting transactions - Exchange rate updates for multi-currency credit memos - Contract and reference number association updates - Custom field updates and modifications **Important Notes:** - This is a full replacement operation - all credit memo data will be updated - Missing fields in the request will be set to null or default values - Existing line items will be completely replaced with the new line items - Journal entries will be updated to reflect all changes # Update Invoice Source: https://docs.campfire.ai/api-reference/accounts-receivable/update-invoice https://api.meetcampfire.com/api/schema?format=json put /coa/api/v1/invoice/{id}/ Performs a complete update of an existing accounting invoice using PUT semantics. This endpoint allows full replacement of invoice data including: - Complete invoice metadata update (dates, amounts, terms, client, entity) - Full line item replacement with new products, quantities, rates, and tax calculations - Journal entry recalculation and update with new accounting transactions - Exchange rate updates for multi-currency invoices **Important Notes:** - This is a full replacement operation - all invoice data will be updated - Missing fields in the request will be set to null or default values - Existing line items will be completely replaced with the new line items - Journal entries will be updated to reflect all changes # Void Credit Memo Source: https://docs.campfire.ai/api-reference/accounts-receivable/void-credit-memo https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/credit-memo/{credit_memo_id}/void/ Void an existing credit memo. This creates a reversing journal entry to void the credit memo by reversing all debit and credit amounts. The credit memo status will be updated to reflect the void. # Void Credit Memo Used Payment Source: https://docs.campfire.ai/api-reference/accounts-receivable/void-credit-memo-used-payment https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/credit-memo/{credit_memo_id}/payment/{payment_id}/void Void a credit memo 'mark used' payment by creating a reversing journal entry. This creates a reversing JE that credits the A/R account and debits Uncategorized, then marks the payment as voided. # Void Invoice Source: https://docs.campfire.ai/api-reference/accounts-receivable/void-invoice https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/invoice/{invoice_id}/void/ Void an existing invoice. This creates a reversing journal entry to void the invoice by reversing all debit and credit amounts. The invoice status will be updated to reflect the void. # Void Invoice Payment Source: https://docs.campfire.ai/api-reference/accounts-receivable/void-invoice-payment https://api.meetcampfire.com/api/schema?format=json post /coa/api/v1/invoice/{invoice_id}/payment/{payment_id}/void/ Void an existing invoice payment. This creates a reversing journal entry to void the payment and updates the invoice status. For Stripe payments, this will also process a refund through Stripe. Optionally accepts a void_date in the request body to specify when the payment should be voided. If not provided, defaults to today's date. # Bulk Match GL Transactions to Statement Transactions Source: https://docs.campfire.ai/api-reference/bank-reconciliation/bulk-match-gl-transactions-to-statement-transactions https://api.meetcampfire.com/api/schema?format=json post /coa/api/v2/reconciliation/{id}/bulk-match-transactions Match multiple GL transactions to statement transactions in a single request. Pairs are validated atomically — all succeed or none are created. # Confirm Selection of Transactions to Reconcile Source: https://docs.campfire.ai/api-reference/bank-reconciliation/confirm-selection-of-transactions-to-reconcile https://api.meetcampfire.com/api/schema?format=json post /coa/api/v2/reconciliation/{id}/transactions/confirm Confirm the selection of GL transactions for reconciliation. Pass selected transaction IDs in the request body. Selected transactions are marked as RECONCILED; deselected transactions have their status as suggested matches to this reconciliation report cleared. # Create Bank Reconciliation Report Source: https://docs.campfire.ai/api-reference/bank-reconciliation/create-bank-reconciliation-report https://api.meetcampfire.com/api/schema?format=json post /coa/api/v2/reconciliation Create a new bank reconciliation report for a specific account and date range. Cannot create overlapping date ranges for the same account and entity. # Delete Bank Reconciliation Report Source: https://docs.campfire.ai/api-reference/bank-reconciliation/delete-bank-reconciliation-report https://api.meetcampfire.com/api/schema?format=json delete /coa/api/v2/reconciliation/{id} Delete a bank reconciliation report and all associated data. # Get Bank Reconciliation Report Source: https://docs.campfire.ai/api-reference/bank-reconciliation/get-bank-reconciliation-report https://api.meetcampfire.com/api/schema?format=json get /coa/api/v2/reconciliation/{id} Retrieve a specific bank reconciliation report by ID. Includes report metadata, status, async task status for PDF processing, and attached files/CSV statements. # List Bank Reconciliation Reports Source: https://docs.campfire.ai/api-reference/bank-reconciliation/list-bank-reconciliation-reports https://api.meetcampfire.com/api/schema?format=json get /coa/api/v2/reconciliation Retrieve a paginated list of bank reconciliation reports. Supports filtering by start_date, end_date, entity, account, and search query (q). Default sort is by statement_ending_date descending. # List GL Transactions for Reconciliation Source: https://docs.campfire.ai/api-reference/bank-reconciliation/list-gl-transactions-for-reconciliation https://api.meetcampfire.com/api/schema?format=json get /coa/api/v2/reconciliation/{id}/source-transactions List source (GL) transactions available for reconciliation. Supports filtering by date range, bank, vendor, department, tag, currency, and reconciliation status. # Parse Bank Statement Page Source: https://docs.campfire.ai/api-reference/bank-reconciliation/parse-bank-statement-page https://api.meetcampfire.com/api/schema?format=json post /coa/api/v2/reconciliation/parse-statement-page Parse a bank statement PDF. Accepts: ``file_id`` (required) -- ID of the uploaded PDF ``File``. ``pages`` (optional, int) -- How many pages to include in the first parse batch. Defaults to ``BATCH_PAGE_SIZE``. Use a small value (e.g. 2) for a fast initial response with just balances and dates. Only the first batch is parsed in this request. Parsed output is cached under ``file_id`` and the effective first-batch page count (``pages`` or default ``BATCH_PAGE_SIZE``) so different ``pages`` values do not share one cache entry. # Partial Update Bank Reconciliation Report Source: https://docs.campfire.ai/api-reference/bank-reconciliation/partial-update-bank-reconciliation-report https://api.meetcampfire.com/api/schema?format=json patch /coa/api/v2/reconciliation/{id} Partially update a bank reconciliation report. Only provided fields are modified. # Update Bank Reconciliation Report Source: https://docs.campfire.ai/api-reference/bank-reconciliation/update-bank-reconciliation-report https://api.meetcampfire.com/api/schema?format=json put /coa/api/v2/reconciliation/{id} Update a bank reconciliation report. Supports partial updates via PATCH. # Create Bank Account Source: https://docs.campfire.ai/api-reference/cash-management/create-bank-account https://api.meetcampfire.com/api/schema?format=json post /ca/api/account Create a new bank account # Create Bank Transaction Source: https://docs.campfire.ai/api-reference/cash-management/create-bank-transaction https://api.meetcampfire.com/api/schema?format=json post /ca/api/transaction Create a new bank transaction # Delete Bank Account Source: https://docs.campfire.ai/api-reference/cash-management/delete-bank-account https://api.meetcampfire.com/api/schema?format=json delete /ca/api/account/{id} # Delete Bank Transaction Source: https://docs.campfire.ai/api-reference/cash-management/delete-bank-transaction https://api.meetcampfire.com/api/schema?format=json delete /ca/api/transaction/{id} # List Bank Accounts Source: https://docs.campfire.ai/api-reference/cash-management/list-bank-accounts https://api.meetcampfire.com/api/schema?format=json get /ca/api/account Retrieve a paginated list of bank accounts. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, deleted records will have is_deleted=true and include deletion metadata (deleted_at timestamp). Supports sorting by all returned fields: - name, -name (account name) - nickname, -nickname (account nickname) - type, -type (account type) - status, -status (account status) - currency, -currency (account currency) - external_account_id, -external_account_id (external account ID) - institution_id, -institution_id (institution ID) - source, -source (account source) - current_balance, -current_balance (current balance) - available_balance, -available_balance (available balance) - created_at, -created_at (creation date) - last_modified_at, -last_modified_at (last modified date) - account_type, -account_type (chart account type) - account_subtype, -account_subtype (chart account subtype) - account_cashflow_classification, -account_cashflow_classification (cashflow classification) - type_name, -type_name (human-readable account type) - subtype_name, -subtype_name (human-readable account subtype) - cashflow_classification_name, -cashflow_classification_name (human-readable cashflow classification) - entity_name, -entity_name (entity name) - department, -department (department name) - id, -id (account ID) - account_id, -account_id (UUID account ID) # List Bank Transactions Source: https://docs.campfire.ai/api-reference/cash-management/list-bank-transactions https://api.meetcampfire.com/api/schema?format=json get /ca/api/transaction Retrieve a paginated list of bank transactions with optional filtering. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, deleted records will have is_deleted=true and include deletion metadata (deleted_at timestamp). # Partial Update Bank Account Source: https://docs.campfire.ai/api-reference/cash-management/partial-update-bank-account https://api.meetcampfire.com/api/schema?format=json patch /ca/api/account/{id} # Partial Update Bank Transaction Source: https://docs.campfire.ai/api-reference/cash-management/partial-update-bank-transaction https://api.meetcampfire.com/api/schema?format=json patch /ca/api/transaction/{id} # Post Bank Feed Source: https://docs.campfire.ai/api-reference/cash-management/post-bank-feed https://api.meetcampfire.com/api/schema?format=json post /ca/api/bank-feed/{account_id} Ingest bank feed data for a specific bank account. Creates bank transactions with corresponding journal entries, updates account balances, and triggers auto-categorization. # Retrieve Bank Account Source: https://docs.campfire.ai/api-reference/cash-management/retrieve-bank-account https://api.meetcampfire.com/api/schema?format=json get /ca/api/account/{id} # Retrieve Bank Transaction Source: https://docs.campfire.ai/api-reference/cash-management/retrieve-bank-transaction https://api.meetcampfire.com/api/schema?format=json get /ca/api/transaction/{id} # Update Bank Account Source: https://docs.campfire.ai/api-reference/cash-management/update-bank-account https://api.meetcampfire.com/api/schema?format=json put /ca/api/account/{id} # Update Bank Transaction Source: https://docs.campfire.ai/api-reference/cash-management/update-bank-transaction https://api.meetcampfire.com/api/schema?format=json put /ca/api/transaction/{id} # Upload Entity Invoice Email Attachment Source: https://docs.campfire.ai/api-reference/coa/upload-entity-invoice-email-attachment https://api.meetcampfire.com/api/schema?format=json post /coa/api/entity/{entity_id}/attachment Upload invoice email attachment with proper permissions # Create Chart Account Source: https://docs.campfire.ai/api-reference/company-objects/create-chart-account https://api.meetcampfire.com/api/schema?format=json post /coa/api/account Lists the chart of accounts (GL accounts). Each account includes metadata about its parent account and its full lineage (the ordered chain of ancestor accounts), so parent/child account relationships can be reconstructed from the response. # Create Chart Account Source: https://docs.campfire.ai/api-reference/company-objects/create-chart-account-1 https://api.meetcampfire.com/api/schema?format=json post /coa/api/account/balance-sheet Lists the chart of accounts (GL accounts). Each account includes metadata about its parent account and its full lineage (the ordered chain of ancestor accounts), so parent/child account relationships can be reconstructed from the response. # Create Chart Account Source: https://docs.campfire.ai/api-reference/company-objects/create-chart-account-2 https://api.meetcampfire.com/api/schema?format=json post /coa/api/account/income-statement Lists the chart of accounts (GL accounts). Each account includes metadata about its parent account and its full lineage (the ordered chain of ancestor accounts), so parent/child account relationships can be reconstructed from the response. # Create Cost Allocation Source: https://docs.campfire.ai/api-reference/company-objects/create-cost-allocation https://api.meetcampfire.com/api/schema?format=json post /coa/api/cost-allocations Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Create Custom Dimension Source: https://docs.campfire.ai/api-reference/company-objects/create-custom-dimension https://api.meetcampfire.com/api/schema?format=json post /coa/api/tag Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Create Custom Dimension Group Source: https://docs.campfire.ai/api-reference/company-objects/create-custom-dimension-group https://api.meetcampfire.com/api/schema?format=json post /coa/api/tag-group Mixin to provide consistent last_modified_at filtering and sorting functionality for List APIs with comprehensive timestamp computation. # Create Custom Field Source: https://docs.campfire.ai/api-reference/company-objects/create-custom-field https://api.meetcampfire.com/api/schema?format=json post /ca/api/v1/custom-fields Create a new custom field for a given app and model # Create Department Source: https://docs.campfire.ai/api-reference/company-objects/create-department https://api.meetcampfire.com/api/schema?format=json post /coa/api/department Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Create Fixed Asset Class Source: https://docs.campfire.ai/api-reference/company-objects/create-fixed-asset-class https://api.meetcampfire.com/api/schema?format=json post /coa/api/fixed-asset-class Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Create Vendor Source: https://docs.campfire.ai/api-reference/company-objects/create-vendor https://api.meetcampfire.com/api/schema?format=json post /coa/api/vendor Create a new vendor or customer in the system # Create Vendor Contact Title Source: https://docs.campfire.ai/api-reference/company-objects/create-vendor-contact-title https://api.meetcampfire.com/api/schema?format=json post /coa/api/vendor-contact-title Mixin to provide consistent last_modified_at filtering and sorting functionality for List APIs with comprehensive timestamp computation. # Create Vendor Custom Field Source: https://docs.campfire.ai/api-reference/company-objects/create-vendor-custom-field https://api.meetcampfire.com/api/schema?format=json post /coa/api/vendor_custom_field_1/ # Delete Chart Account Source: https://docs.campfire.ai/api-reference/company-objects/delete-chart-account https://api.meetcampfire.com/api/schema?format=json delete /coa/api/account/{id} # Delete Cost Allocation Source: https://docs.campfire.ai/api-reference/company-objects/delete-cost-allocation https://api.meetcampfire.com/api/schema?format=json delete /coa/api/cost-allocations/{id} # Delete Custom Dimension Source: https://docs.campfire.ai/api-reference/company-objects/delete-custom-dimension https://api.meetcampfire.com/api/schema?format=json delete /coa/api/tag/{id} Delete a transaction tag and optionally merge it with another tag # Delete Custom Dimension Group Source: https://docs.campfire.ai/api-reference/company-objects/delete-custom-dimension-group https://api.meetcampfire.com/api/schema?format=json delete /coa/api/tag-group/{id} # Delete Custom Field Source: https://docs.campfire.ai/api-reference/company-objects/delete-custom-field https://api.meetcampfire.com/api/schema?format=json delete /ca/api/v1/custom-fields/{id} # Delete Department Source: https://docs.campfire.ai/api-reference/company-objects/delete-department https://api.meetcampfire.com/api/schema?format=json delete /coa/api/department/{id} Delete a department and optionally reassign all related records to another department # Delete Fixed Asset Class Source: https://docs.campfire.ai/api-reference/company-objects/delete-fixed-asset-class https://api.meetcampfire.com/api/schema?format=json delete /coa/api/fixed-asset-class/{id} # Delete Vendor Source: https://docs.campfire.ai/api-reference/company-objects/delete-vendor https://api.meetcampfire.com/api/schema?format=json delete /coa/api/vendor/{id} Delete a vendor and optionally reassign all related records to another vendor. Returns 202 Accepted as deletion is processed asynchronously. # Delete Vendor Contact Title Source: https://docs.campfire.ai/api-reference/company-objects/delete-vendor-contact-title https://api.meetcampfire.com/api/schema?format=json delete /coa/api/vendor-contact-title/{id} # Delete Vendor Custom Field Source: https://docs.campfire.ai/api-reference/company-objects/delete-vendor-custom-field https://api.meetcampfire.com/api/schema?format=json delete /coa/api/vendor_custom_field_1/{id}/ # Get Cost Allocation Source: https://docs.campfire.ai/api-reference/company-objects/get-cost-allocation https://api.meetcampfire.com/api/schema?format=json get /coa/api/cost-allocations/{id} # List Chart Accounts Source: https://docs.campfire.ai/api-reference/company-objects/list-chart-accounts https://api.meetcampfire.com/api/schema?format=json get /coa/api/account/balance-sheet Retrieve a list of chart accounts with optional filtering and sorting # List Chart of Accounts Source: https://docs.campfire.ai/api-reference/company-objects/list-chart-of-accounts https://api.meetcampfire.com/api/schema?format=json get /coa/api/account Lists the chart of accounts (GL accounts). Each account includes metadata about its parent account and its full lineage (the ordered chain of ancestor accounts), so parent/child account relationships can be reconstructed from the response. # List Chart of Accounts Source: https://docs.campfire.ai/api-reference/company-objects/list-chart-of-accounts-1 https://api.meetcampfire.com/api/schema?format=json get /coa/api/account/income-statement Lists the chart of accounts (GL accounts). Each account includes metadata about its parent account and its full lineage (the ordered chain of ancestor accounts), so parent/child account relationships can be reconstructed from the response. # List Cost Allocation Source: https://docs.campfire.ai/api-reference/company-objects/list-cost-allocation https://api.meetcampfire.com/api/schema?format=json get /coa/api/cost-allocations Retrieve a list of cost allocations with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Custom Dimension Groups Source: https://docs.campfire.ai/api-reference/company-objects/list-custom-dimension-groups https://api.meetcampfire.com/api/schema?format=json get /coa/api/tag-group Retrieve a list of transaction tag groups with optional filtering and sorting. Supports timestamp-based filtering for synchronization and audit purposes. # List Custom Dimensions Source: https://docs.campfire.ai/api-reference/company-objects/list-custom-dimensions https://api.meetcampfire.com/api/schema?format=json get /coa/api/tag Retrieve a list of transaction tags (custom dimensions) with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Custom Fields Source: https://docs.campfire.ai/api-reference/company-objects/list-custom-fields https://api.meetcampfire.com/api/schema?format=json get /ca/api/v1/custom-fields List all custom fields for a given app and model. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Departments Source: https://docs.campfire.ai/api-reference/company-objects/list-departments https://api.meetcampfire.com/api/schema?format=json get /coa/api/department Retrieve a list of departments with optional filtering and sorting. Each department includes metadata about its parent department (`parent`, `parent_name`), so parent/child department relationships can be reconstructed from the response. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Fixed Asset Classes Source: https://docs.campfire.ai/api-reference/company-objects/list-fixed-asset-classes https://api.meetcampfire.com/api/schema?format=json get /coa/api/fixed-asset-class Retrieve a list of fixed asset classes with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Vendor Contact Titles Source: https://docs.campfire.ai/api-reference/company-objects/list-vendor-contact-titles https://api.meetcampfire.com/api/schema?format=json get /coa/api/vendor-contact-title Retrieve a list of vendor contact titles with optional filtering and sorting. Supports timestamp-based filtering for synchronization and audit purposes. # List Vendor Custom Fields Source: https://docs.campfire.ai/api-reference/company-objects/list-vendor-custom-fields https://api.meetcampfire.com/api/schema?format=json get /coa/api/vendor_custom_field_1/ # List Vendor Summaries Source: https://docs.campfire.ai/api-reference/company-objects/list-vendor-summaries https://api.meetcampfire.com/api/schema?format=json get /coa/api/vendor/summary # List Vendors Source: https://docs.campfire.ai/api-reference/company-objects/list-vendors https://api.meetcampfire.com/api/schema?format=json get /coa/api/vendor Retrieve a list of vendors/customers with optional filtering and sorting. Each vendor includes metadata about its parent vendor (`parent`, `parent_name`) and its full `lineage` (the ordered chain of ancestor vendors), so parent/child vendor relationships can be reconstructed from the response. Supports retrieving deleted records for audit purposes. When include_deleted=true, returns ONLY deleted records with minimal data (id, is_deleted, deleted_at, last_modified_at). When false or omitted, returns ONLY active records. # Partial Fixed Asset Class Source: https://docs.campfire.ai/api-reference/company-objects/partial-fixed-asset-class https://api.meetcampfire.com/api/schema?format=json patch /coa/api/fixed-asset-class/{id} # Partial Update Chart Account Source: https://docs.campfire.ai/api-reference/company-objects/partial-update-chart-account https://api.meetcampfire.com/api/schema?format=json patch /coa/api/account/{id} # Partial Update Cost Allocation Source: https://docs.campfire.ai/api-reference/company-objects/partial-update-cost-allocation https://api.meetcampfire.com/api/schema?format=json patch /coa/api/cost-allocations/{id} # Partial Update Custom Dimension Source: https://docs.campfire.ai/api-reference/company-objects/partial-update-custom-dimension https://api.meetcampfire.com/api/schema?format=json patch /coa/api/tag/{id} # Partial Update Custom Dimension Group Source: https://docs.campfire.ai/api-reference/company-objects/partial-update-custom-dimension-group https://api.meetcampfire.com/api/schema?format=json patch /coa/api/tag-group/{id} # Partial Update Custom Field Source: https://docs.campfire.ai/api-reference/company-objects/partial-update-custom-field https://api.meetcampfire.com/api/schema?format=json patch /ca/api/v1/custom-fields/{id} # Partial Update Department Source: https://docs.campfire.ai/api-reference/company-objects/partial-update-department https://api.meetcampfire.com/api/schema?format=json patch /coa/api/department/{id} # Partial Update Vendor Source: https://docs.campfire.ai/api-reference/company-objects/partial-update-vendor https://api.meetcampfire.com/api/schema?format=json patch /coa/api/vendor/{id} # Partial Update Vendor Contact Title Source: https://docs.campfire.ai/api-reference/company-objects/partial-update-vendor-contact-title https://api.meetcampfire.com/api/schema?format=json patch /coa/api/vendor-contact-title/{id} # Partial Update Vendor Custom Field Source: https://docs.campfire.ai/api-reference/company-objects/partial-update-vendor-custom-field https://api.meetcampfire.com/api/schema?format=json patch /coa/api/vendor_custom_field_1/{id}/ # Retrieve Chart Account Source: https://docs.campfire.ai/api-reference/company-objects/retrieve-chart-account https://api.meetcampfire.com/api/schema?format=json get /coa/api/account/{id} # Retrieve Custom Dimension Source: https://docs.campfire.ai/api-reference/company-objects/retrieve-custom-dimension https://api.meetcampfire.com/api/schema?format=json get /coa/api/tag/{id} # Retrieve Custom Dimension Group Source: https://docs.campfire.ai/api-reference/company-objects/retrieve-custom-dimension-group https://api.meetcampfire.com/api/schema?format=json get /coa/api/tag-group/{id} # Retrieve Custom Field Source: https://docs.campfire.ai/api-reference/company-objects/retrieve-custom-field https://api.meetcampfire.com/api/schema?format=json get /ca/api/v1/custom-fields/{id} # Retrieve Department Source: https://docs.campfire.ai/api-reference/company-objects/retrieve-department https://api.meetcampfire.com/api/schema?format=json get /coa/api/department/{id} # Retrieve Fixed Asset Class Source: https://docs.campfire.ai/api-reference/company-objects/retrieve-fixed-asset-class https://api.meetcampfire.com/api/schema?format=json get /coa/api/fixed-asset-class/{id} # Retrieve Vendor Source: https://docs.campfire.ai/api-reference/company-objects/retrieve-vendor https://api.meetcampfire.com/api/schema?format=json get /coa/api/vendor/{id} # Retrieve Vendor Contact Title Source: https://docs.campfire.ai/api-reference/company-objects/retrieve-vendor-contact-title https://api.meetcampfire.com/api/schema?format=json get /coa/api/vendor-contact-title/{id} # Retrieve Vendor Custom Field Source: https://docs.campfire.ai/api-reference/company-objects/retrieve-vendor-custom-field https://api.meetcampfire.com/api/schema?format=json get /coa/api/vendor_custom_field_1/{id}/ # Update Chart Account Source: https://docs.campfire.ai/api-reference/company-objects/update-chart-account https://api.meetcampfire.com/api/schema?format=json put /coa/api/account/{id} # Update Cost Allocation Source: https://docs.campfire.ai/api-reference/company-objects/update-cost-allocation https://api.meetcampfire.com/api/schema?format=json put /coa/api/cost-allocations/{id} # Update Custom Dimension Source: https://docs.campfire.ai/api-reference/company-objects/update-custom-dimension https://api.meetcampfire.com/api/schema?format=json put /coa/api/tag/{id} # Update Custom Dimension Group Source: https://docs.campfire.ai/api-reference/company-objects/update-custom-dimension-group https://api.meetcampfire.com/api/schema?format=json put /coa/api/tag-group/{id} # Update Custom Field Source: https://docs.campfire.ai/api-reference/company-objects/update-custom-field https://api.meetcampfire.com/api/schema?format=json put /ca/api/v1/custom-fields/{id} # Update Department Source: https://docs.campfire.ai/api-reference/company-objects/update-department https://api.meetcampfire.com/api/schema?format=json put /coa/api/department/{id} # Update Fixed Asset Class Source: https://docs.campfire.ai/api-reference/company-objects/update-fixed-asset-class https://api.meetcampfire.com/api/schema?format=json put /coa/api/fixed-asset-class/{id} # Update Vendor Source: https://docs.campfire.ai/api-reference/company-objects/update-vendor https://api.meetcampfire.com/api/schema?format=json put /coa/api/vendor/{id} # Update Vendor Contact Title Source: https://docs.campfire.ai/api-reference/company-objects/update-vendor-contact-title https://api.meetcampfire.com/api/schema?format=json put /coa/api/vendor-contact-title/{id} # Update Vendor Custom Field Source: https://docs.campfire.ai/api-reference/company-objects/update-vendor-custom-field https://api.meetcampfire.com/api/schema?format=json put /coa/api/vendor_custom_field_1/{id}/ # Balance Intercompany Journal Entry Source: https://docs.campfire.ai/api-reference/core-accounting/balance-intercompany-journal-entry https://api.meetcampfire.com/api/schema?format=json post /coa/api/intercompany-journal-entry/balance Balances an intercompany journal entry by entity and currency. This endpoint performs the same balancing logic as the frontend, applying: 1. Auto-fetching of exchange rates if not provided (requires date field) 2. Exchange rate roll-forward from native to book to consolidation currencies 3. Exchange rate plugging to ensure consolidation amounts match across currencies within an entity 4. Automatic creation of balancing transactions when debits != credits at any currency level The endpoint accepts a partial intercompany journal entry with transactions and optionally exchange rates, and returns the balanced version with: - Auto-fetched exchange rates (if exchange_rates is empty and date is provided) - Updated transactions with calculated book and consolidation amounts - New balancing transactions added where needed - Plugged exchange rates to maintain consolidation consistency This is useful for: - Validating journal entries before submission - Understanding what balancing entries will be created - Testing multi-currency and multi-entity scenarios - Auto-fetching exchange rates for the journal date # Bulk Accept Suggestions Source: https://docs.campfire.ai/api-reference/core-accounting/bulk-accept-suggestions https://api.meetcampfire.com/api/schema?format=json post /coa/api/transaction-matches/bulk-accept Apply one class of pending suggestions (match | rule | merge | ai) across an explicit or filter-implicit transaction selection, each through its existing single-item flow. Per-item outcomes; capped per call — drain until 'truncated' is false, excluding blocked transaction ids on subsequent calls. # Bulk Search Custom Dimensions by Name Source: https://docs.campfire.ai/api-reference/core-accounting/bulk-search-custom-dimensions-by-name https://api.meetcampfire.com/api/schema?format=json post /coa/api/tag/bulk-search Search for tags by exact name match in a single request. Supports upsert to create missing tags. # Bulk Search Departments by Name Source: https://docs.campfire.ai/api-reference/core-accounting/bulk-search-departments-by-name https://api.meetcampfire.com/api/schema?format=json post /coa/api/department/bulk-search Search for thousands of departments by exact name match in a single request. Optimized for performance. Supports upsert to create missing departments. # Bulk Search Vendors by External ID or Name Source: https://docs.campfire.ai/api-reference/core-accounting/bulk-search-vendors-by-external-id-or-name https://api.meetcampfire.com/api/schema?format=json post /coa/api/vendor/bulk-search Search for thousands of vendors in a single request, resolving each cell by external_id, then a Campfire ID or internal pk parsed from the cell, then name. Optimized for performance. Supports upsert to create missing vendors. # Bulk Update Chart Transactions Source: https://docs.campfire.ai/api-reference/core-accounting/bulk-update-chart-transactions https://api.meetcampfire.com/api/schema?format=json post /coa/api/transaction/bulk-update # Create Bill Payments for Transaction Source: https://docs.campfire.ai/api-reference/core-accounting/create-bill-payments-for-transaction https://api.meetcampfire.com/api/schema?format=json post /coa/api/transaction/{transaction_id}/bill_payments # Create Budget Source: https://docs.campfire.ai/api-reference/core-accounting/create-budget https://api.meetcampfire.com/api/schema?format=json post /coa/api/budgets Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Create Budget Source: https://docs.campfire.ai/api-reference/core-accounting/create-budget-1 https://api.meetcampfire.com/api/schema?format=json post /coa/api/budgets/{budget_pk}/accounts Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Create Credit Memo Payments for Transaction Source: https://docs.campfire.ai/api-reference/core-accounting/create-credit-memo-payments-for-transaction https://api.meetcampfire.com/api/schema?format=json post /coa/api/transaction/{transaction_id}/credit_memo_payments # Create Debit Memo Payments for Transaction Source: https://docs.campfire.ai/api-reference/core-accounting/create-debit-memo-payments-for-transaction https://api.meetcampfire.com/api/schema?format=json post /coa/api/transaction/{transaction_id}/debit_memo_payments # Create Fixed Asset Source: https://docs.campfire.ai/api-reference/core-accounting/create-fixed-asset https://api.meetcampfire.com/api/schema?format=json post /coa/api/fixed-asset Wraps ``CreateModelMixin.create`` (or any method named ``create``) with ``Idempotency-Key`` handling. Place this mixin **before** the view's other base classes so its ``create`` overrides the inherited one:: class JournalEntryListCreate( IdempotentCreateMixin, HistoryFilteringMixin, ListCreateAPIView, ): ... # Create Fixed Asset Automation Source: https://docs.campfire.ai/api-reference/core-accounting/create-fixed-asset-automation https://api.meetcampfire.com/api/schema?format=json post /coa/api/fixed-asset-automation/ List all automation rules or create a new one. GET /api/fixed-asset-automation/ POST /api/fixed-asset-automation/ # Create Intercompany Journal Entry Source: https://docs.campfire.ai/api-reference/core-accounting/create-intercompany-journal-entry https://api.meetcampfire.com/api/schema?format=json post /coa/api/intercompany-journal-entry Creates a new intercompany journal entry This endpoint allows for complex multi-entity transactions where: - Transactions are balanced across different entities - Exchange rates are handled for multi-currency transactions Key requirements: - Total debits must equal total credits for each entity (debit_amount_native must equal credit_amount_native) - Cannot create entries before closed book dates - All referenced accounts must be active - Exchange rates must be provided for all currency conversions (native to book, book to consolidation) # Create Invoice Payments for Transaction Source: https://docs.campfire.ai/api-reference/core-accounting/create-invoice-payments-for-transaction https://api.meetcampfire.com/api/schema?format=json post /coa/api/transaction/{transaction_id}/invoice_payments # Create Journal Entry Source: https://docs.campfire.ai/api-reference/core-accounting/create-journal-entry https://api.meetcampfire.com/api/schema?format=json post /coa/api/journal_entry Create a new journal entry with transactions. Journal entries must balance - total debits must equal total credits. **Key Features:** - Automatic currency conversion using exchange rates - Vendor, Department and Custom Dimension assignment - Optional reversal date for automatic reversal entries - Validation against closed book periods **Validation Rules:** - Debits must equal credits in transaction currency (debit_native and credit_native) - Cannot create entries before closed book dates - Accounts must be active - Exchange rates are auto-calculated if not provided # Create Vendor Contact Source: https://docs.campfire.ai/api-reference/core-accounting/create-vendor-contact https://api.meetcampfire.com/api/schema?format=json post /coa/api/vendor/{id}/contacts Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Delete Budget Source: https://docs.campfire.ai/api-reference/core-accounting/delete-budget https://api.meetcampfire.com/api/schema?format=json delete /coa/api/budgets/{id} # Delete Budget Account Source: https://docs.campfire.ai/api-reference/core-accounting/delete-budget-account https://api.meetcampfire.com/api/schema?format=json delete /coa/api/budgets/{budget_pk}/accounts/{id} # Delete Chart Transaction Source: https://docs.campfire.ai/api-reference/core-accounting/delete-chart-transaction https://api.meetcampfire.com/api/schema?format=json delete /coa/api/transaction/{id} # Delete Fixed Asset Source: https://docs.campfire.ai/api-reference/core-accounting/delete-fixed-asset https://api.meetcampfire.com/api/schema?format=json delete /coa/api/fixed-asset/{id} # Delete Fixed Asset Automation Source: https://docs.campfire.ai/api-reference/core-accounting/delete-fixed-asset-automation https://api.meetcampfire.com/api/schema?format=json delete /coa/api/fixed-asset-automation/{id}/ Retrieve, update, or delete an automation rule. GET/PUT/PATCH/DELETE /api/fixed-asset-automation// # Delete Intercompany Journal Entry Source: https://docs.campfire.ai/api-reference/core-accounting/delete-intercompany-journal-entry https://api.meetcampfire.com/api/schema?format=json delete /coa/api/intercompany-journal-entry/{id} Permanently deletes an intercompany journal entry and all related transactions. This endpoint performs a comprehensive cleanup when deleting an intercompany journal entry: - Validates that the entry can be deleted (not in closed period) - Removes all associated journal entries across entities - Updates summary tables and account balances - Handles cascade deletion of related transactions - Ensures data integrity across the accounting system Deletion restrictions: - Cannot delete entries in closed accounting periods Error conditions: - 400 Bad Request: Entry date is in a closed period - 409 Conflict: Entry has protected relationships (e.g., close checklist tasks) - 404 Not Found: Entry does not exist or user lacks access On successful deletion, all related journal entries are removed and accounting summaries are recalculated. # Delete Journal Entry Source: https://docs.campfire.ai/api-reference/core-accounting/delete-journal-entry https://api.meetcampfire.com/api/schema?format=json delete /coa/api/journal_entry/{id} Delete a journal entry and all its associated transactions. **Restrictions:** - Cannot delete entries before closed book dates **Response Codes:** - 204: Successfully deleted - 400: Cannot delete (books closed for this date) - 409: Cannot delete (associated with other objects) # Delete Transaction Match Source: https://docs.campfire.ai/api-reference/core-accounting/delete-transaction-match https://api.meetcampfire.com/api/schema?format=json delete /coa/api/transaction-matches/{id} # Delete Vendor Contact Source: https://docs.campfire.ai/api-reference/core-accounting/delete-vendor-contact https://api.meetcampfire.com/api/schema?format=json delete /coa/api/vendor-contact/{id} Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Get Chart Transaction Totals Source: https://docs.campfire.ai/api-reference/core-accounting/get-chart-transaction-totals https://api.meetcampfire.com/api/schema?format=json get /coa/api/transaction/totals Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Get Intercompany Journal Entry Source: https://docs.campfire.ai/api-reference/core-accounting/get-intercompany-journal-entry https://api.meetcampfire.com/api/schema?format=json get /coa/api/intercompany-journal-entry/{id} Retrieves a single intercompany journal entry by its ID with complete details. This endpoint returns: - Complete intercompany journal entry information - Full transaction details with all accounting fields - Entity information and exchange rates - Attachment and reversal information - Comprehensive transaction metadata The response includes: - All transaction details with account information - Exchange rate data for all currency conversions (native to book, book to consolidation) - Vendor, department, and tag information - Balance calculations and transaction history - File attachments and reversal relationships - Complete audit trail information This is the detailed view used for editing and complete transaction analysis. # Get Transaction Matches Count Source: https://docs.campfire.ai/api-reference/core-accounting/get-transaction-matches-count https://api.meetcampfire.com/api/schema?format=json get /coa/api/transaction-matches-count # List Budget Accounts Source: https://docs.campfire.ai/api-reference/core-accounting/list-budget-accounts https://api.meetcampfire.com/api/schema?format=json get /coa/api/budgets/{budget_pk}/accounts Retrieve a list of budget accounts with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Budgets Source: https://docs.campfire.ai/api-reference/core-accounting/list-budgets https://api.meetcampfire.com/api/schema?format=json get /coa/api/budgets Retrieve a list of budgets with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Chart Transactions Source: https://docs.campfire.ai/api-reference/core-accounting/list-chart-transactions https://api.meetcampfire.com/api/schema?format=json get /coa/api/transaction Lists general-ledger transactions (`ChartTransaction` records) - Campfire's GL transaction log, and the recommended endpoint for retrieving GL transaction data. Each transaction carries account, department, vendor, entity, journal/date metadata, and tags (where applicable). Product metadata is not stored directly on a transaction; it is reached through relations with other Campfire objects. **Date range:** filter with `start_date` and `end_date` (both `YYYY-MM-DD`, inclusive); the bounds match on transaction date (the journal entry date, which `posted_at` mirrors). **Pagination:** results are paginated via `limit` (default 100, max 10000) and `offset`. To retrieve more than 10000 records, page through with `offset`, or use cursor pagination by passing an empty `cursor=` parameter and following the `next` link. **Key response fields:** - `amount` - amount in consolidated currency (the root entity's currency). - `amount_book` - amount in the currency of the entity the transaction belongs to. - `amount_native` - amount in the currency the transaction was originally created in. Example: for a transaction made in GBP where the entity uses EUR and the root entity uses USD, `amount_native` is GBP, `amount_book` is EUR, and `amount` is USD. - `posted_at` - the transaction date; determines which period the transaction falls in. `date_year` and `date_month` are derived from it. - `vendor` / `vendor_name` - the linked Campfire `Vendor` object's ID and name. - `merchant_name` - a free-text field stored directly on the transaction; not linked to any Campfire object. - `account` - the Campfire `ChartAccount` (GL account) the transaction is posted to. - `entity` - the Campfire `ChartEntity` ID. - `tags` - the transaction's tags; each tag's `group`/`group_name` identify the tag group (dimension) it belongs to. List a customer's tag groups via `/coa/api/tag-group` and tags via `/coa/api/tag`. **Dynamic tag-group columns:** in addition to `tags`, each row carries flattened per-dimension columns `tag_group_` (tag ID) and `tag_group__name` (tag name), one pair per tag group defined by the customer, plus `tag_group_none` / `tag_group_none_name` for ungrouped tags. Journal-level custom fields are merged in as `custom_field_` keys. These columns are customer-specific, so they cannot appear in this static schema - discover tag groups via `/coa/api/tag-group` and custom fields via `/ca/api/v1/custom-fields`. # List Fixed Asset Automation Accounts Source: https://docs.campfire.ai/api-reference/core-accounting/list-fixed-asset-automation-accounts https://api.meetcampfire.com/api/schema?format=json get /coa/api/fixed-asset-automation/accounts 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. # List Fixed Asset Automation Asset Classes Source: https://docs.campfire.ai/api-reference/core-accounting/list-fixed-asset-automation-asset-classes https://api.meetcampfire.com/api/schema?format=json get /coa/api/fixed-asset-automation/asset-classes 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. # List Fixed Asset Automation Matches Source: https://docs.campfire.ai/api-reference/core-accounting/list-fixed-asset-automation-matches https://api.meetcampfire.com/api/schema?format=json get /coa/api/fixed-asset-automation/matches List pending asset matches for review. GET /api/fixed-asset-automation/matches # List Fixed Asset Automations Source: https://docs.campfire.ai/api-reference/core-accounting/list-fixed-asset-automations https://api.meetcampfire.com/api/schema?format=json get /coa/api/fixed-asset-automation/ List all automation rules or create a new one. GET /api/fixed-asset-automation/ POST /api/fixed-asset-automation/ # List Fixed Assets Source: https://docs.campfire.ai/api-reference/core-accounting/list-fixed-assets https://api.meetcampfire.com/api/schema?format=json get /coa/api/fixed-asset Retrieve a list of fixed assets with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Intercompany Journal Entries Source: https://docs.campfire.ai/api-reference/core-accounting/list-intercompany-journal-entries https://api.meetcampfire.com/api/schema?format=json get /coa/api/intercompany-journal-entry Retrieves a paginated list of intercompany journal entries for the authenticated user's customer. This endpoint returns: - Summary information for each intercompany journal entry - Basic transaction details (simplified view for list performance) - Entity and exchange rate information - Pagination metadata (count, next, previous) - Reversal relationships and attachment counts The response includes: - Intercompany journal entry metadata - Associated transaction summaries - Exchange rate information for currency conversions - Links to related reversals - Attachment information Results can be sorted using the 'sort' query parameter with field names like 'date', 'id', etc. Prefix with '-' for descending order (e.g., '-date'). # List Journal Entries Source: https://docs.campfire.ai/api-reference/core-accounting/list-journal-entries https://api.meetcampfire.com/api/schema?format=json get /coa/api/journal_entry Retrieve a paginated list of journal entries with optional filtering and sorting. **Query Parameters:** - `start_date`, `end_date`: Filter by date range (defaults to last 6 months) - `account`: Filter by account ID(s) - supports multiple values - `source`: Filter by journal entry source. Payroll auto-sync sources (`rippling_payroll_auto`, `finch_payroll_auto`) are exempt from the default window, since they page on `last_modified_at` and re-post back-dated corrections. - `journal_id`: Filter by specific journal ID - `all_time`: Include all entries regardless of date (true/false) - `sort`: Sort field (default: "date") **Response includes:** - Complete journal entry details with all transactions - Account information with names and numbers - Vendor and department details - Tag associations with groups - Attachment information - Exchange rate data for multi-currency entries # List Transaction Matches Source: https://docs.campfire.ai/api-reference/core-accounting/list-transaction-matches https://api.meetcampfire.com/api/schema?format=json get /coa/api/transaction-matches # List Unmatched GL Transactions for Fixed Asset Reconciliation Source: https://docs.campfire.ai/api-reference/core-accounting/list-unmatched-gl-transactions-for-fixed-asset-reconciliation https://api.meetcampfire.com/api/schema?format=json get /coa/api/fixed-asset/reconciliation/unmatched-gl 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. # List Vendor Contacts Source: https://docs.campfire.ai/api-reference/core-accounting/list-vendor-contacts https://api.meetcampfire.com/api/schema?format=json get /coa/api/vendor/{id}/contacts Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Merge Chart Transactions Source: https://docs.campfire.ai/api-reference/core-accounting/merge-chart-transactions https://api.meetcampfire.com/api/schema?format=json post /coa/api/transaction/merge Merge two offsetting chart transactions from different journals. This endpoint consolidates journals containing offsetting transactions by removing the specified transactions and combining the remaining transactions into a single journal entry. **Request Body:** - `transaction_ids` (array, required): Array of exactly two transaction IDs to merge - `transaction_match_id` (integer, optional): The AutoMergeSuggestion TransactionMatch the user explicitly accepted; when it names a suggestion over exactly this pair, the merge is recorded as a suggestion accept rather than a manual merge **Returns:** The merged journal entry with all remaining transactions. **Requirements:** - Must provide exactly two transaction IDs - Transactions must be from different journals - Transactions must have matching amounts - Transactions must belong to the same entity **Result:** - The two specified transactions are deleted - Other transactions from both journals are consolidated into a single journal - A draft queue record is created for audit purposes and auto-approved # Partial Update Budget Source: https://docs.campfire.ai/api-reference/core-accounting/partial-update-budget https://api.meetcampfire.com/api/schema?format=json patch /coa/api/budgets/{id} # Partial Update Budget Account Source: https://docs.campfire.ai/api-reference/core-accounting/partial-update-budget-account https://api.meetcampfire.com/api/schema?format=json patch /coa/api/budgets/{budget_pk}/accounts/{id} # Partial Update Chart Transaction Source: https://docs.campfire.ai/api-reference/core-accounting/partial-update-chart-transaction https://api.meetcampfire.com/api/schema?format=json patch /coa/api/transaction/{id} # Partial Update Fixed Asset Source: https://docs.campfire.ai/api-reference/core-accounting/partial-update-fixed-asset https://api.meetcampfire.com/api/schema?format=json patch /coa/api/fixed-asset/{id} # Partial Update Fixed Asset Automation Source: https://docs.campfire.ai/api-reference/core-accounting/partial-update-fixed-asset-automation https://api.meetcampfire.com/api/schema?format=json patch /coa/api/fixed-asset-automation/{id}/ Retrieve, update, or delete an automation rule. GET/PUT/PATCH/DELETE /api/fixed-asset-automation// # Partial Update Fixed Asset Automation Match Source: https://docs.campfire.ai/api-reference/core-accounting/partial-update-fixed-asset-automation-match https://api.meetcampfire.com/api/schema?format=json patch /coa/api/fixed-asset-automation-match/{id}/ Retrieve or update an automation match (for editing proposed values before acceptance). GET/PATCH /api/fixed-asset-automation-match// # Partial Update Intercompany Journal Entry Source: https://docs.campfire.ai/api-reference/core-accounting/partial-update-intercompany-journal-entry https://api.meetcampfire.com/api/schema?format=json patch /coa/api/intercompany-journal-entry/{id} Performs a partial update of an intercompany journal entry, allowing modification of specific fields without replacing the entire entry. This endpoint supports partial updates to: - Journal entry metadata (memo, date, currency, reference number) - Individual transaction modifications - Entity exchange rate adjustments - Vendor, department, and tag assignments - Account categorizations and amounts Key differences from PUT: - Only specified fields are updated (vs. full replacement) - Maintains existing data for unspecified fields - Supports granular transaction modifications - Preserves audit trail and timestamps - Allows incremental changes without full transaction rebuilds Validation requirements: - Modified transactions must maintain entity balance (debits = credits) - Cannot modify entries in closed accounting periods - All referenced accounts, vendors, departments must be active - Exchange rates must be valid for multi-currency transactions - Account assignments must be appropriate for transaction types # Partial Update Journal Entry Source: https://docs.campfire.ai/api-reference/core-accounting/partial-update-journal-entry https://api.meetcampfire.com/api/schema?format=json patch /coa/api/journal_entry/{id} Partially update a journal entry. Only provided fields will be updated. **Common Use Cases:** - Update memo or reference number - Change journal entry date - Modify specific transaction amounts - Add or remove tags from transactions **Validation Rules:** - Journal entry must still balance after updates - Cannot modify entries in closed periods - Account changes must maintain chart of accounts rules # Partial Update Transaction Match Source: https://docs.campfire.ai/api-reference/core-accounting/partial-update-transaction-match https://api.meetcampfire.com/api/schema?format=json patch /coa/api/transaction-matches/{id} # Partial Update Vendor Contact Source: https://docs.campfire.ai/api-reference/core-accounting/partial-update-vendor-contact https://api.meetcampfire.com/api/schema?format=json patch /coa/api/vendor-contact/{id} Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Preview Chart Transaction Merge Source: https://docs.campfire.ai/api-reference/core-accounting/preview-chart-transaction-merge https://api.meetcampfire.com/api/schema?format=json get /coa/api/transaction/merge Preview the result of merging two chart transactions. This endpoint shows what the merged journal entry will look like, allowing you to verify the merge before committing. The preview includes the journal that will be retained and the transactions that will remain after the merge. **Parameters:** - `transaction_ids` (query, required): Comma-separated list of exactly two transaction IDs **Returns:** A journal entry object containing the merged result with all remaining transactions. **Requirements:** - Must provide exactly two transaction IDs - Transactions must be from different journals - Transactions must have matching amounts - Transactions must belong to the same entity # Process Transaction Match Source: https://docs.campfire.ai/api-reference/core-accounting/process-transaction-match https://api.meetcampfire.com/api/schema?format=json post /coa/api/transaction-match-process # Reject Transaction Match Source: https://docs.campfire.ai/api-reference/core-accounting/reject-transaction-match https://api.meetcampfire.com/api/schema?format=json post /coa/api/transaction-matches/{id}/reject # Retrieve Budget Source: https://docs.campfire.ai/api-reference/core-accounting/retrieve-budget https://api.meetcampfire.com/api/schema?format=json get /coa/api/budgets/{id} # Retrieve Budget Account Source: https://docs.campfire.ai/api-reference/core-accounting/retrieve-budget-account https://api.meetcampfire.com/api/schema?format=json get /coa/api/budgets/{budget_pk}/accounts/{id} # Retrieve Chart Transaction Source: https://docs.campfire.ai/api-reference/core-accounting/retrieve-chart-transaction https://api.meetcampfire.com/api/schema?format=json get /coa/api/transaction/{id} # Retrieve Fixed Asset Source: https://docs.campfire.ai/api-reference/core-accounting/retrieve-fixed-asset https://api.meetcampfire.com/api/schema?format=json get /coa/api/fixed-asset/{id} # Retrieve Fixed Asset Automation Source: https://docs.campfire.ai/api-reference/core-accounting/retrieve-fixed-asset-automation https://api.meetcampfire.com/api/schema?format=json get /coa/api/fixed-asset-automation/{id}/ Retrieve, update, or delete an automation rule. GET/PUT/PATCH/DELETE /api/fixed-asset-automation// # Retrieve Fixed Asset Automation Match Source: https://docs.campfire.ai/api-reference/core-accounting/retrieve-fixed-asset-automation-match https://api.meetcampfire.com/api/schema?format=json get /coa/api/fixed-asset-automation-match/{id}/ Retrieve or update an automation match (for editing proposed values before acceptance). GET/PATCH /api/fixed-asset-automation-match// # Retrieve Journal Entry Source: https://docs.campfire.ai/api-reference/core-accounting/retrieve-journal-entry https://api.meetcampfire.com/api/schema?format=json get /coa/api/journal_entry/{id} Retrieve a specific journal entry by ID with all transaction details. **Response includes:** - Complete journal entry with all transactions - Account names, numbers, and types - Vendor and department information - Tag associations with groups - Exchange rate data for multi-currency entries - Attachment information - Reversal information if applicable # Retrieve Transaction Match Source: https://docs.campfire.ai/api-reference/core-accounting/retrieve-transaction-match https://api.meetcampfire.com/api/schema?format=json get /coa/api/transaction-matches/{id} # Retrieve Vendor Contact Source: https://docs.campfire.ai/api-reference/core-accounting/retrieve-vendor-contact https://api.meetcampfire.com/api/schema?format=json get /coa/api/vendor-contact/{id} Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Run Fixed Asset Automation Source: https://docs.campfire.ai/api-reference/core-accounting/run-fixed-asset-automation https://api.meetcampfire.com/api/schema?format=json post /coa/api/fixed-asset-automation/run Trigger automation processing. POST /api/fixed-asset-automation/run Optional body: {"rule_id": 123} # Set Transaction Match Status Source: https://docs.campfire.ai/api-reference/core-accounting/set-transaction-match-status https://api.meetcampfire.com/api/schema?format=json post /coa/api/transaction-matches/{id}/status Handle POST requests with 'action' parameter (accept/reject) # Update Budget Source: https://docs.campfire.ai/api-reference/core-accounting/update-budget https://api.meetcampfire.com/api/schema?format=json put /coa/api/budgets/{id} # Update Budget Account Source: https://docs.campfire.ai/api-reference/core-accounting/update-budget-account https://api.meetcampfire.com/api/schema?format=json put /coa/api/budgets/{budget_pk}/accounts/{id} # Update Chart Transaction Source: https://docs.campfire.ai/api-reference/core-accounting/update-chart-transaction https://api.meetcampfire.com/api/schema?format=json put /coa/api/transaction/{id} # Update Fixed Asset Source: https://docs.campfire.ai/api-reference/core-accounting/update-fixed-asset https://api.meetcampfire.com/api/schema?format=json put /coa/api/fixed-asset/{id} # Update Fixed Asset Automation Source: https://docs.campfire.ai/api-reference/core-accounting/update-fixed-asset-automation https://api.meetcampfire.com/api/schema?format=json put /coa/api/fixed-asset-automation/{id}/ Retrieve, update, or delete an automation rule. GET/PUT/PATCH/DELETE /api/fixed-asset-automation// # Update Fixed Asset Automation Match Source: https://docs.campfire.ai/api-reference/core-accounting/update-fixed-asset-automation-match https://api.meetcampfire.com/api/schema?format=json put /coa/api/fixed-asset-automation-match/{id}/ Retrieve or update an automation match (for editing proposed values before acceptance). GET/PATCH /api/fixed-asset-automation-match// # Update Intercompany Journal Entry Source: https://docs.campfire.ai/api-reference/core-accounting/update-intercompany-journal-entry https://api.meetcampfire.com/api/schema?format=json put /coa/api/intercompany-journal-entry/{id} Updates an existing intercompany journal entry with new transaction details. This endpoint allows for: - Modifying transaction amounts and details - Updating entity assignments and exchange rates - Changing account assignments and categorizations - Updating vendor, department, and tag information - Maintaining balance validation across all entities Key requirements: - Total debits must equal total credits for each entity - All account balances must be valid in all currencies - Cannot modify entries in closed periods - All referenced accounts must be active - Existing transactions are replaced with new transaction set - Exchange rates must be provided for all currency conversions The update process atomically replaces all transactions while preserving the journal entry ID and audit trail. # Update Journal Entry Source: https://docs.campfire.ai/api-reference/core-accounting/update-journal-entry https://api.meetcampfire.com/api/schema?format=json put /coa/api/journal_entry/{id} Update a journal entry completely. All transactions will be replaced with the new ones provided. **Important Notes:** - Cannot update entries before closed book dates - Must maintain double-entry bookkeeping (debits = credits) - All existing transactions will be replaced - Exchange rates will be recalculated if not provided **Validation Rules:** - Journal entry must balance in all currencies - Accounts must be active - Cannot modify entries in closed periods # Update Transaction Match Source: https://docs.campfire.ai/api-reference/core-accounting/update-transaction-match https://api.meetcampfire.com/api/schema?format=json put /coa/api/transaction-matches/{id} # Update Transaction Match Status Source: https://docs.campfire.ai/api-reference/core-accounting/update-transaction-match-status https://api.meetcampfire.com/api/schema?format=json put /coa/api/transaction-matches/{id}/status # Update Vendor Contact Source: https://docs.campfire.ai/api-reference/core-accounting/update-vendor-contact https://api.meetcampfire.com/api/schema?format=json put /coa/api/vendor-contact/{id} Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Reorder Custom Fields Source: https://docs.campfire.ai/api-reference/custom-fields/reorder-custom-fields https://api.meetcampfire.com/api/schema?format=json post /ca/api/v1/custom-fields/reorder Reorder custom fields # Execute Custom Report Source: https://docs.campfire.ai/api-reference/financial-statements/execute-custom-report https://api.meetcampfire.com/api/schema?format=json get /ca/api/custom-reports/{id}/data Execute custom report and return DataTable-compatible response. :param request: HTTP request with query params :param pk: Custom report ID :return: Paginated, sparse-formatted response # Get Balance Sheet Source: https://docs.campfire.ai/api-reference/financial-statements/get-balance-sheet https://api.meetcampfire.com/api/schema?format=json get /ca/api/get_balance_sheet Returns ending account balances for each period between `start_date` and `end_date` (both inclusive), split by `cadence`. This is the recommended endpoint for balance sheet ending balances. **How the date range works:** `start_date` is *not* the date balances are calculated *from*. Account balances are always accumulated from the beginning of time through each period end. `start_date`, `end_date`, and `cadence` only determine how the report is split into periods (columns). **Retained earnings:** included as its own row. **Breakdowns:** the report can be broken down or filtered by entity, department, and tag dimensions via `group_by` (pass `group` with a tag group ID when grouping by tag). # Get Cash Basis Income Statement Source: https://docs.campfire.ai/api-reference/financial-statements/get-cash-basis-income-statement https://api.meetcampfire.com/api/schema?format=json get /ca/api/cash-basis # Get Cash Basis Operating Statement Source: https://docs.campfire.ai/api-reference/financial-statements/get-cash-basis-operating-statement https://api.meetcampfire.com/api/schema?format=json get /ca/api/cash-basis-operating-statement # Get Cash Flow Source: https://docs.campfire.ai/api-reference/financial-statements/get-cash-flow https://api.meetcampfire.com/api/schema?format=json get /ca/api/get_cash_flow # Get Cash Flow Activity Source: https://docs.campfire.ai/api-reference/financial-statements/get-cash-flow-activity https://api.meetcampfire.com/api/schema?format=json get /ca/api/get_cash_flow_activity # Get Cash Flow Statement Source: https://docs.campfire.ai/api-reference/financial-statements/get-cash-flow-statement https://api.meetcampfire.com/api/schema?format=json get /ca/api/get_cash_flow_v2 Sectioned cash flow statement (indirect method): operating (net income, non-cash adjustments, working-capital deltas), transactional investing and financing lines, the effect of exchange-rate changes on cash, and non-cash disclosures. The statement reconciles beginning to ending cash with a zero plug or is not rendered: an unreconciled ledger returns HTTP 422 with the plug by period and the journal entries whose accounts need cashflow classification. Monetary amounts are decimal strings. Pass export=xlsx for a workbook download. # Get Cash Operating Transactions with Projected Transactions Source: https://docs.campfire.ai/api-reference/financial-statements/get-cash-operating-transactions-with-projected-transactions https://api.meetcampfire.com/api/schema?format=json get /ca/api/cash-operating-statement/transactions # Get Comparative Balance Sheet Source: https://docs.campfire.ai/api-reference/financial-statements/get-comparative-balance-sheet https://api.meetcampfire.com/api/schema?format=json get /ca/api/balance-sheet/comparative API view for comparative balance sheet that handles budget vs actual comparisons # Get Comparative Income Statement Source: https://docs.campfire.ai/api-reference/financial-statements/get-comparative-income-statement https://api.meetcampfire.com/api/schema?format=json get /ca/api/income-statement/comparative # Get General Ledger Source: https://docs.campfire.ai/api-reference/financial-statements/get-general-ledger https://api.meetcampfire.com/api/schema?format=json get /coa/api/general-ledger Returns general-ledger transactions with running balances. Each row includes a `tags` array with the transaction's tags; a tag's `group`/`group_name` identify the tag group (dimension) it belongs to. List a customer's tag groups via `/coa/api/tag-group` and tags via `/coa/api/tag`. # Get Income Statement Source: https://docs.campfire.ai/api-reference/financial-statements/get-income-statement https://api.meetcampfire.com/api/schema?format=json get /ca/api/get_income_statement Returns account activity (revenue and expense movement) within the `start_date`-`end_date` range, split by `cadence`. Unlike the balance sheet, the income statement reflects only the activity that falls *inside* the requested date range - `start_date` is the true start of the activity window. **Breakdowns:** supports entity, department, vendor, and tag breakdowns/filters via `group_by` (pass `group` with a tag group ID when grouping by tag). # Get Trial Balance Source: https://docs.campfire.ai/api-reference/financial-statements/get-trial-balance https://api.meetcampfire.com/api/schema?format=json get /ca/api/get_trial_balance Returns debit and credit totals for each account over a date range. **The summation window depends on the account type:** - **Balance sheet accounts** (assets, liabilities, equity): totals are summed from the beginning of time through `end_date`. - **Income statement accounts** (revenue, expenses): the window depends on `income_statement_basis`. With the default `period` basis, totals are summed from `start_date` through `end_date` and a synthetic Net Income (Prior Periods) row carries current-fiscal-year income earned before `start_date`. With `fiscal_ytd`, totals are summed from the fiscal-year start through `end_date` and no Net Income row is emitted. The effective income-statement window start is returned as `income_statement_start`. Each account also carries rollforward columns, all presented as one-sided debit/credit pairs: `beginning_balances` (balance as of the day before `start_date`; fiscal-window-scoped for income-statement accounts), `activity` (gross period debits and credits), and `ending_balances` (`beginning + activity`, the net one-sided presentation of the account's balance). Beginning and ending columns each foot to zero across the report and period debits equal period credits. Retained earnings is included as its own row. For balance sheet ending balances specifically, prefer `GET /ca/api/get_balance_sheet`. # List Custom Reports Source: https://docs.campfire.ai/api-reference/financial-statements/list-custom-reports https://api.meetcampfire.com/api/schema?format=json get /ca/api/custom-reports # Retrieve Custom Report Source: https://docs.campfire.ai/api-reference/financial-statements/retrieve-custom-report https://api.meetcampfire.com/api/schema?format=json get /ca/api/custom-reports/{id} # Create Webhook Source: https://docs.campfire.ai/api-reference/integrations/create-webhook https://api.meetcampfire.com/api/schema?format=json post /integrations/api/v1/webhook # Delete Webhook Source: https://docs.campfire.ai/api-reference/integrations/delete-webhook https://api.meetcampfire.com/api/schema?format=json delete /integrations/api/v1/webhook/{id} # List Webhook Events Source: https://docs.campfire.ai/api-reference/integrations/list-webhook-events https://api.meetcampfire.com/api/schema?format=json get /integrations/api/v1/webhook/{id}/events # List Webhooks Source: https://docs.campfire.ai/api-reference/integrations/list-webhooks https://api.meetcampfire.com/api/schema?format=json get /integrations/api/v1/webhook # Partial Update Webhook Source: https://docs.campfire.ai/api-reference/integrations/partial-update-webhook https://api.meetcampfire.com/api/schema?format=json patch /integrations/api/v1/webhook/{id} # Retrieve Webhook Source: https://docs.campfire.ai/api-reference/integrations/retrieve-webhook https://api.meetcampfire.com/api/schema?format=json get /integrations/api/v1/webhook/{id} # Update Webhook Source: https://docs.campfire.ai/api-reference/integrations/update-webhook https://api.meetcampfire.com/api/schema?format=json put /integrations/api/v1/webhook/{id} # Bulk Search Contracts Source: https://docs.campfire.ai/api-reference/revenue-recognition/bulk-search-contracts https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/bulk-search Search for contracts by deal_name in a single request. # Bulk Search Products Source: https://docs.campfire.ai/api-reference/revenue-recognition/bulk-search-products https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/product/bulk-search Resolve many product cells in a single request. Each term is matched against product_id, display_name, product_uuid, id, then product_name, in that order. A term matching more than one product is returned in the ambiguous list instead of being resolved. # Create Contract Source: https://docs.campfire.ai/api-reference/revenue-recognition/create-contract https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts Create a new contract. Evergreen vs standard: - Standard contract: set is_evergreen=false and provide a fixed contract_end_date. - Evergreen contract: set is_evergreen=true and leave contract_end_date as null. The system manages a rolling effective_end_date, exposes working_end_date for downstream usage, and returns evergreen_locked_date for immutable historical boundary rules. Additional evergreen constraints: - is_evergreen and auto_renew cannot both be true. - billing_frequency is required for evergreen behavior. - default_payment_term is not implemented yet for standard contracts. It can currently be set only for Evergreen contracts and is applied to their automatically generated invoices. Other contract invoice flows retain their existing payment-term selection behavior; support may be extended to additional contract types in the future. - When default_payment_term is omitted or null, automatically generated Evergreen invoices retain the existing Net 30 fallback. - skip_evergreen_invoice_generation is creation-time only and cannot be changed on existing contracts. - skip_evergreen_invoice_generation=true skips only Campfire's auto-generated evergreen invoices. Revenue transactions still generate. # Create Contract Bundle Source: https://docs.campfire.ai/api-reference/revenue-recognition/create-contract-bundle https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/{contract_id}/bundles Create a new contract bundle. Evergreen vs standard: - Standard contracts require a fixed bundle end_date. - Evergreen contracts allow end_date to be null (open-ended) or set to a billing-period end date. Evergreen bundle start/end dates must align with billing period boundaries. Evergreen-specific option: - rebalance_journal_entries_indefinitely=true keeps invoice-journal rebalancing in sync as the evergreen contract extends. # Create Contract Milestone Source: https://docs.campfire.ai/api-reference/revenue-recognition/create-contract-milestone https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/{contract_id}/milestones Create a new milestone for a contract. This will automatically create an associated revenue transaction. # Create Contract Product Source: https://docs.campfire.ai/api-reference/revenue-recognition/create-contract-product https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/product Create a new product # Create Contract Subscription Source: https://docs.campfire.ai/api-reference/revenue-recognition/create-contract-subscription https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/{contract_id}/subscriptions Create a new contract subscription. Evergreen vs standard: - Standard contract subscriptions generally provide explicit lines and fixed start/end dates. - Evergreen contract subscriptions can provide period_amount to auto-generate lines. Their dates must align to billing period boundaries and must not exceed the contract's current working_end_date. Notes: - Usage and milestone subscription flows are not supported for evergreen contracts. - For evergreen contracts, period_amount is the source-of-truth amount per billing period. - renewal_behavior: - FOLLOW_CONTRACT: subscription follows evergreen contract extension windows. - FIXED_END: subscription keeps its own fixed end_date and does not extend automatically. # Create Contract Tier Price Override Source: https://docs.campfire.ai/api-reference/revenue-recognition/create-contract-tier-price-override https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/{contract_id}/tier-price-overrides # Create Contract Usage Revenue Source: https://docs.campfire.ai/api-reference/revenue-recognition/create-contract-usage-revenue https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/{contract_id}/usage List usage revenue records # Create Prepaid Commit Source: https://docs.campfire.ai/api-reference/revenue-recognition/create-prepaid-commit https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/{contract_id}/prepaid-commits # Create Prepaid Commit Consumption Source: https://docs.campfire.ai/api-reference/revenue-recognition/create-prepaid-commit-consumption https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/consumption # Create Product Bundle Source: https://docs.campfire.ai/api-reference/revenue-recognition/create-product-bundle https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/product-bundles Create a new product bundle with products and percentage allocations. Total percentage must equal 100. # Create Revenue Transaction Source: https://docs.campfire.ai/api-reference/revenue-recognition/create-revenue-transaction https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/transactions Create a new revenue transaction # Delete Contract Source: https://docs.campfire.ai/api-reference/revenue-recognition/delete-contract https://api.meetcampfire.com/api/schema?format=json delete /rr/api/v1/contracts/{id} # Delete Contract Bundle Source: https://docs.campfire.ai/api-reference/revenue-recognition/delete-contract-bundle https://api.meetcampfire.com/api/schema?format=json delete /rr/api/v1/contracts/{contract_id}/bundles/{id} # Delete Contract Customer Source: https://docs.campfire.ai/api-reference/revenue-recognition/delete-contract-customer https://api.meetcampfire.com/api/schema?format=json delete /rr/api/v1/customers/{id} # Delete Contract Milestone Source: https://docs.campfire.ai/api-reference/revenue-recognition/delete-contract-milestone https://api.meetcampfire.com/api/schema?format=json delete /rr/api/v1/contracts/{contract_id}/milestones/{id} # Delete Contract Subscription Source: https://docs.campfire.ai/api-reference/revenue-recognition/delete-contract-subscription https://api.meetcampfire.com/api/schema?format=json delete /rr/api/v1/contracts/{contract_id}/subscriptions/{id} # Delete Contract Usage Revenue Source: https://docs.campfire.ai/api-reference/revenue-recognition/delete-contract-usage-revenue https://api.meetcampfire.com/api/schema?format=json delete /rr/api/v1/contracts/{contract_id}/usage/{id} Retrieve, update, and delete contract usage revenue records # Delete Prepaid Commit Source: https://docs.campfire.ai/api-reference/revenue-recognition/delete-prepaid-commit https://api.meetcampfire.com/api/schema?format=json delete /rr/api/v1/contracts/{contract_id}/prepaid-commits/{id} # Delete Prepaid Commit Consumption Source: https://docs.campfire.ai/api-reference/revenue-recognition/delete-prepaid-commit-consumption https://api.meetcampfire.com/api/schema?format=json delete /rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/consumption/{id} # Delete Product Source: https://docs.campfire.ai/api-reference/revenue-recognition/delete-product https://api.meetcampfire.com/api/schema?format=json delete /rr/api/v1/product/{id} # Delete Product Bundle Source: https://docs.campfire.ai/api-reference/revenue-recognition/delete-product-bundle https://api.meetcampfire.com/api/schema?format=json delete /rr/api/v1/product-bundles/{id} # Delete Revenue Transaction Source: https://docs.campfire.ai/api-reference/revenue-recognition/delete-revenue-transaction https://api.meetcampfire.com/api/schema?format=json delete /rr/api/v1/transactions/{id} # Duplicate Contract Source: https://docs.campfire.ai/api-reference/revenue-recognition/duplicate-contract https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/{id}/duplicate # Get Bundle Allocations Source: https://docs.campfire.ai/api-reference/revenue-recognition/get-bundle-allocations https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/milestones/{milestone_id}/allocations Retrieve the current bundle allocation details for a contract subscription, milestone, or usage. # Get Bundle Allocations Source: https://docs.campfire.ai/api-reference/revenue-recognition/get-bundle-allocations-1 https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/subscriptions/{subscription_id}/allocations Retrieve the current bundle allocation details for a contract subscription, milestone, or usage. # Get Bundle Allocations Source: https://docs.campfire.ai/api-reference/revenue-recognition/get-bundle-allocations-2 https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/usage/{usage_id}/allocations Retrieve the current bundle allocation details for a contract subscription, milestone, or usage. # Get Prepaid Commit Summary Source: https://docs.campfire.ai/api-reference/revenue-recognition/get-prepaid-commit-summary https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/prepaid-commit-summary # Get Prepaid Commit Usage Event Distinct Values Source: https://docs.campfire.ai/api-reference/revenue-recognition/get-prepaid-commit-usage-event-distinct-values https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/usage-events/distinct-values Return distinct values for a given JSONB data field, for filter dropdowns. # Get Prepaid Commit Usage Events Template Source: https://docs.campfire.ai/api-reference/revenue-recognition/get-prepaid-commit-usage-events-template https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/usage-events/template Download a CSV template (commit-scoped). # Get rrapiv1contracts minimum commit preview Source: https://docs.campfire.ai/api-reference/revenue-recognition/get-rrapiv1contracts-minimum-commit-preview https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{id}/minimum-commit-preview Projected monthly minimum commitment true-up for a contract. Read-only. Returns the shortfall the month-end batch *would* post if it ran right now. Lets the contract detail screen show a live floor preview without triggering writes from the UI. # List Contract Bundles Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-contract-bundles https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/bundles Retrieve a list of contract bundles with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Contract Customers Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-contract-customers https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/customers Retrieve a list of contract customers with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Contract Milestones Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-contract-milestones https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/milestones Retrieve a list of milestones for a specific contract with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Contract Products Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-contract-products https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/product Retrieve a list of contract products with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Contract Subscriptions Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-contract-subscriptions https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/subscriptions Retrieve a list of contract subscriptions with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Contract Tier Price Overrides Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-contract-tier-price-overrides https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/tier-price-overrides # List Contract Usage Revenue Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-contract-usage-revenue https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/usage List usage revenue records # List Contracts Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-contracts https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts Retrieve a list of contracts with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. When download=true, triggers an async workflow that generates a ZIP file with contracts_summary.csv and contracts_detail.csv, uploads to S3, and sends an email with the download link. # List Prepaid Commit Consumption Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-prepaid-commit-consumption https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/consumption # List Prepaid Commit Usage Events Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-prepaid-commit-usage-events https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/usage-events # List Prepaid Commits Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-prepaid-commits https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/prepaid-commits # List Product Bundles Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-product-bundles https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/product-bundles Retrieve a list of product bundles with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Revenue Transactions Source: https://docs.campfire.ai/api-reference/revenue-recognition/list-revenue-transactions https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/transactions Retrieve a list of revenue transactions with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # Modify Subscription Schedule Source: https://docs.campfire.ai/api-reference/revenue-recognition/modify-subscription-schedule https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/modify-subscription-schedule Generate a modified subscription schedule by comparing a new schedule against an existing subscription. Returns the delta between the original and modified schedules, with support for catch-up accounting and contract end date modifications. # Parse Contract Source: https://docs.campfire.ai/api-reference/revenue-recognition/parse-contract https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/parse Parse contract details from uploaded PDF files using AI. # Partial Update Bundle Allocations Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-bundle-allocations https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/contracts/{contract_id}/milestones/{milestone_id}/allocations Partially update bundle allocations. Same behavior as PUT. # Partial Update Bundle Allocations Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-bundle-allocations-1 https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/contracts/{contract_id}/subscriptions/{subscription_id}/allocations Partially update bundle allocations. Same behavior as PUT. # Partial Update Bundle Allocations Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-bundle-allocations-2 https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/contracts/{contract_id}/usage/{usage_id}/allocations Partially update bundle allocations. Same behavior as PUT. # Partial Update Contract Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-contract https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/contracts/{id} # Partial Update Contract Bundle Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-contract-bundle https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/contracts/{contract_id}/bundles/{id} # Partial Update Contract Customer Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-contract-customer https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/customers/{id} # Partial Update Contract Milestone Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-contract-milestone https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/contracts/{contract_id}/milestones/{id} # Partial Update Contract Subscription Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-contract-subscription https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/contracts/{contract_id}/subscriptions/{id} # Partial Update Prepaid Commit Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-prepaid-commit https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/contracts/{contract_id}/prepaid-commits/{id} # Partial Update Product Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-product https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/product/{id} # Partial Update Product Bundle Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-product-bundle https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/product-bundles/{id} # Partial Update Revenue Transaction Source: https://docs.campfire.ai/api-reference/revenue-recognition/partial-update-revenue-transaction https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/transactions/{id} # Partially Update Contract Usage Revenue Source: https://docs.campfire.ai/api-reference/revenue-recognition/partially-update-contract-usage-revenue https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/contracts/{contract_id}/usage/{id} Retrieve, update, and delete contract usage revenue records # Process Prepaid Commit Adjustments Source: https://docs.campfire.ai/api-reference/revenue-recognition/process-prepaid-commit-adjustments https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/process-adjustments Process adjustment events for a prepaid commit and create credit memos. # Retrieve Contract Source: https://docs.campfire.ai/api-reference/revenue-recognition/retrieve-contract https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{id} # Retrieve Contract Bundle Source: https://docs.campfire.ai/api-reference/revenue-recognition/retrieve-contract-bundle https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/bundles/{id} # Retrieve Contract Customer Source: https://docs.campfire.ai/api-reference/revenue-recognition/retrieve-contract-customer https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/customers/{id} # Retrieve Contract Milestone Source: https://docs.campfire.ai/api-reference/revenue-recognition/retrieve-contract-milestone https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/milestones/{id} # Retrieve Contract Subscription Source: https://docs.campfire.ai/api-reference/revenue-recognition/retrieve-contract-subscription https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/subscriptions/{id} # Retrieve Contract Usage Revenue Source: https://docs.campfire.ai/api-reference/revenue-recognition/retrieve-contract-usage-revenue https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/usage/{id} Retrieve, update, and delete contract usage revenue records # Retrieve Prepaid Commit Source: https://docs.campfire.ai/api-reference/revenue-recognition/retrieve-prepaid-commit https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/contracts/{contract_id}/prepaid-commits/{id} # Retrieve Product Source: https://docs.campfire.ai/api-reference/revenue-recognition/retrieve-product https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/product/{id} # Retrieve Product Bundle Source: https://docs.campfire.ai/api-reference/revenue-recognition/retrieve-product-bundle https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/product-bundles/{id} # Retrieve Revenue Transaction Source: https://docs.campfire.ai/api-reference/revenue-recognition/retrieve-revenue-transaction https://api.meetcampfire.com/api/schema?format=json get /rr/api/v1/transactions/{id} # Terminate Contract Source: https://docs.campfire.ai/api-reference/revenue-recognition/terminate-contract https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/{id}/terminate Terminate a contract and optionally void associated invoices. If the user has permission to terminate contracts and void invoices, both operations are performed atomically. If the user lacks permission for either operation, a draft is created instead, and the response indicates which operations were drafted. Returns 400 if any of the provided void_invoice_ids are invalid (not found, already voided, has payments, void date is before the invoice date, or in a closed period). # Update Bundle Allocations Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-bundle-allocations https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/contracts/{contract_id}/milestones/{milestone_id}/allocations Update the bundle allocations for a contract item. The sum of all line amounts must equal the bundle's total_amount. Changes will cascade to related RevenueTransactions and JournalEntries. # Update Bundle Allocations Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-bundle-allocations-1 https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/contracts/{contract_id}/subscriptions/{subscription_id}/allocations Update the bundle allocations for a contract item. The sum of all line amounts must equal the bundle's total_amount. Changes will cascade to related RevenueTransactions and JournalEntries. # Update Bundle Allocations Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-bundle-allocations-2 https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/contracts/{contract_id}/usage/{usage_id}/allocations Update the bundle allocations for a contract item. The sum of all line amounts must equal the bundle's total_amount. Changes will cascade to related RevenueTransactions and JournalEntries. # Update Contract Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-contract https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/contracts/{id} # Update Contract Bundle Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-contract-bundle https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/contracts/{contract_id}/bundles/{id} # Update Contract Customer Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-contract-customer https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/customers/{id} # Update Contract Milestone Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-contract-milestone https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/contracts/{contract_id}/milestones/{id} # Update Contract Subscription Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-contract-subscription https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/contracts/{contract_id}/subscriptions/{id} # Update Contract Usage Revenue Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-contract-usage-revenue https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/contracts/{contract_id}/usage/{id} Retrieve, update, and delete contract usage revenue records # Update Prepaid Commit Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-prepaid-commit https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/contracts/{contract_id}/prepaid-commits/{id} # Update Prepaid Commit Consumption Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-prepaid-commit-consumption https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/consumption/{id} # Update Product Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-product https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/product/{id} # Update Product Bundle Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-product-bundle https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/product-bundles/{id} # Update Revenue Transaction Source: https://docs.campfire.ai/api-reference/revenue-recognition/update-revenue-transaction https://api.meetcampfire.com/api/schema?format=json put /rr/api/v1/transactions/{id} # Upload Prepaid Commit Usage Events Source: https://docs.campfire.ai/api-reference/revenue-recognition/upload-prepaid-commit-usage-events https://api.meetcampfire.com/api/schema?format=json post /rr/api/v1/contracts/{contract_id}/prepaid-commits/{commit_id}/usage-events/upload Upload a CSV of usage events for a specific prepaid commit (commit-scoped). # Bulk Update Contract Invoice Status Source: https://docs.campfire.ai/api-reference/revenue/bulk-update-contract-invoice-status https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/invoices/bulk-status Move contract invoices forward in the AR lifecycle: drafts to Open, or drafts/open invoices to Sent. Backward transitions are rejected. # Contract Stat Card Aggregates Source: https://docs.campfire.ai/api-reference/revenue/contract-stat-card-aggregates https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/contracts/stats Customer-scoped counts and total contract values for the Contracts page Pending Review / Active / Ending Soon / Past End Date stat cards. # Create Contract Invoice Line Source: https://docs.campfire.ai/api-reference/revenue/create-contract-invoice-line https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/invoice-lines # Create Contract Journal Entry Source: https://docs.campfire.ai/api-reference/revenue/create-contract-journal-entry https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/journal-entries # Create MRR Schedule Entry Source: https://docs.campfire.ai/api-reference/revenue/create-mrr-schedule-entry https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/mrr-schedules # Create Performance Obligation Source: https://docs.campfire.ai/api-reference/revenue/create-performance-obligation https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/performance-obligations # Create Revenue Contract Source: https://docs.campfire.ai/api-reference/revenue/create-revenue-contract https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/contracts # Create Revenue Contract Line Source: https://docs.campfire.ai/api-reference/revenue/create-revenue-contract-line https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/contract-lines # Create Revenue Schedule Entry Source: https://docs.campfire.ai/api-reference/revenue/create-revenue-schedule-entry https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/revenue-schedules # Create Usage Event Source: https://docs.campfire.ai/api-reference/revenue/create-usage-event https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/usage-events Reported usage facts — the write path for the usage ledger. Creating an event prices its quantity into ledger rows (commit vs overage segments), returned inline as ``records``. # Delete Contract Invoice Source: https://docs.campfire.ai/api-reference/revenue/delete-contract-invoice https://api.meetcampfire.com/api/schema?format=json delete /rev/api/v1/invoices/{id} # Delete Contract Invoice Line Source: https://docs.campfire.ai/api-reference/revenue/delete-contract-invoice-line https://api.meetcampfire.com/api/schema?format=json delete /rev/api/v1/invoice-lines/{id} # Delete Contract Journal Entry Source: https://docs.campfire.ai/api-reference/revenue/delete-contract-journal-entry https://api.meetcampfire.com/api/schema?format=json delete /rev/api/v1/journal-entries/{id} # Delete MRR Schedule Entry Source: https://docs.campfire.ai/api-reference/revenue/delete-mrr-schedule-entry https://api.meetcampfire.com/api/schema?format=json delete /rev/api/v1/mrr-schedules/{id} # Delete Performance Obligation Source: https://docs.campfire.ai/api-reference/revenue/delete-performance-obligation https://api.meetcampfire.com/api/schema?format=json delete /rev/api/v1/performance-obligations/{id} # Delete Revenue Contract Source: https://docs.campfire.ai/api-reference/revenue/delete-revenue-contract https://api.meetcampfire.com/api/schema?format=json delete /rev/api/v1/contracts/{id} # Delete Revenue Contract Line Source: https://docs.campfire.ai/api-reference/revenue/delete-revenue-contract-line https://api.meetcampfire.com/api/schema?format=json delete /rev/api/v1/contract-lines/{id} # Delete Revenue Schedule Entry Source: https://docs.campfire.ai/api-reference/revenue/delete-revenue-schedule-entry https://api.meetcampfire.com/api/schema?format=json delete /rev/api/v1/revenue-schedules/{id} # Delete Usage Event Source: https://docs.campfire.ai/api-reference/revenue/delete-usage-event https://api.meetcampfire.com/api/schema?format=json delete /rev/api/v1/usage-events/{id} # Download Usage CSV Template Source: https://docs.campfire.ai/api-reference/revenue/download-usage-csv-template https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/usage-events/upload-template The CSV template for the cross-contract usage upload. # Draft Contract Invoice Aggregates Source: https://docs.campfire.ai/api-reference/revenue/draft-contract-invoice-aggregates https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/invoices/stats Customer-scoped count and total amount of draft contract invoices for the Invoices page Drafts stat card. # Email Usage Amounts CSV Source: https://docs.campfire.ai/api-reference/revenue/email-usage-amounts-csv https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/usage-records/export The Amounts table as an emailed CSV: priced usage rows under the table's filters. # Email Usage Events CSV Source: https://docs.campfire.ai/api-reference/revenue/email-usage-events-csv https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/usage-events/export The Units table as an emailed CSV: reported usage events under the table's filters. # Get Revenue Contract Parse Run Source: https://docs.campfire.ai/api-reference/revenue/get-revenue-contract-parse-run https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/contracts/parse-runs/{run_id} Poll an Ember contract parse run for live status and its final result. # List Contract Invoice Lines Source: https://docs.campfire.ai/api-reference/revenue/list-contract-invoice-lines https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/invoice-lines # List Contract Invoices Source: https://docs.campfire.ai/api-reference/revenue/list-contract-invoices https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/invoices Contract invoices are created exclusively by the contract billing schedule (``create_schedules_for_contract``); there is deliberately no create endpoint for attaching arbitrary invoices to a contract. # List Contract Journal Entries Source: https://docs.campfire.ai/api-reference/revenue/list-contract-journal-entries https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/journal-entries # List MRR Schedule Entries Source: https://docs.campfire.ai/api-reference/revenue/list-mrr-schedule-entries https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/mrr-schedules # List Performance Obligations Source: https://docs.campfire.ai/api-reference/revenue/list-performance-obligations https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/performance-obligations # List Revenue Contract Lines Source: https://docs.campfire.ai/api-reference/revenue/list-revenue-contract-lines https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/contract-lines # List Revenue Contracts Source: https://docs.campfire.ai/api-reference/revenue/list-revenue-contracts https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/contracts # List Revenue Schedule Entries Source: https://docs.campfire.ai/api-reference/revenue/list-revenue-schedule-entries https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/revenue-schedules # List Usage Events Source: https://docs.campfire.ai/api-reference/revenue/list-usage-events https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/usage-events Reported usage facts — the write path for the usage ledger. Creating an event prices its quantity into ledger rows (commit vs overage segments), returned inline as ``records``. # List Usage Records Source: https://docs.campfire.ai/api-reference/revenue/list-usage-records https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/usage-records The priced usage ledger. Read-only: rows are derived from usage events — report or correct usage through the events endpoint. # Partially Update Contract Invoice Source: https://docs.campfire.ai/api-reference/revenue/partially-update-contract-invoice https://api.meetcampfire.com/api/schema?format=json patch /rev/api/v1/invoices/{id} # Partially Update Contract Invoice Line Source: https://docs.campfire.ai/api-reference/revenue/partially-update-contract-invoice-line https://api.meetcampfire.com/api/schema?format=json patch /rev/api/v1/invoice-lines/{id} # Partially Update Contract Journal Entry Source: https://docs.campfire.ai/api-reference/revenue/partially-update-contract-journal-entry https://api.meetcampfire.com/api/schema?format=json patch /rev/api/v1/journal-entries/{id} # Partially Update MRR Schedule Entry Source: https://docs.campfire.ai/api-reference/revenue/partially-update-mrr-schedule-entry https://api.meetcampfire.com/api/schema?format=json patch /rev/api/v1/mrr-schedules/{id} # Partially Update Performance Obligation Source: https://docs.campfire.ai/api-reference/revenue/partially-update-performance-obligation https://api.meetcampfire.com/api/schema?format=json patch /rev/api/v1/performance-obligations/{id} # Partially Update Revenue Contract Source: https://docs.campfire.ai/api-reference/revenue/partially-update-revenue-contract https://api.meetcampfire.com/api/schema?format=json patch /rev/api/v1/contracts/{id} # Partially Update Revenue Contract Line Source: https://docs.campfire.ai/api-reference/revenue/partially-update-revenue-contract-line https://api.meetcampfire.com/api/schema?format=json patch /rev/api/v1/contract-lines/{id} # Partially Update Revenue Schedule Entry Source: https://docs.campfire.ai/api-reference/revenue/partially-update-revenue-schedule-entry https://api.meetcampfire.com/api/schema?format=json patch /rev/api/v1/revenue-schedules/{id} # Partially Update Usage Event Source: https://docs.campfire.ai/api-reference/revenue/partially-update-usage-event https://api.meetcampfire.com/api/schema?format=json patch /rev/api/v1/usage-events/{id} # Preview Contract Schedules Source: https://docs.campfire.ai/api-reference/revenue/preview-contract-schedules https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/contracts/preview-schedules Compute the billing and revenue schedules a draft contract would generate, without saving anything. Runs the exact generators the save path uses. # Retrieve Contract Invoice Source: https://docs.campfire.ai/api-reference/revenue/retrieve-contract-invoice https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/invoices/{id} # Retrieve Contract Invoice Line Source: https://docs.campfire.ai/api-reference/revenue/retrieve-contract-invoice-line https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/invoice-lines/{id} # Retrieve Contract Journal Entry Source: https://docs.campfire.ai/api-reference/revenue/retrieve-contract-journal-entry https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/journal-entries/{id} # Retrieve Contract Schedules Source: https://docs.campfire.ai/api-reference/revenue/retrieve-contract-schedules https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/contracts/{id}/schedules A persisted contract's generated schedules — the usage-adjusted preview payload computed from its saved lines, obligations, and ledger, plus the serialized lines and performance obligations themselves. The preview is authoritative for display: ``recognized_total`` comes from its revenue rows so it matches the schedule shown (usage actuals and overage included), not from the persisted plan rows. ``balances`` is the opposite reading — billed from issued invoices, and what the contract's posted journal entries have actually put in the ledger, named with the GL accounts they sit in. One call covers the contract summary UI. # Retrieve MRR Schedule Entry Source: https://docs.campfire.ai/api-reference/revenue/retrieve-mrr-schedule-entry https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/mrr-schedules/{id} # Retrieve Obligation Usage Ledger Source: https://docs.campfire.ai/api-reference/revenue/retrieve-obligation-usage-ledger https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/performance-obligations/{id}/usage-ledger An obligation's usage ledger rolled forward against its prepaid commit: the commit (the contract line's transaction price, or the obligation's allocated amount when it has no line), total consumed, remaining balance, and every entry with the commit remaining after it. A negative remaining balance is overage past the commit. # Retrieve Performance Obligation Source: https://docs.campfire.ai/api-reference/revenue/retrieve-performance-obligation https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/performance-obligations/{id} # Retrieve Revenue Contract Source: https://docs.campfire.ai/api-reference/revenue/retrieve-revenue-contract https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/contracts/{id} # Retrieve Revenue Contract Line Source: https://docs.campfire.ai/api-reference/revenue/retrieve-revenue-contract-line https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/contract-lines/{id} # Retrieve Revenue Schedule Entry Source: https://docs.campfire.ai/api-reference/revenue/retrieve-revenue-schedule-entry https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/revenue-schedules/{id} # Retrieve Usage Event Source: https://docs.campfire.ai/api-reference/revenue/retrieve-usage-event https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/usage-events/{id} # Retrieve Usage Record Source: https://docs.campfire.ai/api-reference/revenue/retrieve-usage-record https://api.meetcampfire.com/api/schema?format=json get /rev/api/v1/usage-records/{id} # Start Revenue Contract Parse Run Source: https://docs.campfire.ai/api-reference/revenue/start-revenue-contract-parse-run https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/contracts/parse Start an asynchronous Ember parse run over uploaded contract PDFs. # Update Contract Invoice Source: https://docs.campfire.ai/api-reference/revenue/update-contract-invoice https://api.meetcampfire.com/api/schema?format=json put /rev/api/v1/invoices/{id} # Update Contract Invoice Line Source: https://docs.campfire.ai/api-reference/revenue/update-contract-invoice-line https://api.meetcampfire.com/api/schema?format=json put /rev/api/v1/invoice-lines/{id} # Update Contract Journal Entry Source: https://docs.campfire.ai/api-reference/revenue/update-contract-journal-entry https://api.meetcampfire.com/api/schema?format=json put /rev/api/v1/journal-entries/{id} # Update MRR Schedule Entry Source: https://docs.campfire.ai/api-reference/revenue/update-mrr-schedule-entry https://api.meetcampfire.com/api/schema?format=json put /rev/api/v1/mrr-schedules/{id} # Update Performance Obligation Source: https://docs.campfire.ai/api-reference/revenue/update-performance-obligation https://api.meetcampfire.com/api/schema?format=json put /rev/api/v1/performance-obligations/{id} # Update Revenue Contract Source: https://docs.campfire.ai/api-reference/revenue/update-revenue-contract https://api.meetcampfire.com/api/schema?format=json put /rev/api/v1/contracts/{id} # Update Revenue Contract Line Source: https://docs.campfire.ai/api-reference/revenue/update-revenue-contract-line https://api.meetcampfire.com/api/schema?format=json put /rev/api/v1/contract-lines/{id} # Update Revenue Schedule Entry Source: https://docs.campfire.ai/api-reference/revenue/update-revenue-schedule-entry https://api.meetcampfire.com/api/schema?format=json put /rev/api/v1/revenue-schedules/{id} # Update Usage Event Source: https://docs.campfire.ai/api-reference/revenue/update-usage-event https://api.meetcampfire.com/api/schema?format=json put /rev/api/v1/usage-events/{id} # Upload Contract Usage CSV Source: https://docs.campfire.ai/api-reference/revenue/upload-contract-usage-csv https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/contracts/{id}/usage-upload Bulk usage upload for a contract: a CSV with PID, Date, Quantity columns, where PID references an obligation by its PO-1…PO-N position. Each row becomes a usage event, priced into ledger rows; the upload is all-or-nothing. # Upload Usage CSV Source: https://docs.campfire.ai/api-reference/revenue/upload-usage-csv https://api.meetcampfire.com/api/schema?format=json post /rev/api/v1/usage-events/upload Bulk usage upload across contracts: a CSV with Contract, PID, Date, Quantity columns, where Contract is the contract number (CTR-…) and PID references an obligation by its PO-1…PO-N position within that contract. Validation runs synchronously — row errors come back immediately and nothing is queued — then event creation happens in a background task tracked by the returned batch job. The import is all-or-nothing. # Create Chart Entity Source: https://docs.campfire.ai/api-reference/settings/create-chart-entity https://api.meetcampfire.com/api/schema?format=json post /coa/api/entity Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Create Customer Currencies Source: https://docs.campfire.ai/api-reference/settings/create-customer-currencies https://api.meetcampfire.com/api/schema?format=json post /ca/api/user_currency Complete mixin for history filtering with pagination support. Returns either active OR deleted records based on include_deleted parameter. # Delete Chart Entity Source: https://docs.campfire.ai/api-reference/settings/delete-chart-entity https://api.meetcampfire.com/api/schema?format=json delete /coa/api/entity/{id} # Delete Customer Currencies Source: https://docs.campfire.ai/api-reference/settings/delete-customer-currencies https://api.meetcampfire.com/api/schema?format=json delete /ca/api/user_currency/{id} # Delete File Source: https://docs.campfire.ai/api-reference/settings/delete-file https://api.meetcampfire.com/api/schema?format=json delete /ca/api/file/{id} # Get Currencies Exchange Rates for Currency Source: https://docs.campfire.ai/api-reference/settings/get-currencies-exchange-rates-for-currency https://api.meetcampfire.com/api/schema?format=json get /ca/api/user_currency/with_rate # Get Currency Exchange Rate Source: https://docs.campfire.ai/api-reference/settings/get-currency-exchange-rate https://api.meetcampfire.com/api/schema?format=json get /ca/api/user_currency/rate # Get File Source: https://docs.campfire.ai/api-reference/settings/get-file https://api.meetcampfire.com/api/schema?format=json get /ca/api/file/{id} # Get File Temporary Download URL Source: https://docs.campfire.ai/api-reference/settings/get-file-temporary-download-url https://api.meetcampfire.com/api/schema?format=json get /ca/api/file/{id}/temp-download-url Return a short-lived presigned S3 URL for downloading a file. Pass ``?disposition=inline`` to render preview-safe types (PDF, images) in the browser instead of forcing a download. :param request: The incoming DRF request (must be authenticated). :return: JSON response with ``url`` key or an error. # List All Entities for Intercompany JE Source: https://docs.campfire.ai/api-reference/settings/list-all-entities-for-intercompany-je https://api.meetcampfire.com/api/schema?format=json get /coa/api/entity/for-intercompany Returns ALL entities for intercompany journal entry creation. This endpoint bypasses entity-scoped filtering because users need to select entities they don't normally have access to when creating intercompany journal entries (per the entity-scoped-user-access spec). Uses minimal serializer to only expose id, name, and currency - preventing data leakage of sensitive entity details to users who may not have full access to all entities. # List Chart Entities Source: https://docs.campfire.ai/api-reference/settings/list-chart-entities https://api.meetcampfire.com/api/schema?format=json get /coa/api/entity Retrieve a list of chart entities with optional filtering # List Customer Currencies Source: https://docs.campfire.ai/api-reference/settings/list-customer-currencies https://api.meetcampfire.com/api/schema?format=json get /ca/api/user_currency Retrieve a list of customer currencies with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # List Files Source: https://docs.campfire.ai/api-reference/settings/list-files https://api.meetcampfire.com/api/schema?format=json get /ca/api/file Retrieve a list of files with optional filtering and sorting. Supports including soft-deleted records for audit and recovery purposes. When include_deleted=true, returns ONLY deleted records instead of active records. Deleted records contain minimal data: 'id', 'is_deleted=true', 'deleted_at' timestamp, and 'last_modified_at'. When 'false' or omitted, returns ONLY active records. This provides clean separation between active and deleted data. # Partial Update Chart Entity Source: https://docs.campfire.ai/api-reference/settings/partial-update-chart-entity https://api.meetcampfire.com/api/schema?format=json patch /coa/api/entity/{id} # Partial Update Customer Currencies Source: https://docs.campfire.ai/api-reference/settings/partial-update-customer-currencies https://api.meetcampfire.com/api/schema?format=json patch /ca/api/user_currency/{id} # Partially Update Chart Account Settings Source: https://docs.campfire.ai/api-reference/settings/partially-update-chart-account-settings https://api.meetcampfire.com/api/schema?format=json patch /coa/api/chart-account-settings Partially update the default chart accounts to be used across the platform. Each input is the id to an existing chart account. # Patch File Source: https://docs.campfire.ai/api-reference/settings/patch-file https://api.meetcampfire.com/api/schema?format=json patch /ca/api/file/{id} # Retrieve Chart Account Settings Source: https://docs.campfire.ai/api-reference/settings/retrieve-chart-account-settings https://api.meetcampfire.com/api/schema?format=json get /coa/api/chart-account-settings These are the defaults chart accounts to be used across the platform. Each input is the id to an existing chart account. # Retrieve Chart Entity Source: https://docs.campfire.ai/api-reference/settings/retrieve-chart-entity https://api.meetcampfire.com/api/schema?format=json get /coa/api/entity/{id} # Retrieve Customer Currencies Source: https://docs.campfire.ai/api-reference/settings/retrieve-customer-currencies https://api.meetcampfire.com/api/schema?format=json get /ca/api/user_currency/{id} # Update Chart Account Settings Source: https://docs.campfire.ai/api-reference/settings/update-chart-account-settings https://api.meetcampfire.com/api/schema?format=json put /coa/api/chart-account-settings These are the defaults chart accounts to be used across the platform. Each input is the id to an existing chart account. # Update Chart Entity Source: https://docs.campfire.ai/api-reference/settings/update-chart-entity https://api.meetcampfire.com/api/schema?format=json put /coa/api/entity/{id} # Update Customer Currencies Source: https://docs.campfire.ai/api-reference/settings/update-customer-currencies https://api.meetcampfire.com/api/schema?format=json put /ca/api/user_currency/{id} # Update File Source: https://docs.campfire.ai/api-reference/settings/update-file https://api.meetcampfire.com/api/schema?format=json put /ca/api/file/{id} # Upload Chart Entity Logo Source: https://docs.campfire.ai/api-reference/settings/upload-chart-entity-logo https://api.meetcampfire.com/api/schema?format=json post /coa/api/entity/{id}/logo # Upload File Source: https://docs.campfire.ai/api-reference/settings/upload-file https://api.meetcampfire.com/api/schema?format=json post /ca/api/file/upload Upload a file directly to Campfire. This is the primary way to upload files. **Supported Models:** bill, chat, close_task, closecheckitem, contract, credit_memo, customer, debit_memo, draft_queue, fixed_asset, intercompany_journal, invoice, journal_entry, journalentry, lease_v2, migration_record, policy, reconciliation, reconciliation_report, revenue_contract **Supported Content Types:** application/msword, application/pdf, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/gif, image/jpeg, image/jpg, image/png, image/webp, text/csv, text/markdown, text/plain, text/x-markdown **Maximum File Size:** 100MB **Example:** ```bash curl -X POST "https://api.meetcampfire.com/ca/api/file/upload?model=bill&object_id=12345" \ -H "Authorization: Token YOUR_TOKEN" \ -F "file=@receipt.pdf" ``` **Query Parameters:** - `model` (required): Model type (e.g., "bill", "invoice", "contract") - `object_id` (optional): ID of the object to attach the file to **Request Body:** - `file` (required): The file to upload (multipart/form-data) # Accounts Payable Workflows Source: https://docs.campfire.ai/guides/accounts-payable How to create, modify, pay and void bills in Campfire All requests in this flow assume you have a valid access token attached in your request headers. See our [authentication guide](/quickstart) for more information. ## Creating a bill This section will guide you through the process of creating a bill in Campfire. We'll need to grab some object references for related objects to create our bill. We'll need to pass in the id's of the related objects where applicable in the bill creation request. Linked here are the filter endpoints for the applicable objects. These include: * [Accounts (Expense Account on the Line Items)(Required)](/api-reference/company-objects/list-chart-accounts) * [Vendors (Required)](/api-reference/company-objects/list-vendors) * [Entities (Required)](/api-reference/settings/list-chart-entities) * [Departments (Optional)](/api-reference/company-objects/list-departments) * [Custom Dimension Fields (Optional)](/api-reference/company-objects/list-custom-dimensions) We can now create our request body by filling in the related fields. Here are the required fields: | Field | Description | Example | | -------------------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------- | | `terms` | Payment terms (default is net\_30, can be: 7, 10, 15, 20, 30, 40, 45, 60, 90, 105, 120 or due\_on\_receipt) | `"net_30"` | | `bill_date` | Accounting date for the bill in YYYY-MM-DD format | `"2025-07-01"` | | `due_date` | Due date for the bill in YYYY-MM-DD format | `"2025-08-25"` | | `lines` | Array of line items for the bill | See line item fields below | | `entity` | ID from entity | `"5"` | | `currency` | Currency code | `"USD"` | | `exchange_rate_book` | Exchange rate between transactional and entity currency (auto-computed if not provided) | `1` | | `exchange_rate` | Exchange rate between entity and consolidation currency (auto-computed if not provided) | `1.373` | | `vendor` | ID from vendor | `"34182"` | | `bill_number` | Bill number | `"098765"` | | `item_date` | Bill date in YYYY-MM-DD format | `"2025-07-01"` | | `message_on_bill` | Message to display on bill | `"Bill Message"` | | `mailing_address` | Free text address | `"1234 Main St. San Francisco CA"` | **Line Item Fields:** | Field | Description | Example | | --------------- | ---------------------------------------------- | ------------------ | | `tags` | Array of custom dimension field IDs (optional) | `[{"id": "8114"}]` | | `account` | ID from accounts (expense account) | `"180564"` | | `amount` | Line item amount | `10000` | | `description` | Line item description | `"Line Desc"` | | `bill_customer` | ID from vendor | `"34182"` | | `department` | ID from department (optional) | `"35"` | Example request body: ```json theme={null} { "terms": "net_30", "bill_date": "2025-07-01", "due_date": "2025-08-25", "lines": [ { "tags": [ { "id": "8114" } ], "account": "180564", "amount": 10000, "description": "Line Desc", "bill_customer": "34182", "department": "35" } ], "entity": "5", "currency": "USD", "exchange_rate_book": 1, "exchange_rate": 1.373, "vendor": "34182", "bill_number": "098765", "item_date": "2025-07-01", "message_on_bill": "Bill Message", "mailing_address": "1234 Main St. San Francisco CA" } ``` Now that we have the request we can post it via the [Create Bill](/api-reference/accounts-payable/create-accounting-bill) endpoint. Congrats! You've created your first bill! ## Paying a Bill This section will walk you through posting a payment to a bill. We need to get a transaction id to reference in the payment. You have two options for this: * [Creating a Journal, and using one of its transactions](/guides/journal-entries) * [Finding Existing Transactions](/api-reference/core-accounting/list-chart-transactions) Now that we have a transaction id, we can create our payment request body. Payments that don't use the full amount of a transaction will bump out a new line of the journal based on the referenced transaction. You can apply multiple transactions to a bill at the same time. Each transaction will be a separate payment. | Field | Description | Example | | ---------------- | ---------------------------------------------------------------------------- | -------- | | `transaction_id` | ID from transaction | `"1234"` | | `amount` | Payment amount | `10000` | | `account` | ID from account (If you want to categorize the transaction at the same time) | `"1234"` | Example request body: ```json theme={null} { "transactions": [ { "transaction_id": 21069178, "account_id": "2550", "amount": 8999.99 } ], } ``` Now that we have the request we can post it via the [Create Payment](/api-reference/accounts-payable/mark-bill-as-paid) endpoint. Congrats! You've paid your bill! # Accounts Receivable Workflows Source: https://docs.campfire.ai/guides/accounts-receivable How to create, modify, pay and void invoices in Campfire All requests in this flow assume you have a valid access token attached in your request headers. See our [authentication guide](/quickstart) for more information. ## Creating an invoice This section will guide you through the process of creating an invoice in Campfire. We'll need to grab some object references for related objects to create our invoice. We'll need to pass in the id's of the related objects where applicable in the invoice creation request. Linked here are the filter endpoints for the applicable objects. These include: * [Products (Required)](/api-reference/revenue-recognition/list-contract-products) * [Customers (Required)](/api-reference/company-objects/list-vendors) * [Entities (Required)](/api-reference/settings/list-chart-entities) * [Contracts (Optional)](/api-reference/revenue-recognition/list-contracts) We can now create our request body by filling in the related fields. Here are the required fields: | Field | Description | Example | | ----------------------- | ----------------------------------------------------------------------------------------------------------- | -------------------------- | | `terms` | Payment terms (default is net\_30, can be: 7, 10, 15, 20, 30, 40, 45, 60, 90, 105, 120 or due\_on\_receipt) | `"net_30"` | | `invoice_date` | Accounting date for the invoice in YYYY-MM-DD format | `"2025-07-01"` | | `due_date` | Due date for the invoice in YYYY-MM-DD format | `"2025-07-31"` | | `lines` | Array of line items for the invoice | See line item fields below | | `entity` | ID from entity | `"54"` | | `currency` | Currency code | `"USD"` | | `message_on_invoice` | Message to display on invoice | `"Invoice Message"` | | `exchange_rate_book` | Exchange rate between transactional and entity currency (auto-computed if not provided) | `1` | | `exchange_rate` | Exchange rate between entity and consolidation currency (auto-computed if not provided) | `1` | | `client` | ID from client | `"24020"` | | `billing_address` | Billing address | `"Billing Address"` | | `shipping_address` | Shipping address | `"Shipping Address"` | | `contract` | ID from contract (optional) | `"24899"` | | `purchase_order_number` | Purchase order number | `"123456789"` | | `invoice_number` | Invoice number | `"1234567890"` | | `location_of_sale` | Location of sale description | `"Location of sale desc"` | | `item_date` | Bill date in YYYY-MM-DD format | `"2025-07-01"` | | `period_start` | Period start date in YYYY-MM-DD format | `"2025-07-01"` | | `period_end` | Period end date in YYYY-MM-DD format | `"2025-07-31"` | | `shipping_date` | Shipping date in YYYY-MM-DD format | `"2025-07-01"` | **Line Item Fields:** | Field | Description | Example | | -------------- | --------------------------------- | -------------- | | `service_date` | Service date in YYYY-MM-DD format | `"2025-07-01"` | | `amount` | Line item amount | `300` | | `product` | ID from product | `"3560"` | | `rate` | Rate per unit | `15` | | `description` | Line item description | `"Line desc"` | | `quantity` | Quantity | `20` | | `tax` | Tax amount | `12` | Example request body: ```json theme={null} { "terms": "net_30", "invoice_date": "2025-07-01", "due_date": "2025-07-31", "lines": [ { "service_date": "2025-07-01", "amount": 300, "product": "3560", "rate": 15, "description": "Line desc", "quantity": 20, "tax": 12 } ], "entity": "54", "currency": "USD", "message_on_invoice": "Invoice Message", "exchange_rate_book": 1, "exchange_rate": 1, "client": "24020", "billing_address": "Billing Address", "shipping_address": "Shipping Address", "contract": "24899", "purchase_order_number": "123456789", "invoice_number": "1234567890", "location_of_sale": "Location of sale desc", "item_date": "2025-07-01", "period_start": "2025-07-01", "period_end": "2025-07-31", "shipping_date": "2025-07-01" } ``` Now that we have the request we can post it via the [Create Invoice](/api-reference/accounts-receivable/create-invoice) endpoint. Congrats! You've created your first invoice! ## Paying an invoice This section will walk you through posting a payment to an invoice. We need to get a transaction id to reference in the payment. You have two options for this: * [Creating a Journal, and using one of its transactions](/guides/journal-entries) * [Finding Existing Transactions](/api-reference/core-accounting/list-chart-transactions) Now that we have a transaction id, we can create our payment request body. Payments that don't use the full amount of a transaction will bump out a new line of the journal based on the referenced transaction. You can apply multiple transactions to an invoice at the same time. Each transaction will be a separate payment. | Field | Description | Example | | ---------------- | ---------------------------------------------------------------------------- | -------- | | `transaction_id` | ID from transaction | `"1234"` | | `amount` | Payment amount | `10000` | | `account` | ID from account (If you want to categorize the transaction at the same time) | `"1234"` | Example request body: ```json theme={null} { "transactions": [ { "transaction_id": 21069178, "account_id": "2550", "amount": 8999.99 } ], } ``` Now that we have the request we can post it via the [Create Payment](/api-reference/accounts-receivable/mark-invoice-as-paid) endpoint. Congrats! You've paid your invoice! # AI Integration with Model Context Protocol Source: https://docs.campfire.ai/guides/ai-integration Connect Campfire to your favorite AI tools using MCP MCP (Model Context Protocol) allows you to access Campfire's APIs through AI tools like Cursor, VS Code, Claude Desktop, and others. ## What is MCP? The Model Context Protocol (MCP) is an open standard that enables AI applications to securely connect to external data sources and tools. Campfire exposes an MCP server so you can: * Query your accounting data through AI assistants * Generate reports using natural language * Analyze financial trends with AI-powered insights * Automate accounting workflows through AI tools ## How the MCP Server Works The MCP server provides AI tools that map directly to Campfire API endpoints. When an AI assistant uses a tool, the MCP server: 1. Authenticates your request using your API token 2. Calls the corresponding Campfire API endpoint with your credentials 3. Returns the response to the AI assistant Your token is sent with every API tool call so results stay scoped to your organization. ## Available Tools The MCP server provides 12 tools that map directly to Campfire API endpoints: * **Chart of Accounts**: Retrieve chart of accounts with optional filtering by type, subtype, or search query * **Transactions**: Search and filter general ledger transactions with support for entity, account, vendor, department, tag, and date range filters * **Entities**: Retrieve chart entities (parent companies, subsidiaries, locations) * **Vendors**: Retrieve vendor/payee directory with contact details and status * **Departments**: Retrieve department hierarchy (cost centers, business units) * **Tags**: Retrieve transaction tags (custom dimensions) used for analytics * **Income Statement**: Generate profit & loss statements for specified periods with configurable cadence (monthly, quarterly, yearly) * **Balance Sheet**: Generate balance sheet showing assets, liabilities, and equity * **Cash Flow Statement**: Generate cash flow by operating, investing, and financing activities * **Budgets**: Retrieve budget records with entity and time-period metadata * **Contracts**: Retrieve revenue recognition contracts with performance obligations * **Aging Report**: Generate AP/AR aging reports with age bucket breakdowns All tools return data scoped to your organization based on your authentication token. ## How the tools are used Your AI tool maps your question to the right Campfire API using the OpenAPI schema. You ask in natural language; the AI translates your request into the appropriate endpoint and parameters (filters, date ranges, pagination). Results are scoped to the organization tied to your API token. For full request parameters (filters, date formats, pagination), see the [API reference](/api-reference) for each endpoint. ## Getting Started Add the Campfire MCP server to your AI tool's configuration: Open the Command Palette (Cmd+Shift+P), select **MCP: Open Settings**, and add: ```json theme={null} { "mcpServers": { "Campfire": { "url": "https://api.meetcampfire.com/mcp" } } } ``` In Claude Desktop, go to **Settings** > **Connectors** > **Search for Campfire**, and click on Connect. Create or edit `.vscode/mcp.json` in your workspace: ```json theme={null} { "servers": { "Campfire": { "url": "https://api.meetcampfire.com/mcp" } } } ``` Restart your AI tool to load the new MCP configuration. You can now ask your AI assistant questions about your Campfire data: * "Show me the income statement for Q1 2024" * "Find all transactions from vendor ABC Corp in the last month" * "What are my top 10 expense accounts by amount?" * "List all departments in my organization" * "Show me all active contracts" ## Example Queries Here are some example queries you can try with your AI tool: ``` Get all accounts of type ASSET ``` ``` Find accounts with "cash" in the name ``` ``` Show me all bank accounts ``` ``` Find transactions from the last 30 days ``` ``` Show me all transactions for vendor ABC Corp ``` ``` Get transactions for the Marketing department ``` ``` Find all transactions over $1000 in December 2023 ``` ``` List all vendors with names containing "Tech" ``` ``` Show me all departments ``` ``` Get all entities in my organization ``` ``` Find tags related to "Marketing" ``` ``` Generate income statement for Q1 2024 ``` ``` Show me balance sheet for December 2023 ``` ``` Get cash flow statement for the last 6 months ``` ``` Create a monthly income statement for 2023 ``` ``` Show me all budgets for our main entity ``` ``` List all active contracts ``` ``` Get accounts payable aging report ``` ``` Show me AR aging as of today ``` The AI assistant will translate your natural language queries into the appropriate API calls with the correct parameters. Results are automatically scoped to your organization. ## Security & Privacy Your API token provides full access to your Campfire data. Keep it secure and never share it publicly. * **Authentication**: All requests require a valid API token * **Data scope**: Results are scoped to the organization associated with your API token * **Data privacy**: Your data is only accessed when you explicitly request it through the AI tool * **Secure storage**: AI tools securely store your token locally for future requests ## Troubleshooting If you receive authentication errors: * Verify your API token is correct * Check that your token hasn't expired * Ensure the authorization header is properly configured in your MCP settings If Campfire tools don't show up in your AI assistant: * Restart your AI tool completely * Verify the MCP server URL is correct in your configuration * Check that your API token is valid Contact our support team at [support@campfire.com](mailto:support@campfire.com) for assistance with MCP configuration or troubleshooting. # Creating Journal Entries Source: https://docs.campfire.ai/guides/journal-entries How to create single, and intercompany journal entries in Campfire All requests in this flow assume you have a valid access token attached in your request headers. See our [authentication guide](/quickstart) for more information. ## Creating a Journal Entry This section will guide you through the process of creating a single entity journal entry in Campfire. We'll need to grab some object references for related objects to create our journal. We'll need to pass in the id's of the related objects where applicable in the journal creation request. Linked here are the filter endpoints for the applicable objects. These include: * [Accounts (Required)](/api-reference/company-objects/list-chart-accounts) * [Entities (Required)](/api-reference/settings/list-chart-entities) * [Vendors (Optional)](/api-reference/company-objects/list-vendors) * [Departments (Optional)](/api-reference/company-objects/list-departments) * [Custom Dimension Fields (Optional)](/api-reference/company-objects/list-custom-dimensions) We can now create our request body by filling in the related fields. Here are the required fields: | Field | Description | Example | | -------------------- | ---------------------------------------------------------------------------------------- | ---------------------------- | | `date` | Journal entry date in YYYY-MM-DD format | `"2025-08-01"` | | `type` | Journal entry type | `"journal_entry"` | | `transactions` | Array of transaction items for the journal | See transaction fields below | | `memo` | Journal entry memo | `"Journal Memo"` | | `reversal_date` | Reversal date in YYYY-MM-DD format, will post a reversing journal if provided (optional) | `"2025-08-02"` | | `entity` | ID from entity | `"54"` | | `currency` | ISO Currency code of the journal | `"USD"` | | `exchange_rate_book` | Exchange rate between transactional and entity currency (auto-computed if not provided) | `1.23` | | `exchange_rate` | Exchange rate between entity and consolidation currency (auto-computed if not provided) | `1.23` | **Transaction Fields:** | Field | Description | Example | | ---------------------- | --------------------------------------------------------------------------------- | ------------------ | | `tags` | Array of custom dimension field IDs (optional) | `[{"id": "7737"}]` | | `account` | ID from accounts | `"180564"` | | `debit_amount_native` | Debit amount in native currency (required) | `1000` | | `debit_amount_book` | Debit amount in book currency (optional: auto-computed if not provided) | `1000` | | `debit_amount` | Debit amount in consolidation currency (optional: auto-computed if not provided) | `1000` | | `credit_amount_native` | Credit amount in native currency (required) | `1000` | | `credit_amount_book` | Credit amount in book currency (optional: auto-computed if not provided) | `1000` | | `credit_amount` | Credit amount in consolidation currency (optional: auto-computed if not provided) | `1000` | | `bank_description` | Transaction description | `"Line 1 Desc"` | | `vendor` | ID from vendor (optional) | `"34182"` | | `department` | ID from department (optional) | `"3613"` | Each transaction can only have either it's debit (debit\_amount\_native, debit\_amount\_book, debit\_amount) or credit (credit\_amount\_native, credit\_amount\_book, credit\_amount) amount set. But not both. Example request body: ```json theme={null} { "date": "2025-08-01", "type": "journal_entry", "transactions": [ { "tags": [ { "id": "7737" } ], "account": "180564", "debit_amount_native": 1000, "debit_amount_book": 1000, "debit_amount": 1000, "bank_description": "Line 1 Desc", "vendor": "34182", "department": "3613" }, { "tags": [ { "id": "8330" } ], "account": "8856", "credit_amount_native": 1000, "credit_amount_book": 1000, "credit_amount": 1000, "bank_description": "Line 2 Desc", "vendor": "111883", "department": "3436" } ], "memo": "Journal Memo", "reversal_date": "2025-08-02", "entity": "54", "currency": "USD", "exchange_rate_book": 1, "exchange_rate": 1 } ``` Now that we have the request we can post it via the [Create Journal Entry](/api-reference/core-accounting/create-journal-entry) endpoint. Congrats! You've created your first journal entry! ## Creating an Intercompany Journal Entry This section will guide you through the process of creating an intercompany journal entry in Campfire. It is largely the same as a regular journal, with a few distinct differences. We'll need to grab some object references for related objects to create our journal. We'll need to pass in the id's of the related objects where applicable in the journal creation request. Linked here are the filter endpoints for the applicable objects. These include: * [Accounts (Required)](/api-reference/company-objects/list-chart-accounts) * [Entities (Required)](/api-reference/settings/list-chart-entities) * [Vendors (Optional)](/api-reference/company-objects/list-vendors) * [Departments (Optional)](/api-reference/company-objects/list-departments) * [Custom Dimension Fields (Optional)](/api-reference/company-objects/list-custom-dimensions) We can now create our intercompany request body by filling in the related fields. Here are the required fields: For intercompany journals, you must specify an `entity` for each transaction AND include an `entities` section with exchange rates for each entity involved. | Field | Description | Example | | --------------- | ------------------------------------------------------------------------- | ---------------------------- | | `date` | Journal entry date in YYYY-MM-DD format | `"2025-07-01"` | | `type` | Journal entry type | `"journal_entry"` | | `transactions` | Array of transaction items for the journal | See transaction fields below | | `memo` | Journal entry memo | `"Interco Journal Desc"` | | `currency` | ISO Currency code of the journal | `"USD"` | | `reversal_date` | Reversal date in YYYY-MM-DD format (optional) | `"2025-07-02"` | | `entities` | **Required for intercompany**: Object with exchange rates for each entity | See entities section below | **Transaction Fields:** | Field | Description | Example | | ---------------------- | --------------------------------------------------------------------------------- | ------------------ | | `entity` | **Required for intercompany**: ID from entity for this transaction | `54` | | `tags` | Array of custom dimension field IDs (optional) | `[{"id": "8330"}]` | | `account` | ID from accounts | `"180564"` | | `debit_amount_native` | Debit amount in native currency (required) | `1000` | | `debit_amount_book` | Debit amount in book currency (optional: auto-computed if not provided) | `1000` | | `debit_amount` | Debit amount in consolidation currency (optional: auto-computed if not provided) | `1000` | | `credit_amount_native` | Credit amount in native currency (required) | `1000` | | `credit_amount_book` | Credit amount in book currency (optional: auto-computed if not provided) | `728.33` | | `credit_amount` | Credit amount in consolidation currency (optional: auto-computed if not provided) | `1000` | | `bank_description` | Transaction description | `"Line 1 Desc"` | | `vendor` | ID from vendor (optional) | `"111883"` | | `department` | ID from department (optional) | `"3046"` | **Entities Section:** | Field | Description | Example | | -------------------- | ------------------------------------------------------- | ---------- | | `id` | Entity ID | `5` | | `exchange_rate` | Exchange rate between entity and consolidation currency | `1.373` | | `exchange_rate_book` | Exchange rate between transactional and entity currency | `0.728332` | Each transaction can only have either its debit (debit\_amount\_native, debit\_amount\_book, debit\_amount) or credit (credit\_amount\_native, credit\_amount\_book, credit\_amount) amount set. But not both. Example request body: ```json theme={null} { "date": "2025-07-01", "type": "journal_entry", "transactions": [ { "tags": [ { "id": "8330" } ], "entity": 54, "account": "180564", "debit_amount_native": 1000, "debit_amount_book": 1000, "debit_amount": 1000, "bank_description": "Line 1 Desc", "vendor": "111883", "department": "3046" }, { "tags": [ { "id": "8211" } ], "entity": 5, "account": "7409", "credit_amount_native": 1000, "credit_amount_book": 728.33, "credit_amount": 1000, "bank_description": "Line 2 Desc", "vendor": "22327", "department": "3436" }, { "entity": 5, "tags": [], "debit_amount_native": 1000, "debit_amount_book": 728.33, "debit_amount": 1000, "account": "7405", "bank_description": "Line 3 Desc" }, { "entity": 54, "tags": [], "credit_amount_native": 1000, "credit_amount_book": 1000, "credit_amount": 1000, "account": "8856", "bank_description": "Line 4 Desc" } ], "memo": "Interco Journal Desc", "currency": "USD", "reversal_date": "2025-07-02", "entities": { "5": { "id": 5, "exchange_rate": 1.373, "exchange_rate_book": 0.728332 }, "54": { "id": 54, "exchange_rate": 1, "exchange_rate_book": 1 } } } ``` Now that we have the request we can post it via the [Create Intercompany Journal Entry](/api-reference/core-accounting/create-intercompany-journal-entry) endpoint. Congrats! You've created your first intercompany journal entry! # Webhooks Source: https://docs.campfire.ai/guides/webhooks Receive real-time notifications when data changes in Campfire Webhooks let Campfire notify your systems in real time when data changes — for example when an invoice is paid, a bill is created, or a journal entry is updated. Instead of polling the API, you register an HTTPS endpoint, subscribe it to the topics you care about, and Campfire sends a signed `POST` request to that endpoint every time a matching event occurs. Managing webhooks — in the app or via the API — requires an **admin** user. Non-admin API keys receive a `403` from the webhook endpoints. ## Setting up a webhook You can create a webhook in the Campfire app or via the API. ### In the app Go to [Settings > Developer > Webhooks](https://app.meetcampfire.com/v2/settings/webhooks) in your Campfire instance. Click **New Webhook**, enter the HTTPS URL of your endpoint, check **Active**, and select the topics you want to subscribe to. Topics are grouped by object (Invoices, Bills, Journal Entries, etc.) — you can select a whole group or individual topics. After saving, the webhook card shows an **HMAC-SHA256 Secret**. Click **Show** to reveal it and store it in your application's secret store. You'll use it to [verify signatures](#verifying-the-signature) on incoming deliveries. ### Via the API Create a webhook with a `POST` to the webhook endpoint. See our [authentication guide](/quickstart) for how to get an API key. ```bash theme={null} curl -X POST https://api.meetcampfire.com/integrations/api/v1/webhook \ -H "Authorization: Token $CAMPFIRE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/campfire/webhook", "active": true, "topics": [ {"name": "Invoice.paid"}, {"name": "Bill.created"} ] }' ``` The response includes your signing secret (`token`) and the webhook's `uuid`: ```json theme={null} { "id": 12, "uuid": "3c88df19-1c1f-4b1c-b4a7-768793055a60", "url": "https://example.com/campfire/webhook", "token": "your-50-character-signing-secret", "topics": [ {"id": 5, "name": "Invoice.paid"}, {"id": 18, "name": "Bill.created"} ], "active": true, "created_at": "2026-08-04T12:00:00+0000", "last_modified_at": "2026-08-04T12:00:00+0000" } ``` The signing secret is generated by Campfire and cannot be set or changed. To rotate it, delete the webhook and create a new one. ## Topics A webhook only receives events for the topics it is subscribed to. Topic names are exact strings — subscribe using the values below. | Object | Topics | | ----------------- | ------------------------------------------------------------------------------------------ | | Invoices | `Invoice.created`, `Invoice.updated`, `Invoice.deleted`, `Invoice.payment`, `Invoice.paid` | | Bills | `Bill.created`, `Bill.updated`, `Bill.deleted`, `Bill.payment`, `Bill.paid` | | Credit Memos | `CreditMemo.created`, `CreditMemo.updated`, `CreditMemo.deleted` | | Credit Memo Lines | `CreditMemoLine.created`, `CreditMemoLine.updated`, `CreditMemoLine.deleted` | | Debit Memos | `DebitMemo.created`, `DebitMemo.updated`, `DebitMemo.deleted` | | Debit Memo Lines | `DebitMemoLine.created`, `DebitMemoLine.updated`, `DebitMemoLine.deleted` | | Journal Entries | `JournalEntry.created`, `JournalEntry.updated`, `JournalEntry.deleted` | | Contracts | `Contract.created`, `Contract.updated`, `Contract.deleted` | **Payment topics** have special semantics for invoices and bills: * `Invoice.payment` / `Bill.payment` fires whenever the amount paid increases — including partial payments. * `Invoice.paid` / `Bill.paid` fires when the document transitions to fully paid. When that happens, **both** the `.paid` and `.payment` topics fire (as two separate deliveries), and no `.updated` event is sent for that change. ## Payload Every delivery is a `POST` with a JSON body containing four fields: | Field | Type | Description | | -------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `webhook_uuid` | string | UUID of the webhook subscription that received this event. Matches the `Campfire-Webhook-UUID` header. | | `topic` | string | The topic that fired, e.g. `"Invoice.paid"`. | | `data` | object | The full serialized object, in the same shape as the corresponding `GET` endpoint in the [API reference](/api-reference). For `*.deleted` topics, `data` contains only the object's id: `{"id": 12345}`. | | `changes` | object or null | Field-level diff of what changed, keyed by field name with `old` and `new` values. `null` for `*.deleted` topics. On `*.created` topics, every field is listed with `"old": null`. | Example delivery for `Invoice.paid`: ```json theme={null} { "webhook_uuid": "3c88df19-1c1f-4b1c-b4a7-768793055a60", "topic": "Invoice.paid", "data": { "id": 12345, "invoice_number": "INV-1042", "payment_status": "paid", "amount_paid": 1500.0 // ...full invoice object, same shape as the Invoices API }, "changes": { "payment_status": {"old": "open", "new": "paid"}, "amount_paid": {"old": 500.0, "new": 1500.0} } } ``` ### Request headers | Header | Description | | ------------------------------------ | --------------------------------------------------------------------------------- | | `Content-Type` | Always `application/json`. | | `Campfire-Webhook-Request-Timestamp` | Unix timestamp (seconds) of when the request was signed, e.g. `1770000000`. | | `Campfire-Webhook-Signature-v1` | Hex-encoded HMAC-SHA256 signature of the request. See below. | | `Campfire-Webhook-UUID` | UUID of the webhook subscription. Constant across all deliveries to that webhook. | ## Verifying the signature Every delivery is signed with your webhook's secret so you can verify it genuinely came from Campfire. The signed message is the delivery timestamp and the raw request body, joined by a single `:` character: ``` {timestamp}:{raw request body} ``` where `timestamp` is the value of the `Campfire-Webhook-Request-Timestamp` header. Campfire computes an HMAC-SHA256 digest of this message using your signing secret as the key, hex-encodes it, and sends it in the `Campfire-Webhook-Signature-v1` header. Compute the signature over the **raw request body exactly as received** — read it before your framework parses it, and never re-serialize the parsed JSON. Re-serializing can change whitespace and key order, which changes the signature. To verify a delivery: 1. Read the `Campfire-Webhook-Request-Timestamp` and `Campfire-Webhook-Signature-v1` headers and the raw request body. 2. Reject the delivery if the timestamp is too old — we recommend a tolerance of 5 minutes. This protects against replay attacks. (Retried deliveries are re-signed with a fresh timestamp, so a tolerance check will not reject legitimate retries.) 3. Compute `HMAC-SHA256` over `"{timestamp}:{raw body}"` using your signing secret, hex-encode it, and compare it to the signature header using a constant-time comparison. ```python Python theme={null} import hashlib import hmac import time def verify_campfire_signature(raw_body: bytes, headers: dict, secret: str, tolerance_seconds: int = 300) -> bool: timestamp = headers["Campfire-Webhook-Request-Timestamp"] signature = headers["Campfire-Webhook-Signature-v1"] if abs(time.time() - int(timestamp)) > tolerance_seconds: return False signed_payload = f"{timestamp}:".encode() + raw_body expected = hmac.new(secret.encode(), signed_payload, hashlib.sha256).hexdigest() return hmac.compare_digest(expected, signature) ``` ```javascript Node.js theme={null} const crypto = require("crypto"); function verifyCampfireSignature(rawBody, headers, secret, toleranceSeconds = 300) { const timestamp = headers["campfire-webhook-request-timestamp"]; const signature = headers["campfire-webhook-signature-v1"]; if (Math.abs(Date.now() / 1000 - Number(timestamp)) > toleranceSeconds) { return false; } const expected = crypto .createHmac("sha256", secret) .update(`${timestamp}:${rawBody}`) .digest("hex"); return ( expected.length === signature.length && crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature)) ); } ``` In Express, use `express.raw({ type: "application/json" })` (or capture `req.rawBody`) on your webhook route so the body is available unparsed. In Django/Flask/FastAPI, use `request.body` / `request.get_data()` / `await request.body()` respectively. You can confirm your implementation against real deliveries: the [delivery log](#delivery-and-retries) for each event includes the exact request headers and body Campfire sent, including the computed signature. ## Delivery and retries * Deliveries are `POST` requests. Respond with a **2xx** status code to acknowledge receipt. Any 4xx or 5xx response is treated as a failure. * Failed deliveries are retried up to **5 times**, roughly one minute apart. A `404` response is not retried. * Each retry is re-signed with a fresh timestamp and signature. * Respond quickly — acknowledge the delivery first and process the event asynchronously if your handling is slow. * Deliveries are not guaranteed to arrive in order, and retries mean your endpoint may occasionally receive the same event more than once. Make your handler idempotent — for example, treat the payload's `data` as the latest state of the object rather than applying `changes` incrementally. ### Delivery logs Recent delivery attempts appear under **Recent Events** on the Webhooks settings page, where you can inspect each request and response. The same data is available via the API (most recent 25 events): ```bash theme={null} curl https://api.meetcampfire.com/integrations/api/v1/webhook/12/events \ -H "Authorization: Token $CAMPFIRE_API_KEY" ``` Each event includes the delivery `status` (`PENDING`, `SUCCESS`, or `FAILURE`), the `topic`, and an `http` object with the full request and response — URL, headers, body, and response status code. ## Managing webhooks via the API | Method | Endpoint | Description | | --------------- | ------------------------------------------ | ---------------------- | | `GET` | `/integrations/api/v1/webhook` | List your webhooks | | `POST` | `/integrations/api/v1/webhook` | Create a webhook | | `GET` | `/integrations/api/v1/webhook/{id}` | Retrieve a webhook | | `PUT` / `PATCH` | `/integrations/api/v1/webhook/{id}` | Update a webhook | | `DELETE` | `/integrations/api/v1/webhook/{id}` | Delete a webhook | | `GET` | `/integrations/api/v1/webhook/{id}/events` | List recent deliveries | Notes: * `{id}` is the integer `id` field from the webhook object, not its `uuid`. * `url` and `active` are required on create and update. * `topics` is a list of `{"name": ""}` objects. Topic names must match the values in the [topics table](#topics) exactly. * Updating `topics` **replaces** the full set — include every topic the webhook should be subscribed to, not just new ones. * `token` (the signing secret) is read-only and returned on every read. To rotate it, delete the webhook and create a new one. * To pause deliveries without deleting the webhook, set `"active": false`. **Need help?** Contact your Campfire support team and we're happy to help you build your best Campfire workflow! # Introduction Source: https://docs.campfire.ai/index Welcome to the Campfire developer documentation ## Setting up Everything you need to get started developing against our APIs Follow our API onboarding and authorization guide. ## Build with us! Use our APIs to create the workflows you need to get Campfire working best for your organization. Explore the full collection of Campfire APIs A guide to creating, voiding, and paying bills. A guide to creating, voiding, and paying invoices. How to post any journal, including FX and intercompany journal entries. Connect Campfire to your favorite AI tools using Model Context Protocol. # Quickstart Source: https://docs.campfire.ai/quickstart How to get started using our APIs ## Getting Authenticated You need API tokens to be able to make requests to our APIs. Follow this guide for how to mint these tokens. You must have an active Campfire account and login to be able to create Auth tokens. Go to the [API Tokens](https://app.meetcampfire.com/v2/settings/api-keys) (Settings > API Keys) page in your Campfire instance. . Click the "Create User" button to create a new user. Fill in the name, email, and role for the API user. The role will determine the actions and APIs you'll be able to access. Options: * `admin`: All APIs * `clerk`: Ability to view all APIs and post draft entries * `view only`: Ability to call only GET APIs Click the "Create API Key" button on the user. Copy the key and store it somewhere safe. You can only see the key once. Add the `Authorization: Token YOUR_API_KEY` header to your requests. ## Next steps Now that you have your keys, explore using them with these key features: Explore the full collection of Campfire APIs A guide to creating, voiding, and paying bills. A guide to creating, voiding, and paying invoices. How to post any journal, including FX and intercompany journal entries. Receive real-time notifications when data changes in Campfire. **Need help?** Contact your Campfire support team and we're happy to help you build your best Campfire workflow!