Retraits

Demandez et suivez les retraits de votre solde marchand vers votre banque, mobile money ou compte PayPal.

Créer un retrait

POST https://api.germinopay.com/v1/retraits

Paramètres

Champ Type Requis Description
montant number Oui Montant à retirer.
devise string Oui Devise du solde (XOF, EUR, USD...).
methode string Oui mobile_money, bank_transfer, paypal
destination object Oui Détails du destinataire (varient selon la méthode).

Destination par méthode

Mobile Money
{
  "methode": "mobile_money",
  "destination": {
    "operateur": "orange",
    "telephone": "+22890000000",
    "nom": "Kossi Amegan"
  }
}
Bank transfer
{
  "methode": "bank_transfer",
  "destination": {
    "iban": "FR7612345678901234567890123",
    "bic": "BNPAFRPPXXX",
    "titulaire": "Ma Société SARL"
  }
}
PayPal
{
  "methode": "paypal",
  "destination": {
    "email": "paiement@masociete.com"
  }
}

Exemple complet

curl -X POST https://api.germinopay.com/v1/retraits \
  -H "Content-Type: application/json" \
  -H "X-Public-Key: pk_live_xxxx" \
  -H "X-Timestamp: 1730000000" \
  -H "X-Signature: hmac_sha256_signature" \
  -d '{
    "montant": 25000,
    "devise": "XOF",
    "methode": "mobile_money",
    "destination": {
      "operateur": "orange",
      "telephone": "+22890000000",
      "nom": "Kossi Amegan"
    }
  }'
<?php
$payload = [
    "montant" => 25000,
    "devise" => "XOF",
    "methode" => "mobile_money",
    "destination" => [
        "operateur" => "orange",
        "telephone" => "+22890000000",
        "nom" => "Kossi Amegan",
    ],
];

$body = json_encode($payload);
$timestamp = time();
$signature = hash_hmac("sha256", "POST/v1/retraits" . $body . $timestamp, $secretKey);

$ch = curl_init("https://api.germinopay.com/v1/retraits");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => $body,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "X-Public-Key: " . $publicKey,
        "X-Timestamp: " . $timestamp,
        "X-Signature: " . $signature,
    ],
]);

$data = json_decode(curl_exec($ch), true);
200 OK
{
  "success": true,
  "message": "Payout request created",
  "data": {
    "retrait_id": "po_5f4e3d2c1b",
    "montant": 25000,
    "devise": "XOF",
    "methode": "mobile_money",
    "frais": 250,
    "montant_net": 24750,
    "statut": "demande",
    "destination": {
      "operateur": "orange",
      "telephone": "+228****0000"
    },
    "created_at": "2025-10-01T15:00:00Z",
    "estimated_arrival": "2025-10-03T15:00:00Z"
  }
}
400 Bad Request Solde insuffisant
{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_BALANCE",
    "message": "Your XOF balance is 15000. Requested: 25000",
    "available": 15000,
    "requested": 25000
  }
}

Suivre un retrait

GET https://api.germinopay.com/v1/retraits/{id}
curl https://api.germinopay.com/v1/retraits/po_5f4e3d2c1b \
  -H "X-Public-Key: pk_live_xxxx" \
  -H "X-Timestamp: 1730000000" \
  -H "X-Signature: hmac_sha256_signature"

Statuts

Statut Signification
demandeDemande de retrait reçue, en attente de vérification.
valideValidée par notre équipe, en cours de traitement.
payeLes fonds ont été envoyés vers votre compte destinataire.
rejeteRejetée. Le montant a été recrédité sur votre solde.

Délais

Frais de retrait Des frais fixes sont appliqués par retrait (ex. 1 % ou 250 XOF minimum). Les frais exacts sont affichés avant confirmation.