Configuration fiscale
Les paramètres, les prix TTC, les exonérations, l'autoliquidation et les identifiants fiscaux des clients.
Cinq paramètres déterminent le comportement de Tax pour votre compte. Deux règles propres au client peuvent modifier le résultat d'un paiement donné. Cette page les présente dans l'ordre de lecture du moteur.
Vos paramètres
enabledbooleanfacultatifdéfaut : falseinclusivebooleanfacultatifdéfaut : falsedefault_countrystringfacultatiftax_id_typestringobligatoireregistration_numberstringobligatoireUne différence doit être connue pour automatiser cette configuration : vous écrivez
registration_number, mais vous relisez tax_registration_number. Les quatre autres champs
conservent leur nom dans les deux sens.
Votre propre immatriculation est enregistrée, mais pas utilisée
Aucun de ces deux champs ne modifie un calcul. Ils permettent à votre compte de porter l'identité utilisée pour vos déclarations. Le taux d'un paiement ne dépend jamais de votre identité, mais uniquement de l'emplacement du payeur.
Prix TTC ou hors taxe
L'interrupteur détermine lequel des deux nombres est déjà connu.
Hors taxe, le comportement par défaut. Votre montant constitue la base. tax = amount × rate
et le client doit amount + tax. Sur 10 000 XAF à 19,25 %, la taxe est de 1 925 XAF et le total de
11 925 XAF.
TTC. Votre montant constitue le total. base = amount ÷ (1 + rate) et la taxe correspond au
reste. Sur 10 000 XAF à 19,25 %, la base est de 8 386 XAF et la taxe de 1 614 XAF. Le client paie
toujours 10 000 XAF.
Ce choix décrit vos prix, pas un paiement particulier. Choisissez celui qui correspond à la façon dont vous annoncez vos tarifs, puis conservez-le. Une modification change la signification de tous les futurs enregistrements, sans recalculer le passé.
Le réglage s'applique aux enregistrements écrits sur vos paiements. POST /tax/calculate ne le lit
pas : envoyez tax_inclusive: true dans la requête pour un calcul TTC, sinon le calcul est hors
taxe.
Arrondis
La taxe est arrondie selon la précision propre à la devise, pas systématiquement à deux décimales. Le XAF, le XOF, le RWF, l'UGX, le KMF, le GNF, le BIF, le DJF, le JPY, le KRW et les autres devises sans décimales sont arrondis à l'unité. Le KWD, le BHD, l'OMR, le JOD et le TND sont arrondis à trois décimales. Toutes les autres utilisent deux décimales.
Un calcul en XAF ne contient donc jamais de centimes. Un même taux de 19,25 % sur un même montant produit une présentation différente en EUR.
Pays dont provient le taux
Pour un paiement enregistré, trois étapes s'appliquent dans cet ordre : le pays déterminé depuis
l'adresse IP du payeur à l'ouverture de la page de paiement, votre default_country, puis CM.
Pour POST /tax/calculate, une seule étape s'applique : le country envoyé. Ce champ est
obligatoire et aucune autre valeur ne le remplace.
La devise n'est jamais consultée. Un payeur situé en France qui vous paie en XAF est soumis à la TVA française de 20 %, car la taxe dépend du lieu de consommation du service.
Clients exonérés
Le calcul d'un client exonéré utilise un taux nul, contient customer_exempt: true et ne produit
aucune taxe. Cette règle l'emporte sur toutes les autres, y compris l'autoliquidation.
Vous ne pouvez actuellement exonérer aucun client
Aucun endpoint ni formulaire du Dashboard ne permet de définir l'exonération d'un client. En
pratique, tous les clients sont à none. En attendant une
modification, l'autoliquidation ci-dessous constitue l'exonération utilisable.
Autoliquidation
Lorsqu'elle s'applique, la taxe est nulle et la réponse contient reverse_charge: true. Votre
client doit la payer dans son propre pays au lieu de vous la verser. Trois conditions doivent toutes
être remplies.
| Condition | Vérification |
|---|---|
| Le client est une entreprise | Son type est business, pas un particulier |
| Il possède un identifiant fiscal vérifié | Au moins un de ses identifiants fiscaux a atteint verified |
| Le paiement vient d'un autre pays | Le pays du calcul diffère de votre default_country |
Le pays du calcul est celui dont provient le taux : le country envoyé à POST /tax/calculate ou,
sur un paiement enregistré, le pays du payeur résolu à l'ouverture de la page de paiement. Le pays
propre du client n'est pas lu. Une entreprise étrangère qui vous paie depuis votre propre pays est
taxée comme n'importe qui d'autre dans ce pays.
Aucun autre élément n'est examiné. La zone économique ne constitue notamment pas une condition. Un marchand camerounais payé par une entreprise vérifiée depuis le Sénégal, l'Allemagne ou le Japon obtient la même autoliquidation. Un paiement venu du Cameroun ne l'obtient pas.
Un identifiant fiscal ne mène jamais qu'à l'autoliquidation. Il ne rend jamais un client exonéré : cet indicateur est distinct, et rien ne l'écrit (voir plus haut).
Les conditions sont lues pendant le calcul. Un identifiant fiscal encore en cours de vérification produit donc un résultat normalement taxé. Enregistrez d'abord l'identifiant, attendez sa vérification, puis effectuez le calcul.
Identifiants fiscaux des clients
Un identifiant fiscal appartient à un client et est enregistré une seule fois, séparément de tous les paiements.
https://api.wajub.com/customers/{customer_id}/tax_idsLe type détermine la méthode de vérification. Utilisez donc sa valeur réelle plutôt qu'un terme
générique.
curl https://api.wajub.com/customers/cus_sAaim5apjocIgtlhzJY3wQ8s/tax_ids \
-H "Authorization: sk.xxxxxxxxxxxxxxxx…" \
-H "Content-Type: application/json" \
-d '{
"type": "cm.niu",
"value": "M071512345678A",
"country_code": "CM"
}'L'appel renvoie immédiatement verification_status: "pending", puis la vérification s'exécute en
arrière-plan. Aucun webhook ne lui est associé. Relisez l'identifiant fiscal lorsque vous avez
besoin de connaître le résultat. Ces routes se trouvent sous /customers : une clé restreinte a
besoin de customer.read et customer.write, pas des permissions fiscales.
Le numéro d'un client est vérifié selon la même liste de formats que votre propre numéro d'immatriculation.
| Type | Format vérifié |
|---|---|
cm.niu | Une lettre, douze chiffres, une lettre |
ci.ifu | Treize chiffres |
sn.ninea | Huit chiffres, une lettre, un chiffre |
ke.pin | Une lettre, neuf chiffres, une lettre |
ng.tin | Huit chiffres, un tiret et quatre chiffres |
gh.tin | Pour une entreprise, C, G, P, Q ou V, puis 00 et huit chiffres (C0001234567). Pour un particulier, le PIN de sa Ghana Card : trois lettres, huit ou neuf chiffres et un caractère de contrôle (GHA-123456789-0) |
gh.vat | Le même numéro que gh.tin, sous lequel le Ghana déclare la TVA |
za_vat | 4, puis neuf chiffres |
gb.vat | GB, puis neuf chiffres |
us.ein | Deux chiffres, un tiret et sept chiffres |
au_abn | Onze chiffres |
eu.vat | Le format de l'État membre que désigne son préfixe : DE puis neuf chiffres, FR puis deux lettres ou chiffres et neuf chiffres, et ainsi de suite. La Grèce est EL |
Un numéro est accepté avec ou sans les espaces, tirets, points et barres obliques que son format
comporte : 12-3456789 et 123456789 sont le même EIN. Ajouter de nouveau le même type et le même
numéro ne crée pas de copie : l'appel répond 200 avec l'entrée existante, repassée à pending le
temps d'une nouvelle vérification. Quatre statuts sont possibles.
| Statut | Signification |
|---|---|
pending | En file d'attente, pas encore vérifié |
verified | La vérification a réussi. Seul ce statut permet l'autoliquidation |
failed | Le format est incorrect ou le registre considère le numéro comme invalide |
unavailable | Le registre était inaccessible. Réessayez en ajoutant de nouveau le même numéro |
Seule la TVA européenne est vérifiée dans un registre
Un numéro eu.vat est envoyé au service européen VIES. Celui-ci confirme son existence et renvoie
le nom enregistré. Les autres types sont contrôlés sur leur format uniquement. Wajub ne
confirme pas que le numéro est enregistré : vérifiez-le vous-même avant de compter sur
l'autoliquidation.
Codes fiscaux des produits
Un code fiscal indique ce que vous vendez afin qu'une juridiction puisse appliquer un taux différent
de son taux normal. Envoyez-en un pendant un calcul, ou placez tax_code dans les metadata d'un
paiement pour que l'enregistrement le reprenne.
curl https://api.wajub.com/tax/calculate \
-H "Authorization: sk.xxxxxxxxxxxxxxxx…" \
-H "Content-Type: application/json" \
-d '{
"amount": 10000,
"currency": "XAF",
"country": "CM",
"tax_code": "txcd_10103001"
}'Deux comportements doivent être connus avant d'utiliser un code. txcd_00000000 désigne les
produits non taxables. Lorsqu'il existe dans le catalogue, il impose un taux nul dans tous les pays.
Un code sans taux dans le catalogue utilise silencieusement le taux normal du pays. La réponse
répète tout de même le code, ce qui donne l'impression qu'il a été appliqué.
Consultez le catalogue avant d'utiliser un code
GET /tax/codes est la seule référence indiquant les codes existants et les pays qui possèdent un
taux pour chacun. GET /tax/codes/{code} présente les taux du code pays par pays. Un code absent
ne produit aucune erreur, mais le taux normal. Consultez le catalogue au lieu de supposer qu'un
code provenant d'un autre prestataire possède une correspondance.
Un code fiscal est également entièrement ignoré lorsque le client est exonéré ou lorsque l'autoliquidation s'applique. Ces règles sont traitées en premier.
Taux infranationaux
Certains pays appliquent les taxes au niveau d'un État, d'un comté ou d'une ville plutôt qu'au
niveau national. GET /tax/jurisdictions répertorie les données conservées par Wajub. Elles peuvent
être filtrées par pays, État et niveau. Chaque entrée contient son taux et indique s'il se cumule
avec les précédents.
Un paiement est enregistré au taux normal du pays, celui que renvoie POST /tax/calculate. Un
paiement ne porte ni État ni ville : les taux infranationaux sont répertoriés mais pas appliqués.
Vos lieux d'immatriculation
/tax/registrations conserve la liste des juridictions où vous êtes immatriculé, avec un type parmi
standard, simplified, ioss et oss, votre numéro et les dates de validité.
Cette liste facilite vos déclarations, mais ne constitue pas un interrupteur. Aucun calcul ni
enregistrement ne la consulte. L'ajout d'une immatriculation ne modifie jamais un taux et sa
suppression n'arrête aucun enregistrement. La suppression révoque l'entrée au lieu de l'effacer :
l'entrée est conservée comme revoked dans votre historique. Il existe une entrée par pays
et par État : enregistrer de nouveau le même pays et le même État répond 422, entrée révoquée
comprise. Réactivez-la avec PUT et status: "active".
Pages associées
- TaxesCe qui est calculé, ce qui est enregistré et ce qui n'est jamais débité.
- Démarrage rapideActiver Tax, calculer, débiter et consulter le premier rapport.
- Rapports fiscauxLe registre, les remboursements, l'exportation et les éléments absents.
- Numéros fiscaux des clientsAjouter un numéro fiscal à un client entreprise, et suivre sa vérification.