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

# Lister les pays et opérateurs

> Les pays disponibles pour votre compte, avec leurs opérateurs. Pour chaque opérateur et devise, `collection`,
`payout` et `refund` donnent l'état en direct, si l'opération est disponible maintenant (`available`), les montants
minimum et maximum par transaction, et **votre prix tout compris** (`fee`).

- Les données des opérateurs sont rafraîchies toutes les 10 minutes. Mettez-les en cache quelques minutes de votre côté.
- N'affichez un opérateur à votre client que si `collection.available` vaut `true`.
- Arrondissez les montants aux `decimals` de l'opérateur : elles peuvent différer entre opérateurs d'une même devise.
- Les payouts et remboursements ne sont pas encore ouverts : leur état est donné pour information.




## OpenAPI

````yaml fr/openapi.yaml GET /mobile-money/countries
openapi: 3.1.0
info:
  title: API KemyPay
  version: '1.0'
  description: >
    KemyPay vous permet d'encaisser des paiements mobile money dans 12 pays
    d'Afrique avec une seule API, avec un solde par

    service, par pays et par devise.


    Chaque requête est authentifiée par une clé API secrète (`sk_live_…` ou
    `sk_test_…`) et doit venir d'une de

    vos adresses IP autorisées. Les réponses utilisent la même enveloppe : `{
    "success": true, "data": …, "meta": … }`, ou

    `{ "success": false, "error": { "code", "message", "details" }, "meta": …
    }`.


    Les encaissements, le calcul de prix et la devinette de l'opérateur sont en
    **bêta** : ils sont en cours de déploiement en production.
  contact:
    name: KemyPay Support
    email: hi@kemypay.com
servers:
  - url: https://api.kemypay.com/v1
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Catalog
    description: Pays, opérateurs, prix et catégories de service
  - name: Services
    description: Vos services (un par application ou activité), validés par notre équipe
  - name: Collections
    description: Encaisser un paiement depuis le compte mobile money d'un client (bêta)
  - name: Balances
    description: Un solde par service, par pays et par devise
paths:
  /mobile-money/countries:
    get:
      tags:
        - Catalog
      summary: Lister les pays et opérateurs
      description: >
        Les pays disponibles pour votre compte, avec leurs opérateurs. Pour
        chaque opérateur et devise, `collection`,

        `payout` et `refund` donnent l'état en direct, si l'opération est
        disponible maintenant (`available`), les montants

        minimum et maximum par transaction, et **votre prix tout compris**
        (`fee`).


        - Les données des opérateurs sont rafraîchies toutes les 10 minutes.
        Mettez-les en cache quelques minutes de votre côté.

        - N'affichez un opérateur à votre client que si `collection.available`
        vaut `true`.

        - Arrondissez les montants aux `decimals` de l'opérateur : elles peuvent
        différer entre opérateurs d'une même devise.

        - Les payouts et remboursements ne sont pas encore ouverts : leur état
        est donné pour information.
      operationId: listCountries
      parameters:
        - name: country
          in: query
          required: false
          description: Seulement ce pays (ISO 3166-1 alpha-3, par exemple `CMR`).
          schema:
            type: string
            pattern: ^[A-Za-z]{3}$
            example: CMR
      responses:
        '200':
          description: Les pays et leurs opérateurs
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Country'
                  meta:
                    $ref: '#/components/schemas/Meta'
        '422':
          $ref: '#/components/responses/CountryError'
