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

# List payouts

> List all payouts within a business. Supports filtering by processor, status, date range, and search capabilities. Returns paginated results with standardized pagination.



## OpenAPI

````yaml GET /v1/platform/businesses/{business_id}/payouts/
openapi: 3.0.3
info:
  title: Thredfi Accounting Platform API
  version: 1.0.0
  description: >-
    Comprehensive API for accounting, invoice management, open banking, and
    intelligence services.
servers: []
security: []
paths:
  /v1/platform/businesses/{business_id}/payouts/:
    get:
      tags:
        - Payouts
      summary: List payouts
      description: >-
        List all payouts within a business. Supports filtering by processor,
        status, date range, and search capabilities. Returns paginated results
        with standardized pagination.
      operationId: list_payouts
      parameters:
        - in: path
          name: business_id
          schema:
            type: string
            format: uuid
          description: Business UUID (unique identifier for the business)
          required: true
        - in: query
          name: completed_at_end
          schema:
            type: string
            format: date-time
          description: Filter payouts completed to this date/time
        - in: query
          name: completed_at_start
          schema:
            type: string
            format: date-time
          description: Filter payouts completed from this date/time
        - in: query
          name: external_id
          schema:
            type: string
          description: Filter by external ID (partial match, case-insensitive)
        - in: query
          name: max_amount
          schema:
            type: integer
          description: Maximum payout amount in cents
        - in: query
          name: min_amount
          schema:
            type: integer
          description: Minimum payout amount in cents
        - in: query
          name: page
          schema:
            type: integer
          description: 'Page number (1-indexed, default: 1)'
        - in: query
          name: page_size
          schema:
            type: integer
          description: 'Number of items per page (default: 20, max: 100)'
        - in: query
          name: processor
          schema:
            type: string
          description: Filter by payment processor (stripe, adyen, paypal, etc.)
        - in: query
          name: reconciliation_status
          schema:
            type: string
          description: >-
            Filter by reconciliation status (unreconciled, partially_reconciled,
            fully_reconciled)
        - in: query
          name: search
          schema:
            type: string
          description: >-
            Search by external_id, reference_number, memo, or
            processor_payout_id
        - in: query
          name: status
          schema:
            type: string
          description: Filter by payout status
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedPayoutListList'
          description: ''
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: Validation errors in request data
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Authentication required - missing or invalid API key
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Permission denied - insufficient privileges
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Resource not found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Conflict - resource already exists or invalid state transition
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unprocessable entity - business logic validation failed
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      security:
        - PartnerJWT: []
        - BusinessScopedJWT: []
        - BasicAuth: []
        - BearerUnscoped: []
        - BearerBusinessScoped: []
