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

# Create a payout



## OpenAPI

````yaml /openapi.json post /v1/payouts/
openapi: 3.1.0
info:
  title: KryptaPay API
  description: >-
    API B2B de paiements numériques pour l'Afrique francophone.


    ## Authentification

    Deux méthodes sont supportées :

    - **Session utilisateur** : JWT signé dans un cookie `kp_token` (HttpOnly,
    SameSite=Lax) — utilisé par le tableau de bord.

    - **Clé API** : header `Authorization: Bearer kp_<env>_xxx` — utilisé par
    les intégrations serveur.


    Les endpoints sensibles exigent l'une ou l'autre. Les écritures monétaires
    acceptent un header `Idempotency-Key` pour la dé-duplication.


    ## Enveloppe de réponse

    Toutes les réponses suivent le format `{ ok: boolean, data?: T, error?: {
    code, message, details? } }`.


    ## Webhooks sortants

    Signature HMAC SHA-256 dans le header `X-KryptaPay-Signature`. Le secret est
    défini à la création de l'endpoint.
  version: 1.0.0
  contact:
    name: KryptaPay Support
    email: support@kryptapay.test
    url: https://kryptapay.test
  license:
    name: Proprietary
servers:
  - url: http://localhost
    description: Local dev
security:
  - bearerAuth: []
  - cookieAuth: []
tags:
  - name: wallets
    description: Portefeuilles fiat / stablecoin / IBAN virtuels
  - name: transactions
    description: Historique unifié des mouvements
  - name: payouts
    description: Versements Mobile Money / banque / stablecoin
  - name: payins
    description: Encaissements et liens de paiement
  - name: fx
    description: Cotations et conversions multi-devises
  - name: counterparties
    description: Bénéficiaires et tiers
  - name: invoices
    description: Factures + paiement public + reçus
  - name: status
    description: Statut public des services
