TVA
Un moteur fiscal, pas un écran. Il décide du traitement TVA d'une prestation (taux domestique, autoliquidation UE, exonération export, franchise) et il alimente tes factures et ton abonnement plateforme. Tu ne le pilotes pas à la main, il travaille au moment où une facture est finalisée.
Vue d'ensemble
La TVA sur une prestation de service dépend de qui vend, à qui, et où. Vendeur en France assujetti, client français : 20%. Client entreprise dans un autre pays de l'UE avec un numéro de TVA valide : autoliquidation, 0%, la TVA est due par le preneur. Client hors UE : exonéré. Vendeur en franchise (auto-entrepreneur sous le régime 293 B) : pas de TVA du tout. Ce moteur encode ces règles et tranche à ta place.
La détermination est pure et sans effet de bord. Elle prend la config fiscale du vendeur (pays, régime, numéro intracom, inscription OSS, seuil de 10 000 euros franchi ou non) et l'identité fiscale de l'acheteur (pays, statut pro ou particulier, numéro de TVA), et renvoie un traitement, un taux en pourcentage, le pays dont le taux s'applique, et une clé de mention légale. Les taux standard des 27 pays de l'UE sont un snapshot daté et versionnable, à tenir à jour avec ton comptable.
Pour l'autoliquidation intra-UE, un numéro de TVA bien formé ne suffit pas : il doit exister. Le moteur interroge VIES, le service officiel de l'Union, pour confirmer que le numéro est actif. VIES tombe souvent en panne, donc le comportement est prudent : si le service ne répond pas, le numéro est traité comme non validé et la facture repasse en B2C avec TVA. On ne bloque jamais une facture parce qu'une API tierce est indisponible.
Ce que le module fait
Cinq traitements TVA
Toute prestation retombe sur un de ces cas. Le moteur choisit selon le vendeur et l'acheteur, dans cet ordre de priorité : franchise du vendeur d'abord, puis pays acheteur inconnu (repli prudent), même pays, hors UE, B2B UE validé, enfin B2C UE.
- Domestique : taux standard du pays du vendeur (20% en France)
- Autoliquidation : B2B intra-UE avec numéro validé, 0%, TVA due par le client
- Export exonéré : acheteur hors UE, 0%
- Franchise : vendeur en 293 B, 0%, aucune TVA facturée
- OSS destination : B2C intra-UE au-dessus du seuil, taux du pays du client
Validation VIES du numéro de TVA
Deux niveaux. Le format d'abord, gratuit et instantané : préfixe pays UE connu et structure du corps par pays. Ce pré-filtre évite les appels inutiles. L'existence ensuite : le validateur tape l'API REST de VIES, qui confirme que le numéro est actif et renvoie le nom et l'adresse rattachés. La validation ne se déclenche que quand elle sert, un B2B transfrontalier intra-UE avec un numéro bien formé.
Mentions légales bilingues
Chaque traitement porte sa mention légale, en français et en anglais, prête à imprimer sur le document. Franchise : TVA non applicable, article 293 B du CGI. Autoliquidation : article 196 de la directive 2006/112/CE, TVA due par le preneur. Export : exonération de TVA, prestation hors UE, article 259 B. La TVA normale n'ajoute aucune mention. Le texte est standard mais l'app peut le surcharger par locale.
Config fiscale déduite de ton entité légale
Tu ne remplis pas une fiche TVA séparée. Le moteur lit ton entité légale : le pays d'établissement, le numéro de TVA intracom, et le régime. Un auto-entrepreneur est dérivé en franchise automatiquement. L'inscription OSS et le franchissement du seuil de 10 000 euros de ventes UE sont à false par défaut, la situation de la plupart des freelances, et restent surchargeable.
Application sur les lignes de facture
Une fois le traitement décidé, il réécrit les taux des lignes. Autoliquidation, export et franchise forcent toutes les lignes à 0%, c'est une obligation, on ne peut pas facturer de TVA. OSS destination aligne les lignes sur le taux du pays du client. En domestique, les taux saisis sont respectés, pour laisser passer un taux réduit légitime. Les totaux sont recalculés et la mention est ajoutée au bas de la facture.
Comment on l'utilise
- 01
Renseigne ton entité légale
Dans /settings/legal-entity, tu poses ton pays, ton régime et ton numéro de TVA intracom. Le moteur en déduit ta config vendeur : assujetti ou franchise.
- 02
Ajoute les infos fiscales du client
Sur la facture, tu remplis le pays du destinataire, son numéro de TVA et son statut pro. Un SIRET ou un numéro présent bascule l'heuristique sur B2B.
- 03
Finalise la facture
Au moment de finaliser dans /counsel/invoices, le moteur détermine le traitement. Il valide le numéro via VIES si c'est un B2B intra-UE.
- 04
Les taux et la mention se posent
Les lignes passent au bon taux (0% en autoliquidation, taux client en OSS), les totaux sont recalculés, la mention légale est ajoutée au bas du document.
- 05
Ton abonnement plateforme suit la même règle
Quand la plateforme te facture ton abonnement, le même moteur décide du taux et matérialise le Stripe Tax Rate correspondant selon ton pays et ton statut.