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

# List Payment Methods by User

> Retrieve the bank account payout methods saved for a given user.

Returns a paginated list of the bank account payout methods saved for a given user.

## Returns

An object with a `data` array of [PaymentMethod](/offramp/api-reference/payment-methods/payment-method-object) objects. Use the `cursor` parameter to paginate; when `nextCursor` is present, more pages are available.


## OpenAPI

````yaml api-reference/_open-api/OfframpAPIs.json GET /unstable/payment-methods
openapi: 3.0.1
info:
  description: |
    Offramp APIs for cashing out stablecoins to fiat.
  version: 1.0.0
  title: Offramp
  contact:
    name: Crossmint Offramp APIs
    url: https://www.crossmint.com
    email: support@crossmint.com
servers:
  - url: https://staging.crossmint.com/api
    description: Staging environment (testnets)
  - url: https://www.crossmint.com/api
    description: Production environment (mainnets)
security: []
tags:
  - name: Offramp
    description: APIs to cash out stablecoins to fiat (offramp)
  - name: Payment Methods
    description: Manage bank account payout methods for offramp.
paths:
  /unstable/payment-methods:
    get:
      tags:
        - Payment Methods
      summary: List payment methods by user
      description: >-
        Returns a paginated list of the bank account payout methods saved for a
        user, newest first by default. Soft-deleted methods are excluded.


        **API scope required**: `payment-methods.read`
      operationId: listPaymentMethodsByUser
      parameters:
        - name: userLocator
          in: query
          required: false
          schema:
            type: string
          description: >-
            Identifies the target user. Format: `<type>:<value>` (e.g.,
            `email:alice@example.com`, `userId:abc123`). Required with server
            API key auth; ignored with JWT.
          example: email:alice@example.com
        - name: type
          in: query
          required: false
          schema:
            type: string
            enum:
              - bank-account-us
              - bank-account-mx-clabe
              - bank-account-co
              - bank-account-sepa-iban
          description: >-
            Filter by payment method type. Without this filter, all types are
            returned.
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          description: >-
            Opaque pagination cursor from a previous response. Pass to retrieve
            the next page.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 30
          description: Maximum number of results per page (1-100, default 30).
        - name: sort
          in: query
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
          description: >-
            Sort by creation date: `asc` (oldest first) or `desc` (newest first,
            default).
        - name: hasPayout
          in: query
          required: false
          schema:
            type: string
            enum:
              - 'true'
              - 'false'
          description: >-
            Filter to payout methods that have (`true`) or have not (`false`)
            funded a settled offramp payout. Omit to return all payout methods
            regardless of payout history.
      responses:
        '200':
          description: >-
            Paginated list of PaymentMethod objects. `nextCursor` and
            `previousCursor` are included when additional pages exist in that
            direction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PmPaginatedPaymentMethods'
              example:
                data:
                  - paymentMethodId: dd8a59c6-aac0-47c2-9c21-686caf7f0359
                    default: false
                    displayName: Chime ••6259
                    type: bank-account-us
                    bankAccount:
                      billing:
                        name: Alice Smith
                        phone: '+12125551234'
                        address:
                          line1: 123 Main St
                          city: New York
                          stateOrRegion: NY
                          postalCode: '10001'
                          country: US
                      bankName: Chime
                      accountSuffix: '6259'
                      currency: usd
                      country: US
                      entityType: individual
                      bankAddress:
                        line1: 123 Main St
                        city: New York
                        stateOrRegion: NY
                        postalCode: '10001'
                        country: US
                      routingNumber: '091300010'
                      accountType: checking
                  - paymentMethodId: 3323460b-d9d2-4ec6-b380-8a3e01e3f226
                    default: false
                    displayName: SEPA Account ••6789
                    type: bank-account-sepa-iban
                    bankAccount:
                      billing:
                        name: Hans Müller
                        phone: '+4915112345678'
                        address:
                          line1: Unter den Linden 1
                          city: Berlin
                          stateOrRegion: BE
                          postalCode: '10117'
                          country: DE
                      bankName: null
                      accountSuffix: '6789'
                      currency: eur
                      country: DE
                      entityType: individual
                      bic: COBADEFFXXX
                nextCursor: eyJsYXN0SWQiOiI2NDUifQ==
                previousCursor: null
        '400':
          description: Invalid query parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pm400ResponseGeneral'
              examples:
                missing_locator:
                  description: Missing userLocator when using API key auth
                  value:
                    error: true
                    message: userLocator is required when not using JWT authentication
                    code: PAYMENT_METHOD_INVALID_USER_LOCATOR
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pm401Response'
        '403':
          description: Authentication source not allowed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pm403Response'
        '404':
          description: User not found for the given locator.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pm404Response'
              examples:
                user_not_found:
                  description: User not found
                  value:
                    error: true
                    message: User not found for the provided locator
      security:
        - apiKey: []
      servers:
        - url: https://staging.crossmint.com/api
          description: Staging
        - url: https://www.crossmint.com/api
          description: Production