paths:
  /v1/payouts/:
    post:
      tags:
        - payouts
      summary: Create a payout
      parameters:
        - schema:
            type: string
            maxLength: 128
          in: header
          name: idempotency-key
          required: false
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: string
                  pattern: ^\d+(\.\d{1,8})?$
                  description: >-
                    Decimal amount with up to 8 fractional digits, e.g. "1500"
                    or "1500.75"
                currency:
                  type: string
                  enum:
                    - XOF
                    - XAF
                    - NGN
                    - GHS
                    - CDF
                    - EUR
                    - USD
                    - USDC
                    - USDT
                network:
                  type: string
                  enum:
                    - MTN_BJ
                    - MTN_CI
                    - MTN_CM
                    - ORANGE_CI
                    - ORANGE_SN
                    - ORANGE_ML
                    - ORANGE_BF
                    - ORANGE_CM
                    - MOOV_BJ
                    - MOOV_TG
                    - MOOV_CI
                    - MOOV_BF
                    - WAVE_CI
                    - WAVE_SN
                    - FREE_SN
                    - TMONEY_TG
                    - MOBICASH_ML
                    - MOBICASH_BF
                    - DJAMO_CI
                    - MIXX_SN
                    - MTN_CG
                    - AIRTEL_CG
                    - ORANGE_CD
                    - AIRTEL_CD
                    - VODACOM_CD
                    - AFRICELL_CD
                    - AIRTEL_GA
                    - MOMO_NG
                    - AIRTEL_NG
                    - MTN_GH
                    - VODAFONE_GH
                    - AIRTELTIGO_GH
                    - BANK_XOF
                    - BANK_XAF
                    - BANK_NGN
                    - BANK_GHS
                    - BANK_CDF
                    - BANK_EUR
                    - BANK_USD
                    - ETH
                    - POLYGON
                    - TRON
                recipient:
                  type: object
                  properties:
                    msisdn:
                      type: string
                      minLength: 8
                      maxLength: 20
                    iban:
                      type: string
                      minLength: 15
                      maxLength: 34
                    address:
                      type: string
                      minLength: 20
                      maxLength: 80
                    chain:
                      type: string
                      enum:
                        - MTN_BJ
                        - MTN_CI
                        - MTN_CM
                        - ORANGE_CI
                        - ORANGE_SN
                        - ORANGE_ML
                        - ORANGE_BF
                        - ORANGE_CM
                        - MOOV_BJ
                        - MOOV_TG
                        - MOOV_CI
                        - MOOV_BF
                        - WAVE_CI
                        - WAVE_SN
                        - FREE_SN
                        - TMONEY_TG
                        - MOBICASH_ML
                        - MOBICASH_BF
                        - DJAMO_CI
                        - MIXX_SN
                        - MTN_CG
                        - AIRTEL_CG
                        - ORANGE_CD
                        - AIRTEL_CD
                        - VODACOM_CD
                        - AFRICELL_CD
                        - AIRTEL_GA
                        - MOMO_NG
                        - AIRTEL_NG
                        - MTN_GH
                        - VODAFONE_GH
                        - AIRTELTIGO_GH
                        - BANK_XOF
                        - BANK_XAF
                        - BANK_NGN
                        - BANK_GHS
                        - BANK_CDF
                        - BANK_EUR
                        - BANK_USD
                        - ETH
                        - POLYGON
                        - TRON
                    fullName:
                      type: string
                      maxLength: 180
                    customerId:
                      type: string
                      maxLength: 120
                    bankName:
                      type: string
                      maxLength: 120
                    bankId:
                      anyOf:
                        - type: string
                        - type: number
                    accountNumber:
                      type: string
                      maxLength: 64
                  additionalProperties: false
                description:
                  type: string
                  maxLength: 500
                category:
                  type: string
                  maxLength: 50
                counterpartyId:
                  type: string
                paymentPin:
                  type: string
                  minLength: 6
                  maxLength: 6
                  pattern: ^\d{6}$
                totp:
                  type: string
                  minLength: 6
                  maxLength: 6
                  pattern: ^\d{6}$
              required:
                - amount
                - currency
                - network
                - recipient
              additionalProperties: false
        required: true
      responses:
        '201':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    enum:
                      - true
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                      reference:
                        type: string
                      status:
                        type: string
                        enum:
                          - PENDING
                          - PROCESSING
                          - COMPLETED
                          - FAILED
                          - CANCELLED
                          - REFUNDED
                      amount:
                        type: string
                        pattern: ^\d+(\.\d{1,8})?$
                        description: >-
                          Decimal amount with up to 8 fractional digits, e.g.
                          "1500" or "1500.75"
                      currency:
                        type: string
                        enum:
                          - XOF
                          - XAF
                          - NGN
                          - GHS
                          - CDF
                          - EUR
                          - USD
                          - USDC
                          - USDT
                      fee:
                        type: string
                        pattern: ^\d+(\.\d{1,8})?$
                        description: >-
                          Decimal amount with up to 8 fractional digits, e.g.
                          "1500" or "1500.75"
                      network:
                        type: string
                        enum:
                          - MTN_BJ
                          - MTN_CI
                          - MTN_CM
                          - ORANGE_CI
                          - ORANGE_SN
                          - ORANGE_ML
                          - ORANGE_BF
                          - ORANGE_CM
                          - MOOV_BJ
                          - MOOV_TG
                          - MOOV_CI
                          - MOOV_BF
                          - WAVE_CI
                          - WAVE_SN
                          - FREE_SN
                          - TMONEY_TG
                          - MOBICASH_ML
                          - MOBICASH_BF
                          - DJAMO_CI
                          - MIXX_SN
                          - MTN_CG
                          - AIRTEL_CG
                          - ORANGE_CD
                          - AIRTEL_CD
                          - VODACOM_CD
                          - AFRICELL_CD
                          - AIRTEL_GA
                          - MOMO_NG
                          - AIRTEL_NG
                          - MTN_GH
                          - VODAFONE_GH
                          - AIRTELTIGO_GH
                          - BANK_XOF
                          - BANK_XAF
                          - BANK_NGN
                          - BANK_GHS
                          - BANK_CDF
                          - BANK_EUR
                          - BANK_USD
                          - ETH
                          - POLYGON
                          - TRON
                        nullable: true
                      provider:
                        type: string
                        enum:
                          - BRIDGE
                          - PAL_AFRICA
                          - MBIYOPAY
                          - INTERNAL
                          - PAYDUNYA
                          - PAYFONTE
                        nullable: true
                      description:
                        type: string
                        nullable: true
                      recipient:
                        type: object
                        properties:
                          msisdn:
                            type: string
                            nullable: true
                          iban:
                            type: string
                            nullable: true
                          address:
                            type: string
                            nullable: true
                          chain:
                            type: string
                            enum:
                              - MTN_BJ
                              - MTN_CI
                              - MTN_CM
                              - ORANGE_CI
                              - ORANGE_SN
                              - ORANGE_ML
                              - ORANGE_BF
                              - ORANGE_CM
                              - MOOV_BJ
                              - MOOV_TG
                              - MOOV_CI
                              - MOOV_BF
                              - WAVE_CI
                              - WAVE_SN
                              - FREE_SN
                              - TMONEY_TG
                              - MOBICASH_ML
                              - MOBICASH_BF
                              - DJAMO_CI
                              - MIXX_SN
                              - MTN_CG
                              - AIRTEL_CG
                              - ORANGE_CD
                              - AIRTEL_CD
                              - VODACOM_CD
                              - AFRICELL_CD
                              - AIRTEL_GA
                              - MOMO_NG
                              - AIRTEL_NG
                              - MTN_GH
                              - VODAFONE_GH
                              - AIRTELTIGO_GH
                              - BANK_XOF
                              - BANK_XAF
                              - BANK_NGN
                              - BANK_GHS
                              - BANK_CDF
                              - BANK_EUR
                              - BANK_USD
                              - ETH
                              - POLYGON
                              - TRON
                            nullable: true
                        required:
                          - msisdn
                          - iban
                          - address
                          - chain
                        additionalProperties: false
                      providerRef:
                        type: string
                        nullable: true
                      failureReason:
                        type: string
                        nullable: true
                      initiatedAt:
                        type: string
                      settledAt:
                        type: string
                        nullable: true
                      failedAt:
                        type: string
                        nullable: true
                      idempotencyKey:
                        type: string
                        nullable: true
                      approvedAt:
                        type: string
                        nullable: true
                      autoExecuted:
                        type: boolean
                      frozen:
                        type: boolean
                    required:
                      - id
                      - reference
                      - status
                      - amount
                      - currency
                      - fee
                      - network
                      - provider
                      - description
                      - recipient
                      - providerRef
                      - failureReason
                      - initiatedAt
                      - settledAt
                      - failedAt
                      - idempotencyKey
                      - approvedAt
                      - autoExecuted
                      - frozen
                    additionalProperties: false
                required:
                  - ok
                  - data
                additionalProperties: false
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    enum:
                      - false
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details: {}
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - ok
                  - error
                additionalProperties: false
                description: Authentication required
        '403':
          description: Forbidden — no org / role / KYB
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    enum:
                      - false
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details: {}
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - ok
                  - error
                additionalProperties: false
                description: Forbidden — no org / role / KYB
        '422':
          description: Validation error or business-rule violation
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    enum:
                      - false
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details: {}
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - ok
                  - error
                additionalProperties: false
                description: Validation error or business-rule violation
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT utilisateur ou clé API `kp_<env>_xxx`
    cookieAuth:
      type: apiKey
      in: cookie
      name: kp_token
      description: Session signée (front Next.js)

````