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

# List refunds

> List refunds of the workspace's booking and package purchase payments, newest first. Returns successful refunds unless `status` is set. Each refund includes the refunded payment.

`from_time` and `to_time` filter on `refunded_at`, which is set when a refund succeeds. Refunds without `refunded_at` (any status other than `successful`) are filtered on when they were requested instead. A refund requested in October that succeeds in November therefore moves from an October list of pending refunds to a November list of successful ones.


> [!NOTE]
>
> Replace `{your-subdomain}` with your workspace’s subdomain. \
> Learn how to find your subdomain in [Workspace subdomain](https://apidocs.neetocal.com/api/workspace-subdomain.md).


## OpenAPI

````yaml bundled/refunds.yaml GET /refunds
openapi: 3.0.3
info:
  title: NeetoCal Refunds APIs
  version: 2.0.0
servers:
  - description: NeetoCal APIs
    url: https://{your-subdomain}.neetocal.com/api/external/v2
    variables:
      your-subdomain:
        default: spinkart
        description: >-
          Replace **spinkart** with your [workspace's
          subdomain](/api/workspace-subdomain).
security: []
tags:
  - name: Refunds
    description: APIs to report on money refunded to clients.
paths:
  /refunds:
    get:
      tags:
        - Refunds
      summary: List refunds
      description: >
        List refunds of the workspace's booking and package purchase payments,
        newest first. Returns successful refunds unless `status` is set. Each
        refund includes the refunded payment.


        `from_time` and `to_time` filter on `refunded_at`, which is set when a
        refund succeeds. Refunds without `refunded_at` (any status other than
        `successful`) are filtered on when they were requested instead. A refund
        requested in October that succeeds in November therefore moves from an
        October list of pending refunds to a November list of successful ones.
      parameters:
        - $ref: '#/components/parameters/api_key_header'
        - in: query
          name: from_time
          description: >-
            Only refunds made at or after this moment. ISO 8601 date such as
            `2026-10-01` (midnight UTC) or date-time such as
            `2026-10-01T00:00:00+05:30`.
          required: false
          schema:
            type: string
            example: '2026-10-01'
        - in: query
          name: to_time
          description: >-
            Only refunds made before this moment. ISO 8601 date such as
            `2026-10-01` (midnight UTC) or date-time such as
            `2026-10-01T00:00:00+05:30`.
          required: false
          schema:
            type: string
            example: '2026-11-01'
        - in: query
          name: status
          description: Refund status.
          required: false
          schema:
            type: string
            default: successful
            enum:
              - pending
              - successful
              - declined
              - canceled
              - requires_action
        - $ref: '#/components/parameters/payment_type'
        - $ref: '#/components/parameters/meeting_sid'
        - $ref: '#/components/parameters/page_number_param'
        - $ref: '#/components/parameters/page_size_param'
      responses:
        '200':
          description: OK - Request succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/refund_list_response'
        '403':
          description: >-
            Forbidden - The request needs the **View own payments** or **View
            all payments** permission. API keys always have access; this applies
            to CLI sessions.
        '422':
          description: Unprocessable entity - A filter has an invalid value.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalid_filter_error'
components:
  parameters:
    api_key_header:
      in: header
      name: X-Api-Key
      description: >-
        Use the X-Api-Key header to provide your workspace API key. Refer to
        [Authentication](/api/authentication) for more information.
      required: true
      schema:
        type: string
    payment_type:
      in: query
      name: type
      description: What was paid for.
      required: false
      schema:
        type: string
        enum:
          - booking
          - package_purchase
    meeting_sid:
      in: query
      name: meeting_sid
      description: >
        Only payments of bookings for this scheduling link, by SID or slug.
        Package purchase payments are left out when this is set. You can get
        `sid` from the response of the [List scheduling
        links](/api/scheduling-links/list) endpoint, or by visiting the
        scheduling link page and clicking "Settings" > "Show SID".
      required: false
      schema:
        type: string
    page_number_param:
      in: query
      name: page_number
      description: >-
        Page of results to retrieve, starting from 1. Defaults to 1 when
        omitted.
      required: false
      schema:
        type: integer
    page_size_param:
      in: query
      name: page_size
      description: Number of results per page. Defaults to 30 when omitted.
      required: false
      schema:
        type: integer
  schemas:
    refund_list_response:
      type: object
      properties:
        refunds:
          type: array
          items:
            $ref: '#/components/schemas/refund'
          description: Refunds on the requested page, newest first.
        pagination:
          $ref: '#/components/schemas/pagination'
    invalid_filter_error:
      type: object
      properties:
        error:
          type: string
          example: >-
            The type argument must be one of booking, package_purchase, but
            'refund' was given
    refund:
      allOf:
        - $ref: '#/components/schemas/refund_core'
        - type: object
          properties:
            type:
              type: string
              enum:
                - booking
                - package_purchase
            client:
              $ref: '#/components/schemas/client'
            booking:
              $ref: '#/components/schemas/payment_booking'
            package_purchase:
              $ref: '#/components/schemas/payment_package_purchase'
            payment:
              $ref: '#/components/schemas/payment_core'
    pagination:
      type: object
      properties:
        total_records:
          type: integer
          description: Total number of records.
        total_pages:
          type: integer
          description: Total number of pages available.
        current_page_number:
          type: integer
          description: Current page number.
        page_size:
          type: integer
          description: Number of records per page.
    refund_core:
      type: object
      properties:
        id:
          type: string
          example: 7e5c3a1f-9d2b-4c6e-8a0f-1b3d5f7a9c2e
        identifier:
          type: string
          nullable: true
          description: The payment provider's identifier for the refund.
          example: re_3Q8x2LKs9d
        status:
          type: string
          example: successful
        amount:
          type: string
          description: Amount refunded, as a decimal string.
          example: '40.0'
        currency:
          type: string
          example: USD
        reason:
          type: string
          nullable: true
          example: Cancelled by client
        refunded_at:
          type: string
          format: date-time
          nullable: true
          description: When the refund succeeded. `null` until it does.
          example: '2026-11-06T12:00:00Z'
    client:
      type: object
      nullable: true
      properties:
        name:
          type: string
          example: Oliver Smith
        email:
          type: string
          example: oliver@example.com
    payment_booking:
      type: object
      nullable: true
      description: The booking that was paid for. `null` for package purchases.
      properties:
        id:
          type: string
          example: 8b1d6f0e-2c4a-4e6b-9f3a-1d2c3b4a5f6e
        sid:
          type: string
          example: x7k2m9p
        meeting_sid:
          type: string
          example: abc123x
        meeting_name:
          type: string
          example: Consultation
        starts_at:
          type: string
          format: date-time
          example: '2026-11-05T10:00:00Z'
        host_email:
          type: string
          nullable: true
          example: host@example.com
    payment_package_purchase:
      type: object
      nullable: true
      description: The package purchase that was paid for. `null` for bookings.
      properties:
        id:
          type: string
          example: 5c2e7a1b-3d4f-4a6b-8c9d-0e1f2a3b4c5d
        purchase_code:
          type: string
          example: PKG-4F7K2
        package_id:
          type: string
          example: 9a8b7c6d-5e4f-4a3b-2c1d-0e9f8a7b6c5d
        package_name:
          type: string
          example: 10-session pack
    payment_core:
      type: object
      properties:
        id:
          type: string
          example: 2f4e6a8c-1b3d-4f5a-9c7e-0d2b4a6c8e1f
        identifier:
          type: string
          nullable: true
          description: The payment provider's identifier for the payment.
          example: pi_3Q8x2LKs9d
        type:
          type: string
          enum:
            - booking
            - package_purchase
          description: What was paid for.
        provider:
          type: string
          description: >-
            Payment provider, such as `stripe`, `razorpay`, `paypal`, `upi`,
            `cash` or `manual`.
          example: stripe
        status:
          type: string
          example: successful
        amount:
          type: string
          description: Amount paid, as a decimal string.
          example: '100.0'
        currency:
          type: string
          description: ISO 4217 currency code.
          example: USD
        payment_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            When the payment reached its status. For UPI and cash payments, this
            is when the client submitted the payment.
          example: '2026-11-04T09:30:00Z'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.