Aller au contenu principal

API - Transaction

La section Transaction regroupe la consultation des mouvements financiers, le calcul des frais et les transferts entre portefeuilles.

Les conventions générales s'appliquent : en-têtes, enveloppe de réponse, pagination et codes d'erreur.

Consulter une transaction​

GET /api/public/v1/details-transaction/{transaction}

L'identifiant accepté est celui de la transaction ou celui du checkout : ils sont identiques. C'est l'endpoint à interroger pour vérifier l'état réel d'un paiement, notamment si vous n'avez pas reçu le webhook attendu.

Frais d'une transaction​

GET /api/public/v1/amount-commission-transaction/{transaction}

Renvoie le total des commissions générées par une transaction donnée.

Lister les transactions​

GET /api/public/v1/get-transactions

Résultat paginé, avec les filtres communs. Champs utiles :

  • filter[wallet_id] — transactions d'un portefeuille prĂ©cis ;
  • filter[type.slug] — money-in (encaissements) ou money-out (sorties) ;
  • filter[status.slug] — pending, success, error, canceled ;
  • between[created_at] — intervalle de dates, format min,max ;
  • between[amount] — intervalle de montants.

Simuler les frais​

POST /api/public/v1/transaction/calc-fee

À appeler avant une opération pour afficher le coût à votre client ou vérifier qu'un solde suffit.

ChampTypeObligatoireDescription
amountentierOuiMontant brut à évaluer, entre 300 et 20 000 000.
transaction_typestringOuipayment, refund ou cash-out.
methodstringConditionnelMoyen de paiement ou canal de versement. Obligatoire sauf si transaction_type vaut refund.
curl --request POST \
"https://efn.efaina.com/api/public/v1/transaction/calc-fee" \
--header "Authorization: Bearer VOTRE_TOKEN" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data '{
"amount": 150000,
"transaction_type": "cash-out",
"method": "MVOLA"
}'

Transfert entre portefeuilles (P2P)​

POST /api/public/v1/transaction/p2p
ChampTypeObligatoireDescription
from_wallet_iduuidOuiPortefeuille source.
to_wallet_iduuidOuiPortefeuille destinataire.
amountentierOuiMontant en ariary, entre 300 et 20 000 000.
commentstringOuiLibellé du transfert, 100 caractères maximum.
companystringOuiNom rattaché aux deux transactions générées.
custom_idstringNonVotre référence interne, pour le rapprochement.
Les deux portefeuilles doivent appartenir au mĂŞme compte

Un transfert P2P ne peut pas envoyer de fonds vers le portefeuille d'un autre marchand. La demande est refusée si from_wallet_id et to_wallet_id n'ont pas le même propriétaire.

Autres conditions : le portefeuille source doit disposer du solde nécessaire, et le solde du destinataire après transfert ne doit pas dépasser le plafond de 20 000 000 MGA.

Le transfert crée deux transactions : une sortie (money-out) sur la source, une entrée (money-in) sur la destination.

curl --request POST \
"https://efn.efaina.com/api/public/v1/transaction/p2p" \
--header "Authorization: Bearer VOTRE_TOKEN" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data '{
"from_wallet_id": "9a6c9375-210b-4c6b-8ac9-41dcdf640213",
"to_wallet_id": "a3bb189e-b1be-49d4-aec2-a9b02d7a5c20",
"amount": 75000,
"comment": "Répartition interne",
"company": "MyCompany SARL",
"custom_id": "P2P-2024-07-001"
}'
Non remboursable

Une transaction issue d'un transfert P2P n'est pas remboursable via l'API de remboursement.

Référence complète​

Référence API générée.