Campfire Accounts Payable API

Operations related to billing and the AP subledger.

OpenAPI Specification

campfire-accounts-payable-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Campfire Developer APIs Accounts Payable API
  version: 1.0.0
  description: '## Introduction

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

    revenue recognition, and financial data features.


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

    automate workflows, and perform any other programmatic operations.

    '
servers:
- url: https://api.meetcampfire.com
  description: Production server
tags:
- name: Accounts Payable
  description: Operations related to billing and the AP subledger.
paths:
  /coa/api/v1/bill/:
    get:
      operationId: coa_api_v1_bill_retrieve
      description: "\n        Retrieve a paginated list of accounting bills with comprehensive filtering, search, and sorting capabilities.\n\n        This endpoint provides complete access to your bills data with:\n        - Advanced filtering by date ranges, payment status, vendors, entities, and currency\n        - Full-text search across bill numbers, vendor names, addresses, and bill messages\n        - Flexible sorting by any field including calculated fields (totals, amounts due, etc.)\n        - Comprehensive pagination with customizable page sizes\n        - Aging calculations and payment status categorization\n        - Automatic calculation of totals, amounts paid, and amounts due\n\n        **Deleted Records Support:**\n        - When include_deleted=true: Returns ONLY deleted bills with minimal data (id, is_deleted, deleted_at, last_modified_at)\n        - When include_deleted=false or omitted: Returns ONLY active bills with full data\n        - Timestamp filtering (last_modified_at__gte/lte) works with both active and deleted records\n        "
      summary: List Accounting Bills
      parameters:
      - in: query
        name: currency
        schema:
          type: string
        description: Filter by currency code (e.g., USD, EUR)
      - in: query
        name: download
        schema:
          type: boolean
          default: false
        description: If true, triggers async download workflow and sends bills via email
      - in: query
        name: end_date
        schema:
          type: string
        description: Filter bills with bill_date on or before this date (YYYY-MM-DD)
      - in: query
        name: entity
        schema:
          type: integer
        description: Filter by entity ID. Can be specified multiple times for multiple entities
        explode: true
        style: form
      - in: query
        name: include_deleted
        schema:
          type: boolean
          default: false
        description: 'When set to ''true'', returns ONLY deleted records instead of active records. Deleted records contain minimal data: ''id'', ''is_deleted=true'', ''deleted_at'' timestamp, and ''last_modified_at''. When ''false'' or omitted, returns ONLY active records. This provides clean separation between active and deleted data.'
      - in: query
        name: last_modified_at__gte
        schema:
          type: string
        description: 'Filter for records modified on or after this timestamp. Format: ISO 8601 (e.g., ''2024-01-01T00:00:00Z'' or ''2024-01-01''). Works with both active records and deleted records (filters by deletion time for deleted records).'
      - in: query
        name: last_modified_at__lte
        schema:
          type: string
        description: 'Filter for records modified on or before this timestamp. Format: ISO 8601 (e.g., ''2024-12-31T23:59:59Z'' or ''2024-12-31''). Works with both active records and deleted records (filters by deletion time for deleted records).'
      - in: query
        name: limit
        schema:
          type: integer
          default: 50
        description: 'Number of results to return per page (default: 50, max: 1000)'
      - in: query
        name: offset
        schema:
          type: integer
          default: 0
        description: The initial index from which to return the results
      - in: query
        name: q
        schema:
          type: string
        description: Search query - searches by mailing address, bill number, message on bill, or vendor name
      - in: query
        name: sort
        schema:
          type: string
          default: -bill_date
        description: 'Sort order. Use field name for ascending, -field for descending. Special fields: vendor_name, total_amount, amount_paid, amount_due, payment. Default: -bill_date'
      - in: query
        name: start_date
        schema:
          type: string
        description: Filter bills with bill_date on or after this date (YYYY-MM-DD)
      - in: query
        name: status
        schema:
          type: string
          enum:
          - '1_30'
          - '31_60'
          - '61_90'
          - '91_120'
          - current
          - open
          - over_120
          - paid
          - partially_paid
          - past_due
          - payment_not_found
          - payment_pending
          - unpaid
          - voided
        description: Filter by payment status
      - in: query
        name: vendor
        schema:
          type: integer
        description: Filter by vendor ID. Can be specified multiple times for multiple vendors
        explode: true
        style: form
      tags:
      - Accounts Payable
      security:
      - knoxApiToken: []
      responses:
        '200':
          description: No response body
    post:
      operationId: coa_api_v1_bill_create
      description: "\n        Creates a new accounting bill with line items and automatic journal entry generation.\n\n        This endpoint allows for complex bill creation with:\n        - Multiple line items with different accounts, departments, and vendor assignments\n        - Automatic accounts payable journal entry creation\n        - Tax calculations and tax account handling\n        - Exchange rate support for multi-currency transactions\n        - Custom field support for additional bill metadata\n\n        Requirements:\n        - All referenced accounts must exist and be active\n        - Vendor must exist\n        - Entity must exist\n        - Line items must have valid amounts and descriptions\n        - Currency must be valid for the entity\n        - Accounting date must be before closed book date\n        "
      summary: Create Accounting Bill
      tags:
      - Accounts Payable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountingBill'
            examples:
              CreateBillRequest:
                value:
                  payment_term: 1234
                  bill_date: '2025-08-01'
                  due_date: '2025-08-24'
                  lines:
                  - tags:
                    - id: '8355'
                      name: Project A
                      group: 727
                    account: '2622'
                    account_name: 6700 - Office Expenses
                    amount: 10000
                    description: 1x Large Expense Line
                    bill_customer: '34182'
                    bill_customer_name: ABC Bead Supply
                    department: '35'
                    department_name: Engineering
                  entity: '54'
                  entity_name: Top Level
                  entity_currency: USD
                  currency: USD
                  exchange_rate_book: 1
                  exchange_rate: 1
                  vendor: '34182'
                  vendor_name: ABC Bead Supply
                  bill_number: '1234567'
                  item_date: '2025-08-01'
                  message_on_bill: A really big expense
                  mailing_address: 1234 Campground Road. San Francisco CA 98765
                summary: Standard bill creation with multiple line items
                description: Example of creating a bill with multiple expense line items, vendor assignment, and payment terms
              CreateBillResponse:
                value:
                  id: 31894
                  lines:
                  - id: 298626
                    account_number: '6700'
                    account_name: 6700 - Office Expenses
                    department_name: Engineering
                    bill_customer_name: ABC Bead Supply
                    tags:
                    - id: 8355
                      group_name: Projects
                      parent_name: null
                      parent: null
                      name: Project A
                      created_at: 2025-07-17T16:21:02+0000
                      last_modified_at: 2025-07-17T16:21:02+0000
                      group: 727
                    amortization_schedule: []
                    description: 1x Large Expense Line
                    amount: 10000
                    tax: 0
                    tax_description: null
                    source: null
                    source_id: null
                    currency: USD
                    created_at: 2025-07-25T04:24:32+0000
                    last_modified_at: 2025-07-25T04:24:32+0000
                    account: 2622
                    bill_customer: 34182
                    department: 35
                  payments: []
                  payment_journal_entries: []
                  status: open
                  past_due_days: null
                  entity_name: Top Level
                  entity_currency: USD
                  vendor_name: ABC Bead Supply
                  attachments: []
                  total_amount: 10000
                  amount_due: 10000
                  amount_paid: 0
                  item_date: '2025-08-01'
                  voided_date: null
                  search_vector: null
                  search_text: null
                  mailing_address: 1234 Campground Road. San Francisco CA 98765
                  terms: null
                  bill_number: '1234567'
                  bill_date: '2025-08-01'
                  due_date: '2025-08-24'
                  paid_date: null
                  message_on_bill: A really big expense
                  source_id: null
                  source: null
                  payment_status: open
                  currency: USD
                  exchange_rate: 1
                  exchange_rate_book: 1
                  created_at: 2025-07-25T04:24:32+0000
                  last_modified_at: 2025-07-25T04:24:32+0000
                  entity: 54
                  vendor: 34182
                  payment_term: 1234
                  payment_term_name: Net 30
                  journal_entry: 7491951
                  source_file: null
                  tax_rate: null
                  voided_journal_entry: null
                summary: Response after successfully creating a bill
                description: Example response showing the created bill with generated IDs, calculated totals, and journal entry information
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AccountingBill'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AccountingBill'
        required: true
      security:
      - knoxApiToken: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountingBill'
              examples:
                CreateBillResponse:
                  value:
                    id: 31894
                    lines:
                    - id: 298626
                      account_number: '6700'
                      account_name: 6700 - Office Expenses
                      department_name: Engineering
                      bill_customer_name: ABC Bead Supply
                      tags:
                      - id: 8355
                        group_name: Projects
                        parent_name: null
                        parent: null
                        name: Project A
                        created_at: 2025-07-17T16:21:02+0000
                        last_modified_at: 2025-07-17T16:21:02+0000
                        group: 727
                      amortization_schedule: []
                      description: 1x Large Expense Line
                      amount: 10000
                      tax: 0
                      tax_description: null
                      source: null
                      source_id: null
                      currency: USD
                      created_at: 2025-07-25T04:24:32+0000
                      last_modified_at: 2025-07-25T04:24:32+0000
                      account: 2622
                      bill_customer: 34182
                      department: 35
                    payments: []
                    payment_journal_entries: []
                    status: open
                    past_due_days: null
                    entity_name: Top Level
                    entity_currency: USD
                    vendor_name: ABC Bead Supply
                    attachments: []
                    total_amount: 10000
                    amount_due: 10000
                    amount_paid: 0
                    item_date: '2025-08-01'
                    voided_date: null
                    search_vector: null
                    search_text: null
                    mailing_address: 1234 Campground Road. San Francisco CA 98765
                    terms: null
                    bill_number: '1234567'
                    bill_date: '2025-08-01'
                    due_date: '2025-08-24'
                    paid_date: null
                    message_on_bill: A really big expense
                    source_id: null
                    source: null
                    payment_status: open
                    currency: USD
                    exchange_rate: 1
                    exchange_rate_book: 1
                    created_at: 2025-07-25T04:24:32+0000
                    last_modified_at: 2025-07-25T04:24:32+0000
                    entity: 54
                    vendor: 34182
                    payment_term: 1234
                    payment_term_name: Net 30
                    journal_entry: 7491951
                    source_file: null
                    tax_rate: null
                    voided_journal_entry: null
                  summary: Response after successfully creating a bill
                  description: Example response showing the created bill with generated IDs, calculated totals, and journal entry information
          description: ''
  /coa/api/v1/bill-draft:
    get:
      operationId: list_bill_drafts
      description: GET list (customer-scoped, ``status`` / ``source`` filterable) + POST UI upload.
      summary: List Bill Drafts
      tags:
      - Accounts Payable
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BillDraftRead'
          description: ''
    post:
      operationId: create_bill_draft
      description: GET list (customer-scoped, ``status`` / ``source`` filterable) + POST UI upload.
      summary: Create Bill Draft
      tags:
      - Accounts Payable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillDraftCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BillDraftCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BillDraftCreate'
        required: true
      security:
      - knoxApiToken: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillDraftCreate'
          description: ''
  /coa/api/v1/bill-draft/{id}:
    get:
      operationId: get_bill_draft
      description: GET detail + PATCH update on a single BillDraft.
      summary: Retrieve Bill Draft
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Accounts Payable
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillDraftRead'
          description: ''
    put:
      operationId: update_bill_draft
      description: GET detail + PATCH update on a single BillDraft.
      summary: Update Bill Draft
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Accounts Payable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillDraftWrite'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BillDraftWrite'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BillDraftWrite'
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillDraftWrite'
          description: ''
    patch:
      operationId: partial_update_bill_draft
      description: GET detail + PATCH update on a single BillDraft.
      summary: Partial Update Bill Draft
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Accounts Payable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedBillDraftWrite'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedBillDraftWrite'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedBillDraftWrite'
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillDraftWrite'
          description: ''
  /coa/api/v1/bill-draft/{id}/abandon:
    post:
      operationId: abandon_bill_draft
      description: POST /bill-draft/<pk>/abandon — hard-delete an unfinished UI upload draft.
      summary: Abandon Bill Draft
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Accounts Payable
      security:
      - knoxApiToken: []
      responses:
        '200':
          description: No response body
  /coa/api/v1/bill-draft/{id}/discard:
    post:
      operationId: discard_bill_draft
      description: POST /bill-draft/<pk>/discard — terminal state with a required reason.
      summary: Discard Bill Draft
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Accounts Payable
      security:
      - knoxApiToken: []
      responses:
        '200':
          description: No response body
  /coa/api/v1/bill-draft/{id}/promote:
    post:
      operationId: promote_bill_draft
      description: POST /bill-draft/<pk>/promote — routes through the promote service.
      summary: Promote Bill Draft
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Accounts Payable
      security:
      - knoxApiToken: []
      responses:
        '200':
          description: No response body
  /coa/api/v1/bill-payments:
    get:
      operationId: coa_api_v1_bill_payments_list
      description: "\n        Retrieve a paginated list of bill payments (payments applied against accounts\n        payable bills), designed for syncing payment data into external systems.\n\n        Results are ordered by (last_modified_at, id) ascending, so pages are stable and\n        a sync can resume from where it left off.\n\n        **Full sync (cursor pagination):**\n        - Pass an empty cursor parameter (cursor=) on the first request\n        - Follow the 'next' URL from each response until it is null\n\n        **Incremental sync (time-based):**\n        - Store the highest last_modified_at value you have processed\n        - On the next run, pass it as last_modified_at__gte to fetch only new and updated payments\n\n        **Voids:**\n        - Voided payments are included by default with voided_date set, so integrators can\n          detect payments that were reversed after a previous sync\n        - Filter with voided=true or voided=false to fetch only one kind\n        "
      summary: List Bill Payments
      parameters:
      - in: query
        name: cursor
        schema:
          type: string
        description: Opts into cursor pagination. Pass an empty value (cursor=) on the first request, then follow the 'next' URL from each response until it is null. The cursor value is opaque - do not parse or construct it. Cursor pagination is recommended for full syncs as it avoids the performance penalty of deep offsets on large result sets.
      - in: query
        name: last_modified_at__gte
        schema:
          type: string
        description: 'Filter for payments modified on or after this timestamp. Format: ISO 8601 (e.g., ''2024-01-01T00:00:00Z'' or ''2024-01-01''). Use this for incremental syncs: store the highest last_modified_at you have processed and pass it on the next sync run.'
      - in: query
        name: last_modified_at__lte
        schema:
          type: string
        description: 'Filter for payments modified on or before this timestamp. Format: ISO 8601 (e.g., ''2024-12-31T23:59:59Z'' or ''2024-12-31''). Date-only values are inclusive of the entire day.'
      - in: query
        name: limit
        schema:
          type: integer
          default: 100
        description: Maximum number of records to return per page. Default 100, maximum 10000. Use with offset to paginate
      - in: query
        name: offset
        schema:
          type: integer
          default: 0
        description: Number of records to skip before collecting the result page. Use with limit to paginate
      - in: query
        name: skip_count
        schema:
          type: boolean
          default: false
        description: When 'true', skips the total COUNT query and returns a lower-bound 'count' instead. Recommended for large syncs where the exact total is not needed.
      - in: query
        name: voided
        schema:
          type: boolean
        description: Filter by void status. When 'true', returns only voided payments (voided_date is set). When 'false', returns only active payments. When omitted, returns both so integrators can detect and propagate voids.
      tags:
      - Accounts Payable
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedBillPaymentSyncList'
          description: ''
  /coa/api/v1/bill/{bill_id}/empty-transaction-default-department-tags:
    get:
      operationId: coa_api_v1_bill_empty_transaction_default_department_tags_retrieve
      description: "Get the default department and tags from the bill line with the largest total amount.\n\n        This endpoint is used to provide default values when creating empty transactions (marking as paid without a transaction).\n        The total amount is calculated as: amount + tax.\n        If multiple lines have the same total amount, the line with the lowest ID (first created) is selected.\n        The department and tags are retrieved directly from the bill line."
      summary: Get Default Department and Tags for Empty Transaction
      parameters:
      - in: path
        name: bill_id
        schema:
          type: integer
        description: ID of the bill
        required: true
      tags:
      - Accounts Payable
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  department:
                    type: object
                    nullable: true
                    properties:
                      id:
                        type: integer
                      name:
                        type: string
                  tags:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                        name:
                          type: string
                        group:
                          type: integer
                          nullable: true
                        group_name:
                          type: string
                          nullable: true
          description: ''
        '404':
          content:
            application/json:
              schema:
                description: Bill not found
          description: ''
  /coa/api/v1/bill/{bill_id}/pay/:
    post:
      operationId: coa_api_v1_bill_pay_create
      description: "Mark a bill as paid, allowing partial payments.\n\n        This endpoint supports multiple payment methods:\n        - Apply existing transactions as payments\n        - Apply debit memos to reduce the bill balance\n        - Create manual payments without a transaction\n\n        The request body should contain at least one of:\n        - transactions: List of transaction payments to apply\n        - debit_memos: List of debit memos to apply\n        - empty_transactions: List of manual payments without transactions"
      summary: Mark Bill as Paid
      parameters:
      - in: path
        name: bill_id
        schema:
          type: integer
        description: ID of the bill to mark as paid
        required: true
      tags:
      - Accounts Payable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarkPaid'
            examples:
              MarkBillAsPaidRequest:
                value:
                  bill_id: '31894'
                  transactions:
                  - transaction_id: 21069178
                    transaction_description: ScholarShare ACHCONTRIB 070825
                    account_id: '2550'
                    account_name: 2010 - Accounts Payable
                    amount: 8999.99
                  debit_memos:
                  - debit_memo_id: 343
                    debit_memo_number: DM-0000005
                    amount: 1000.01
                    posted_at: '2025-07-25'
                summary: Mark Bill as Paid Request
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/MarkPaid'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/MarkPaid'
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountingBill'
          description: ''
  /coa/api/v1/bill/{bill_id}/payment/{payment_id}/void/:
    post:
      operationId: coa_api_v1_bill_payment_void_create
      description: "Void an existing bill payment.\n\n        This creates a reversing journal entry to void the payment and updates the bill status.\n\n        Optionally accepts a void_date in the request body to specify when the payment should be voided.\n        If not provided, defaults to today's date."
      summary: Void Bill Payment
      parameters:
      - in: path
        name: bill_id
        schema:
          type: integer
        description: ID of the bill
        required: true
      - in: path
        name: payment_id
        schema:
          type: integer
        description: ID of the payment to void
        required: true
      tags:
      - Accounts Payable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoidPayment'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/VoidPayment'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/VoidPayment'
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountingBillPayment'
          description: ''
    delete:
      operationId: coa_api_v1_bill_payment_void_destroy
      description: "Delete a bill payment.\n\n        This removes the payment record and updates the transaction to uncategorized."
      summary: Delete Bill Payment
      parameters:
      - in: path
        name: bill_id
        schema:
          type: integer
        description: ID of the bill
        required: true
      - in: path
        name: payment_id
        schema:
          type: integer
        description: ID of the payment to delete
        required: true
      tags:
      - Accounts Payable
      security:
      - knoxApiToken: []
      responses:
        '204':
          description: No response body
  /coa/api/v1/bill/{bill_id}/reopen/:
    post:
      operationId: coa_api_v1_bill_reopen_create
      description: "Reopen a voided bill.\n\n        This removes the void date and void journal entry, and sets the bill status back to open.\n        The voiding journal entry will be deleted to reverse the void operation."
      summary: Reopen Voided Bill
      parameters:
      - in: path
        name: bill_id
        schema:
          type: integer
        description: ID of the voided bill to reopen
        required: true
      tags:
      - Accounts Payable
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountingBill'
          description: ''
  /coa/api/v1/bill/{bill_id}/sync-to-ramp/:
    post:
      operationId: coa_api_v1_bill_sync_to_ramp_create
      description: Sync a bill without a source to Ramp using the enabled Ramp connection
      summary: Sync Bill to Ramp
      parameters:
      - in: path
        name: bill_id
        schema:
          type: integer
        required: true
      tags:
      - Accounts Payable
      security:
      - knoxApiToken: []
      responses:
        '200':
          description: No response body
        '400':
          description: No response body
        '404':
          description: No response body
  /coa/api/v1/bill/{bill_id}/void/:
    post:
      operationId: coa_api_v1_bill_void_create
      description: "Void an existing bill.\n\n        This creates a reversing journal entry to void the bill by reversing all debit and credit amounts.\n        The bill status will be updated to reflect the void."
      summary: Void Bill
      parameters:
      - in: path
        name: bill_id
        schema:
          type: integer
        description: ID of the bill to void
        required: true
      tags:
      - Accounts Payable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoidBillRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/VoidBillRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/VoidBillRequest'
        required: true
      security:
      - knoxApiToken: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountingBill'
          description: ''
  /coa/api/v1/bill/{id}/:
    get:
      operationId: coa_api_v1_bill_retrieve_2
      description: "\n        Retrieve a single accounting bill by ID with complete detail including all line items, payments, and related data.\n\n        This endpoint returns comprehensive bill information including:\n        - Full bill details with vendor, entity, and customer information\n        - All line items with account details, departments, tags, and amortization schedules\n        - Complete payment history with journal entry references\n        -

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