Aller au contenu

Démarrage rapide

Activez Tax, calculez la taxe, débitez-la et consultez le premier rapport.

Cinq étapes sont nécessaires. La troisième est souvent oubliée. Wajub calcule et enregistre la taxe, mais son prélèvement vous revient. Le montant défini lors de la création du paiement est celui que votre client paie.

1. Activer Tax

Aucun enregistrement n'est créé avant l'activation. Celle-ci nécessite la déclaration de votre propre immatriculation fiscale. Les deux champs deviennent obligatoires dès que enabled vaut true, et aucun ne possède de valeur par défaut.

Activer l'enregistrement fiscal
curl -X PUT https://api.wajub.com/tax/settings \
  -H "Authorization: sk.xxxxxxxxxxxxxxxx…" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "inclusive": true,
    "default_country": "CM",
    "tax_id_type": "cm.niu",
    "registration_number": "M071512345678A"
  }'

inclusive indique si le montant pour lequel vous créez un paiement comprend déjà la taxe. Il vaut true ici parce que l'étape 3 débite le total, taxe comprise : lorsque le paiement est crédité, Wajub extrait la taxe du montant débité. Laissez-le sur false uniquement si vous débitez le prix hors taxe sans rien y ajouter : Wajub calcule alors la taxe en plus du montant débité, et débiter le total avec false enregistre une taxe sur la taxe. Le même interrupteur se trouve sous Tax, Settings dans le Dashboard. registration_number est contrôlé selon le format de tax_id_type : un NIU camerounais compte une lettre, douze chiffres et une lettre, et toute autre valeur répond 422.

2. Demander le montant dû

Le pays est obligatoire. Cet endpoint ne le déduit ni du numéro de téléphone, ni de l'adresse IP, ni de la devise. Votre default_country n'est pas utilisé comme valeur de repli.

Calculer
curl https://api.wajub.com/tax/calculate \
  -H "Authorization: sk.xxxxxxxxxxxxxxxx…" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 10000,
    "currency": "XAF",
    "country": "CM"
  }'

La réponse contient tout le calcul. Vous n'avez jamais besoin de le refaire.

Réponse · 200 OK
{
"code": 200,
"status": "OK",
"calculation": {
"amount": 10000,
"tax_amount": 1925,
"taxable_amount": 10000,
"total": 11925,
"rate": 19.25,
"tax_name": "TVA",
"country_code": "CM",
"currency": "XAF",
"tax_inclusive": false,
"tax_code": null,
"customer_exempt": false,
"reverse_charge": false
}
}

total est le montant à débiter. Dans un calcul hors taxe, il correspond à amount + tax_amount. Dans un calcul TTC, il correspond à l'amount envoyé sans modification, et taxable_amount est le montant restant après l'extraction de la taxe.

Ce calcul ne lit pas votre réglage inclusive. Il est hors taxe sauf si vous envoyez tax_inclusive: true, et c'est bien un calcul hors taxe qu'il faut ici : 10 000 XAF est votre prix hors taxe, et la question est ce qu'il faut y ajouter. Le réglage décrit autre chose : le montant que vous débitez à l'étape suivante.

3. Débiter vous-même le total

Vous n'envoyez aucune taxe à la création d'un paiement. Créez-le avec le montant renvoyé par le calcul.

curl https://api.wajub.com/payments \
  -H "Authorization: sk.xxxxxxxxxxxxxxxx…" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 11925,
    "currency": "XAF",
    "email": "[email protected]"
  }'

Le montant débité et ce que inclusive en dit doivent concorder. À 19,25 %, pour un prix de 10 000 XAF hors taxe :

Vous créez le paiement pourinclusiveCe qui est enregistré
11 925, le totaltrue1 925 de taxe sur une base de 10 000. C'est ce que fait ce démarrage rapide
10 000, le prix hors taxefalse1 925 de taxe sur une base de 10 000. Vous n'en avez rien encaissé et la prélevez sur les 10 000
11 925, le totalfalse2 296 de taxe sur une base de 11 925 : une taxe sur la taxe
10 000, le prix hors taxetrue1 614 de taxe sur une base de 8 386 : votre prix lu comme s'il comprenait la taxe

Les deux premières lignes sont les deux façons qui fonctionnent. Les deux dernières sont les erreurs, et rien ne les empêche : le paiement passe dans tous les cas, seul l'enregistrement est faux.

Si vous ignorez cette étape, rien ne casse non plus. Avec les réglages ci-dessus, le paiement de 10 000 XAF est traité et l'enregistrement est celui de la dernière ligne : 1 614 XAF de taxe, prélevés sur ce que vous avez encaissé.

4. L'enregistrement est automatique

Lorsque le paiement est crédité, Wajub recalcule la taxe à partir de vos paramètres et du pays du payeur, puis écrit une ligne. Vous n'avez rien à faire ni aucun appel à envoyer.

Ce second calcul n'est pas celui demandé à l'étape 2. Il utilise le véritable pays du payeur et le montant réellement débité. Les deux résultats peuvent donc différer si le débit concerne un autre pays que celui du calcul. Une ligne est écrite une seule fois par paiement. La répétition du même paiement ne la duplique jamais.

5. Lire les données enregistrées

Le rapport regroupe le registre sur une période, par pays et par devise.

GEThttps://api.wajub.com/tax/reports

Limitez-le au pays et au mois de votre déclaration. La valeur net_tax du résumé correspond aux encaissements moins les annulations. C'est le chiffre à déclarer.

Mois en cours, Cameroun uniquement
curl "https://api.wajub.com/tax/reports?period=month&country=CM" \
  -H "Authorization: sk.xxxxxxxxxxxxxxxx…"

Les mêmes chiffres sont disponibles sous Tax dans le Dashboard, avec une exportation CSV. Rapports fiscaux décrit la structure complète des deux formats.

Si vous envoyez plutôt des factures

Une facture contient une ligne de taxe par article. Son comportement dépend de son origine.

OrigineComportement de la taxe de la ligne
Le DashboardLorsque Tax est actif et que la ligne reste en mode automatique, le taux normal du pays est renseigné pour vous
L'APIVous définissez vous-même items[].tax_rate. Rien n'est renseigné automatiquement

Dans les deux cas, la taxe de l'article est calculée avec le taux de celui-ci. Le total de la facture correspond à la somme des lignes. Le remplissage automatique utilise le pays du client indiqué sur la facture, puis votre default_country comme valeur de repli.

Que pensez-vous de ce contenu ?