Aller au contenu

Transfer API

Les transferts Djamo fournissent un ensemble de services vous permettant d'envoyer de l'argent facilement à des utilisateurs Djamo depuis votre compte professionnel.

Pour l'instant, ce que vous pouvez faire via l'API Business est de débiter votre compte professionnel et créditer un ou plusieurs clients Djamo, c'est-à-dire envoyer de l'argent à un ou plusieurs clients Djamo.

Vous pouvez également obtenir la liste des transactions qui ont impacté votre compte professionnel ou le statut d'une transaction particulière.

L'objet transaction

Attribut Type Description
id String L'identifiant de la transaction
amount Montant Le montant débité pour la transaction.
fee Montant Les frais débités pour la transaction.
totalAmount Montant Le montant total débité pour la transaction (montant + frais).
msisdn Numéro de téléphone Le msisdn du client Djamo
status String Le statut actuel de la transaction. Peut être : pending, completed ou failed
reference String La référence que vous avez indiquée lors de la création de la transaction. Peut être votre ID interne.
type String Le type de transaction. Pour l'instant, le seul type autorisé est transfer.
batchId String L'identifiant du lot qui a créé cette transaction (uniquement si la transaction a été créée dans un lot).
createdAt Horodatage Horodatage indiquant quand la transaction a été créée.
updatedAt Horodatage Horodatage indiquant quand la transaction a été mise à jour.
failureReason String La raison de l'échec de la transaction. Vaut null si la transaction n'a pas échoué. Voir Raisons d'échec.

Envoyer de l'argent à un client Djamo

POST /v1/transactions

Paramètre Type Description
amount Montant Le montant débité pour la transaction. Doit être compris entre 5 000 et 500 000
msisdn Numéro de téléphone Le msisdn du client Djamo
reference String Une référence que vous indiquez. Peut être votre ID interne.
type String Le type de transaction. Pour l'instant, le seul type autorisé est transfer.
curl \
-XPOST \
-H "Content-type: application/json" \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-d '{
      "msisdn": "+22507XXXXXX00",
      "amount": 50000,
      "reference": "17f99xApUe472A",
      "description": "Salaire de juin",
      "type": "transfer"
    }' \
<BASE_URL>/v1/transactions
{
  "id": "txn_2cdc8ab1-6d50-49cc-ba14-54e4ac7ec231",
  "createdAt": "2023-05-25T17:43:15.970Z",
  "updatedAt": "2023-05-25T17:43:15.970Z",
  "amount": 500000,
  "fee": 5000,
  "totalAmount": 505000,
  "status": "pending",
  "msisdn": "+22507XXXXXX00",
  "reference": "17f99xApUe472A",
  "description": "Prime de juin",
  "type": "transfer"
}

Pour vos tests, vous pouvez utiliser les numéros suivants pour simuler différents statuts :

Numéro de téléphone Statut souhaité
2250747000000 completed
2251212121205 failed

Envoyer de l'argent à plusieurs clients Djamo

L'endpoint de lot est uniquement disponible pour les transactions de type transfer. Vous recevrez un JSON représentant l'objet lot.

POST /v1/transactions/batch

Paramètre Type Description
transactions Array Une liste d'objets de paramètres de transaction utilisés pour créer des transactions individuelles. Voir exemple ci-dessous

Exemple

