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

# Calculer les frais d'un paiement

> Ce qu'un paiement donnerait pour votre compte, sans rien créer ni débiter : le montant débité au client (dans la devise de l'opérateur pour un pays mobile money), les frais et ce qui arrive sur votre solde. Le calcul est celui d'un vrai paiement.

Annoncez le prix exact sur votre site avant d'envoyer le client payer. Le calcul est celui d'un vrai paiement : si vous faites payer les frais à vos clients, ils sont ajoutés au montant ; pour un pays mobile money qui utilise une autre devise, le montant est converti au taux du jour.

Rien n'est créé ni débité. Un devis n'engage pas : un taux de conversion peut changer entre le devis et le paiement.


## OpenAPI

````yaml POST /api/v1/fees/quote
openapi: 3.1.0
info:
  title: API Mercy Pay
  version: 1.0.0
  description: >-
    Encaissez par mobile money et par carte, facturez en récurrent et versez vos
    fonds. Les montants sont des entiers en unités mineures. Chaque réponse
    porte un en-tête `Request-Id`.
servers:
  - url: https://mercy-pay.com
    description: >-
      Production. La clé choisit l'environnement : `mp_sandbox_…` ou
      `mp_live_…`.
security:
  - bearerAuth: []
tags:
  - name: Compte
  - name: Sessions de paiement
  - name: Paiements
  - name: Remboursements
    description: Rendre un paiement au client, en entier.
  - name: Liens de paiement
  - name: Plans
  - name: Abonnements
  - name: Clients
  - name: Factures
  - name: Espace client
  - name: Soldes
  - name: Retraits
  - name: État des opérateurs
  - name: Événements
    description: Tout ce qui s'est passé sur le compte, envoyé ou non à un endpoint.
  - name: Endpoints de webhook
    description: Les URL de votre serveur qui reçoivent les événements.
paths:
  /api/v1/fees/quote:
    post:
      tags:
        - Compte
      summary: Calculer les frais d'un paiement
      description: >-
        Ce qu'un paiement donnerait pour votre compte, sans rien créer ni
        débiter : le montant débité au client (dans la devise de l'opérateur
        pour un pays mobile money), les frais et ce qui arrive sur votre solde.
        Le calcul est celui d'un vrai paiement.
      operationId: createFeeQuote
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - amount
                - currency
                - payment_method
              properties:
                amount:
                  type: integer
                  minimum: 1
                  description: Le prix, en unités mineures
                currency:
                  type: string
                  description: Devise du prix
                payment_method:
                  type: string
                  enum:
                    - mobile_money
                    - card
                country:
                  type: string
                  description: >-
                    Pays mobile money du client. Le montant est alors converti
                    dans sa devise si besoin. Interdit pour une carte.
            example:
              amount: 10000
              currency: XAF
              payment_method: mobile_money
              country: CMR
      responses:
        '200':
          description: Le devis
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      object:
                        type: string
                        enum:
                          - fee_quote
                      amount:
                        type: integer
                      currency:
                        type: string
                      payment_method:
                        type: string
                        enum:
                          - mobile_money
                          - card
                      country:
                        type:
                          - string
                          - 'null'
                      fee_paid_by:
                        type: string
                        enum:
                          - merchant
                          - customer
                      amount_customer_pays:
                        type: integer
                        description: >-
                          Ce que le client paie, en unités mineures de
                          `charged_currency`
                      charged_currency:
                        type: string
                      fee_amount:
                        type: integer
                      net_amount:
                        type: integer
                        description: Ce qui arrive sur votre solde
                      livemode:
                        type: boolean
              example:
                data:
                  object: fee_quote
                  amount: 10000
                  currency: XAF
                  payment_method: mobile_money
                  country: CMR
                  fee_paid_by: merchant
                  amount_customer_pays: 10000
                  charged_currency: XAF
                  fee_amount: 350
                  net_amount: 9650
                  livemode: false
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: >-
            Paramètres invalides : pays fermé, pays donné pour une carte, ou
            aucun taux de conversion.
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  responses:
    Unauthorized:
      description: Clé absente, invalide ou révoquée
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: authentication_error
              code: api_key_invalid
              message: Clé API invalide.
              param: null
              doc_url: https://docs.mercy-pay.com/developers/errors#api_key_invalid
              request_id: req_01jc8x4m2v7t9qk3n5w6y8z0ab
    RateLimited:
      description: Plus de 60 requêtes par minute avec cette clé
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: rate_limit_error
              code: rate_limited
              message: Trop de requêtes.
              param: null
              doc_url: https://docs.mercy-pay.com/developers/errors#rate_limited
              request_id: req_01jc8x4m2v7t9qk3n5w6y8z0ab
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - authentication_error
                - invalid_request_error
                - idempotency_error
                - payment_error
                - rate_limit_error
                - api_error
            code:
              type: string
              description: Code stable, à tester dans votre code
            message:
              type: string
              description: Explication en français, pour un humain
            param:
              type:
                - string
                - 'null'
              description: Le premier champ en cause
            doc_url:
              type: string
              description: Explication de ce code
            request_id:
              type: string
              description: >-
                Identifiant de la requête (`req_…`), aussi dans l'en-tête
                `Request-Id`
            errors:
              type: object
              additionalProperties:
                type: array
                items:
                  type: string
              description: Détail par champ refusé, sur une erreur `422`
      required:
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Votre clé API. Utilisez une clé sandbox (`mp_sandbox_…`) pour essayer :
        aucun argent réel ne bouge.

````

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