Guides
Usage et facturation
Qui paie quoi, comment lire votre consommation, et ce qui change entre le sandbox et la production.
Mis à jour le 12 novembre 2026Voir en Markdown
Bref Point Inbox sépare toujours deux sortes de coûts, que vous voyez sur des lignes distinctes.
| Qui facture | Pour quoi | |
|---|---|---|
| Coûts Meta | Meta, directement au propriétaire du compte WhatsApp | Les conversations : selon la catégorie du message et le pays du destinataire |
| Frais Bref Point Inbox | Bref Point Inbox | L'infrastructure : un abonnement, et un frais par message au-delà du quota de votre plan |
Bref Point Inbox ne refacture pas les conversations. Si vous voulez que votre client paie à travers vous, c'est un choix commercial de votre côté : le propriétaire du compte WhatsApp reste redevable envers Meta.
Lire votre consommation#
curl "$INBOX_API/usage" \
-H "Authorization: Bearer $INBOX_KEY"const res = await fetch(`${process.env.INBOX_API}/usage`, {
headers: {
Authorization: `Bearer ${process.env.INBOX_KEY}`,
},
});
const data = await res.json();import os
import requests
res = requests.get(
f"{os.environ['INBOX_API']}/usage",
headers={
"Authorization": f"Bearer {os.environ['INBOX_KEY']}",
},
)
print(res.json())<?php
$ch = curl_init(getenv('INBOX_API') . '/usage');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('INBOX_KEY'),
],
]);
$data = json_decode(curl_exec($ch), true);{
"from": "2026-11-01T00:00:00.000Z",
"to": "2026-12-01T00:00:00.000Z",
"groupBy": "day",
"totals": {
"messages": 0,
"billableMessages": 0,
"notBillableMessages": 0,
"unpricedMessages": 0,
"metaCostEstimate": {},
"platformFee": {}
},
"buckets": [],
"metaCostIsEstimate": true
}Regroupez avec groupBy : day (par défaut), category, country ou phone_number. La période par défaut est le mois en cours (UTC) ; from et to la bornent.
{
"from": "2026-11-01T00:00:00.000Z",
"to": "2026-12-01T00:00:00.000Z",
"groupBy": "category",
"totals": {
"messages": 120,
"billableMessages": 100,
"notBillableMessages": 20,
"unpricedMessages": 0,
"metaCostEstimate": { "USD": 1.2 },
"platformFee": {}
},
"buckets": [ { "key": "utility", "messages": 100, "billableMessages": 100, "metaCostEstimate": { "USD": 1.2 } } ],
"metaCostIsEstimate": true
}| Champ | Signification |
|---|---|
billableMessages / notBillableMessages | Selon ce que Meta annonce pour chaque message (certains messages, comme une réponse dans la fenêtre de service, ne sont pas facturés). |
metaCostEstimate | Une estimation, par devise, calculée avec la grille tarifaire configurée sur la plateforme. Jamais le montant de votre facture Meta. |
unpricedMessages | Messages facturables pour lesquels aucun tarif n'est configuré. Ils ne sont jamais chiffrés au hasard. |
platformFee | Les frais Bref Point Inbox (dépassement du quota inclus). Séparés du coût Meta, jamais additionnés. |
metaCostIsEstimate | Toujours true : rappel que le coût Meta est estimé. |
Le pays est déduit du numéro du destinataire ; il peut être inconnu.
Votre plan#
curl "$INBOX_API/billing/overview" \
-H "Authorization: Bearer $INBOX_SESSION"const res = await fetch(`${process.env.INBOX_API}/billing/overview`, {
headers: {
Authorization: `Bearer ${process.env.INBOX_SESSION}`,
},
});
const data = await res.json();import os
import requests
res = requests.get(
f"{os.environ['INBOX_API']}/billing/overview",
headers={
"Authorization": f"Bearer {os.environ['INBOX_SESSION']}",
},
)
print(res.json())<?php
$ch = curl_init(getenv('INBOX_API') . '/billing/overview');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('INBOX_SESSION'),
],
]);
$data = json_decode(curl_exec($ch), true);{
"plan": {
"id": "654e934f-a17e-4c05-8964-b1febb33b2b5",
"code": "free",
"name": "Gratuit",
"monthlyPriceAmount": null,
"currency": null,
"includedMessages": 100,
"hardMessageLimit": 100,
"maxConnectedBusinesses": 1,
"maxNumbersPerBusiness": 1,
"overageFeePerMessage": 0,
"logRetentionDays": 3
},
"period": {
"start": "2026-11-01T00:00:00.000Z",
"end": "2026-12-01T00:00:00.000Z"
},
"messages": {
"used": 0,
"included": 100,
"hardLimit": 100
},
"connectedBusinesses": {
"used": 0,
"max": 1
}
}Le plan par défaut est Gratuit, volontairement très limité : il sert à valider une première intégration.
| Gratuit | Starter | Growth | Scale | |
|---|---|---|---|---|
| Prix par mois | 0 | 5 000 FCFA | 15 000 FCFA | 40 000 FCFA |
| Messages envoyés par mois en production | 100 (plafond) | 3 000 inclus | 15 000 inclus | 100 000 inclus |
| Entreprises connectées en production | 1 | 3 | 10 | 50 |
| Numéros WhatsApp par entreprise, en production | 1 | 2 | 3 | 5 |
| Au-delà du quota inclus | L'envoi s'arrête | 5 FCFA par message | 3 FCFA par message | 2 FCFA par message |
| Conservation des journaux | 3 jours | 14 jours | 30 jours | 90 jours |
Un plan Enterprise (volumes négociés, engagement de service) est proposé sur devis. Le détail et les prix actuels sont sur la page des tarifs ; tant que le paiement en ligne n'est pas disponible, l'activation d'un plan payant est faite par l'équipe.
- La période de facturation est le mois calendaire UTC.
- Le sandbox n'est ni limité ni facturé, quel que soit le plan.
- Un plafond atteint donne
402 quota_exceeded(envoi) ou402 plan_limit_reached(nouvelle entreprise, ou nouveau numéro au-delà de la limite par entreprise), avec un message qui indique la limite et votre consommation. - Sur un plan payant, il n'y a pas de plafond dur : les messages au-delà du quota inclus sont facturés au frais par message de votre plan, sur la ligne
platformFee, séparée du coût Meta.
À propos des paiements#
Le paiement en ligne des abonnements n'est pas encore disponible dans la console : les plans sont attribués par l'équipe Bref Point Inbox.