> ## Documentation Index
> Fetch the complete documentation index at: https://docs.campfire.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List 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
        



## OpenAPI

````yaml https://api.meetcampfire.com/api/schema?format=json get /coa/api/v1/invoice-payments
openapi: 3.0.3
info:
  title: Campfire Developer APIs
  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
security: []
tags:
  - name: Cash Management
    description: Operations related to accounts, transactions, and other bank-related data.
  - name: Core Accounting
    description: >-
      Operations related to core accounting data, such as the chart of accounts,
      entity management, and the general ledger.
  - name: Revenue Recognition
    description: >-
      Operations related to revenue recognition, contract management, and
      contract data aggregation.
  - name: Accounts Receivable
    description: Operations related to invoicing and the AR subledger
  - name: Accounts Payable
    description: Operations related to billing and the AP subledger.
  - name: Financial Statements
    description: Operations related to financial statement generation and data aggregation.
  - name: Settings
    description: Operations related to system and accounting settings configuration.
paths:
  /coa/api/v1/invoice-payments:
    get:
      tags:
        - Accounts Receivable
      summary: List Invoice Payments
      description: |2-

                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
                
      operationId: coa_api_v1_invoice_payments_list
      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: external_id
          schema:
            type: string
          description: >-
            Filter for the payment carrying this upstream external_id. Use it to
            reconcile a payment you created via the invoice pay endpoint back to
            your source-system record. An empty value is ignored and returns all
            payments.
        - in: query
          name: invoice_id
          schema:
            type: integer
          description: Filter for payments applied to this invoice id.
        - 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.
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedInvoicePaymentSyncList'
          description: ''
      security:
        - knoxApiToken: []
components:
  schemas:
    PaginatedInvoicePaymentSyncList:
      type: object
      required:
        - count
        - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?offset=400&limit=100
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/InvoicePaymentSync'
    InvoicePaymentSync:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        invoice_id:
          type: integer
          readOnly: true
        invoice_number:
          type: string
          readOnly: true
        amount:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          readOnly: true
        currency:
          type: string
          readOnly: true
        payment_date:
          type: string
          format: date
          readOnly: true
          nullable: true
        payment_type:
          readOnly: true
          nullable: true
          description: >-
            Type of payment: credit memo application, bank transaction, or
            manual transaction


            * `CREDIT_MEMO` - Credit Memo

            * `BANK_TRANSACTION` - Bank Transaction

            * `MANUAL_TRANSACTION` - Manual Transaction
          oneOf:
            - $ref: '#/components/schemas/PaymentTypeEnum'
            - $ref: '#/components/schemas/NullEnum'
        source:
          readOnly: true
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/Source24dEnum'
            - $ref: '#/components/schemas/NullEnum'
        external_id:
          type: string
          readOnly: true
          nullable: true
          description: >-
            Stable upstream identifier for this payment (e.g. Stripe balance
            transaction 'btxn_...', Stripe credit note 'cn_...', or the mart's
            event external_id for customer-balance applications). Used as the
            natural dedup/idempotency key. Null for manually-entered payments.
        voided_date:
          type: string
          format: date
          readOnly: true
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
      required:
        - amount
        - created_at
        - currency
        - external_id
        - id
        - invoice_id
        - invoice_number
        - last_modified_at
        - payment_date
        - payment_type
        - source
        - voided_date
    PaymentTypeEnum:
      enum:
        - CREDIT_MEMO
        - BANK_TRANSACTION
        - MANUAL_TRANSACTION
      type: string
      description: |-
        * `CREDIT_MEMO` - Credit Memo
        * `BANK_TRANSACTION` - Bank Transaction
        * `MANUAL_TRANSACTION` - Manual Transaction
    NullEnum:
      enum:
        - null
    Source24dEnum:
      enum:
        - STRIPE
        - MANUAL
      type: string
      description: |-
        * `STRIPE` - Stripe
        * `MANUAL` - Manual
  securitySchemes:
    knoxApiToken:
      type: apiKey
      in: header
      name: Authorization
      description: Token-based authentication with required prefix "Token"

````