Taxes
Activez la collecte des taxes, calculez-les et gérez vos immatriculations.
Taxes utilise un tableau de taux et vos immatriculations pour calculer un montant sur chaque
paiement. Après son activation, chaque transaction est automatiquement taxée et enregistrée. Un
objet tax apparaît dans les réponses des paiements et des remboursements. Avant l'activation, ces
endpoints permettent de consulter les taux et d'essayer des calculs sans rien valider.
Mode live uniquement, avec une clé privée
Chaque endpoint /tax exige une clé privée (sk.) ou une clé restreinte avec tax.read ou
tax.write. Une clé de la sandbox est refusée avec
403 This feature is only available in live mode.
Paramètres
https://api.wajub.com/tax/settingscurl https://api.wajub.com/tax/settings \
-H "Authorization: $WAJUB_API_KEY"La configuration est renvoyée dans tax :
enabledbooleanfacultatifinclusivebooleanfacultatiftrue signifie que le montant envoyé contient déjà la taxe. Avec false, la taxe est ajoutée au montant.default_countrystringfacultatiftax_id_typestringfacultatiftax_registration_numberstringfacultatifL'activation des taxes utilise un appel PUT sur le même chemin. Avec enabled: true,
tax_id_type et registration_number deviennent obligatoires dans la même requête. Le format du
numéro est vérifié selon son type.
curl -X PUT https://api.wajub.com/tax/settings \
-H "Authorization: $WAJUB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"inclusive": true,
"default_country": "CM",
"tax_id_type": "vat",
"registration_number": "M071812345678A"
}'Le champ de la requête est `registration_number`
Vous écrivez registration_number et lisez tax_registration_number. Les deux noms désignent la
même valeur. Seule la direction change.
Calculer avant de débiter
POST /tax/calculate calcule le coût avec les taxes sans créer de ressource. Utilisez-le pour
afficher le total dans le checkout.
https://api.wajub.com/tax/calculateamountnumberobligatoirecountrystringobligatoirecurrencystringfacultatifdéfaut : XAFtax_inclusivebooleanfacultatifdéfaut : falseamount contient déjà la taxe.customer_idstringfacultatiftax_codestringfacultatifcurl https://api.wajub.com/tax/calculate \
-H "Authorization: $WAJUB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 25000,
"currency": "XAF",
"country": "CM",
"customer_id": "cus_01JXXXXXXXXXXXXX"
}'total est le montant à afficher au client et à transmettre dans amount lors de la création du
paiement :
L'exonération et l'autoliquidation sont des résultats, pas des erreurs
Lorsque customer_exempt ou reverse_charge vaut true, tax_amount vaut zéro et total est
égal à amount. Ce calcul est correct pour un client qui possède un identifiant fiscal vérifié
dans une juridiction soumise à l'autoliquidation. Il ne s'agit pas d'un échec de calcul.
Données de référence
Ces listes en lecture seule sont identiques pour tous les marchands. Aucune n'accepte de cursor.
Les deux listes paginées utilisent per_page, avec 50 par défaut et 100 au maximum.
| Endpoint | Champ renvoyé | Filtres | Pagination |
|---|---|---|---|
GET /tax/rates | rates | country | Non |
GET /tax/codes | tax_codes | category | Oui |
GET /tax/codes/{code} | tax_code | Sans objet | |
GET /tax/jurisdictions | jurisdictions | country, state, type | Oui |
GET /tax/thresholds | thresholds | country | Non |
GET /tax/rates est la liste la plus courte, avec un taux normal par pays :
Le champ jurisdiction_type d'une juridiction vaut country, state, county, city ou
district. is_compound indique si son taux s'ajoute à celui de sa juridiction parente au lieu de
le remplacer.
GET /tax/codes/{code} renvoie un code et tous les taux nationaux associés dans rates. Un seul
appel indique ainsi comment une catégorie de produits est taxée sur tous vos marchés.
Immatriculations
Les pays où vous êtes immatriculé pour collecter les taxes. Ces cinq endpoints suivent la structure habituelle et sont tous limités à votre équipe.
| Méthode | Endpoint | Renvoie |
|---|---|---|
GET | /tax/registrations | registrations |
POST | /tax/registrations | registration, 201 |
GET | /tax/registrations/{id} | registration |
PUT | /tax/registrations/{id} | registration |
DELETE | /tax/registrations/{id} | confirmation |
country_codestringobligatoirestate_codestringfacultatiftypestringfacultatifstandard, simplified, ioss, oss.registration_numberstringfacultatifregistered_atdatefacultatifexpires_atdatefacultatifregistered_at.Une nouvelle immatriculation est créée avec status: "active".
Seuils et alertes
De nombreuses juridictions exigent une immatriculation uniquement après le dépassement d'un seuil
de chiffre d'affaires. GET /tax/thresholds les répertorie. GET /tax/thresholds/alerts les compare
à votre propre volume et renvoie les pays où vous approchez ou dépassez déjà le seuil.
curl https://api.wajub.com/tax/thresholds/alerts \
-H "Authorization: $WAJUB_API_KEY"Identifiants fiscaux des clients
Les identifiants fiscaux d'un client se trouvent sous le client, pas sous /tax. Leur ajout place
une vérification asynchrone dans une file. L'identifiant est donc renvoyé avec
verification_status: "pending" et son statut évolue plus tard.
| Méthode | Endpoint | Renvoie |
|---|---|---|
GET | /customers/{customer_id}/tax_ids | tax_ids |
POST | /customers/{customer_id}/tax_ids | tax_id, 201 |
DELETE | /customers/{customer_id}/tax_ids/{id} | confirmation |
typestringobligatoirevaluestringobligatoirecountry_codestringobligatoireLes identifiants fiscaux modifient le calcul
Un identifiant fiscal vérifié permet à customer_exempt ou reverse_charge de renvoyer true
depuis POST /tax/calculate. Ajoutez l'identifiant avant le calcul, pas après.
Rapports
GET /tax/reports agrège les taxes collectées sur une période. Il accepte period, avec une valeur
parmi 7d, 30d, 90d, month, year ou custom. Pour custom, ajoutez start_date et
end_date. Les filtres currency et country sont facultatifs. Le résultat est renvoyé dans
report.