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

# Retrieve a card payout

> Retrieves one payout within the authenticated merchant and mode scope.



## OpenAPI

````yaml /api-reference/payments-api.yaml get /v1/payouts/{payout_id}
openapi: 3.0.4
info:
  title: Flowlix Payments API
  version: 1.0.0
  description: >
    The Flowlix Payments API is a RESTful API for creating and retrieving

    Payments, creating Refunds, and submitting and retrieving Payouts.

    It follows industry-standard conventions: JSON request/response bodies,
    Bearer token authentication,

    standard HTTP verbs, idempotency support, and cursor-based pagination.


    ## Base URL


    API requests are made to `https://api.flowlix.eu`.

    Endpoints are versioned under `/v1`, e.g.

    `https://api.flowlix.eu/v1/payments`.


    ## Amounts and currencies


    All monetary amounts are expressed in **minor units** (the smallest currency
    unit).

    How many minor units make up one major unit is defined by the currency's

    ISO 4217 exponent, so the same integer means a different value in different

    currencies: `4999` is **EUR 49.99** and **GBP 49.99** (exponent 2), but

    **JPY 4999** (exponent 0, no minor unit). Do not assume two decimal places.


    Currencies are three-letter ISO 4217 codes. Requests are accepted

    case-insensitively; Flowlix normalizes them and always returns canonical

    uppercase codes such as `EUR`. The currencies accepted for a Payment or

    Payout are validated separately per request rather than listed in this

    contract, so enabling another currency is not a breaking change. A code

    that is not three letters is rejected with `400 parameter_invalid`

    (`param=currency`), and a well-formed code that Flowlix does not accept for

    the requested operation is rejected with `422 currency_not_supported`.

    Neither response creates a Payment or Payout.


    A refund is always made in the currency of the original payment, and the

    refund request does not accept a currency.
  contact:
    name: Flowlix Developer Support
    email: developers@flowlix.eu
    url: https://flowlix.dev/support
  license:
    name: Proprietary
    url: https://flowlix.dev/terms
servers:
  - url: https://api.flowlix.eu
    description: Flowlix Merchant API.
security:
  - BearerAuth: []
tags:
  - name: Health
    description: Check aggregate Flowlix API availability.
  - name: Payments
    description: Create, retrieve, and list payments.
  - name: Payouts
    description: Submit, list, and retrieve Host-to-Host card payouts.
  - name: Refunds
    description: >-
      Create refunds and track their status through the parent payment's
      `refunds` array.
