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

# Créer une session de checkout

> Génère une page de paiement hébergée à rediriger le client dessus

<Warning>
  Aucun header `Idempotency-Key` requis sur cet endpoint (dette technique connue) — un double-clic ou un retry réseau côté intégrateur peut créer deux sessions de checkout distinctes.
</Warning>


## OpenAPI

````yaml api-reference/openapi.json POST /checkout-sessions/
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:
  /checkout-sessions/:
    post:
      tags:
        - Paiements
      summary: Créer une session de checkout hébergé
      description: >-
        Génère une page de paiement hébergée par SasPay (`checkout_url`) où le
        client choisit lui-même son réseau et saisit son numéro. Nécessite un
        scope de clé API `PAYIN` ou `BOTH`. Aucun header `Idempotency-Key`
        requis (dette technique connue).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - amount
                - currency
                - customer_email
                - customer_name
              properties:
                amount:
                  type: string
                  format: decimal
                  example: '5000.00'
                currency:
                  type: string
                  minLength: 3
                  maxLength: 3
                  example: XOF
                description:
                  type: string
                  example: 'Facture #1042'
                country:
                  type: string
                  minLength: 2
                  maxLength: 2
                  description: >-
                    Code ISO2, optionnel — présélectionne le pays sur la page de
                    paiement
                  example: BJ
                customer_email:
                  type: string
                  format: email
                  example: client@example.com
                customer_name:
                  type: string
                  example: Awa Sossou
                customer_phone:
                  type: string
                  example: ''
                return_url:
                  type: string
                  format: uri
                  description: >-
                    URL vers laquelle rediriger le client une fois le paiement
                    terminé
                metadata:
                  type: object
                  additionalProperties: true
                expires_at:
                  type: string
                  format: date-time
            example:
              amount: '5000.00'
              currency: XOF
              description: 'Facture #1042'
              country: BJ
              customer_email: client@example.com
              customer_name: Awa Sossou
      responses:
        '201':
          description: Session de checkout créée
          content:
            application/json:
              example:
                id: c9a17e2c-4b1a-4f0e-9c3d-2a1b3c4d5e6f
                merchant: 6f1e2b3a-8c4d-4a2f-9e1b-2d3c4f5a6b7c
                created_by_member: 4a5b6c7d-8e9f-4a0b-9c1d-2e3f4a5b6c7d
                slug: kZ2v9rT4bQxL8mNpYw==
                checkout_url: https://pay.saspay.me/checkout/kZ2v9rT4bQxL8mNpYw==
                amount: '5000.00'
                currency: XOF
                description: 'Facture #1042'
                country: BJ
                customer_email: client@example.com
                customer_name: Awa Sossou
                customer_phone: ''
                return_url: ''
                metadata: {}
                status: PENDING
                expires_at: null
                transaction: null
                payment_link: null
                paid_at: null
                created_at: '2026-08-12T10:00:00Z'
                updated_at: '2026-08-12T10:00:00Z'
        '403':
          description: Scope de clé API insuffisant (PAYIN requis)
          content:
            application/json:
              example:
                message: >-
                  Cette clé API n'est pas autorisée pour les opérations payin
                  (scope actuel : Payout).
                code: api_key_scope_forbidden
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).

````