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

# Ajouter un compte de reversement

> Ajoute un compte **mobile money** (`orange`, `moov`, `mtn`, `wave`) ou **bancaire** (`bank`).
Les champs requis dépendent du `type`.




## OpenAPI

````yaml POST /web-merchant/payout-accounts
openapi: 3.1.0
info:
  title: Djonanko Pay API
  version: 1.0.0
  description: >
    API de la passerelle de paiement mobile money **Djonanko Pay**.


    Deux modes d'authentification coexistent :


    - **Clé API** (`x-api-key` + `x-api-secret`) — pour l'intégration serveur à
    serveur :
      création de liens de paiement et de QR codes.
    - **Jeton marchand** (`authenticationtoken`) — un JWT obtenu via `POST
    /user/login-merchant`,
      utilisé par le dashboard marchand pour tout le reste (statut, solde, reversements, rapports…).

    Toutes les réponses sont en JSON. Les montants sont exprimés en **FCFA (XOF
    / XAF)** sans décimales.
  contact:
    name: Support Djonanko
    url: https://www.djonanko.ci/#contact
servers:
  - url: https://apidjonanko.tech
    description: Production
security: []
tags:
  - name: Authentification
  - name: Paiements
  - name: Solde & statistiques
  - name: Webhooks
  - name: Reversements
  - name: Sécurité
  - name: Rapports
  - name: Compte marchand
paths:
  /web-merchant/payout-accounts:
    post:
      tags:
        - Reversements
      summary: Ajouter un compte de reversement
      description: >
        Ajoute un compte **mobile money** (`orange`, `moov`, `mtn`, `wave`) ou
        **bancaire** (`bank`).

        Les champs requis dépendent du `type`.
      operationId: createPayoutAccount
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePayoutAccountRequest'
            examples:
              mobile:
                summary: Mobile money
                value:
                  merchant_reference: beautyshop
                  type: wave
                  isPrimary: true
                  phoneNumber: '+2250700000000'
                  country: CI
              banque:
                summary: Compte bancaire
                value:
                  merchant_reference: beautyshop
                  type: bank
                  beneficiaryName: SARL Beauty Shop
                  bankId: 6f1c2b3a-0000-4000-8000-000000000000
                  branchCode: '01001'
                  accountNumber: '012345678901'
                  ribKey: '45'
                  swiftCode: SGBCCIABXXX
      responses:
        '201':
          description: Compte créé.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutAccount'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
        - MerchantToken: []
components:
  schemas:
    CreatePayoutAccountRequest:
      type: object
      required:
        - merchant_reference
        - type
      properties:
        merchant_reference:
          type: string
          example: beautyshop
        type:
          $ref: '#/components/schemas/PayoutAccountType'
        isPrimary:
          type: boolean
          description: Définir ce compte comme moyen principal de reversement.
          example: true
        phoneNumber:
          type: string
          description: '**Mobile money uniquement.** Numéro qui recevra les fonds.'
          example: '+2250700000000'
        country:
          type: string
          description: '**Mobile money uniquement.** Code pays (CI, BF, ML, CM).'
          example: CI
        beneficiaryName:
          type: string
          description: '**Banque uniquement.** Nom du titulaire du compte.'
          example: SARL Beauty Shop
        bankId:
          type: string
          description: >-
            **Banque uniquement.** Identifiant de la banque, obtenu via `GET
            /banks/active`.
        branchCode:
          type: string
          description: '**Banque uniquement.** Code agence.'
          example: '01001'
        accountNumber:
          type: string
          description: '**Banque uniquement.** Numéro de compte.'
          example: '012345678901'
        ribKey:
          type: string
          description: '**Banque uniquement.** Clé RIB.'
          example: '45'
        swiftCode:
          type: string
          pattern: ^[A-Z0-9]{8}([A-Z0-9]{3})?$
          description: '**Banque uniquement.** Code SWIFT / BIC, 8 ou 11 caractères.'
          example: SGBCCIABXXX
    PayoutAccount:
      type: object
      properties:
        id:
          type: string
          format: uuid
        merchantId:
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/PayoutAccountType'
        isPrimary:
          type: boolean
          description: >-
            Le compte principal reçoit par défaut toutes les demandes de
            reversement.
        phoneNumber:
          type: string
          nullable: true
          example: '+2250700000000'
        country:
          type: string
          nullable: true
          example: CI
        beneficiaryName:
          type: string
          nullable: true
        bankId:
          type: string
          nullable: true
        bankName:
          type: string
          nullable: true
        bankCode:
          type: string
          nullable: true
        branchCode:
          type: string
          nullable: true
        accountNumber:
          type: string
          nullable: true
        ribKey:
          type: string
          nullable: true
        swiftCode:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    PayoutAccountType:
      type: string
      enum:
        - orange
        - moov
        - mtn
        - wave
        - bank
    Error:
      type: object
      properties:
        statusCode:
          type: integer
          example: 401
        message:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          example: Invalid API credentials
        error:
          type: string
          example: Unauthorized
  responses:
    BadRequest:
      description: Requête invalide.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Identifiants manquants ou invalides.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            statusCode: 401
            message: Invalid API credentials
            error: Unauthorized
  securitySchemes:
    MerchantToken:
      type: apiKey
      in: header
      name: authenticationtoken
      description: >-
        JWT obtenu via `POST /user/login-merchant`. À passer tel quel, **sans**
        préfixe `Bearer`.

````