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

# Devis des frais de transaction

> Calculer le montant des frais, le montant payable et le porteur des frais avant une transaction.

Cette route calcule les frais cote serveur avant de lancer une collection ou un disbursement.

Vous pouvez identifier le service avec `serviceId`, `service_id`, `provider`, `serviceCode` ou `service_code`.

Pour une application API directe, le porteur des frais vient de la configuration de l'application authentifiee ou du header interne `X-SP-Fee-Bearer`.

Pour un plugin, envoyez `origin: "PLUGIN"` et fournissez `feeBearer` dans le payload ou dans la query string. Le payload est prioritaire.

| Champ       | Role                                       |
| ----------- | ------------------------------------------ |
| `amount`    | Montant de base a facturer                 |
| `currency`  | Devise attendue par le service             |
| `operation` | `COLLECTION` par defaut, ou `DISBURSEMENT` |
| `provider`  | Code service, par exemple `mtn_cmr`        |
| `origin`    | `APPLICATION` par defaut, ou `PLUGIN`      |
| `feeBearer` | `CUSTOMER` ou `MERCHANT`                   |

Lorsque `feeBearer` vaut `CUSTOMER`, `payableAmount` inclut les frais. Lorsque `feeBearer` vaut `MERCHANT`, `merchantNetAmount` indique le montant net marchand apres frais.


## OpenAPI

````yaml POST /transactions/fees/quote
openapi: 3.1.0
info:
  title: Mysoleas API
  version: 3.0.0
  description: >-
    Nouvelle architecture Mysoleas: gateway metier, Mysoleas Identity Cloud et
    ecosysteme SoleasPay.
servers:
  - url: https://api.mysoleas.com
    description: Gateway Mysoleas
  - url: https://account.mysoleas.com
    description: Authentification Mysoleas
security:
  - spAuthToken: []
tags:
  - name: Identity Cloud
  - name: Plugin
  - name: Payment links
  - name: Subscriptions
  - name: Collections
  - name: Disbursements
  - name: Verification
  - name: Catalog
paths:
  /transactions/fees/quote:
    post:
      tags:
        - Collections
      summary: Calculer les frais de transaction
      description: >-
        Retourne un devis de frais calcule cote serveur. Pour une application
        API directe, feeBearer provient de la configuration de l application
        authentifiee. Pour un plugin, feeBearer peut venir du payload ou de la
        query string.
      parameters:
        - name: feeBearer
          in: query
          required: false
          schema:
            type: string
            enum:
              - CUSTOMER
              - MERCHANT
          description: >-
            Prioritaire seulement pour les flux plugin lorsque le payload ne
            fournit pas feeBearer.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - amount
                - currency
              properties:
                serviceId:
                  type: integer
                  example: 1
                service_id:
                  type: integer
                  example: 1
                provider:
                  type: string
                  example: mtn_cmr
                amount:
                  type: integer
                  example: 10000
                currency:
                  type: string
                  example: XAF
                origin:
                  type: string
                  enum:
                    - APPLICATION
                    - PLUGIN
                  example: APPLICATION
                plugin:
                  type: string
                  example: CHECKOUT
                feeBearer:
                  type: string
                  enum:
                    - CUSTOMER
                    - MERCHANT
                  example: CUSTOMER
                customerPaysFees:
                  type: boolean
                  deprecated: true
                  example: true
                operation:
                  type: string
                  enum:
                    - COLLECTION
                    - DISBURSEMENT
                  example: COLLECTION
      responses:
        '200':
          description: Devis de frais
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeeQuoteResponse'
        '400':
          description: Requete invalide
        '401':
          description: Non authentifie
        '404':
          description: Service introuvable
      security:
        - spAuthToken: []
components:
  schemas:
    FeeQuoteResponse:
      type: object
      properties:
        code:
          type: integer
          example: 200
        success:
          type: boolean
          example: true
        data:
          $ref: '#/components/schemas/FeeQuote'
        locale:
          type: string
          example: fr
        message:
          type: string
          example: fees_quote
    FeeQuote:
      type: object
      properties:
        baseAmount:
          type: integer
          example: 10000
        feeAmount:
          type: integer
          example: 350
        payableAmount:
          type: integer
          example: 10350
        merchantNetAmount:
          type: integer
          example: 9650
        currency:
          type: string
          example: XAF
        feeBearer:
          type: string
          nullable: true
          enum:
            - CUSTOMER
            - MERCHANT
          example: CUSTOMER
        countryCode:
          type: string
          example: CMR
        userTier:
          type: integer
          example: 5
        source:
          type: string
          enum:
            - APPLICATION_CONFIGURATION
            - PLUGIN_PAYLOAD
            - PLUGIN_QUERY
            - HISTORICAL_DEFAULT
          example: APPLICATION_CONFIGURATION
  securitySchemes:
    spAuthToken:
      type: apiKey
      in: header
      name: x-sp-auth-token
      description: >-
        JWT Bearer emis par Mysoleas Identity Cloud. Format: Bearer
        <access_token>.

````