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

# Relevé de portefeuille

> Chaque mouvement, du plus récent au plus ancien. Chaque ligne porte le solde après écriture (`balanceAfter`), ce qui permet un rapprochement ligne à ligne avec votre comptabilité.




## OpenAPI

````yaml /openapi-guichet.yaml get /merchants/me/wallet/statement
openapi: 3.1.0
info:
  title: Djonanko Guichet API
  version: 1.0.0
  description: >
    API d'agrégation mobile money de Djonanko. Elle permet à une entreprise

    partenaire d'**encaisser** (`cash-in`) et de **transférer** (`cash-out`) sur
    les

    réseaux mobile money d'Afrique de l'Ouest et du Centre, directement depuis
    ses

    propres serveurs.


    Contrairement à l'API Djonanko Pay, le Guichet ne passe **ni par un lien de

    paiement ni par une page hébergée** : vous appelez l'API, le client est
    sollicité

    sur son téléphone, et vous recevez l'issue par notification signée.


    ### Ce qu'il faut retenir avant de commencer


    - **Authentification** : `x-api-key` + `x-api-secret` sur chaque appel.

    - **Montants entiers** : le XOF, le XAF et le GNF n'ont pas de sous-unité.
      `5000` vaut 5 000 FCFA. Aucune décimale n'est acceptée.
    - **Idempotence obligatoire** : l'en-tête `Idempotency-Key` est exigé sur
      `POST /cashin` et `POST /cashout`.
    - **Un portefeuille unique** par compte : les encaissements le créditent,
    les
      transferts le débitent.
    - **Notifications signées** : vérifiez l'en-tête `Djonanko-Signature` avant
    de
      traiter.

    Toutes les réponses sont en JSON. Chaque réponse porte un en-tête

    `x-request-id` à citer dans vos demandes de support.
  contact:
    name: Support Djonanko
    url: https://www.djonanko.ci/#contact
servers:
  - url: https://guichet.apidjonanko.tech/v1
    description: Production
security:
  - ApiKey: []
    ApiSecret: []
tags:
  - name: Encaissement
    description: Débiter un compte mobile money vers votre portefeuille.
  - name: Transfert
    description: Créditer un compte mobile money depuis votre portefeuille.
  - name: Opérations
    description: Consulter l'état et l'historique de vos opérations.
  - name: Portefeuille
    description: Solde et relevé des mouvements.
  - name: Compte
    description: Création de compte, profil, clés d'API.
  - name: Sécurité
    description: Adresses IP autorisées.
  - name: Notifications
    description: Configuration, supervision et rejeu des notifications sortantes.
