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

# List payment methods for a checkout payment

> List the methods a payer can use to fund a checkout Payment.

Returns the methods that can fund this Payment, authenticated with its `clientSecret` as a Bearer token. Each method reports its `type` (`crypto`, `fiat_onramp` or `card`), network, token and decimals, `availability`, minimum and maximum amounts, and execution types.

Direct methods are `ready` immediately. Routing and on-ramp methods are `provider_confirmation_required`: they need a live provider quote or order when the option is created, and `available` is not a promise that the quote will succeed. When `minimumAmountSource` is `provider`, the exact minimum is dynamic and enforced at option creation.

Pick one with [Select a payment method](/api-reference/checkout/select-payment-method).


## OpenAPI

````yaml frontend-openapi.json GET /v2/public/payments/{paymentId}/payment-methods
openapi: 3.1.0
info:
  title: Stableyard Interfaces & SDK API
  version: 2.0.0-staging
  x-stableyard-api-version: '2026-09-09'
  x-stableyard-supported-api-versions:
    - '2026-09-09'
  summary: >-
    Advanced browser API used by Stableyard Checkout, Add Money, and
    account-bound interfaces.
  description: >

    These endpoints power Stableyard's official interface SDKs, hosted checkout,
    Add Money, and advanced custom browser integrations.


    Most partners should use `@stableyard/react` or `@stableyard/sdk` instead of
    calling these routes directly. A browser must never receive an app secret.
    Public checkout uses a Payment-scoped client secret, while account-bound
    experiences use a short-lived client bearer token created by the partner
    backend.
  x-stableyard-documentation-surface: frontend
servers:
  - url: https://prod-api.stableyard.fi
    description: Production
  - url: https://staging-api-v2.stableyard.fi
    description: Staging
  - url: http://localhost:3001
    description: Local
security: []
tags:
  - name: Authentication
    x-displayName: API authentication
    description: Verify your app ID and app secret before calling UPA APIs.
  - name: Client API
    description: >-
      Account-bound browser and mobile routes authenticated with a short-lived
      client bearer token. App secrets never enter client code.
  - name: Identity & KYC
    description: >-
      Verify the UPA email and run provider-neutral identity verification.
      Managed vaults and fiat payment rails use this same verified UPA identity.
  - name: Payments
    description: >-
      Create escrow-first payments, issue partner-authenticated send
      instructions or executions, power public checkout, and reconcile
      collection through final account settlement.
paths:
  /v2/public/payments/{paymentId}/payment-methods:
    get:
      tags:
        - Payments
      summary: List Payment methods
      operationId: listPublicPaymentMethodsByPayment
      parameters:
        - name: paymentId
          in: path
          required: true
          schema:
            type: string
            pattern: ^payment_[A-Za-z0-9_-]+$
            example: payment_123
          description: >-
            Canonical `payment_*` identifier. Internal execution identifiers are
            never accepted by Partner Payment routes.
      responses:
        '200':
          description: Available payment methods
          headers:
            Stableyard-Version:
              description: >-
                Effective date-based Stableyard API contract version for this
                response.
              schema:
                type: string
                enum:
                  - '2026-09-09'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicPaymentMethodsResponse'
              examples:
                example:
                  summary: List Payment methods 200 response
                  value:
                    paymentMethods:
                      - id: crypto.direct
                        providerCode: direct
                        type: crypto
                        displayName: Arbitrum USDC
                        networkCode: arbitrum
                        chainId: 42161
                        tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
                        assetSymbol: USDC
                        decimals: 6
                        available: true
                        availability: ready
                        recommended: true
                        disabledReason: null
                        estimatedSeconds: null
                        minimumAmount:
                          amountAtomic: '10000000'
                          amountDecimal: '10'
                          assetSymbol: USDC
                          decimals: 6
                          chainId: 42161
                          tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
                        minimumAmountSource: stableyard
                        maximumAmount:
                          amountAtomic: '10000000'
                          amountDecimal: '10'
                          assetSymbol: USDC
                          decimals: 6
                          chainId: 42161
                          tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
                        executionTypes:
                          - deposit_address
                        walletFamily: evm
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
        - paymentClientSecret: []
