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

# List payment intents



## OpenAPI

````yaml POST /payment-intents/search
openapi: 3.1.0
info:
  title: NestVet API v3
  version: '3.0'
  description: |
    The NestVet API, v3. Every endpoint takes a POST with a JSON body --
    including list endpoints -- and every response is scoped to the caller's
    own organization, resolved from the API key.

    ## Auth
    Send a single `Authorization: Bearer <api key>` header. The key resolves
    to your organization, and every request is scoped to it. An `organization`
    field in the request body is optional; if included, it must match the
    organization your key resolves to, or the request is rejected with 400.

    ## Pagination
    List endpoints take `limit` (default 100) and `offset`, and order results
    by `(modified/created timestamp, id)`, with `id` breaking ties so paging
    stays stable across rows that share a timestamp.

    ## Resources
    `organization`, `clinics`, `products`, `invoices`, `invoice-lines`,
    `consumption-logs`, `pet-benefits`, `charges`, `charge-payments`,
    `charge-adjustments`, `charge-refunds`, `payment-plans`, `payment-intents`,
    `cancellation-payment-intents`, `pets`, `subscriptions`, and the six
    `psp-*` live Stripe reads (`psp-payments`, `psp-charges`, `psp-refunds`,
    `psp-disputes`, `psp-payouts`, `psp-balance-transactions`).
  contact:
    name: Nest Engineering
servers:
  - url: https://practice-data.nest.vet/api/v3
    description: Production
  - url: https://practice-data-dev.nest.vet/api/v3
    description: Development
security:
  - bearerAuth: []
tags:
  - name: health
  - name: organization
  - name: clinics
  - name: products
  - name: invoices
  - name: invoice-lines
  - name: consumption-logs
  - name: pet-benefits
  - name: charges
  - name: payment-plans
  - name: pets
  - name: subscriptions
  - name: payment-intents
  - name: cancellation-payment-intents
  - name: charge-payments
  - name: charge-adjustments
  - name: charge-refunds
  - name: psp-payments
  - name: psp-charges
  - name: psp-refunds
  - name: psp-disputes
  - name: psp-payouts
  - name: psp-balance-transactions
paths:
  /payment-intents/search:
    post:
      tags:
        - payment-intents
      summary: List payment intents
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentIntentListRequest'
      responses:
        '200':
          description: A list of payment intents.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntentSearchResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  schemas:
    PaymentIntentListRequest:
      allOf:
        - $ref: '#/components/schemas/PagedRequest'
        - type: object
          properties:
            id:
              type: string
            subscription_id:
              type: string
            pet_id:
              type: string
            clinic:
              type: string
            updated_at_since:
              type: string
              format: date-time
            created_at_since:
              type: string
              format: date-time
    PaymentIntentSearchResponse:
      type: object
      properties:
        body:
          type: array
          items:
            $ref: '#/components/schemas/PaymentIntent'
    PagedRequest:
      type: object
      properties:
        organization:
          type: string
          description: >-
            Optional. If present, must match the organization your API key
            resolves to, or the request is rejected with 400.
        limit:
          type: integer
          format: int32
          default: 100
        offset:
          type: integer
          format: int32
          default: 0
    PaymentIntent:
      type: object
      properties:
        id:
          type: string
        clinic_name:
          type: string
        clinic_id:
          type: string
        pet:
          type: string
        subscription:
          type: string
        wellnes_plan_name:
          type: string
          description: >-
            Reproduced with the live endpoint's own spelling (one 's'). Composed
            as `<plan name> <species> <clinic's plan header>`.
        payment_amount:
          type: number
          format: double
        payment_split:
          $ref: '#/components/schemas/PaymentSplit'
        scheduled_date:
          type: string
          format: date-time
        captured_date:
          type: string
          format: date-time
        paid:
          type: boolean
        isRefunded:
          type: boolean
        IsTest:
          type: boolean
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        isModifyCatchupPayment:
          type: boolean
        payment_modifications:
          type: array
          items:
            type: string
          nullable: true
          description: Null when the intent has no modifications, not an empty array.
        stripe_payment_intent_id:
          type: string
        attempt_number:
          type: integer
        original_amount_received:
          type: number
          format: double
        refunded_amount:
          type: number
          format: double
    HTTPError:
      type: object
      properties:
        detail:
          type: string
    ValidationErrorResponse:
      type: object
      properties:
        detail:
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorItem'
    PaymentSplit:
      type: object
      description: The intent's amount, broken down by where each portion settles.
      properties:
        to_Nest:
          type: number
          format: double
        to_Stripe:
          type: number
          format: double
        to_Clinic:
          type: number
          format: double
    ValidationErrorItem:
      type: object
      properties:
        loc:
          type: array
          items: {}
        msg:
          type: string
        type:
          type: string
  responses:
    BadRequest:
      description: >-
        Invalid filter value (e.g. pagination out of range, a required id
        missing/blank, or a request-body `organization` that doesn't match the
        organization your API key resolves to).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HTTPError'
    Unauthorized:
      description: API key is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HTTPError'
    ValidationError:
      description: Request body failed schema validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationErrorResponse'
    ServiceUnavailable:
      description: The credential store is unreachable. Never returned as a 401.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HTTPError'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        `Authorization: Bearer <api key>`. The key resolves to your
        organization; every response is scoped to it. An `organization` field in
        the request body is optional, but if present it must match, or the
        request is rejected.

````