Démarrage rapide

À la fin de ce guide, vous aurez un client, un abonnement et une facture de test payée. Comptez une dizaine de minutes.

1. Créer un compte et une clé de test

Créez votre compte sur le portail développeur, puis ouvrez l’application sandbox. Dans Clés API, créez une clé qb_test_sk_…. Une clé de test n’atteint jamais Wave et n’envoie aucun e-mail (voir Mode test).

2. Créer un client

curl -X POST https://api.qbill.dev/v1/customers \
  -H "x-api-key: qb_test_sk_…" \
  -H "content-type: application/json" \
  -d '{"name":"Boutique Awa","email":"awa@example.com","country":"CI"}'

Notez l’id renvoyé : c’est celui du client.

3. Créer un plan

curl -X POST https://api.qbill.dev/v1/plans \
  -H "x-api-key: qb_test_sk_…" \
  -H "content-type: application/json" \
  -d '{"name":"Pro","pricing_model":"flat_rate","amount_monthly":6000}'

Les montants sont en XOF. Notez l’id du plan.

4. Abonner le client

curl -X POST https://api.qbill.dev/v1/subscriptions \
  -H "x-api-key: qb_test_sk_…" \
  -H "content-type: application/json" \
  -d '{"customer":"<id du client>","plan":"<id du plan>","billing_interval":"monthly"}'

L’abonnement est créé. La facturation se fait à terme échu : ses factures sont émises à la fin de chaque période, pas maintenant, il n’y a donc encore rien à payer. L’étape suivante crée une facture que vous pouvez payer tout de suite.

5. Créer et payer une facture de test

Créez une facture manuelle pour le client (le montant est hors taxes) :

curl -X POST https://api.qbill.dev/v1/invoices \
  -H "x-api-key: qb_test_sk_…" \
  -H "content-type: application/json" \
  -d '{"customer":"<id du client>","amount":6000,"description":"Pro, premier mois","due_date":"2026-12-31","status":"open"}'

Notez l’id de la facture, puis initiez le paiement dessus :

curl -X POST https://api.qbill.dev/v1/payments/initiate \
  -H "x-api-key: qb_test_sk_…" \
  -H "content-type: application/json" \
  -d '{"invoice_id":"<id de la facture>","phone_number":"+2250700000000","provider":"wave"}'

Ouvrez le redirectUrl renvoyé. Cliquez sur Pay : la facture passe à paid et l’événement invoice.paid est envoyé. Cliquez sur Decline : le paiement passe à failed et les relances démarrent.

Avec le SDK Node

Les mêmes appels avec le SDK : qbill.customers.create, qbill.plans.create, qbill.subscriptions.create, qbill.invoices.create({ customer, amount: 6000, description, due_date, status: "open" }) puis qbill.payments.initiate. Le paquet @qbill/node arrive bientôt sur npm ; en attendant, curl fonctionne dès aujourd’hui.

Ensuite