paths:
  /merchants/me/wallet/statement:
    get:
      tags:
        - Portefeuille
      summary: Relevé de portefeuille
      description: >
        Chaque mouvement, du plus récent au plus ancien. Chaque ligne porte le
        solde après écriture (`balanceAfter`), ce qui permet un rapprochement
        ligne à ligne avec votre comptabilité.
      operationId: getStatement
      parameters:
        - name: direction
          in: query
          schema:
            type: string
            enum:
              - CREDIT
              - DEBIT
              - HOLD
              - RELEASE
        - name: kind
          in: query
          schema:
            type: string
            enum:
              - CASHIN_CREDIT
              - CASHIN_FEE
              - CASHOUT_HOLD
              - CASHOUT_DEBIT
              - CASHOUT_FEE
              - CASHOUT_RELEASE
              - REVERSAL_CREDIT
              - REVERSAL_DEBIT
              - ADJUSTMENT_CREDIT
              - ADJUSTMENT_DEBIT
        - name: operationReference
          in: query
          description: Pour isoler les mouvements d'une opération donnée.
          schema:
            type: string
            maxLength: 48
        - name: from
          in: query
          schema:
            type: string
            format: date-time
        - name: to
          in: query
          schema:
            type: string
            format: date-time
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: Page de relevé.
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  limit:
                    type: integer
                  offset:
                    type: integer
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/LedgerEntry'
              example:
                total: 1842
                limit: 50
                offset: 0
                items:
                  - id: 3b8e1f2a-9c4d-4e6f-8a1b-2c3d4e5f6a7b
                    sequence: 1842
                    direction: DEBIT
                    kind: CASHOUT_FEE
                    amount: 500
                    currency: XOF
                    balanceAfter: 474500
                    reservedAfter: 0
                    operationReference: GUI-CO-20261001-4F7K2M9Q
                    description: Commission sur transfert GUI-CO-20261001-4F7K2M9Q
                    createdAt: '2026-10-01T11:04:02.000Z'
                  - id: 2a7d0e1b-8b3c-4d5e-9f0a-1b2c3d4e5f6a
                    sequence: 1841
                    direction: DEBIT
                    kind: CASHOUT_DEBIT
                    amount: 25000
                    currency: XOF
                    balanceAfter: 475000
                    reservedAfter: 0
                    operationReference: GUI-CO-20261001-4F7K2M9Q
                    description: Transfert GUI-CO-20261001-4F7K2M9Q
                    createdAt: '2026-10-01T11:04:02.000Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    Limit:
      name: limit
      in: query
      required: false
      description: Nombre maximum d'éléments renvoyés.
      schema:
        type: integer
        minimum: 1
        maximum: 200
        default: 50
    Offset:
      name: offset
      in: query
      required: false
      description: Nombre d'éléments à ignorer avant de commencer la page.
      schema:
        type: integer
        minimum: 0
        default: 0
  schemas:
    LedgerEntry:
      type: object
      description: >
        Ligne de relevé. Le relevé est en ajout seul : une ligne posée n'est
        jamais modifiée. Une correction prend la forme d'une écriture inverse.
      properties:
        id:
          type: string
          format: uuid
        sequence:
          type: integer
          description: >
            Rang de l'écriture dans votre relevé. Strictement croissant : c'est
            le bon critère de tri, pas l'horodatage.
          example: 1842
        direction:
          type: string
          description: >
            - `CREDIT` — le solde augmente

            - `DEBIT` — le solde diminue

            - `HOLD` — immobilisation : le solde ne bouge pas, le disponible
            diminue

            - `RELEASE` — levée d'immobilisation
          enum:
            - CREDIT
            - DEBIT
            - HOLD
            - RELEASE
        kind:
          type: string
          description: |
            - `CASHIN_CREDIT` — encaissement confirmé
            - `CASHIN_FEE` — commission sur encaissement
            - `CASHOUT_HOLD` — immobilisation à la demande de transfert
            - `CASHOUT_DEBIT` — transfert exécuté
            - `CASHOUT_FEE` — commission sur transfert
            - `CASHOUT_RELEASE` — levée d'immobilisation
            - `REVERSAL_CREDIT` / `REVERSAL_DEBIT` — contre-passation
            - `ADJUSTMENT_CREDIT` / `ADJUSTMENT_DEBIT` — régularisation
          enum:
            - CASHIN_CREDIT
            - CASHIN_FEE
            - CASHOUT_HOLD
            - CASHOUT_DEBIT
            - CASHOUT_FEE
            - CASHOUT_RELEASE
            - REVERSAL_CREDIT
            - REVERSAL_DEBIT
            - ADJUSTMENT_CREDIT
            - ADJUSTMENT_DEBIT
        amount:
          type: integer
          description: Toujours positif. Le sens est porté par `direction`.
          example: 4900
        currency:
          $ref: '#/components/schemas/Currency'
        balanceAfter:
          type: integer
          description: Solde après cette écriture — permet un rapprochement ligne à ligne.
          example: 504900
        reservedAfter:
          type: integer
          example: 20000
        operationReference:
          type:
            - string
            - 'null'
          example: GUI-CI-20261001-7K2M9QX4
        description:
          type:
            - string
            - 'null'
        createdAt:
          type: string
          format: date-time
    Currency:
      type: string
      description: >
        Devise. Aucune n'a de sous-unité : les montants sont toujours des
        entiers.
      enum:
        - XOF
        - XAF
        - GNF
      example: XOF
    Error:
      type: object
      description: Forme de toutes les réponses d'erreur.
      properties:
        success:
          type: boolean
          enum:
            - false
        error:
          type: object
          properties:
            code:
              type: string
              description: >
                Code stable. **Branchez votre logique dessus**, jamais sur
                `message`, qui peut être reformulé.
              example: INSUFFICIENT_BALANCE
            message:
              type: string
              example: Le solde disponible de votre portefeuille est insuffisant.
            details:
              type:
                - object
                - 'null'
              description: Contexte complémentaire, variable selon le code.
              additionalProperties: true
        requestId:
          type: string
          description: Également renvoyé dans l'en-tête `x-request-id`.
          example: 9f1c2b7e-4a5d-4c8f-b0a1-e2d3c4b5a697
        timestamp:
          type: string
          format: date-time
  responses:
    Unauthorized:
      description: Identifiants absents ou invalides.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: false
            error:
              code: INVALID_CREDENTIALS
              message: Identifiants API invalides.
            requestId: 9f1c2b7e-4a5d-4c8f-b0a1-e2d3c4b5a697
            timestamp: '2026-10-01T10:12:04.000Z'
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Votre clé publique, préfixée `gk_live_` (ou `gk_test_`).
    ApiSecret:
      type: apiKey
      in: header
      name: x-api-secret
      description: >
        Votre secret, préfixé `gs_live_` (ou `gs_test_`). Affiché une seule
        fois, à l'émission de la clé. Il ne doit jamais quitter vos serveurs.

````

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