paths:
  /v1/payouts/{payout_id}:
    get:
      tags:
        - Payouts
      summary: Retrieve a card payout
      description: Retrieves one payout within the authenticated merchant and mode scope.
      operationId: getPayout
      parameters:
        - name: payout_id
          in: path
          required: true
          description: Payout identifier.
          schema:
            $ref: '#/components/schemas/PayoutId'
      responses:
        '200':
          description: >-
            Current recorded Payout. Inspect status and, for FAILED,
            failure_code and failure_message.
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payout'
              examples:
                pending:
                  $ref: '#/components/examples/PayoutPending'
                processing:
                  $ref: '#/components/examples/PayoutProcessing'
                succeeded:
                  $ref: '#/components/examples/PayoutSucceeded'
                failed:
                  $ref: '#/components/examples/PayoutFailed'
        '400':
          $ref: '#/components/responses/PayoutReadBadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/PayoutNotFound'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  schemas:
    PayoutId:
      type: string
      pattern: ^po_[A-Za-z0-9]{24}$
      description: >-
        Unique opaque public identifier for a payout (`po_` prefix + random
        alphanumeric suffix).
      example: po_Q7Mk2Np8Vr4Xt6Yz9Ab3Cd5E
    Payout:
      type: object
      additionalProperties: false
      required:
        - id
        - amount
        - currency
        - status
        - card_brand
        - card_last4
        - recipient
        - created_at
        - updated_at
      description: Public, PAN-free lifecycle representation of a card payout.
      properties:
        id:
          $ref: '#/components/schemas/PayoutId'
        amount:
          type: integer
          format: int64
          minimum: 1
          description: Payout amount in minor units.
          example: 2500
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        merchant_reference:
          type: integer
          nullable: true
          description: Merchant-side reconciliation reference, if supplied.
          allOf:
            - $ref: '#/components/schemas/MerchantReference'
        status:
          $ref: '#/components/schemas/PayoutStatus'
        failure_code:
          type: string
          allOf:
            - $ref: '#/components/schemas/OperationFailureCode'
          nullable: true
          description: >-
            Stable Flowlix reason present only for a FAILED payout; never a raw
            provider code.
          example: do_not_honor
        failure_message:
          type: string
          nullable: true
          minLength: 1
          maxLength: 255
          description: Merchant-safe explanation present only for a FAILED payout.
          example: The payout was declined by the issuer.
        card_brand:
          $ref: '#/components/schemas/CardBrand'
        card_last4:
          type: string
          pattern: ^[0-9]{4}$
          description: Last four digits of the destination card.
          example: '1111'
        recipient:
          $ref: '#/components/schemas/PayoutRecipient'
        created_at:
          type: integer
          format: int64
          description: Unix timestamp when the payout was created.
          example: 1719792000
        updated_at:
          type: integer
          format: int64
          description: Unix timestamp when the payout was last updated.
          example: 1719792060
    CurrencyCode:
      type: string
      minLength: 3
      maxLength: 3
      pattern: ^[A-Z]{3}$
      description: >
        Canonical uppercase three-letter ISO 4217 currency code. Responses
        always

        return the original currency the payment was created in; a provider

        response never replaces it.
      example: EUR
    MerchantReference:
      type: integer
      format: int64
      minimum: 1000000000
      maximum: 9999999999
      description: |
        Optional merchant-side reconciliation reference. The value must contain
        exactly 10 decimal digits and does not provide idempotency by itself.
      example: 1234567890
    PayoutStatus:
      type: string
      enum:
        - PENDING
        - PROCESSING
        - SUCCEEDED
        - FAILED
      description: >
        Merchant-visible payout state. `PROCESSING` means the provider

        acknowledged the payout. `SUCCEEDED` and `FAILED` are terminal outcomes

        confirmed from a validated provider result, not submission
        acknowledgement.
      example: PROCESSING
    OperationFailureCode:
      type: string
      description: >-
        Stable public failure vocabulary used by Payment `failure_code`, Refund
        `failure.code`, and Payout `failure_code`. The meaning is shared, but
        handling differs: shopper or new-card actions for a Payment must not be
        applied to a Refund or Payout.
      enum:
        - not_found
        - processor_error
        - processor_unavailable
        - generic_decline
        - do_not_honor
        - issuer_declined
        - insufficient_funds
        - invalid_number
        - invalid_expiry
        - expired_card
        - invalid_amount
        - invalid_currency
        - not_permitted
        - cardholder_limit
        - card_velocity_exceeded
        - lost_card
        - stolen_card
        - suspect_fraud
        - fraud_filter
        - three_d_secure_failed
        - three_d_secure_timeout
        - three_d_secure_not_supported
        - three_d_secure_error
      example: insufficient_funds
    CardBrand:
      type: string
      description: |
        Canonical lower-case card-network brand, for example `visa`,
        `mastercard`, or `amex`. The schema remains extensible; each operation
        validates its supported brands separately.
      example: visa
    PayoutRecipient:
      type: object
      additionalProperties: false
      required:
        - country
        - first_name
        - last_name
      description: Merchant-supplied recipient metadata stored with the payout.
      properties:
        country:
          $ref: '#/components/schemas/CountryCode'
        first_name:
          type: string
          minLength: 1
          maxLength: 255
          description: >-
            Merchant-supplied recipient first name, preserved without trimming
            or normalization.
          example: Jenny
        last_name:
          type: string
          minLength: 1
          maxLength: 255
          description: >-
            Merchant-supplied recipient last name, preserved without trimming or
            normalization.
          example: Rosen
    ApiError:
      type: object
      description: Error response wrapper.
      properties:
        error:
          $ref: '#/components/schemas/ApiErrorBody'
    CountryCode:
      type: string
      pattern: ^[A-Z]{2}$
      description: Canonical ISO 3166-1 alpha-2 country code.
      example: DE
    ApiErrorBody:
      type: object
      description: Detailed error information.
      required:
        - message
      properties:
        code:
          type: string
          nullable: true
          description: Short machine-readable error code.
        message:
          type: string
          description: >-
            Human-readable context that may include object-specific values and
            may change. Branch on `code`, not this text.
        param:
          type: string
          nullable: true
          description: Request parameter that caused the error, if applicable.
        doc_url:
          type: string
          nullable: true
          format: uri
          description: URL to documentation for this error.
        request_id:
          type: string
          nullable: true
          description: Request ID matching the `Request-Id` response header.
  headers:
    RequestId:
      description: >-
        A unique identifier for this API request. Include it when contacting
        support.
      schema:
        type: string
        maxLength: 255
      example: req_abc123def456
    RetryAfter:
      description: Number of seconds to wait before retrying.
      schema:
        type: integer
      example: 5
  examples:
    PayoutPending:
      summary: Payout pending
      value:
        id: po_Q7Mk2Np8Vr4Xt6Yz9Ab3Cd5E
        amount: 2500
        currency: EUR
        merchant_reference: 1234567890
        status: PENDING
        card_brand: visa
        card_last4: '1111'
        created_at: 1719792000
        updated_at: 1719792000
        recipient:
          country: DE
          first_name: Jenny
          last_name: Rosen
    PayoutProcessing:
      summary: Payout processing
      value:
        id: po_Q7Mk2Np8Vr4Xt6Yz9Ab3Cd5E
        amount: 2500
        currency: EUR
        merchant_reference: 1234567890
        status: PROCESSING
        card_brand: visa
        card_last4: '1111'
        created_at: 1719792000
        updated_at: 1719792000
        recipient:
          country: DE
          first_name: Jenny
          last_name: Rosen
    PayoutSucceeded:
      summary: Payout succeeded
      value:
        id: po_Q7Mk2Np8Vr4Xt6Yz9Ab3Cd5E
        amount: 2500
        currency: EUR
        merchant_reference: 1234567890
        status: SUCCEEDED
        card_brand: visa
        card_last4: '1111'
        created_at: 1719792000
        updated_at: 1719792000
        recipient:
          country: DE
          first_name: Jenny
          last_name: Rosen
    PayoutFailed:
      summary: Payout failed
      value:
        id: po_Q7Mk2Np8Vr4Xt6Yz9Ab3Cd5E
        amount: 2500
        currency: EUR
        merchant_reference: 1234567890
        status: FAILED
        card_brand: visa
        card_last4: '1111'
        created_at: 1719792000
        updated_at: 1719792000
        recipient:
          country: DE
          first_name: Jenny
          last_name: Rosen
        failure_code: generic_decline
        failure_message: The payout was declined.
    ErrorInvalidRequest:
      summary: Read request contains an invalid value
      value:
        error:
          code: invalid_request
          message: Request validation failed.
          doc_url: https://docs.flowlix.eu/api-reference/errors
          request_id: req_read400a
    ErrorPayoutIdInvalid:
      summary: Payout ID has an invalid format
      value:
        error:
          code: parameter_invalid
          message: Request parameter is invalid.
          param: payoutId
          doc_url: https://docs.flowlix.eu/guides/errors
          request_id: req_payout400a
    ErrorInvalidApiKey:
      summary: Missing or invalid API key
      value:
        error:
          code: invalid_api_key
          message: The API key is invalid.
          doc_url: https://docs.flowlix.eu/guides/errors
          request_id: req_auth401a
    ErrorPayoutNotFound:
      summary: Payout is absent from the merchant and mode scope
      value:
        error:
          code: object_not_found
          message: Payout was not found.
          doc_url: https://docs.flowlix.eu/api-reference/errors
          request_id: req_payout404b
    ErrorInternal:
      summary: Unexpected Flowlix error
      value:
        error:
          code: internal_error
          message: An internal error occurred.
          doc_url: https://docs.flowlix.eu/guides/errors
          request_id: req_internal500a
    ErrorServiceUnavailable:
      summary: Flowlix is temporarily unavailable
      value:
        error:
          code: service_unavailable
          message: Upstream payment processor is temporarily unavailable. Please retry.
          doc_url: https://docs.flowlix.eu/guides/errors
          request_id: req_service503a
  responses:
    PayoutReadBadRequest:
      description: |
        The Payout ID or another read parameter is invalid. Correct the value
        named by `error.param` when it is present.
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            invalid_request:
              $ref: '#/components/examples/ErrorInvalidRequest'
            invalid_parameter:
              $ref: '#/components/examples/ErrorPayoutIdInvalid'
    Unauthorized:
      description: >
        The API key is missing, invalid, expired, or revoked. Send the secret
        key

        for the intended merchant and mode in `Authorization: Bearer <key>`.
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            invalid_api_key:
              $ref: '#/components/examples/ErrorInvalidApiKey'
    PayoutNotFound:
      description: |
        The Payout was not found in the authenticated merchant and mode
        scope. Verify the Payout ID and API key mode; do not blind retry.
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            object_not_found:
              $ref: '#/components/examples/ErrorPayoutNotFound'
    InternalError:
      description: |
        Flowlix encountered an unexpected server error before the operation
        completed. Retry safely with the original idempotency key for a POST
        and include `Request-Id` when contacting support.
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            internal_error:
              $ref: '#/components/examples/ErrorInternal'
    ServiceUnavailable:
      description: |
        Flowlix is temporarily unable to process the request. Wait for
        `Retry-After` when present, then retry with exponential backoff. Reuse
        the same idempotency key when retrying a POST request.
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            service_unavailable:
              $ref: '#/components/examples/ErrorServiceUnavailable'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: |
        Use the secret API key for the intended merchant and mode as the Bearer
        token. Sandbox keys start with `api_test_sk_`. Send the key only from
        your server environment.

        ```
        Authorization: Bearer api_test_sk_abc123def456
        ```

````