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

# List merchants

> Get a paginated list of all active merchants (public view — returns only ID and business name).



## OpenAPI

````yaml /swagger.json get /merchant/api/v1/public/merchants
openapi: 3.0.3
info:
  title: Merchant API
  description: >-
    API for merchants to create and manage payment intents, POS counters, and
    transaction history in the FEX Payment Platform. Authentication uses
    Keycloak JWT (human merchants via password flow, POS terminals via client
    credentials).
  version: 1.0.0
  contact:
    name: FEX Payments Platform
servers:
  - url: http://api-sandbox.fexpayments.com
    description: Merchant API sandbox server
security: []
tags:
  - name: Payment Intents
    description: Create and manage payment intents
  - name: Counters
    description: >-
      POS terminal (counter) management — each counter has its own Keycloak
      client credentials and webhook endpoint
  - name: Admin
    description: Back-office endpoints restricted to platform admin role (`admin`)
  - name: Public
    description: Public endpoints accessible without authentication (for QR code payments)
  - name: Onboarding
    description: Merchant registration — requires platform admin JWT (realm role `admin`)
paths:
  /merchant/api/v1/public/merchants:
    get:
      tags:
        - Public
      summary: List merchants
      description: >-
        Get a paginated list of all active merchants (public view — returns only
        ID and business name).
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            minimum: 1
            default: 1
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
      responses:
        '200':
          description: List of merchants
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  merchants:
                    type: array
                    items:
                      $ref: '#/components/schemas/MerchantPublic'
                  page:
                    type: integer
                    example: 1
                  limit:
                    type: integer
                    example: 20
                  total:
                    type: integer
                    example: 5
                  total_pages:
                    type: integer
                    example: 1
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    MerchantPublic:
      type: object
      description: Public merchant information
      properties:
        id:
          type: string
          format: uuid
          example: 74815c83-e47b-4dc5-aefe-abe4484dd280
        business_name:
          type: string
          example: Whole Foods Market
      required:
        - id
        - business_name
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          example: Invalid request body
      required:
        - success
        - error
  responses:
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: Failed to create payment intent

````