components:
  schemas:
    Country:
      type: object
      properties:
        country:
          type: string
          example: CMR
        name:
          type: string
          example: Cameroon
        currencies:
          type: array
          items:
            type: string
          example:
            - XAF
        operators:
          type: array
          items:
            $ref: '#/components/schemas/Operator'
      example:
        country: CMR
        name: Cameroon
        currencies:
          - XAF
        operators:
          - operator: MTN_CMR
            name: MTN
            currency: XAF
            decimals: 0
            collection:
              status: operational
              available: true
              min_amount: '1.00'
              max_amount: '1000000.00'
              fee:
                percent: '3.25'
                fixed_tiers: []
                fixed_currency: null
            payout:
              status: operational
              available: true
              min_amount: '1.00'
              max_amount: '1000000.00'
              fee:
                percent: '2.3'
                fixed_tiers: []
                fixed_currency: null
            refund:
              status: operational
              available: false
              min_amount: '1.00'
              max_amount: '1000000.00'
              fee: null
          - operator: ORANGE_CMR
            name: Orange
            currency: XAF
            decimals: 0
            collection:
              status: closed
              available: false
              min_amount: '1.00'
              max_amount: '1000000.00'
              fee:
                percent: '3.27'
                fixed_tiers: []
                fixed_currency: null
            payout:
              status: operational
              available: true
              min_amount: '1.00'
              max_amount: '1000000.00'
              fee:
                percent: '2'
                fixed_tiers: []
                fixed_currency: null
            refund:
              status: operational
              available: false
              min_amount: '1.00'
              max_amount: '1000000.00'
              fee: null
    Meta:
      type: object
      properties:
        request_id:
          type: string
          example: a4f8e2c1b3d97056
        timestamp:
          type: string
          format: date-time
          example: '2026-10-29T10:00:00+00:00'
        mode:
          type: string
          enum:
            - test
            - live
          example: live
    Operator:
      type: object
      properties:
        operator:
          type: string
          description: Code KemyPay stable de l'opérateur (marque et pays). Enregistrez-le.
          example: MTN_CMR
        name:
          type: string
          example: MTN
        currency:
          type: string
          example: XAF
        decimals:
          type: integer
          enum:
            - 0
            - 2
          description: >-
            Décimales acceptées dans les montants par cet opérateur. `0` veut
            dire montants entiers seulement.
          example: 0
        collection:
          $ref: '#/components/schemas/Operation'
        payout:
          $ref: '#/components/schemas/Operation'
        refund:
          $ref: '#/components/schemas/Operation'
    Error:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              example: VALIDATION_ERROR
            message:
              type: string
              example: Some fields of the payment are missing or invalid.
            details:
              type: object
              additionalProperties: true
              example:
                phone_number: >-
                  Required: the mobile money number with the country code,
                  digits only, for example 237670000000.
        meta:
          $ref: '#/components/schemas/Meta'
    Operation:
      type: object
      properties:
        status:
          type: string
          enum:
            - operational
            - delayed
            - closed
            - unavailable
          example: operational
        available:
          type: boolean
          description: >-
            `true` quand vous pouvez utiliser cette opération maintenant.
            Utilisez ce drapeau plutôt que `status`.
          example: true
        min_amount:
          type:
            - string
            - 'null'
          example: '1.00'
        max_amount:
          type:
            - string
            - 'null'
          example: '1000000.00'
        fee:
          oneOf:
            - $ref: '#/components/schemas/Fee'
            - type: 'null'
    Fee:
      type: object
      description: >
        Votre prix tout compris : `percent` du montant payé par le client, plus
        le montant fixe du palier correspondant (s'il

        y en a un). Un palier s'applique quand le montant est strictement
        inférieur à `below` ; `below: null` couvre tous les montants plus
        élevés.
      properties:
        percent:
          type: string
          example: '3.25'
        fixed_tiers:
          type: array
          items:
            type: object
            properties:
              below:
                type:
                  - string
                  - 'null'
                example: '101'
              fixed:
                type: string
                example: '0'
        fixed_currency:
          type:
            - string
            - 'null'
          example: null
  responses:
    CountryError:
      description: >-
        `VALIDATION_ERROR` (pas un code alpha-3) ou `COUNTRY_NOT_SUPPORTED` (pas
        disponible pour votre compte).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: false
            error:
              code: COUNTRY_NOT_SUPPORTED
              message: Mobile money is not available in GHA for your account.
            meta:
              request_id: a4f8e2c1b3d97056
              timestamp: '2026-10-29T10:00:00+00:00'
              mode: live
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Votre clé API secrète : `sk_live_…` (argent réel) ou `sk_test_…` (mode
        test).

````

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