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

# Créer un retrait

> Demander le retrait de votre solde vers Orange Money (traitement manuel)

# Créer un retrait

Crée une demande de retrait de votre solde disponible vers un numéro Orange Money. Les fonds sont réservés immédiatement ; le transfert est vérifié puis exécuté **manuellement** par SahelPay.

## Endpoint

```
POST /v1/withdrawals
```

## Headers

| Header | Requis | Description |
| - | - | - |
| `Authorization` | ✅ | `Bearer sk_xxx` |
| `X-Idempotency-Key` | ✅ | Clé unique par demande (rejeu sûr) |

## Body

| Paramètre | Type | Requis | Description |
| - | - | - | - |
| `amount` | integer | ✅ | Montant en FCFA, entre 50 000 et 5 000 000 |
| `provider` | string | ✅ | `ORANGE_MONEY` |
| `phone_number` | string | ✅ | Numéro Orange Money destinataire (32 caractères max) |
| `quoted_fee` | integer | | Frais affichés par `GET /v1/withdrawals/quote`. S'ils ont changé : `409` |
| `notes` | string | | Note libre (500 caractères max) |

Frais : 1 % du montant (minimum 100 FCFA), déduits du montant. Prérequis : compte actif, KYC approuvé, solde disponible suffisant.

## Exemple

```bash theme={null}
curl -X POST https://api.sahelpay.ml/v1/withdrawals \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: withdrawal-2026-10-03" \
  -d '{
    "amount": 100000,
    "quoted_fee": 1000,
    "provider": "ORANGE_MONEY",
    "phone_number": "+22370123456"
  }'
```

## Réponse

```json theme={null}
{
  "success": true,
  "message": "Demande de retrait créée avec succès",
  "data": {
    "id": "0b6c0f3e-...",
    "reference": "WD_1759480000000_A1B2C3D4",
    "amount": 100000,
    "fee": 1000,
    "net_amount": 99000,
    "currency": "XOF",
    "status": "PENDING",
    "provider": "ORANGE_MONEY",
    "phone_number": "+22370123456",
    "created_at": "2026-10-03T10:00:00.000Z",
    "_source": "LEDGER"
  }
}
```

## Erreurs

| HTTP | Cause |
| - | - |
| `400` | Header `X-Idempotency-Key` absent, montant hors bornes, KYC non approuvé, solde insuffisant |
| `403` `PARTNER_WITHDRAWAL_CLOSED` | Partenaire SPAY : la redevance est versée chaque mois par SahelPay |
| `409` | Frais modifiés depuis le devis, ou clé d'idempotence déjà utilisée pour une autre demande |

<Warning>
  Les helpers `withdrawals.create()` des SDK JavaScript et Python envoient encore `recipient_phone` au lieu de
  `provider` / `phone_number` et n'envoient pas `X-Idempotency-Key` : l'API les refuse. Utilisez l'appel HTTP
  direct. Le SDK PHP n'expose pas les retraits.
</Warning>


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