> ## 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.

# Créer un service

> Crée un service : une application, un site ou une activité qui encaisse séparément, avec ses propres
soldes. Le service commence en `pending_review` pendant que notre équipe le vérifie. En mode test (`sk_test_`), vous pouvez
encaisser tout de suite ; en production, le service doit être `active`.

**Le `webhook_secret` n'est renvoyé que dans cette réponse.** Enregistrez-le : il sert à vérifier nos webhooks.




## OpenAPI

````yaml fr/openapi.yaml POST /mobile-money/services
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/services:
    post:
      tags:
        - Services
      summary: Créer un service
      description: >
        Crée un service : une application, un site ou une activité qui encaisse
        séparément, avec ses propres

        soldes. Le service commence en `pending_review` pendant que notre équipe
        le vérifie. En mode test (`sk_test_`), vous pouvez

        encaisser tout de suite ; en production, le service doit être `active`.


        **Le `webhook_secret` n'est renvoyé que dans cette réponse.**
        Enregistrez-le : il sert à vérifier nos webhooks.
      operationId: createService
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateServiceRequest'
      responses:
        '201':
          description: Service créé, en attente de validation
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    $ref: '#/components/schemas/ServiceWithSecret'
                  meta:
                    $ref: '#/components/schemas/Meta'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  schemas:
    CreateServiceRequest:
      type: object
      required:
        - name
        - category
        - description
        - url
        - support_email
        - support_phone
        - webhook_url
      properties:
        name:
          type: string
          description: 2 à 60 caractères, unique parmi vos services.
          example: Afroyamo
        category:
          type: string
          description: Un `code` de `GET /mobile-money/categories`.
          example: dating
        description:
          type: string
          description: 20 à 1 000 caractères. Ce que vous vendez et à qui.
          example: >-
            Dating app for the African diaspora. Premium subscriptions paid by
            mobile money.
        url:
          type: string
          format: uri
          description: L'adresse publique de votre site ou de votre application.
          example: https://afroyamo.com
        support_email:
          type: string
          format: email
          description: L'adresse où vos clients peuvent vous joindre.
          example: support@afroyamo.com
        support_phone:
          type: string
          description: Format international avec l'indicatif du pays.
          example: '+237670000000'
        webhook_url:
          type: string
          format: uri
          description: >-
            Adresse **https** de votre serveur qui reçoit les résultats des
            paiements.
          example: https://api.afroyamo.com/kemypay/webhooks
        callback_url:
          type: string
          format: uri
          description: Facultatif. L'adresse où votre client est renvoyé après avoir payé.
          example: https://afroyamo.com/payment/done
        fee_bearer:
          type: string
          enum:
            - merchant
            - customer
          default: merchant
          description: >-
            Qui paie les frais : `merchant` (déduits de ce que vous recevez) ou
            `customer` (ajoutés au prix).
    ServiceWithSecret:
      allOf:
        - $ref: '#/components/schemas/Service'
        - type: object
          properties:
            webhook_secret:
              type: string
              description: >-
                Montré seulement maintenant. Sert à vérifier la signature de nos
                webhooks.
              example: >-
                whsec_5f2c0a9e7b1d4c3a8e6f0b2d9c7a1e4f5b8d3c6a9e2f1b4d7c0a3e6f9b2d5c8a
    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
    Service:
      type: object
      properties:
        code:
          type: string
          format: uuid
          example: 019a8f2e-4c1b-7d3a-9e55-2b6f0c1d8a47
        name:
          type: string
          example: Afroyamo
        category:
          type: object
          properties:
            code:
              type: string
              example: dating
            name:
              type: string
              example: Dating & social apps
        description:
          type: string
          example: >-
            Dating app for the African diaspora. Premium subscriptions paid by
            mobile money.
        url:
          type: string
          example: https://afroyamo.com
        support_email:
          type: string
          example: support@afroyamo.com
        support_phone:
          type: string
          example: '+237670000000'
        status:
          type: string
          enum:
            - pending_review
            - active
            - rejected
            - suspended
            - disabled
          example: pending_review
        fee_bearer:
          type: string
          enum:
            - merchant
            - customer
          example: merchant
        webhook_url:
          type: string
          example: https://api.afroyamo.com/kemypay/webhooks
        callback_url:
          type:
            - string
            - 'null'
          example: null
        review_reason:
          type:
            - string
            - 'null'
          description: Pourquoi le service a été refusé ou suspendu.
          example: null
        created_at:
          type: string
          format: date-time
          example: '2026-10-29T10:00:00+00:00'
        reviewed_at:
          type:
            - string
            - 'null'
          format: date-time
          example: null
    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'
  responses:
    ValidationError:
      description: >-
        `VALIDATION_ERROR` : un ou plusieurs champs manquent ou sont invalides.
        `details` explique chaque champ.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  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.