My App
Virements

Créer un virement

Crée un nouveau virement depuis le portefeuille d'un magasin vers un contact bénéficiaire. **Flux de virement :** 1. Spécifiez le magasin depuis lequel transférer les fonds 2. Spécifiez le contact (bénéficiaire) qui recevra les fonds 3. Spécifiez le montant en centimes 4. Le système déduit automatiquement les frais et traite le virement **Méthodes de virement prises en charge :** - **Mobile Money** : Wave, Orange Money, MTN Mobile Money, Moov Money, DJAMO - **Compte bancaire** : Virements bancaires via RIB **Cas d'usage :** - Paiements de salaires - Paiements aux fournisseurs - Demandes de retrait d'espèces des clients - Virements entre entreprises **Notes importantes :** - Le magasin doit appartenir à l'entreprise authentifiée - Le contact doit appartenir à l'entreprise authentifiée - Un solde suffisant doit être disponible dans le portefeuille du magasin - Les frais de virement sont automatiquement calculés et déduits - Si vous envoyez un champ `reference`, utilisez une valeur unique par tentative de transfert ; une valeur déjà utilisée renvoie `409 Conflict` - La `reference` est renvoyée dans les réponses de l’API Partenaire et dans les payloads webhook de transaction lorsqu’elle a été fournie à la création

POST
/partner_api/transfers

Crée un nouveau virement depuis le portefeuille d'un magasin vers un contact bénéficiaire.

Flux de virement :

  1. Spécifiez le magasin depuis lequel transférer les fonds
  2. Spécifiez le contact (bénéficiaire) qui recevra les fonds
  3. Spécifiez le montant en centimes
  4. Le système déduit automatiquement les frais et traite le virement

Méthodes de virement prises en charge :

  • Mobile Money : Wave, Orange Money, MTN Mobile Money, Moov Money, DJAMO
  • Compte bancaire : Virements bancaires via RIB

Cas d'usage :

  • Paiements de salaires
  • Paiements aux fournisseurs
  • Demandes de retrait d'espèces des clients
  • Virements entre entreprises

Notes importantes :

  • Le magasin doit appartenir à l'entreprise authentifiée
  • Le contact doit appartenir à l'entreprise authentifiée
  • Un solde suffisant doit être disponible dans le portefeuille du magasin
  • Les frais de virement sont automatiquement calculés et déduits
  • Si vous envoyez un champ reference, utilisez une valeur unique par tentative de transfert ; une valeur déjà utilisée renvoie 409 Conflict
  • La reference est renvoyée dans les réponses de l’API Partenaire et dans les payloads webhook de transaction lorsqu’elle a été fournie à la création

Authorization

X-API-KEY<token>

Clé API pour les requêtes de l'API Partenaire

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/partner_api/transfers" \  -H "Content-Type: application/json" \  -d '{    "storeId": "59ae202a-f583-4a15-970f-9e99bd1e0baa",    "contactId": "29f81706-03a6-492f-92ee-5f0b2e9b18e7",    "amountCents": 50000,    "currency": "XOF",    "description": "Monthly salary payment",    "reference": "PAYROLL-APR-001"  }'
{
  "id": "wth_abc123def456",
  "storeId": "59ae202a-f583-4a15-970f-9e99bd1e0baa",
  "contactId": "29f81706-03a6-492f-92ee-5f0b2e9b18e7",
  "amount": {
    "amount": 50000,
    "currency": "XOF"
  },
  "fees": {
    "amount": 500,
    "currency": "XOF"
  },
  "status": "pending",
  "paymentMethod": "wave",
  "beneficiary": "+2250701234567",
  "description": "Monthly salary payment",
  "reference": "PAYROLL-APR-001",
  "createdAt": "2024-01-15T14:30:25.000Z"
}

{
  "id": "insufficient_balance",
  "message": "Insufficient balance",
  "extras": "Wallet balance is not sufficient for this transfer"
}

{
  "id": "unauthorized",
  "message": "Unauthorized",
  "extras": "Détails supplémentaires de l'erreur"
}

{
  "id": "store_not_found",
  "message": "Store not found",
  "extras": "Store not found"
}

{
  "id": "transfer_exists_with_reference",
  "message": "Un virement avec cette référence existe déjà",
  "extras": "Un virement avec cette référence existe déjà"
}
{
  "id": "validation_error",
  "message": "Échec de la validation",
  "extras": {
    "errors": [
      {
        "field": "paymentDetails.data.paymentMethod",
        "rule": "in",
        "message": "The paymentDetails.data.paymentMethod must be one of the following: orange, wave, mtn, moov, djamo"
      },
      {
        "field": "paymentDetails.data.deviceId",
        "rule": "required",
        "message": "The paymentDetails.data.deviceId field is required when paymentDetails.type is soundbox"
      }
    ]
  }
}
{
  "id": "internal_error",
  "message": "Une erreur inattendue s'est produite",
  "extras": "Détails supplémentaires de l'erreur"
}