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

# Définir un réglage

> Crée une ligne merchant-config pour l'une des 3 clés self-service

<Warning>
  La contrainte d'unicité (une seule ligne par clé et par marchand) n'est pas gérée proprement côté serveur : reposter une clé déjà existante renvoie une erreur serveur générique au lieu d'un message clair. Ne repostez jamais une clé existante — récupérez-la d'abord via [GET](/api-reference/merchant/configs-list), puis modifiez-la avec [PATCH](/api-reference/merchant/config-update).
</Warning>


## OpenAPI

````yaml api-reference/openapi.json POST /merchant-configs/
openapi: 3.1.0
info:
  title: SasPay API
  description: >-
    API d'encaissement et de paiement mobile money/carte pour l'Afrique de
    l'Ouest et du Centre. Toutes les routes marchand nécessitent une clé API
    secrète (header Authorization: Bearer sk_...).
  version: 1.0.0
servers:
  - url: https://api.saspay.me/api/v1
security:
  - bearerAuth: []
paths:
  /merchant-configs/:
    post:
      tags:
        - Marchand
      summary: Définir un réglage
      description: >-
        Limité aux 3 clés self-service (DEFAULT_FEE_CHARGE_MODE,
        DEFAULT_FEE_CHARGE_MODE_OUT, ALLOW_CLIENT_OVERRIDE) — les clés
        admin-only sont rejetées. Ne repostez jamais une clé déjà existante pour
        ce marchand (contrainte d'unicité mal gérée côté serveur) : récupérez-la
        d'abord via GET, puis modifiez-la avec PATCH.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - key
                - type
              properties:
                key:
                  type: string
                  enum:
                    - DEFAULT_FEE_CHARGE_MODE
                    - DEFAULT_FEE_CHARGE_MODE_OUT
                    - ALLOW_CLIENT_OVERRIDE
                type:
                  type: string
                  enum:
                    - boolean
                    - text
                    - number
                    - enum
                value:
                  type: string
                description:
                  type: string
            example:
              key: ALLOW_CLIENT_OVERRIDE
              type: boolean
              value: 'true'
              description: Autoriser le client à choisir qui paie les frais
      responses:
        '201':
          description: Réglage créé
          content:
            application/json:
              example:
                id: c1d2e3f4-5a6b-4c7d-8e9f-0a1b2c3d4e5f
                merchant: 8a2f3c10-9b4e-4a1d-8c3f-1e2d3c4b5a6f
                key: ALLOW_CLIENT_OVERRIDE
                value: 'true'
                type: boolean
                description: Autoriser le client à choisir qui paie les frais
                created_at: '2026-07-01T09:00:00Z'
                updated_at: '2026-07-01T09:00:00Z'
        '400':
          description: Clé inconnue du registre CONFIG_REGISTRY
        '403':
          description: >-
            Clé admin-only (ex. PAYOUT_ENABLED) — non modifiable via cet
            endpoint self-service
        '500':
          description: >-
            Une ligne existe déjà pour cette clé et ce marchand — contrainte
            d'unicité non gérée proprement, utilisez PATCH sur la ligne
            existante au lieu de reposter
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: sk_live_... / sk_test_...
      description: >-
        Clé API secrète du marchand — header Authorization: Bearer sk_live_xxx
        (ou sk_test_xxx en environnement de test).

````