curl \
-XPOST \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-d '{
      "transactions": [
        {
          "msisdn": "+22507XXXXXX00",
          "amount": 500000,
          "reference": "17f99xApUe472A",
          "description": "Prime de juin"
        },
        {
          "msisdn": "+22507XXXXXX01",
          "amount": 550000,
          "reference": "12E94bDeOP209T",
          "description": "Prime de juin"
        }
      ]
    }' \
<BASE_URL>/v1/transactions/batch
{
  "id": "bat_27fb25f4-3246-44c9-9f30-f0df3d9188cf",
  "createdAt": "2023-03-16T22:01:11.070Z",
  "updatedAt": "2023-03-16T22:01:11.269Z",
  "totalAmount": 8300,
  "status": "processing",
  "totalFee": 5,
  "transactions": [
      {
        "id": "txn_2cdc8ab1-6d50-49cc-ba14-54e4ac7ec231",
        "createdAt": "2023-11-24T17:43:15.970Z",
        "updatedAt": "2023-11-24T17:43:15.970Z",
        "amount": 500000,
        "fee": 5000,
        "totalAmount": 505000,
        "status": "pending",
        "msisdn": "+22507XXXXXX00",
        "reference": "17f99xApUe472A",
        "description": "Prime de juin",
        "type": "transfer"
      },
      {
        "id": "txn_ae189ba6-0dc9-492a-9bde-ffdcf0decb0b",
        "createdAt": "2023-11-24T17:44:15.970Z",
        "updatedAt": "2023-11-24T17:44:15.970Z",
        "amount": 430000,
        "fee": 4300,
        "totalAmount": 434300,
        "status": "pending",
        "msisdn": "+22507XXXXXX01",
        "reference": "2E94bDeOP209T",
        "description": "Prime de juin",
        "type": "transfer"
      }
  ]
}

Récupérer les détails d'une transaction

GET /v1/transactions/<id>

Vous pouvez également utiliser les webhooks pour être notifié des changements de statut de transaction.

curl  \
-X GET \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
<BASE_URL>/v1/transactions/txn_fbf960c4-294b-43cd-99a4-920b61efb17d
{
  "id": "txn_fbf960c4-294b-43cd-99a4-920b61efb17d",
  "createdAt": "2023-11-24T17:43:15.970Z",
  "updatedAt": "2023-11-24T17:43:16.970Z",
  "amount": 5000,
  "fee": 50,
  "totalAmount": 5050,
  "status": "completed",
  "msisdn": "+225079932203",
  "reference": "17f9956f-0965-4964-b2c1-40b4fef141a7",
  "failureReason": null,
  "description": "July's salary",
  "type": "transfer",
  "batchId": "17f9956f-0965-4964-b2c1-40b4fef141a7"
}

Raisons d'échec

Lorsque le status d'une transaction est failed, le champ failureReason indique la cause de l'échec.

Valeur Description
TRANSACTION_AMOUNT_OVER_ACCOUNT_LIMIT Le destinataire a atteint la limite de son compte Djamo et ne peut pas recevoir ce montant.
DJAMO_ACCOUNT_NOT_FOUND Le numéro de téléphone du destinataire ne correspond à aucun utilisateur Djamo enregistré.
INTERNAL_ERROR Une défaillance d'un service interne Djamo s'est produite. Réessayez la transaction ou contactez le support si le problème persiste.
UNKNOWN_ERROR Une erreur inattendue s'est produite. Contactez le support si le problème persiste.

Vérifier un client

GET /v1/transactions/customers/check

Cet endpoint permet de vérifier les informations d'un utilisateur. Pour l'instant, il retourne uniquement le statut KYC du client. Le statut complete est le seul qui indique que le client a été validé par le système. Tout autre statut indique un problème d'identification du client.

Paramètre Type Description
subCompanyId (Optionnel) String L'identifiant de la sous-société
msisdn (Requis) Numéro de téléphone Le msisdn du client Djamo
curl  \
-X GET \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
<BASE_URL>/v1/transactions/customers/check?msisdn=2250747105623

Client trouvé

{
  "kycStatus": "complete",
  "firstName": "John",
  "lastName": "Doe"
}

Client introuvable

{
  "kycStatus": "unknown",
  "firstName": "unknown",
  "lastName": "unknown"
}

Vérifier le solde

GET /v1/balance

Ceci représente le solde de votre compte Business Djamo. Vous pouvez le récupérer pour voir ce que vous avez actuellement sur votre compte professionnel.

curl \
-X GET \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
<BASE_URL>/v1/balance
{
  "balance": 1000,
  "currency": "XOF"
}