components:
  schemas:
    PmPaginatedPaymentMethods:
      type: object
      description: Paginated list of payment methods.
      required:
        - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PmPaymentMethod'
          description: Array of payment method objects for the current page.
        nextCursor:
          type: string
          nullable: true
          description: >-
            Cursor to fetch the next page. `null` when there are no more
            results.
        previousCursor:
          type: string
          nullable: true
          description: Cursor to fetch the previous page. `null` on the first page.
    Pm400ResponseGeneral:
      type: object
      properties:
        error:
          type: boolean
          example: true
        message:
          type: string
          description: Human-readable error message describing what went wrong
        code:
          type: string
          description: Machine-readable error code for programmatic handling
          enum:
            - PAYMENT_METHOD_INVALID_USER_LOCATOR
      description: Bad request (e.g., missing or invalid userLocator).
    Pm401Response:
      type: object
      properties:
        error:
          type: boolean
          example: true
        message:
          type: string
          example: Missing or invalid API key.
      description: Missing or invalid API key / JWT.
    Pm403Response:
      type: object
      properties:
        error:
          type: boolean
          example: true
        message:
          type: string
          example: Payment methods are not allowed with this authentication source
      description: API key lacks the required scope for this operation.
    Pm404Response:
      type: object
      properties:
        error:
          type: boolean
          example: true
        message:
          type: string
          example: Payment method not found
      description: Payment method not found, deleted, or belongs to a different user.
    PmPaymentMethod:
      title: Bank account
      type: object
      description: >-
        A saved bank account payout method. Sensitive fields (full account
        numbers and IBANs) are never included in responses.
      properties:
        paymentMethodId:
          type: string
          format: uuid
          description: Unique identifier (UUID v4), assigned by the server on creation.
        default:
          type: boolean
          description: >-
            Whether this is the user's default payment method. Only one per user
            can be the default; setting a new default automatically unsets the
            previous one.
        displayName:
          type: string
          description: >-
            Human-readable label derived by the server (e.g., "Chime ••6259",
            "SEPA Account ••6789"). Not settable by the client.
        type:
          type: string
          enum:
            - bank-account-us
            - bank-account-mx-clabe
            - bank-account-co
            - bank-account-sepa-iban
          description: >-
            Payout method type. Determines the country-specific `bankAccount`
            fields that are present.
        bankAccount:
          type: object
          description: >-
            Bank account details. Present when `type` is a bank type. Full
            account numbers and IBANs are never included.
          properties:
            billing:
              type: object
              description: Account holder billing details as provided on creation.
            bankName:
              type: string
              description: Name of the bank, or `null` if the bank could not be identified.
              nullable: true
            accountSuffix:
              type: string
              description: Last four digits of the account number, CLABE, or IBAN.
            currency:
              type: string
              description: ISO 4217 currency code in lowercase (e.g., `usd`, `eur`).
            country:
              type: string
              description: ISO 3166-1 alpha-2 country code.
            entityType:
              type: string
              description: Account holder type. Present when provided on creation.
              enum:
                - individual
                - business
            routingNumber:
              type: string
              description: ABA routing number. US only.
            accountType:
              type: string
              description: Account type. US and CO only.
              enum:
                - checking
                - savings
            bankAddress:
              type: object
              description: Bank mailing address. US only.
            bankCode:
              type: string
              description: Bank code. MX and CO only.
            bic:
              type: string
              description: BIC/SWIFT code. SEPA only; present when provided on creation.
            taxId:
              type: string
              description: Mexican tax identifier (RFC). MX only; present when provided.
            businessDescription:
              type: string
              description: Business description. MX only; present when provided.
          required:
            - billing
            - bankName
            - accountSuffix
            - currency
            - country
        lastPayoutAt:
          type: string
          format: date-time
          description: >-
            Read-only. ISO 8601 timestamp of the most recent successful offramp
            payout funded by this bank account. Absent if none.
      required:
        - paymentMethodId
        - default
        - type
        - displayName
        - bankAccount
  securitySchemes:
    apiKey:
      type: apiKey
      name: X-API-KEY
      in: header

````