components:
  schemas:
    PublicPaymentMethodsResponse:
      type: object
      additionalProperties: false
      required:
        - paymentMethods
      properties:
        paymentMethods:
          type: array
          items:
            $ref: '#/components/schemas/PublicPaymentMethod'
    PublicPaymentMethod:
      type: object
      additionalProperties: false
      required:
        - id
        - providerCode
        - type
        - displayName
        - networkCode
        - chainId
        - tokenAddress
        - assetSymbol
        - decimals
        - available
        - availability
        - recommended
        - disabledReason
        - estimatedSeconds
        - minimumAmount
        - minimumAmountSource
        - maximumAmount
        - executionTypes
        - walletFamily
      properties:
        id:
          type: string
          example: crypto.direct
        providerCode:
          type: string
          enum:
            - direct
            - routing
            - banxa
          example: direct
        type:
          type: string
          enum:
            - crypto
            - fiat_onramp
            - card
        displayName:
          type: string
          example: Arbitrum USDC
        networkCode:
          type: string
          example: arbitrum
        chainId:
          type: integer
          example: 42161
        tokenAddress:
          type: string
          example: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
        assetSymbol:
          type: string
          example: USDC
        decimals:
          type: integer
          minimum: 0
          maximum: 36
          example: 6
        available:
          type: boolean
          const: true
          description: >-
            Whether this method can be selected. This is not a promise that a
            third-party quote will succeed.
        availability:
          type: string
          enum:
            - ready
            - provider_confirmation_required
          description: >-
            Direct is ready immediately. Routing/onramp methods require a live
            provider quote or order during option creation.
        recommended:
          type: boolean
        disabledReason:
          type: 'null'
        estimatedSeconds:
          type:
            - integer
            - 'null'
          minimum: 1
        minimumAmount:
          anyOf:
            - $ref: '#/components/schemas/NormalizedPaymentAmount'
            - type: 'null'
        minimumAmountSource:
          type: string
          enum:
            - stableyard
            - provider
          description: >-
            provider means the exact minimum is dynamic and enforced during
            option creation.
        maximumAmount:
          anyOf:
            - $ref: '#/components/schemas/NormalizedPaymentAmount'
            - type: 'null'
        executionTypes:
          type: array
          items:
            type: string
            enum:
              - deposit_address
              - hosted_checkout
        walletFamily:
          type: string
          enum:
            - evm
            - bitcoin
            - tron
            - solana
            - movement
    ErrorResponse:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: object
          additionalProperties: false
          required:
            - code
            - message
          properties:
            code:
              type: string
              minLength: 1
              maxLength: 128
              example: bad_request
            message:
              type: string
              minLength: 1
              maxLength: 1000
              example: The request is invalid
            details: {}
    NormalizedPaymentAmount:
      type: object
      additionalProperties: false
      required:
        - amountAtomic
        - amountDecimal
        - assetSymbol
        - decimals
      properties:
        amountAtomic:
          type: string
          pattern: ^[0-9]+$
          example: '10000000'
        amountDecimal:
          type: string
          pattern: ^(0|[1-9]\d*)(\.\d+)?$
          example: '10'
        assetSymbol:
          type: string
          example: USDC
        decimals:
          type: integer
          minimum: 0
          maximum: 36
          example: 6
        chainId:
          type: integer
          example: 42161
        tokenAddress:
          type: string
          example: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
  responses:
    Unauthorized:
      description: Unauthorized
      headers:
        Stableyard-Version:
          description: >-
            Effective date-based Stableyard API contract version for this
            response.
          schema:
            type: string
            enum:
              - '2026-09-09'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            example:
              summary: Unauthorized response
              value:
                error:
                  code: bad_request
                  message: The request is invalid
                  details: example
    NotFound:
      description: Not found
      headers:
        Stableyard-Version:
          description: >-
            Effective date-based Stableyard API contract version for this
            response.
          schema:
            type: string
            enum:
              - '2026-09-09'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            example:
              summary: NotFound response
              value:
                error:
                  code: bad_request
                  message: The request is invalid
                  details: example
  securitySchemes:
    paymentClientSecret:
      type: http
      scheme: bearer
      bearerFormat: Stableyard Payment client secret
      description: >-
        Short-lived browser capability for exactly one payment_* resource. Never
        place it in a URL.

````

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