components:
  schemas:
    PaginatedPayoutListList:
      type: object
      required:
        - count
        - page_info
        - results
      properties:
        count:
          type: integer
          example: 123
          description: Total number of items
        page_info:
          type: object
          example:
            total_count: 123
            current_page: 1
            total_pages: 7
            page_size: 20
          required:
            - total_count
            - current_page
            - total_pages
            - page_size
          properties:
            total_count:
              type: integer
              example: 123
              description: Total number of items (same as count)
            current_page:
              type: integer
              example: 1
              description: Current page number (1-indexed)
            total_pages:
              type: integer
              example: 7
              description: Total number of pages
            page_size:
              type: integer
              example: 20
              description: Number of items per page
        results:
          type: array
          items:
            $ref: '#/components/schemas/PayoutList'
    ValidationErrorResponse:
      type: object
      description: Validation error response with field-specific errors
      properties:
        error_code:
          type: string
          description: Error code (e.g., 'validation_error')
        message:
          type: string
          nullable: true
          description: Human-readable error message
        detail:
          type: object
          additionalProperties: {}
          description: Contains field_errors and additional context
        request_id:
          type: string
          description: Request ID for tracing
      required:
        - detail
        - error_code
        - message
    ErrorResponse:
      type: object
      description: Standard error response format
      properties:
        error_code:
          type: string
          description: Error code for programmatic handling
        message:
          type: string
          nullable: true
          description: Human-readable error message
        detail:
          type: object
          additionalProperties: {}
          description: Additional error details including field_errors and debug info
        request_id:
          type: string
          description: Request ID for tracing
      required:
        - error_code
        - message
    PayoutList:
      type: object
      description: |-
        Simplified payout serializer for list views
        Excludes expanded payment/refund arrays for performance
        Shows only counts and totals
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        business_id:
          type: string
          format: uuid
          readOnly: true
        external_id:
          type: string
          maxLength: 255
        processor:
          enum:
            - stripe
            - paypal
            - square
            - adyen
            - worldpay
            - sage_pay
            - klarna
            - other
            - ''
          type: string
          description: |-
            * `stripe` - Stripe
            * `paypal` - PayPal
            * `square` - Square
            * `adyen` - Adyen
            * `worldpay` - Worldpay
            * `sage_pay` - Sage Pay
            * `klarna` - Klarna
            * `other` - Other
          x-spec-enum-id: 2e3f3dccc08fb43f
        processor_payout_id:
          type: string
          maxLength: 255
        paid_out_amount_cents:
          type: integer
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          format: int64
          description: Net payout amount in cents (can be negative)
        fee_cents:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          format: int64
        additional_refunds_amount_cents:
          type: integer
          maximum: 9223372036854776000
          minimum: 0
          format: int64
          description: Additional refunds not tied to specific RefundPayment records
        net_amount_cents:
          type: integer
          readOnly: true
          description: 'Net amount: paid_out_amount - fee'
        currency:
          enum:
            - EUR
            - GBP
            - USD
            - SEK
            - NOK
            - DKK
            - ISK
            - MYR
            - SGD
          type: string
          description: |-
            * `EUR` - Euro
            * `GBP` - British Pound
            * `USD` - US Dollar
            * `SEK` - Swedish Krona
            * `NOK` - Norwegian Krone
            * `DKK` - Danish Krone
            * `ISK` - Icelandic Króna
            * `MYR` - Malaysian Ringgit
            * `SGD` - Singapore Dollar
          x-spec-enum-id: 7e6a70e4775b3009
        status:
          enum:
            - pending
            - processing
            - paid
            - failed
            - cancelled
          type: string
          description: |-
            * `pending` - Pending
            * `processing` - Processing
            * `paid` - Paid
            * `failed` - Failed
            * `cancelled` - Cancelled
          x-spec-enum-id: c671b6dd1cffeef4
        completed_at:
          type: string
          format: date-time
          nullable: true
        imported_at:
          type: string
          format: date-time
          readOnly: true
        reference_number:
          type: string
          maxLength: 100
        memo:
          type: string
        payment_count:
          type: integer
          description: Number of payments in this payout
          readOnly: true
        refund_payment_count:
          type: integer
          description: Number of refund payments in this payout
          readOnly: true
        gross_payments_amount_cents:
          type: integer
          description: Total amount of invoice payments before refunds
          readOnly: true
        total_refunds_amount_cents:
          type: integer
          description: Total amount of refund payments in cents
          readOnly: true
        expected_net_amount_cents:
          type: integer
          description: 'Expected net: payments - refunds - additional_refunds - fees'
          readOnly: true
        amount_variance_cents:
          type: integer
          description: Difference between reported and expected net
          readOnly: true
        reconciliation_status:
          enum:
            - unreconciled
            - partially_reconciled
            - fully_reconciled
          type: string
          x-spec-enum-id: 0d688bdcecae9270
          readOnly: true
          description: |-
            Reconciliation state

            * `unreconciled` - Unreconciled
            * `partially_reconciled` - Partially Reconciled
            * `fully_reconciled` - Fully Reconciled
        settlement_file_id:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: Settlement file UUID if attached
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
        - amount_variance_cents
        - business_id
        - created_at
        - expected_net_amount_cents
        - gross_payments_amount_cents
        - id
        - imported_at
        - net_amount_cents
        - paid_out_amount_cents
        - payment_count
        - processor
        - processor_payout_id
        - reconciliation_status
        - refund_payment_count
        - settlement_file_id
        - total_refunds_amount_cents
        - updated_at
  securitySchemes:
    PartnerJWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Partner-level JWT token (unscoped). Token payload includes `partner_id`.
        Business access is validated via partner ownership. Format: `Bearer
        <your-jwt-token>`


        **Use this for**: Multi-business operations where the business_id is
        specified in the URL and partner has access to multiple businesses.
    BusinessScopedJWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Business-scoped JWT token. Token payload includes `business_id` to
        automatically scope requests. Format: `Bearer <your-jwt-token>`


        **Use this for**: Business-specific operations where the business
        context is embedded in the token.
    BasicAuth:
      type: http
      scheme: basic
      description: >-
        Basic authentication for OAuth2 token endpoint. Use partner_uuid:api_key
        as username:password. Example: Authorization: Basic
        base64(partner_uuid:api_key)
    BearerUnscoped:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Partner (unscoped) JWT Bearer token. Obtain via POST
        /v1/platform/oauth2/token with Basic auth (partner_uuid:api_key). Use
        header: Authorization: Bearer {access_token}
    BearerBusinessScoped:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Business-scoped JWT Bearer token. Obtain via POST
        /v1/platform/{business_id}/oauth2/token/ using a partner Bearer token.
        Only valid for endpoints whose URL contains that business_id.

````