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

# List payments

> Lists settled, succeeded sale payments for the business. Refunds and chargebacks are not included here — see the refunds list.



## OpenAPI

````yaml /api-reference/commerce-v1.openapi.json get /v1/commerce/payments
openapi: 3.0.3
info:
  description: >-
    Public REST API for COPE vendor integrations. Authenticate with a COPE API
    key or Clerk bearer token and call the endpoints described below.
  title: COPE Public API
  version: v1
servers:
  - description: Production
    url: https://api.cope.com
security:
  - cope_sk: []
paths:
  /v1/commerce/payments:
    get:
      tags:
        - Payments
      summary: List payments
      description: >-
        Lists settled, succeeded sale payments for the business. Refunds and
        chargebacks are not included here — see the refunds list.
      operationId: commerce.payments.list
      parameters:
        - description: Exact match against the order's buyer email, case-insensitive.
          in: query
          name: buyer_email
          required: false
          schema:
            type: string
        - description: >-
            Inclusive lower bound on cash_flow_at (when funds became available),
            ISO 8601. A bare date (YYYY-MM-DD) expands to the beginning of that
            day in UTC; a full date-time is used as given, and timezone-naive
            values are interpreted as UTC.
          in: query
          name: cash_flow_from
          required: false
          schema:
            type: string
        - description: >-
            Inclusive upper bound on cash_flow_at (when funds became available),
            ISO 8601. A bare date (YYYY-MM-DD) expands to the end of that day in
            UTC; a full date-time is used as given, and timezone-naive values
            are interpreted as UTC.
          in: query
          name: cash_flow_to
          required: false
          schema:
            type: string
        - description: >-
            Inclusive lower bound on created_at (the sale timestamp), ISO 8601.
            A bare date (YYYY-MM-DD) expands to the beginning of that day in
            UTC; a full date-time is used as given, and timezone-naive values
            are interpreted as UTC.
          in: query
          name: created_from
          required: false
          schema:
            type: string
        - description: >-
            Inclusive upper bound on created_at (the sale timestamp), ISO 8601.
            A bare date (YYYY-MM-DD) expands to the end of that day in UTC; a
            full date-time is used as given, and timezone-naive values are
            interpreted as UTC.
          in: query
          name: created_to
          required: false
          schema:
            type: string
        - description: >-
            Page number for paginated results. Values below 1 and non-numeric
            values are ignored and the first page is returned; a page past the
            last one returns the last page.
          in: query
          name: page
          required: false
          schema:
            minimum: 1
            type: integer
        - description: >-
            Number of records per page. Defaults to 12; values above 100 are
            clamped to 100; values below 1 and non-numeric values are ignored
            and the default is used.
          in: query
          name: per_page
          required: false
          schema:
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    items:
                      additionalProperties: false
                      properties:
                        amount_cents:
                          type: integer
                        buyer:
                          additionalProperties: false
                          properties:
                            email:
                              nullable: true
                              type: string
                            full_name:
                              nullable: true
                              type: string
                          required:
                            - email
                            - full_name
                          type: object
                        cash_flow_at:
                          description: >-
                            Date the funds become available to the vendor. Null
                            while the processor has not reported it yet. See
                            also created_at, when the sale was recorded.
                          nullable: true
                          type: string
                        created_at:
                          description: >-
                            When the sale was recorded, ISO 8601. See also
                            cash_flow_at, when the funds became available.
                          type: string
                        currency:
                          type: string
                        funds_availability_pending:
                          description: >-
                            True while the funds availability date is not known
                            yet. A succeeded payment is not the same as
                            available money: read this together with
                            cash_flow_at — pending when true or cash_flow_at is
                            null, upcoming when cash_flow_at is in the future,
                            available otherwise.
                          type: boolean
                        has_chargeback:
                          type: boolean
                        has_refund:
                          type: boolean
                        id:
                          example: py_A1b2C3d4E5f6
                          pattern: ^py_[A-Za-z0-9]{8,32}$
                          type: string
                        order:
                          additionalProperties: false
                          nullable: true
                          properties:
                            id:
                              example: ord_A1b2C3d4E5f6
                              pattern: ^ord_[A-Za-z0-9]{8,32}$
                              type: string
                          required:
                            - id
                          type: object
                        payment_method:
                          nullable: true
                          type: string
                        payment_method_brand:
                          nullable: true
                          type: string
                        payment_method_label:
                          description: >-
                            Display name of the payment method, more precise
                            than the payment_method value: the same coarse value
                            covers several real methods.
                          nullable: true
                          type: string
                        payment_method_last4:
                          nullable: true
                          type: string
                        payment_method_type:
                          nullable: true
                          type: string
                        payment_type:
                          type: string
                        refund_deadline_at:
                          nullable: true
                          type: string
                        refund_eligibility_state:
                          type: string
                        status:
                          type: string
                        total_refundable_amount_cents:
                          type: integer
                      required:
                        - id
                        - status
                        - payment_type
                        - payment_method
                        - amount_cents
                        - currency
                        - payment_method_type
                        - payment_method_last4
                        - payment_method_brand
                        - created_at
                        - cash_flow_at
                        - funds_availability_pending
                        - payment_method_label
                        - has_refund
                        - has_chargeback
                        - order
                        - buyer
                        - total_refundable_amount_cents
                        - refund_deadline_at
                        - refund_eligibility_state
                      type: object
                    type: array
                  pagination:
                    additionalProperties: false
                    properties:
                      current_page:
                        type: integer
                      per_page:
                        type: integer
                      total_count:
                        type: integer
                      total_pages:
                        type: integer
                    required:
                      - total_pages
                      - current_page
                      - per_page
                      - total_count
                    type: object
                required:
                  - data
                  - pagination
                type: object
          description: Successful response
        '400':
          content:
            application/problem+json:
              examples:
                unparsable_request:
                  summary: Unparsable request
                  value:
                    code: invalid_request
                    detail: >-
                      The request could not be parsed. Check the query string
                      and the request body.
                    request_id: req_123
                    status: 400
                    title: Invalid Request
                    type: https://docs.cope.com/errors/invalid_request
              schema:
                $ref: '#/components/schemas/PublicProblemDetail'
          description: Invalid request
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/PublicProblemDetail'
          description: Missing or invalid bearer token
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/PublicProblemDetail'
          description: Bearer token is not authorized for this route
        '422':
          content:
            application/problem+json:
              examples:
                validation_failed:
                  summary: Validation failed
                  value:
                    code: validation_failed
                    detail: null
                    errors:
                      - code: blank
                        detail: Name can't be blank
                        param: name
                    request_id: req_123
                    status: 422
                    title: Validation Failed
                    type: https://docs.cope.com/errors/validation_failed
              schema:
                $ref: '#/components/schemas/PublicProblemDetail'
          description: One or more query parameters failed validation
      security:
        - cope_sk: []
components:
  schemas:
    PublicProblemDetail:
      additionalProperties: false
      properties:
        code:
          type: string
        detail:
          nullable: true
          type: string
        errors:
          items:
            additionalProperties: false
            properties:
              code:
                type: string
              detail:
                type: string
              param:
                type: string
            required:
              - code
              - detail
            type: object
          type: array
        request_id:
          type: string
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      required:
        - type
        - title
        - status
        - code
        - request_id
      type: object
  securitySchemes:
    cope_sk:
      description: >-
        Bearer credential for the public API. Vendor integrations should send a
        live COPE API key (`ck_live_*`; keys issued earlier as `cope_sk_live_*`
        keep working). Clerk bearer tokens are also accepted when paired with
        `X-Cope-Business-Id`.
      scheme: bearer
      type: http

````