Obtenir un devis
curl --request POST \
--url https://sandbox-api.caurisflux.com/api/v1/payouts/quote \
--header 'X-API-Key: <api-key>'import requests
url = "https://sandbox-api.caurisflux.com/api/v1/payouts/quote"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://sandbox-api.caurisflux.com/api/v1/payouts/quote', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox-api.caurisflux.com/api/v1/payouts/quote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://sandbox-api.caurisflux.com/api/v1/payouts/quote"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox-api.caurisflux.com/api/v1/payouts/quote")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.caurisflux.com/api/v1/payouts/quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_bodyPayouts (Décaissements)
Obtenir un devis
Calculer les frais et taux avant de créer un payout
POST
/
payouts
/
quote
Obtenir un devis
curl --request POST \
--url https://sandbox-api.caurisflux.com/api/v1/payouts/quote \
--header 'X-API-Key: <api-key>'import requests
url = "https://sandbox-api.caurisflux.com/api/v1/payouts/quote"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://sandbox-api.caurisflux.com/api/v1/payouts/quote', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox-api.caurisflux.com/api/v1/payouts/quote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://sandbox-api.caurisflux.com/api/v1/payouts/quote"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox-api.caurisflux.com/api/v1/payouts/quote")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.caurisflux.com/api/v1/payouts/quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_bodyObtient un devis pour un payout avec taux de change, frais et montant total à débiter.
Le devis est valide 5 minutes. Utilisez le
Objet
quoteId retourné dans POST /payouts/initiate pour confirmer.
Authentification
X-API-Key: pk_test_xxx:sk_test_xxx
Flux recommandé
1
Obtenir un devis
POST /payouts/quote → Recevez le quoteId, les frais et le montant total2
Afficher au marchand
Montrez les frais, taux de change et montant total avant confirmation
3
Confirmer le payout
POST /payouts/initiate avec le quoteId + détails du bénéficiaireParamètres
| Champ | Type | Requis | Description |
|---|---|---|---|
amount | number | Oui | Montant à envoyer |
currency | string | Oui | Devise du montant (XOF, USD, EUR…) |
destinationCountry | string | Oui | Code ISO du pays destination |
destinationCurrency | string | Non | Devise de destination (si différente) |
method | string | Oui | Méthode : wave, orange_money, bank_transfer, etc. |
type | string | Non | Type de transfert : c2c ou b2b (défaut: c2c) |
Le montant peut être dans n’importe quelle devise. Le système calcule automatiquement les conversions.
Exemples
Mobile Money (local)
curl -X POST https://sandbox-api.caurisflux.com/api/v1/payouts/quote \
-H "X-API-Key: pk_test_xxx:sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 50000,
"currency": "XOF",
"destinationCountry": "SN",
"method": "wave"
}'
200 - Réponse
{
"quoteId": "QT-MOBILE-001",
"expiresAt": "2026-04-03T15:00:00.000Z",
"expiresIn": 300,
"input": { "amount": 50000, "currency": "XOF" },
"source": { "amount": 50000, "currency": "XOF" },
"destination": { "amount": 50000, "currency": "XOF", "country": "SN" },
"fees": { "amount": 750, "currency": "XOF" },
"totalDebit": { "amount": 50750, "currency": "XOF" },
"fx": null,
"method": "wave"
}
Virement Bancaire (local)
curl -X POST https://sandbox-api.caurisflux.com/api/v1/payouts/quote \
-H "X-API-Key: pk_test_xxx:sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 500000,
"currency": "XOF",
"destinationCountry": "SN",
"method": "bank_transfer"
}'
200 - Réponse
{
"quoteId": "QT-BANK-001",
"expiresAt": "2026-04-03T15:00:00.000Z",
"expiresIn": 300,
"input": { "amount": 500000, "currency": "XOF" },
"source": { "amount": 500000, "currency": "XOF" },
"destination": { "amount": 500000, "currency": "XOF", "country": "SN" },
"fees": { "amount": 2500, "currency": "XOF" },
"totalDebit": { "amount": 502500, "currency": "XOF" },
"fx": null,
"method": "bank_transfer"
}
International C2C (USD → INR)
curl -X POST https://sandbox-api.caurisflux.com/api/v1/payouts/quote \
-H "X-API-Key: pk_test_xxx:sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 500,
"currency": "USD",
"destinationCountry": "IN",
"destinationCurrency": "INR",
"method": "bank_transfer",
"type": "c2c"
}'
200 - Réponse
{
"quoteId": "QT-A1B2C3D4E5F6",
"expiresAt": "2026-04-03T13:20:00.000Z",
"expiresIn": 300,
"input": { "amount": 500, "currency": "USD" },
"source": { "amount": 500, "currency": "USD" },
"destination": { "amount": 42170, "currency": "INR", "country": "IN" },
"fees": { "amount": 7583, "currency": "XOF" },
"totalDebit": { "amount": 313083, "currency": "XOF" },
"fx": {
"rate": 84.34,
"spreadPercent": 1,
"sourceCurrency": "USD",
"destinationCurrency": "INR"
},
"method": "bank_transfer"
}
B2B SWIFT (USD → EUR)
curl -X POST https://sandbox-api.caurisflux.com/api/v1/payouts/quote \
-H "X-API-Key: pk_test_xxx:sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"currency": "USD",
"destinationCountry": "DE",
"destinationCurrency": "EUR",
"method": "bank_transfer",
"type": "b2b"
}'
200 - Réponse
{
"quoteId": "QT-B2B-001",
"expiresAt": "2026-04-03T15:00:00.000Z",
"expiresIn": 300,
"input": { "amount": 5000, "currency": "USD" },
"source": { "amount": 5000, "currency": "USD" },
"destination": { "amount": 4580, "currency": "EUR", "country": "DE" },
"fees": { "amount": 15000, "currency": "XOF" },
"totalDebit": { "amount": 3070000, "currency": "XOF" },
"fx": {
"rate": 0.916,
"spreadPercent": 1,
"sourceCurrency": "USD",
"destinationCurrency": "EUR"
},
"method": "bank_transfer"
}
Champs de réponse
| Champ | Type | Description |
|---|---|---|
quoteId | string | ID du devis à utiliser dans /payouts/initiate |
expiresAt | string | Date d’expiration du devis |
expiresIn | number | Secondes restantes avant expiration |
input | object | Montant et devise demandés |
source | object | Montant envoyé au provider |
destination | object | Montant reçu par le bénéficiaire |
fees | object | Frais appliqués |
totalDebit | object | Montant total débité de votre solde (en devise merchant) |
fx | object|null | Taux de change (null si même devise) |
method | string | Méthode de paiement |
Objet fx
| Champ | Type | Description |
|---|---|---|
rate | number | Taux de change appliqué |
spreadPercent | number | Marge appliquée (%) |
sourceCurrency | string | Devise source |
destinationCurrency | string | Devise destination |
Le devis expire après 5 minutes. Passé ce délai, vous devez en demander un nouveau.
⌘I