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

# Get a payout

> Get the current status of a payout and its per-vendor batches by `transactionId`. Requires the `admin:payouts` permission.



## OpenAPI

````yaml openapi-merchant.json GET /payouts/make-payment/{transactionId}
openapi: 3.0.0
info:
  title: PuppetVendors Merchant API V2
  version: 2.0.0
  description: >-
    The endpoints reachable with a merchant API key (`mk_live_…`), minted from
    Settings → API Access in the PuppetVendors admin. A merchant key administers
    users and vendors, and renews its own token. Everything else in the V2 API,
    including orders, products, payouts, fulfillments and documents, stays on
    the v1 API token and is refused here with a 403. Keys are revealed once at
    creation; rotating one leaves the previous key working for a 24 hour grace
    window.
  contact:
    name: PuppetVendors Support
    url: https://puppetvendors.com
  license:
    name: Proprietary
servers:
  - url: https://production-api.puppetvendors.com
    description: Production
  - url: http://localhost:8082
    description: Local development
security:
  - bearerAuth: []
tags:
  - name: Auth
    description: Authentication endpoints for obtaining and refreshing API tokens
  - name: Portal - Auth
    description: Vendor portal authentication endpoints (vendor user login, token refresh)
  - name: Products
    description: Product management and synchronization
  - name: Orders
    description: Order retrieval and management
  - name: Payouts
    description: Vendor payout information
  - name: Fulfillments
    description: Order fulfillment operations
  - name: Reports
    description: Vendor sales reports and analytics
  - name: Vendors
    description: Vendor management operations
  - name: Settings
    description: Settings endpoints for vendor configuration and management
  - name: Users
    description: User account management
  - name: Shop
    description: Shop configuration and settings
  - name: Commissions
    description: Commission rate management
  - name: Integrations
    description: Vendor integration configuration endpoints
  - name: Line Items
    description: Order line item operations
paths:
  /payouts/make-payment/{transactionId}:
    get:
      tags:
        - Payouts
      summary: Get a payout
      description: >-
        Get the current status of a payout and its per-vendor batches by
        `transactionId`. Requires the `admin:payouts` permission.
      operationId: getPayoutRun
      parameters:
        - in: path
          name: transactionId
          required: true
          schema:
            type: string
            pattern: ^[A-Za-z0-9_-]{1,64}$
          description: >-
            The transactionId returned by the 202 ack of make-payment, retry or
            mark-paid
          example: K7Q2M9X4TB
      responses:
        '200':
          description: The latest run's status and the transaction's batches
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: object
                    properties:
                      transactionId:
                        type: string
                      requestId:
                        type: string
                        description: The latest run's Action row id (a support reference)
                      operation:
                        type: string
                        enum:
                          - make-payment
                          - retry
                          - mark-paid
                        description: Which write started the latest run
                      batchId:
                        type: string
                        nullable: true
                        description: >-
                          The batch the latest retry or mark-as-paid acts on;
                          null for make-payment
                      status:
                        type: string
                        enum:
                          - processing
                          - completed
                          - failed
                      hadIssue:
                        type: boolean
                        nullable: true
                      batches:
                        type: array
                        description: >-
                          Every batch of the transaction as it stands now (empty
                          before the transaction is written)
                        items:
                          type: object
                          properties:
                            batchId:
                              type: string
                            vendorId:
                              description: The vendor's ObjectId (opaque here)
                            vendorName:
                              type: string
                              nullable: true
                            amount:
                              type: number
                              nullable: true
                            status:
                              type: string
                              enum:
                                - pending
                                - paid
                                - failed
                                - cancelled
                            reason:
                              type: object
                              nullable: true
                              description: >-
                                The classified failure reason (code + params);
                                null when unrecognised
                            gatewayRef:
                              type: object
                              nullable: true
                              properties:
                                gateway:
                                  type: string
                                  enum:
                                    - stripe
                                    - paypal
                                refId:
                                  type: string
                            markAsPaid:
                              type: object
                              nullable: true
                              properties:
                                marked:
                                  type: boolean
                                  enum:
                                    - true
                                method:
                                  type: string
                                  nullable: true
                                comments:
                                  type: string
                                  nullable: true
                      canRetry:
                        type: boolean
                        description: >-
                          True when the latest run completed and a batch can be
                          retried via POST /payouts/batches/{batchId}/retry
                      lastError:
                        type: string
                        nullable: true
                        description: Failed runs only
                      requiresInvestigation:
                        type: boolean
                        description: >-
                          Failed runs only. False when the run never started
                          (nothing was paid; send it again with a new
                          Idempotency-Key); true when a payment may have been
                          sent (check the batches with the payment provider
                          first)
        '400':
          description: Malformed transactionId
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Forbidden - merchant scope with admin:payouts required, or
            MERCHANT_PAYOUTS_API_NOT_ENABLED (the payouts API is not enabled for
            this store)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: No API payout run with this transactionId in this shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          enum:
            - false
          description: Indicates the request failed
        error:
          type: object
          required:
            - message
          properties:
            message:
              type: string
              description: Human-readable error message
              example: Resource not found
            code:
              type: string
              description: >-
                Stable machine-readable error code. The frontend uses this as
                its localisation key (e.g. errors.api.<code>). Server errors
                always report INTERNAL_SERVER_ERROR.
              example: NOT_FOUND
            errorId:
              type: string
              description: >-
                Correlation id for support/log lookup. Present on opaque 5xx
                responses so a user can quote a reference for the underlying
                (server-side logged) error.
              example: err_1783365360839_j281w7b
            details:
              type: object
              description: >-
                Additional client-error context (e.g. field-level validation
                errors). Never populated for server errors.
  securitySchemes:
    bearerAuth:
      type: apiKey
      in: header
      name: x-access-token
      description: >-
        JWT minted from a merchant API key (`mk_live_…`) by POST /authenticate.
        Send the token value directly, with no "Bearer" prefix. Tokens last 14
        days and can be renewed at POST /refresh-token; revoking the key refuses
        the next request made with any token minted from it.

````

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