Référence API

URL de base https://api.qbill.dev/v1, en-tête x-api-key. Chaque route ci-dessous accepte une clé secrète ; celles marquées publishable acceptent aussi une clé publishable (lecture seule).

Clients

MéthodeCheminRôleClé
POST/v1/customersCrée un client.secret
GET/v1/customersListe les clients (limit, offset).secret
GET/v1/customers/:idRécupère un client.secret
PATCH/v1/customers/:idModifie un client.secret
DELETE/v1/customers/:idSupprime un client (suppression logique).secret
curl -X POST https://api.qbill.dev/v1/customers \
  -H "x-api-key: qb_test_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Awa Diop","email":"awa@example.com"}'

Plans

MéthodeCheminRôleClé
POST/v1/plansCrée un plan.secret
GET/v1/plansListe les plans.secret
GET/v1/plansListe les plans.publishable
GET/v1/plans/:idRécupère un plan.secret
GET/v1/plans/:idRécupère un plan.publishable
PATCH/v1/plans/:idModifie un plan.secret
DELETE/v1/plans/:idArchive un plan.secret
POST/v1/plans/:id/restoreRestaure un plan archivé.secret
POST/v1/plans/:id/cloneDuplique un plan.secret
GET/v1/plans/:id/tiersListe les paliers d'un plan.secret
GET/v1/plans/:id/tiersListe les paliers d'un plan.publishable
PUT/v1/plans/:id/tiersRemplace les paliers d'un plan.secret
GET/v1/plans/:id/price-componentsListe les composantes de prix d'un plan.secret
GET/v1/plans/:id/price-componentsListe les composantes de prix d'un plan.publishable
POST/v1/plans/:id/price-componentsAjoute une composante de prix.secret
PATCH/v1/plans/:id/price-components/:componentIdModifie une composante de prix.secret
DELETE/v1/plans/:id/price-components/:componentIdSupprime une composante de prix.secret
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":15000}'

Abonnements

MéthodeCheminRôleClé
POST/v1/subscriptionsCrée un abonnement.secret
GET/v1/subscriptionsListe les abonnements.secret
GET/v1/subscriptions/:idRécupère un abonnement.secret
POST/v1/subscriptions/:id/cancelRésilie immédiatement.secret
POST/v1/subscriptions/:id/pauseMet en pause (resume_at optionnel).secret
POST/v1/subscriptions/:id/resumeReprend un abonnement en pause.secret
POST/v1/subscriptions/:id/change-planChange de plan ou de quantité.secret
DELETE/v1/subscriptions/:id/pending-changeAnnule un changement de plan différé.secret
POST/v1/subscriptions/:id/reactivateRéactive un abonnement.secret
POST/v1/subscriptions/:id/extend-trialProlonge l'essai.secret
POST/v1/subscriptions/:id/billing-intervalChange l'intervalle de facturation.secret
POST/v1/subscriptions/:id/promotion-codeApplique un code promotionnel.secret
DELETE/v1/subscriptions/:id/promotion-codeRetire le code promotionnel.secret
GET/v1/subscriptions/:id/upcoming-invoiceAperçu de la prochaine facture.secret
GET/v1/subscriptions/:id/addonsListe les add-ons de l'abonnement.secret
POST/v1/subscriptions/:id/addonsAjoute un add-on à l'abonnement.secret
PATCH/v1/subscriptions/:id/addons/:addonIdModifie un add-on de l'abonnement.secret
DELETE/v1/subscriptions/:id/addons/:addonIdRetire un add-on de l'abonnement.secret
curl -X POST https://api.qbill.dev/v1/subscriptions \
  -H "x-api-key: qb_test_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"customer":"<customer_id>","plan":"<plan_id>","billing_interval":"monthly"}'

Factures

MéthodeCheminRôleClé
POST/v1/invoicesCrée une facture ponctuelle.secret
GET/v1/invoicesListe les factures.secret
GET/v1/invoices/:idRécupère une facture.secret
GET/v1/invoices/:id/pdfTélécharge le PDF.secret
POST/v1/invoices/:id/finalizeFinalise un brouillon.secret
POST/v1/invoices/:id/voidAnnule une facture (brouillon, ouverte ou échouée).secret
POST/v1/invoices/:id/resendRenvoie la facture par e-mail.secret
curl -X POST https://api.qbill.dev/v1/invoices \
  -H "x-api-key: qb_test_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"customer":"<customer_id>","amount":25000,"description":"Setup fee","due_date":"2026-11-01","status":"open"}'

Paiements

MéthodeCheminRôleClé
POST/v1/payments/initiateLance le paiement d'une facture et renvoie redirectUrl.secret
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":"<invoice_id>","phone_number":"+221770000000","provider":"wave"}'

Remboursements

MéthodeCheminRôleClé
POST/v1/refundsRembourse en totalité une facture payée.secret
GET/v1/refundsListe les avoirs.secret
curl -X POST https://api.qbill.dev/v1/refunds \
  -H "x-api-key: qb_test_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"invoice_id":"<invoice_id>","reason":"Duplicate charge"}'

Consommation

MéthodeCheminRôleClé
POST/v1/usageEnregistre une consommation.secret
GET/v1/usageListe la consommation d'un abonnement (?subscription=).secret
GET/v1/usage/alertsAlertes de seuil récentes (80 % et 100 %).secret
curl -X POST https://api.qbill.dev/v1/usage \
  -H "x-api-key: qb_test_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"subscription":"<subscription_id>","metric_name":"api_calls","quantity":120,"idempotency_key":"batch-2026-10-04"}'

Webhooks

MéthodeCheminRôleClé
POST/v1/webhooksCrée un endpoint de webhook.secret
GET/v1/webhooksListe les endpoints.secret
GET/v1/webhooks/eventsListe les événements disponibles.secret
PATCH/v1/webhooks/:idModifie un endpoint (url, events, status).secret
DELETE/v1/webhooks/:idSupprime un endpoint.secret
POST/v1/webhooks/:id/testEnvoie un événement webhook.test.secret
GET/v1/webhooks/:id/deliveriesListe les livraisons d'un endpoint.secret
POST/v1/webhooks/:id/deliveries/:deliveryId/retryRejoue une livraison.secret
curl -X POST https://api.qbill.dev/v1/webhooks \
  -H "x-api-key: qb_test_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/qbill","events":["invoice.paid"]}'

Add-ons

MéthodeCheminRôleClé
GET/v1/addonsListe les add-ons.secret
GET/v1/addons/:idRécupère un add-on.secret
POST/v1/addonsCrée un add-on.secret
PATCH/v1/addons/:idModifie un add-on.secret
DELETE/v1/addons/:idRetire un add-on de la vente.secret
POST/v1/addons/:id/restoreRemet un add-on en vente.secret
curl -X POST https://api.qbill.dev/v1/addons \
  -H "x-api-key: qb_test_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Extra seats","price_monthly":5000}'

Coupons

MéthodeCheminRôleClé
GET/v1/couponsListe les coupons.secret
POST/v1/couponsCrée un coupon.secret
PATCH/v1/coupons/:idModifie un coupon.secret
DELETE/v1/coupons/:idSupprime un coupon.secret
curl -X POST https://api.qbill.dev/v1/coupons \
  -H "x-api-key: qb_test_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Launch","type":"percentage","value":20,"duration":"repeating","duration_in_periods":3}'

Codes promotionnels

MéthodeCheminRôleClé
GET/v1/promotion-codesListe les codes promotionnels.secret
POST/v1/promotion-codesCrée un code promotionnel.secret
PATCH/v1/promotion-codes/:idModifie un code promotionnel.secret
DELETE/v1/promotion-codes/:idSupprime un code promotionnel.secret
curl -X POST https://api.qbill.dev/v1/promotion-codes \
  -H "x-api-key: qb_test_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"code":"LAUNCH20","coupon":"<coupon_id>"}'
MéthodeCheminRôleClé
POST/v1/sales-linksCrée un lien de vente.secret
GET/v1/sales-linksListe les liens de vente.secret
GET/v1/sales-links/:idRécupère un lien de vente.secret
GET/v1/sales-links/:id/checkoutsListe les ventes passées par ce lien.secret
POST/v1/sales-links/:id/deactivateDésactive le lien.secret
POST/v1/sales-links/:id/activateRéactive le lien.secret
curl -X POST https://api.qbill.dev/v1/sales-links \
  -H "x-api-key: qb_test_sk_…" \
  -H "Content-Type: application/json" \
  -d '{"kind":"plan","title":"Pro plan","plan_id":"<plan_id>","billing_interval":"monthly"}'