Décisions fiscales
Une tax_decision répond à une question précise : pour cette
opération, ce jour-là, quelle TVA s'applique, quels montants doivent être facturés, et
quelles obligations de transmission en découlent ? La réponse est figée. La
facture, l'avoir et la transmission s'y adossent ; aucun de ces documents ne
recalcule quoi que ce soit.
Qui détermine la TVA ?
Deux réponses possibles, au choix, opération par opération. Elles sont de même niveau et
partagent tout le reste : vous déclarez laquelle s'applique avec taxSource.
Prérequis commun. Avant la première décision, renseignez les
informations fiscales du vendeur dans Facturino :
établissement, régime et options déclaratives. Elles servent à contrôler les deux parcours
et à déterminer les obligations de transmission. Elles ne choisissent jamais la valeur de
taxSource.
taxSource: "facturino"
TVA déterminée par Facturino
Vous décrivez l'opération : qui achète, quoi, quand, à quel prix. Facturino conclut le taux et la catégorie.
Choisissez-la si vous n'avez pas de moteur de TVA.
taxSource: "integration"
TVA fournie par votre intégration
Vous transmettez la TVA que votre système a conclue. Facturino la valide et refuse toute contradiction, sans jamais la corriger en silence.
Choisissez-la si un ERP ou un moteur interne décide déjà la TVA.
Ce qui est identique dans les deux cas
Le choix porte sur l'origine du taux, et sur rien d'autre. Dans les deux cas, Facturino décide et fige côté serveur :
- les montants exacts, dont le montant à encaisser ;
- les mentions légales de la facture ;
- les trois axes d'obligation (facturation électronique, e-reporting des transactions, e-reporting des paiements) ;
- le territoire, normalisé à partir du pays déclaré et, quand il l'exige, du code postal.
La décision obtenue est un résultat fiscal figé : elle ne signifie pas que Facturino a choisi le taux, mais que le résultat ne bougera plus. Facture, avoir et transmission s'y adossent à l'identique.
Périmètre. Facturino tranche toujours la TVA française et les
obligations françaises correspondantes : facturation électronique, e-reporting des
transactions et des paiements. La TVA européenne de destination — celle du
pays d'un particulier de l'Union, due au-delà du seuil de 10 000 €, sous l'option ou
pour un vendeur établi dans plusieurs pays — est elle aussi calculée et facturée, au taux
normal tabulé, tout comme la TGCA de Saint-Martin sous les
deux sources. Facturino ne fournit pas de conformité fiscale mondiale et
ne suppose jamais un fait : un fait qui manque laisse la décision en
attente, un cas qu'il ne sait pas trancher est refusé clairement, et la source
integration reste ouverte à l'intégration qui en répond. La taxe
locale d'une collectivité d'outre-mer ou des TAAF qu'il ne détient pas
(Wallis-et-Futuna, TAAF, retenue polynésienne, taxe locale d'un particulier) n'est ni
calculée ni supposée nulle : la source facturino refuse la décision
(unsupported), la source integration la rend finale avec un avis et
foreignTaxReviewRequired: true, la taxe étant alors à votre charge de facturer.
L'impôt indirect d'un territoire exclu de la TVA de l'Union (Canaries,
Livigno…) suit le même schéma : refusé sous la source facturino, décision
finale avec un avis sous la source integration. Celui d'un pays tiers est
signalé par foreignTaxReviewRequired: true, à vérifier hors Facturino — jamais
calculé ni facturé.
Le parcours complet
L'ordre n'est pas indicatif : chaque étape dépend de la précédente.
- Décision — vous décrivez l'opération et sa source TVA ; Facturino valide puis fige le résultat.
- Facture — elle s'adosse à la décision, qu'elle fige dans son
taxSnapshot. - Transmission — plateforme agréée ou e-reporting, selon ce que la décision a arrêté.
- Règlement — avant ou après l'émission selon votre cycle commercial, avec le moyen de paiement de votre choix.
- Encaissement et remboursement — enregistrés à leur date réelle et transmis selon le même arbitrage figé.
1. Décider
taxSource est requis : il déclare laquelle des deux réponses s'applique.
Le territoire n'est jamais accepté pré-normalisé — transmettez le pays déclaré et, quand le
territoire l'exige, le code postal. Corse, DROM et collectivités d'outre-mer ne se déduisent
pas d'un code pays.
Source facturino
Vous décrivez l'opération : qui achète, quoi, quand, à quel prix, dans
quelle base (priceMode). Vous ne décrivez jamais le résultat : taux,
catégorie, code VATEX, mention légale, axe de transmission, montant à débiter et territoire
normalisé sont refusés en entrée et renvoyés en sortie.
$ curl -X POST https://facturino.com/api/v1/tax-decisions \
-H "Authorization: Bearer fac_test_..." \
-H "Idempotency-Key: operation-cus_8f2k4m9n-20260915" \
-H "Content-Type: application/json" \
-d '{
"taxSource": "facturino",
"customerId": "cus_8f2k4m9n",
"effectiveAt": "2026-09-15",
"currency": "eur",
"priceMode": "tax_exclusive",
"lines": [
{
"reference": "abo-pro",
"description": "Abonnement Pro — septembre",
"category": "electronically_supplied_services",
"rateCategory": "standard",
"unitAmount": 2900,
"quantity": "1"
}
],
"locationEvidence": [
{ "kind": "billing_address", "country": "FR", "postalCode": "75002",
"thirdParty": false, "source": "declared", "collectedAt": "2026-09-15" },
{ "kind": "ip_geolocation", "country": "FR",
"thirdParty": true, "source": "network", "collectedAt": "2026-09-15" }
]
}' Source integration
Mêmes données commerciales et territoriales, plus la TVA que votre moteur a conclue :
vatRate (centièmes de pourcent), vatCode (EN 16931 BT-151)
et, pour les catégories exonérées, vatexCode (BT-121) par ligne : l'un des
88 codes de la liste officielle, ou l'ancienne
écriture VATEX-FR-261 ou VATEX-FR-AUTOLIQ, enregistrée sous le code
officiel qu'elle désigne (VATEX-FR-CGI261-4, VATEX-FR-AE). Le code est lié à
sa catégorie comme dans la liste VATEX du CEF : VATEX-EU-AE et VATEX-FR-AE
avec AE, VATEX-EU-IC avec K, VATEX-EU-G avec
G, VATEX-EU-O avec O, tous les autres avec E ; une
catégorie S ou Z ne porte aucun code (BR-S-10, BR-Z-10). Facturino
valide la cohérence taux/code/VATEX et avec l'opération, et
refuse toute contradiction détectable
(422 integration_vat_incoherent) — il ne corrige jamais un taux en silence.
Ces trois champs décrivent la TVA française. Ce contrat ne porte ni juridiction
ni schéma de taxe locale, ni retenue à la source : cette source n'est donc pas un moyen de
faire passer une fiscalité étrangère ou ultramarine dans un taux. La seule taxe locale que
Facturino connaît, la TGCA de Saint-Martin, est calculée ici
aussi : vous déclarez l'exonération d'une ligne (localTaxExemption), jamais un
taux. Toute autre taxe locale, c'est vous qui la déterminez et l'assumez : la décision est
finale, avec un avis et foreignTaxReviewRequired — là où la source
facturino refuse. Voir Outre-mer.
Chaque ligne est confrontée au moteur Facturino, sur les mêmes faits. Facturino
tranche le lieu et le traitement de la ligne comme sous la source facturino :
acheteur tel que préparé (un professionnel sans preuve attend, hors ses services fournis par
voie électronique, traités comme ceux d'un non-assujetti),
territoire retenu, catégorie, placeOfSupplyRule (general si absente),
registre du seuil. Le placeOfSupply déclaré doit être ce lieu — deux territoires
d'une même zone de TVA française (métropole, Corse, Monaco) valent l'un l'autre —, sinon
422 sur lines[i].placeOfSupply. La catégorie doit être admise par ce
traitement, sinon 422 sur lines[i].vatCode :
| Traitement tranché par le moteur | Catégories admises |
|---|---|
| Opération taxée en France ou à Monaco | S, Z, E (hors VATEX-FR-FRANCHISE), AE avec VATEX-FR-AE (l'ancienne écriture VATEX-FR-AUTOLIQ est acceptée et enregistrée sous ce code) |
| Service B2B intracommunautaire, TVA due par le client | AE avec VATEX-EU-AE |
| Livraison intracommunautaire de biens | K (aussi à une personne morale non assujettie qui a communiqué un numéro de TVA, à côté de la vente à distance) |
| Exportation de biens | G |
| Hors du champ de la TVA française | O (Guyane et Mayotte comprises) |
| Franchise en base du vendeur | E |
Un statut que la source facturino laisse en attente — VIES injoignable, SIRET de
l'acheteur exigé par la facture électronique — l'est aussi sous la source
integration. Là où le moteur ne conclut pas — une dérogation de lieu qu'il
n'implémente pas (immeuble, manifestation…), des biens dont le mouvement n'est pas indiqué —,
la source integration ne conclut pas davantage : même statut
(unsupported ou pending_verification) et mêmes motifs que la source
facturino. Déclarer une dérogation ou un lieu ne dispense jamais de la
confrontation.
La territorialité, elle, est la même des deux côtés. Une décision
integration traverse exactement la même règle B2C dans l'Union : même
couverture, même seuil commun, même option, mêmes preuves, même mécanisme déclaratif. Ce qui
diffère est l'issue — là où la source facturino produit le taux,
la source integration compare celui que vous transmettez au
résultat légal. Égalité : décision finale. Catégorie impossible sur une vente B2C taxée à
destination (AE, K, G, O) ou
placeOfSupply contredisant le lieu tranché : 422
integration_vat_incoherent. Taux différent du taux normal de destination :
eu_b2c_rate_supplied_mismatch, décision non finale et sans montant. La
confrontation vaut pour les deux lieux : à destination le résultat légal
est le taux normal de l'État membre du consommateur, à l'origine ce sont les bandes publiées du
territoire du vendeur. Facturino ne détient ni les taux réduits d'un autre État membre ni toutes
les bandes françaises : il ne peut donc ni confirmer ni corriger le vôtre. À l'origine, ce
refus n'affirme aucune fiscalité étrangère — l'opération est taxée en France.
Les avis sont les mêmes sous les deux sources, et un seuil non déclaré laisse
l'opération en attente (eu_threshold_state_missing) des deux côtés. Sans guichet unique déclaré, le taux de destination
reste le seul admis : une TVA française déclarée en France y répond 422
integration_vat_incoherent. Une règle qui ne conclut pas sur un seuil
déclaré bloque à l'identique sous les deux sources, en conservant le sens de
pending_verification (un fait manque) et d'unsupported (aucune règle
ici).
Une conséquence sur le contrat de ligne : goodsMovement est
obligatoire sur une ligne de biens dès que l'acheteur est un particulier d'un
autre État membre. C'est ce mouvement qui décide si la vente à distance intracommunautaire
s'applique, et Facturino ne le suppose jamais. Ailleurs, absent, il vaut
stays_in_seller_territory quand l'acheteur est dans la même zone de TVA que le
vendeur (biens taxés en France) ; absent alors que les zones diffèrent, la décision attend
(goods_movement_unknown). Une exportation (G, CGI art. 262 I) ou une
livraison intracommunautaire (K, CGI art. 262 ter I) n'est exonérée que si
dispatched_to_buyer_territory est déclaré. De même, placeOfSupplyRule
absent vaut la règle générale, que le vendeur déclare et dont il répond : une dérogation
déclarée (art. 259 A, 259 B… du CGI) rend la décision unsupported tant qu'elle
n'est pas implémentée.
{
"taxSource": "integration",
"customerId": "cus_8f2k4m9n",
"effectiveAt": "2026-09-15",
"currency": "eur",
"priceMode": "tax_exclusive",
"lines": [
{
"reference": "abo-pro",
"description": "Abonnement Pro — septembre",
"category": "electronically_supplied_services",
"unitAmount": 2900,
"quantity": "1",
"vatRate": 2000,
"vatCode": "S"
}
]
}
// Réponse : même forme, taxSource: "integration". Les montants, les mentions
// et les trois axes d'obligation sont décidés par Facturino dans les deux cas.
// Toute contradiction (ex. vatCode "S" avec vatRate 0, VATEX manquant sur une
// exonération, "AE" vers un consommateur) répond 422 integration_vat_incoherent. La réponse
{
"id": "taxdec_9c1f...",
"object": "tax_decision",
"taxSource": "facturino",
"status": "final",
"currency": "eur",
"priceMode": "tax_exclusive",
"effectiveAt": "2026-09-15",
"expiresAt": "2026-09-16T10:00:00.000Z",
"expired": false,
"roundingPolicy": "fr-line-half-up-v1",
"totals": { "totalHT": 2900, "totalVAT": 580, "totalTTC": 3480 },
"amountToCharge": 3480,
"invoiceChannel": "einvoicing",
"transactionReporting": "none",
"paymentReporting": "fr212",
"foreignTaxReviewRequired": false,
"vies": null,
"lines": [
{
"reference": "abo-pro",
"vatCategoryCode": "S",
"rateCentipercent": 2000,
"amountHT": 2900, "amountVAT": 580, "amountTTC": 3480
}
]
} États d'une décision
| Statut | Signification | Peut-on débiter ? |
|---|---|---|
final | La position est arrêtée ; un avis dit ce qui a été retenu et ce que vous pouvez faire ensuite. | Oui, pour amountToCharge. |
pending_verification | Un fait de l'opération, de l'acheteur ou du vendeur manque et n'est jamais supposé (qualité d'assujetti non prouvée, numéro de TVA communiqué et non validé, statut TVA d'une association ou d'un organisme public à déclarer, indices de localisation insuffisants ou contradictoires, registre du seuil non ouvert ou incomplet, mouvement des biens, immatriculation TGCA…), VIES n'a pas répondu, ou la facture électronique exige le SIRET de l'acheteur. | Non. |
unsupported | Facturino ne tranche pas ce cas : refus clair, la source integration restant ouverte à qui conclut la TVA lui-même. Dont, sous la source facturino, la taxe locale d'une collectivité d'outre-mer qu'il ne détient pas (com_taaf_*), l'impôt d'un territoire exclu de la TVA de l'Union (eu_special_territory_not_implemented), le régime d'acquisition d'une personne morale non assujettie (non_taxable_legal_person_goods_regime_not_modelled) et, sous les deux, un document qui mêle la catégorie O à une autre (vat_category_o_split_required). | Non. |
Sur toute décision non finale, totals et amountToCharge valent
null — jamais 0. « Absent » ne veut pas dire
« rien à débiter ».
Quand une décision est-elle suspendue ou refusée ? Facturino ne met jamais
une hypothèse à la place d'un fait, et n'applique une présomption légale que dans son champ.
Un fait qui manque et que vous pouvez compléter laisse la décision en attente
(pending_verification), avec un code existant et le remède : la qualité
d'assujetti d'un acheteur déclaré professionnel et non prouvée
(business_status_not_evidenced), un numéro de TVA communiqué et non validé
(eu_b2b_vat_number_not_validated), des indices de localisation insuffisants ou
contradictoires, un seuil de 10 000 € non déclaré, le mouvement des biens, l'immatriculation
TGCA du vendeur pour une prestation située à Saint-Martin. Deux attentes ont une raison propre :
VIES injoignable (vies_unavailable, une panne : reprenez la décision quand VIES
répond), et un acheteur établi dans le périmètre de la facturation électronique (métropole,
Corse, Guadeloupe, Martinique, La Réunion), déclaré professionnel sans SIRET, lorsque vous
émettez vos factures électroniquement à la date de l'opération : son SIREN est une mention
obligatoire de cette facture (CGI art. 242 nonies A) —
business_status_not_evidenced, avec
detailCode: "einvoicing_buyer_registration_required".
Un cas que Facturino ne sait pas trancher est refusé clairement
(unsupported) : un vendeur établi hors du territoire français de TVA (Guyane,
Mayotte, collectivités d'outre-mer, Monaco, étranger), une dérogation de lieu de prestation non
implémentée, une bande de taux non publiée, un registre du seuil déclaré mais incomplet,
en revue ou disputé par des opérations concurrentes, une option mal déclarée, un document qui
mêle la catégorie O à une autre catégorie, un taux transmis par une intégration que
le résultat légal ne confirme pas — et, sous la source facturino, la taxe locale
d'une collectivité d'outre-mer ou l'impôt d'un territoire exclu de la TVA de l'Union qu'il ne
détient pas, et le régime d'acquisition d'une personne morale non assujettie à qui des biens
sont expédiés dans un autre État membre. Les entrées invalides ou incohérentes — dont
une TVA d'intégration qui contredit le lieu ou la catégorie tranchés — et une devise autre que
l'euro sont refusées par une erreur HTTP, sans décision.
Une même clé, une même demande. Le mouvement des biens
(goodsMovement) et la règle de lieu (placeOfSupplyRule) de chaque ligne
font partie de la demande comme de l'opération, sous les deux sources : des biens qui
restent sur place ne sont jamais le rejeu de biens expédiés — la même clé répond
409, une reprise répond 422 tax_decision_retry_invalid.
Avis : les informations de la décision
Toute décision porte notices, un tableau de
{ code, message, reference?, lineId?, detailCode? }, vide quand rien n'est à signaler. Un avis
dit ce qui a été retenu, puis ce que vous pouvez faire pour les opérations suivantes ; il
n'empêche rien par lui-même. Sur location_evidence_contradictory, detailCode nomme
la règle qui a retenu le territoire : concordant_evidence ou
same_treatment. issues garde seul la liste de ce qui
empêche une décision d'être finale. Le message est en anglais, sans donnée personnelle ;
l'application affiche un libellé français par code. Traitez un code inconnu comme un avis
générique. Les avis sont figés avec la décision dans le
taxSnapshot de la facture qu'elle adosse (taxSnapshot.notices), et un
avoir reprend ceux de la facture qu'il crédite ; un document figé avant leur existence
publie un tableau vide.
| Cas | Ce que Facturino retient — ou attend | Avis ou motif |
|---|---|---|
Services de télécommunication, de radiodiffusion ou fournis par voie électronique à un acheteur déclaré professionnel, établi dans le territoire de TVA de l'Union (Monaco compris, mais ni la Guadeloupe, la Martinique ou La Réunion), qui n'a communiqué aucun numéro de TVA. Tout autre professionnel sans preuve (ni SIRET, ni numéro de TVA validé, numéro communiqué et non validé, numéro incohérent avec son territoire, preuve de l'art. 18-3 absente hors UE) laisse la décision en attente : fournissez la preuve ou Customer.taxStatus | Présomption du 2e alinéa de l'art. 18 §2 du règlement d'exécution (UE) 282/2011, appliquée dans son seul champ : traité comme non assujetti, ces lignes seulement — les autres lignes de la facture restent en attente. Un numéro communiqué et non validé ne la rétablit pas. customer.nature vaut consumer, customer.natureBasis declared_business_not_evidenced. | Code du fait manquant : business_status_not_evidenced, eu_b2b_vat_number_not_validated, non_eu_business_status_not_evidenced, vat_number_territory_mismatch… |
| Acheteur établi en France ou à Monaco, avec son SIRET, et un numéro de TVA incohérent avec son territoire ou rejeté par VIES | Reste un professionnel : le SIRET établit sa qualité, le numéro est ignoré. customer.vatNumber garde le numéro déclaré pour l'audit ; customer.retainedVatNumber vaut null : aucun numéro de TVA acheteur sur le document, son UBL, son CII ni l'e-reporting — le SIREN l'identifie. | vat_number_territory_mismatch (à Monaco, eu_b2b_vat_number_not_validated), detailCode: vat_number_ignored_national_registration |
Personne morale non assujettie identifiée à la TVA (Customer.taxStatus: non_taxable avec un numéro de TVA, CGI art. 259-0) | VIES est consulté quel que soit le statut préliminaire du client. Numéro validé : ses services suivent les règles des assujettis (un client allemand autoliquide). VIES injoignable : ses services attendent. Numéro rejeté ou absent : règles des non-assujettis. Ses biens n'attendent VIES que lorsqu'ils sont expédiés dans un autre État membre (ligne suivante). En France, l'immatriculation nationale tient la place de la consultation VIES. | vies_unavailable (motif, non avis) |
| Biens expédiés dans un autre État membre (ou en Irlande du Nord) à une personne morale non assujettie qui a communiqué un numéro de TVA que VIES valide | La livraison est exonérée (livraison intracommunautaire, K, VATEX-EU-IC, directive 2006/112/CE art. 138 §1, b) si les acquisitions de ce client sont soumises à la TVA, et soumise à la TVA comme une vente à distance sinon (art. 3 §1 et 139 §1 ; CGI art. 256 bis I 2°, 258 A, 262 ter I). Ce fait est celui du client, aucun champ ne le porte et Facturino ne choisit pas : la source facturino refuse la décision, la source integration admet les deux traitements (K avec le numéro du client, ou la vente à distance selon le seuil) et la rend finale avec l'avis. VIES injoignable : les biens attendent. Pas concernés : un client sans numéro ou dont VIES rejette le numéro (vente à distance), des biens qui restent en France, une exportation hors de l'Union, les services. | non_taxable_legal_person_goods_regime_not_modelled (motif sous facturino, avis sous integration) |
| Acheteur français déclaré professionnel, SIREN connu, ni forme juridique ni statut TVA déclarés | Facturino interroge le registre SIRENE à la décision — jamais en écrivant sur la fiche client — et fige la catégorie juridique, sa source et sa date (legalCategory) ; une consultation de moins de 30 jours est reprise du cache. Catégorie 7, 8 ou 9 (association, organisme public, fondation) : la décision attend que vous déclariez le statut (Customer.taxStatus). Registre injoignable ou SIREN introuvable : elle attend aussi — une panne n'est pas une réponse négative. Autre catégorie : l'immatriculation établit la qualité d'assujetti. | business_status_not_evidenced (motif), detailCode: tax_status_not_declared ou legal_category_unresolved |
| Ligne de devis ou de brouillon dont la nature n'est pas déclarée | La demande publique POST /v1/tax-decisions exige category sur chaque ligne : sans elle, elle est refusée (validation_error) — un bien n'est jamais lu comme un service. Le cas ne se présente que pour une ligne de service d'un devis ou d'un brouillon, dont la nature peut manquer. Facturino ne la suppose pas « services » : une ligne connue pour un service est lue sous services et sous electronically_supplied_services — seules les natures que le profil du vendeur active —, et le résultat complet est comparé : traitement, catégorie, taux, code d'exonération, mentions, taxe locale, trois axes de transmission, et dépendance au registre du seuil. Le même : la décision est finale, la ligne est décidée en services et un avis le dit. Différent : la décision reste en attente, sans montant, et la ligne garde category: null ; déclarez la nature et reprenez la décision. Une ligne dont on ne sait rien (ni nature ni service connu) n'est jamais lue comme un service : la décision attend sa nature, sans aucune lecture. Un bien (goods) est un fait, jamais une hypothèse. | supply_category_not_declared (motif en attente, ou avis) |
| Particulier dont les indices de localisation divergent | Deux cas seulement sont tranchés : deux indices de natures différentes concordent sur un seul territoire, qui est retenu — un indice national (une IP au Portugal) et un indice régional du même pays (une adresse aux Açores) concordent, sur la région, deux régions d'un même pays ne concordent pas ; ou tous les territoires possibles — l'adresse déclarée et chaque territoire désigné par un indice — mènent au même résultat fiscal complet (TVA, catégorie, mentions, taxe locale facturée, axes de transmission), et l'adresse déclarée tient. Un indice qui ne dit que le pays soutient le territoire de ce pays que l'adresse ou un autre indice désigne ; seul, il désigne le territoire du pays — et, pour la France, tous les territoires français (métropole, Corse, outre-mer, TAAF), jamais la métropole seule. Un candidat de l'UE dont le seuil décide est comparé sur l'état réel du registre du seuil, lu avant la comparaison et l'opération comprise ; le candidat retenu est réservé sur l'état même où il a été comparé. Tout autre cas reste en attente (location_evidence_contradictory) : aucun territoire n'est retenu, la TVA française la plus élevée n'est jamais choisie à la place du client, et le message demande un indice de plus. L'adresse déclarée ne situe jamais le client à elle seule : sans deux indices de natures différentes qui ne se contredisent pas (ou un indice fourni par un tiers, sous l'allègement de l'art. 24 ter, 2e alinéa), la décision attend (location_evidence_insufficient). Les indices ne situent que les lignes dont le lieu suit le client (services électroniques) : sur la même facture, un bien garde le lieu de son transport et une prestation générale l'établissement du vendeur, et le registre du seuil ne compte que les lignes couvertes. customer.territoryId garde le territoire déclaré, lines[].placeOfSupply porte le territoire retenu. | location_evidence_contradictory, location_evidence_insufficient |
| Particulier de l'UE, seuil de 10 000 € non déclaré (aucun registre ouvert pour l'année) | Aucune : le seuil n'est jamais supposé nul. La décision reste en attente, sans montant ; ouvrez le registre de l'année (Réglages › Seuil européen, ou POST /v1/eu-threshold-ledgers) puis reprenez-la. | eu_threshold_state_missing (motif, non avis) |
| Taxation due dans le pays du client, sans guichet unique ni immatriculation locale déclarés | TVA du pays du client, facturée comme avec le guichet unique ; l'avis dit de s'inscrire au guichet unique au plus tard le 10 du mois qui suit la première vente soumise au régime (règlement d'exécution (UE) 282/2011 art. 57 quinquies), ou dans le pays : la première vente au-delà du seuil (detailCode: threshold_exceeded), ou, sous l'option, la première vente taxée dans le pays du client (destination_option, multi_member_state_establishment). | destination_mechanism_missing |
| Adresse dans un État membre sans code postal, quand il sépare des territoires (Espagne, Italie, Allemagne, Finlande, Grèce) ou des taux régionaux (Portugal) | Aucun territoire n'est supposé : la décision est refusée jusqu'à ce que le code postal soit renseigné. | destination_regional_scope_undetermined (motif, non avis) |
| Opération située dans une collectivité d'outre-mer ou aux TAAF | TVA française hors champ (catégorie O, 0). La taxe locale que Facturino ne détient pas est refusée sous la source facturino et signalée sous la source integration. | Selon la collectivité : voir Outre-mer |
| Acheteur dans un territoire exclu du territoire de TVA de l'UE (Canaries, Ceuta, Melilla, Åland, Mont Athos, Büsingen, Helgoland, Livigno, Campione d'Italia) | Traité comme un pays tiers (directive 2006/112/CE art. 6) : la TVA française y est hors champ, mais l'impôt indirect du territoire (IGIC, IPSI…) pèse sur le montant à facturer et Facturino n'en détient aucune règle. Source facturino : refusée (unsupported, foreignTaxReviewRequired: true, aucun montant), avec la source integration proposée. Source integration : décision finale avec l'avis, l'impôt déterminé par l'intégration étant le sien à facturer. | eu_special_territory_not_implemented (motif sous facturino, avis sous integration) |
Monaco. Les opérations avec la Principauté sont des opérations françaises
(directive 2006/112/CE art. 7-1 ; BOI-TVA-CHAMP-20-10 § 10, § 145 et
§ 160) : TVA française au taux de métropole, aucun avis. Une vente à un assujetti
monégasque relève de l'e-reporting, jamais de la facture électronique par plateforme (CGI
art. 290 I 4° a ; BOI-TVA-DECLA-20-30-50-10 § 200 et § 210) ; une
vente à un particulier, comme une vente B2C en France. Les numéros de TVA monégasques
commencent par FR et sont vérifiés dans VIES.
Quantités, remises et arrondis
- Les montants sont des centimes entiers (2900 = 29,00 €), en entrée comme en sortie.
- Les quantités sont des chaînes décimales (
"0.5"), jamais des flottants :0.1 + 0.2ne fait pas0.3. - Les remises sont explicites :
percenten centièmes de pourcent (2500 = 25,00 %), ouamounten centimes. - L'arrondi est appliqué ligne par ligne, au demi supérieur, puis sommé. Aucune ré-agrégation ultérieure : la somme des lignes est le total, par construction.
Outre-mer : ce que Facturino tranche, et ce qu'il ne tranche pas
Trois familles de territoires, trois réponses différentes. Guadeloupe, Martinique et Réunion sont dans le territoire français de TVA, avec leurs propres taux. Guyane et Mayotte en sont exclues (CGI art. 294-1). Saint-Pierre-et-Miquelon, Saint-Barthélemy, Saint-Martin, la Polynésie française, la Nouvelle-Calédonie, Wallis-et-Futuna et les TAAF n'appartiennent pas à la France au sens de la TVA (CGI art. 256-0) : pour la TVA française, ce sont des territoires tiers.
Le tableau ci-dessous porte sur un vendeur établi dans le territoire français de TVA
dont l'acheteur est établi dans l'une de ces sept collectivités. Il illustre la règle
générale ; il ne remplace jamais la décision retournée pour l'opération. Les réponses
valent pour les deux sources fiscales, y compris la
TGCA de Saint-Martin, que Facturino connaît et facture sous les
deux. Un seul point diffère : la taxe locale que Facturino ne détient pas.
La source facturino refuse alors la décision (unsupported) ; la
source integration, dont l'appelant conclut la TVA et assume la taxe locale, la rend
finale avec un avis. La source integration décrit la TVA française, pas une taxe
locale.
| Opération | TVA française | Fondement |
|---|---|---|
| Service général ou électronique, acheteur assujetti (B2B), opération située en Nouvelle-Calédonie, à Saint-Barthélemy ou à Saint-Pierre-et-Miquelon | Hors champ — décision finale, sans avis | CGI art. 259-1° ; NC art. Lp. 507-1 ; codes locaux de BL et PM |
| Service général ou électronique, acheteur assujetti (B2B), opération située à Saint-Martin | Hors champ. TGCA de 4 % facturée sous les deux sources (immatriculation déclarée), ou exonération déclarée ; sans l'une ni l'autre, décision en attente (com_taaf_supplier_local_tax_liable) | CGI art. 259-1° ; CGIsm art. 252 et 258 à 264 |
| Service général ou électronique, acheteur assujetti (B2B), opération située en Polynésie française | Hors champ. Source facturino : refusée (unsupported, com_taaf_payment_withholding_not_modelled). Source integration : décision finale, avis du même code | CGI art. 259-1° ; DICP |
| Service général ou électronique, acheteur assujetti (B2B), opération située à WF, TF | Hors champ. Source facturino : refusée (unsupported, com_taaf_local_regime_not_sourced). Source integration : décision finale, avis du même code | CGI art. 259-1° |
| Service général, acheteur non assujetti (B2C) | Due, au taux du lieu d'établissement du prestataire. À Saint-Martin, si le service y est utilisé, la TGCA est due aussi : déclarez localTaxExemption (sinon la source facturino refuse, french_vat_and_tgca_cumulation) | CGI art. 259-2° ; CGIsm art. 252 |
| Service fourni par voie électronique, acheteur non assujetti (B2C), hors Saint-Martin | Hors champ. Source facturino : refusée (unsupported, com_taaf_local_tax_not_determined). Source integration : décision finale, avis du même code | CGI art. 259 D |
| Bien qui ne quitte pas le territoire du vendeur | Due | Directive 2006/112/CE art. 31 |
| Bien expédié vers la collectivité | Exonérée — exportation | CGI art. 262 I 1° |
| Acompte et frais accessoires | Suivent l'opération principale | CGI art. 269-2-a |
Dans tous ces cas, la transmission est la même : invoiceChannel: "none" et
transactionReporting: "ereporting". Ces documents ne sont jamais déposés sur une
plateforme agréée. Ces deux axes sont décidés à partir des établissements :
sur une décision refusée pour une autre raison, ils ne disparaissent pas — ils sont publiés
comme valeurs dans settledObligations, en plus des phrases de
obligationReasons. Les trois axes de premier niveau restent alors
null : on ne lit pas un axe sur une décision qui n'aboutit pas, et
settledObligations n'autorise rien — ni dépôt, ni paiement.
Ce tableau est celui de la règle générale de territorialité. Les
dérogations (immeuble, transport, manifestations, restauration, location de moyens de
transport, services immatériels rendus hors UE…) ne sont pas implémentées :
déclarez-les avec placeOfSupplyRule et la décision répond
unsupported avec place_of_supply_rule_not_implemented, plutôt
qu'un taux qui aurait l'air juste — sous les deux sources fiscales.
Taxe locale : sept collectivités, sept réponses. Ces collectivités lèvent
leurs propres taxes indirectes, chacune sous son propre texte. Facturino
ne calcule que celle de Saint-Martin (sous les deux sources) ;
il ne déguise jamais une taxe locale en TVA française, en taux zéro
ni en code VATEX inventé — et ne transpose jamais le régime de l'une à ses voisines. Pour une
opération située dans l'une d'elles, la TVA française est hors champ
(foreignTaxReviewRequired: true) ; ce qui distingue les sept est ce que
Facturino sait de la taxe de la collectivité :
- Décision finale, aucun avis : un texte officiel règle la facture sans taxe locale. Nouvelle-Calédonie : l'article Lp. 507-1 met la taxe générale sur la consommation à la charge du preneur assujetti lorsque le prestataire n'y est pas établi. Saint-Barthélemy et Saint-Pierre-et-Miquelon ne lèvent aucune taxe sur le chiffre d'affaires. Même réponse pour des biens exportés vers l'une des sept : la taxe à l'importation est due par le destinataire (CGI art. 262 I 1°).
- Taxe due par vous : Saint-Martin. La taxe générale sur le chiffre
d'affaires de 4 % est due par le prestataire non établi (BOI TGCA de la Collectivité).
Sous les deux sources, Facturino la facture
dès que votre immatriculation est déclarée, ou porte l'exonération que vous déclarez ; sans
l'une ni l'autre, la décision attend (
com_taaf_supplier_local_tax_liable). - Taxe non déterminée. L'acheteur n'est pas assujetti et l'opération est située
dans la collectivité — un service fourni par voie électronique à un particulier
(CGI art. 259 D) : un particulier n'autoliquide rien, seul le fournisseur peut être
appelé à collecter (
com_taaf_local_tax_not_determined). Ou l'acheteur est assujetti, mais aucun texte officiel détenu n'établit qui supporte la taxe — Wallis-et-Futuna, TAAF (com_taaf_local_regime_not_sourced). Facturino ne suppose ni qu'elle est nulle ni son montant : la sourcefacturinorefuse la décision (unsupported, sans montant) et propose la sourceintegration, qui la rend finale avec l'avis du même code etforeignTaxReviewRequired: true— la taxe que vous avez déterminée est la vôtre à facturer. - Retenue sur le paiement. Polynésie française : la DICP fait opérer par
votre client une retenue à la source de 10 %, et la prestation y est
soumise à la TVA polynésienne dès lors qu'elle y est utilisée ou que son bénéficiaire y est
établi. Le montant reçu n'est pas le montant facturé : refus sous la source
facturino, avis sous la sourceintegration(com_taaf_payment_withholding_not_modelled).
Vendeur établi dans l'une de ces collectivités ou aux TAAF. La TVA
française n'est pas son régime, et c'est la fiscalité locale qui fixe ce qu'il facture :
Facturino ne conclut pas à sa place et renvoie
seller_com_taaf_local_tax_not_determined. Sa fiche fiscale n'est pas en cause ;
ses obligations françaises de transmission, elles, restent décidées par Facturino.
La taxe locale sous la source integration.
Une ligne de décision porte vatRate, vatCode et
vatexCode : trois champs qui décrivent la TVA française. Ce contrat
n'a ni juridiction ni schéma de taxe locale, ni retenue à la source. Sur un lieu situé dans une
collectivité, seule la catégorie O à 0 (VATEX-EU-O) les décrit ;
un taux positif y déclarerait une TGC, une taxe de consommation ou un droit local comme de la
TVA française et répond 422 integration_vat_incoherent. Facturino garantit la TVA
française et la réforme française : la seule fiscalité locale qu'il facture est la TGCA de
Saint-Martin, sous les deux sources, l'intégration déclarant l'exonération et jamais un taux.
Toute autre taxe locale, l'intégration la détermine et l'assume : la décision est finale,
avec l'avis de la collectivité et foreignTaxReviewRequired, là où la source
facturino refuse.
Conséquence pratique pour la source integration :
placeOfSupply devient obligatoire sur chaque ligne dès que
l'acheteur est établi dans l'une des sept. C'est le lieu de l'opération qui dit si la taxe de la
collectivité est en jeu, et il n'est jamais supposé (sinon
422 integration_vat_incoherent). Un lieu situé en France — un bien qui ne quitte pas
le territoire, un service général B2C — rend la décision finale comme ailleurs. Le lieu déclaré
doit être celui que le moteur tranche : un service général rendu à un particulier
calédonien est situé en France (CGI art. 259-2°), et le déclarer en Nouvelle-Calédonie
répond 422.
TGCA de Saint-Martin : facturée par Facturino
Une prestation située à Saint-Martin (utilisée dans la Collectivité) est hors du champ de la TVA française (CGI art. 256-0), mais elle doit la taxe générale sur le chiffre d'affaires (TGCA) de 4 %, due par le prestataire non établi (CGIsm art. 252 et 258 à 264 ; BOI TGCA). Sous les deux sources, Facturino la calcule ligne par ligne, que l'acheteur soit assujetti ou non ; un bien n'en porte pas. Trois issues, jamais une supposition :
- Exonération déclarée sur la ligne (
localTaxExemption) : aucune taxe, le motif est imprimé sur la facture. - Immatriculation en vigueur à la date d'effet dans le profil fiscal du vendeur
(
localTaxRegistrations) : 4 %, et le numéro d'immatriculation est imprimé. - Ni l'une ni l'autre : la décision reste
pending_verificationavec le motifcom_taaf_supplier_local_tax_liable. Rien n'est facturé sans la taxe qu'il peut devoir.
| Champ | Où | Notes |
|---|---|---|
localTaxRegistrations | Profil fiscal du vendeur | Tableau de 10 entrées au plus : territory (MF seul), reference (numéro attribué par la Collectivité, 1 à 64 caractères), effectiveFrom, effectiveTo (null : sans fin). Absent : aucune immatriculation déclarée. |
localTaxExemption | Ligne de la demande de décision, sous les deux sources | cgism_253 (opération exonérée par l'art. 253) ou not_used_in_saint_martin (prestation non utilisée à Saint-Martin). Absent : la taxe s'applique. |
localTax | Ligne de la décision, de la facture et de l'avoir, et taxSnapshot | code (tgca_mf), rateCentipercent (400 = 4 %, 0 sur une ligne exonérée), amount (centimes, ROUND_HALF_UP sur le HT de la ligne), reference (numéro d'immatriculation, ou motif de l'exonération), exemption (null sur une ligne taxée). Jamais portée comme de la TVA. |
totals.totalLocalTax | Décision et document (totalLocalTaxCents dans taxSnapshot) | Somme de la TGCA, en centimes ; absente quand aucune ligne n'en porte. Incluse dans totalTTC et dans le montant à encaisser (amountToCharge, amountDue). |
Dans le document électronique (CII, UBL), la TGCA est une charge de niveau document
(BG-21, catégorie O), jamais une ligne de TVA : la ventilation de TVA reste celle
de la TVA française. Sous la source integration, la TGCA est calculée de la même
façon : vous déclarez l'exonération d'une ligne, jamais un taux.
Prestation générale à un particulier de Saint-Martin. Elle reste localisée chez
le prestataire (CGI art. 259-2°) : la TVA française est due. Si le service est aussi utilisé à
Saint-Martin, la TGCA l'est également (CGIsm art. 252), et aucun texte détenu ne règle le cumul des
deux taxes sur une même prestation. Sans localTaxExemption, la source
facturino refuse la décision (unsupported,
com_taaf_local_regime_not_sourced,
detailCode: "french_vat_and_tgca_cumulation") : déclarez
not_used_in_saint_martin (la TVA française est alors seule décidée) ou
cgism_253 (TVA française et mention d'exonération de TGCA), ou facturez hors
Facturino. La source integration retient la TVA fournie, ne facture pas la TGCA et le
dit par un avis du même code : elle l'assume.
Une seule catégorie O par document. La norme EN 16931 (BR-O-02,
BR-O-11 à BR-O-14, BR-S-02) interdit de mêler la catégorie O à une autre sur une même
facture. Une décision dont les lignes mêlent, par exemple, un bien taxé en métropole et une
prestation située à Saint-Martin est refusée (unsupported,
vat_category_o_split_required) sous les deux sources : décidez chaque groupe de
lignes dans sa propre décision et facturez-les sur deux documents.
Ventes à des particuliers de l'Union : quatre décisions, jamais une seule
Un service fourni par voie électronique à un particulier d'un autre pays de l'Union (art. 58) et une vente à distance de biens (art. 33, a) relèvent d'un régime commun. Une prestation de services générale à un particulier n'en relève pas : elle reste taxée là où le prestataire est établi (art. 45). Quatre questions sont tranchées séparément, dans cet ordre :
- l'opération relève-t-elle d'une règle à destination ;
- le seuil de taxation de 10 000 € HT — plafond inclusif — permet-il encore la taxation à l'origine (art. 59 quater §1) ;
- le vendeur a-t-il opté pour la taxation dans le pays du client (art. 59 quater §3) ;
- comment cette taxe est-elle déclarée — guichet unique ou immatriculation locale ?
Le guichet unique répond à la dernière question : c'est un mode de
déclaration, pas une règle de lieu. Sans lui ni immatriculation locale déclarés, la TVA du pays
du client reste due : elle est facturée, et l'avis destination_mechanism_missing
dit comment s'inscrire à temps au guichet unique (règlement d'exécution (UE) 282/2011
art. 57 quinquies).
Sans suivi annuel ouvert pour l'année, le seuil n'est pas déclaré et n'est jamais supposé nul :
la décision attend (eu_threshold_state_missing), sans montant.
Le total du seuil vit dans un suivi annuel
(/v1/eu-threshold-ledgers), séparé du profil fiscal parce qu'un chiffre d'affaires
bouge alors qu'une règle figée ne bouge pas. Un second seuil, celui de
100 000 €, décide du nombre de preuves de localisation exigées et ne
compte que les services en ligne, ventes en France comprises : les deux compteurs sont
indépendants, et aucun ne borne l'autre.
Le détail complet — les quatre questions une par une, le suivi annuel, les taux par pays et les régions à taux distinct — est sur la page dédiée : Ventes aux particuliers de l'UE.
Preuves et VIES
Vous transmettez le signal territorial, jamais le signal brut : un pays,
pas une adresse IP ; un pays de carte SIM, pas un numéro. Les preuves réseau
(ip_geolocation, bank_details, sim_mobile_country,
fixed_line) se transmettent avec le pays seul et sont jugées au niveau du pays ;
la décision publie alors territoryId: null sur la preuve. Ce signal national
corrobore l'adresse sans la remplacer : l'adresse de facturation porte le territoire fin —
métropole, Corse ou DROM — et exige son code postal là où le pays compte plusieurs territoires
de TVA. Quand une consultation VIES est
due, la décision porte son statut et sa date — jamais la réponse brute.
Un numéro que VIES déclare invalide n'établit pas la qualité d'assujetti, et aucun taux nul
transfrontalier n'est accordé sur une qualité non prouvée : la décision reste
pending_verification avec eu_b2b_vat_number_not_validated. Complétez ou
corrigez le numéro, puis reprenez la décision. Deux exceptions : un acheteur établi en France
ou à Monaco dont le SIRET établit la qualité reste un professionnel, le numéro étant ignoré avec un
avis ; et les services fournis par voie électronique, de télécommunication ou de radiodiffusion
d'un acheteur établi dans le territoire de TVA de l'Union qui n'a communiqué aucun
numéro de TVA sont traités comme ceux d'un non-assujetti, avec un avis (un numéro communiqué et non
validé ne rétablit pas cette présomption). Un VIES injoignable est
une panne, pas un fait de l'acheteur :
la décision reste pending_verification avec vies_unavailable, sous les
deux sources, jamais au taux de 0 %. Une décision restée
pending_verification se reprend par une nouvelle décision liée par
retryOfTaxDecisionId, avec les faits complétés ou VIES revenu.
2. Facturer et encaisser avec vos propres moyens
Facturino n'impose aucun prestataire ni circuit d'encaissement. Vous pouvez être
réglé par virement, carte, prélèvement, chèque, espèces, portefeuille électronique, lien de
paiement Facturino ou service externe de votre choix. Les moyens non nommés sont enregistrés
avec la catégorie other et leur référence. La décision fiscale reste la même et
ne dépend jamais du fournisseur utilisé pour encaisser.
Deux parcours sont pris en charge : créer et transmettre la facture avant son règlement,
ou percevoir immédiatement le montant d'une décision finale puis créer la facture. Dans le
second cas, conservez taxDecisionId dans votre commande ou la référence externe,
et vérifiez montant, devise et acheteur avant d'adosser la facture.
| Cycle commercial | Ordre recommandé |
|---|---|
| Facture à échéance, virement, chèque ou prélèvement différé | Décision → facture → transmission → encaissement réel |
| Paiement immédiat, en ligne ou au comptoir | Décision finale → encaissement → vérification → facture finalisée avec l'encaissement, un seul appel |
| Acompte puis solde | Décision et facture d'acompte → paiement → décision/facture de solde avec déduction de l'acompte réglé |
// 1. Décider avant de figer la facture ou de percevoir son règlement.
const decision = await facturino.taxDecisions.create({
taxSource: 'facturino',
customerId: 'cus_8f2k4m9n',
effectiveAt: '2026-09-15',
currency: 'eur',
priceMode: 'tax_exclusive',
lines: [{ reference: 'abo-pro', description: 'Abonnement Pro',
category: 'electronically_supplied_services',
rateCategory: 'standard', unitAmount: 2900, quantity: '1' }],
}, { idempotencyKey: 'operation-order-4711' })
// 2. Ne finalisez ni n'encaissez sur une décision non finale.
// « pending_verification » ne veut pas dire « montant nul ».
if (decision.status !== 'final') {
return askForMissingEvidence(decision.issues)
}
// 3. La facture s'adosse à la décision : la TVA n'est pas re-saisie.
const invoice = await facturino.invoices.create({
customerId: decision.customerId,
taxDecisionId: decision.id,
decisionLines: [{ taxLineRef: 'abo-pro', unit: 'month' }],
buyer: buyerSnapshot,
dates: { issued: '2026-09-15', due: '2026-10-15' },
payment: paymentTerms,
}, { idempotencyKey: 'invoice-order-4711' })
await facturino.invoices.finalize(invoice.id)
// 4. Le client règle par le moyen convenu : virement, carte, prélèvement,
// chèque, espèces, portefeuille ou prestataire de votre choix.
const settlement = await yourCollectionProcess.receive({
amount: decision.amountToCharge,
currency: decision.currency,
reference: decision.id,
})
// 5. Enregistrez l'encaissement réel, avec sa vraie date et sa référence.
await facturino.invoices.payments.create(invoice.id, {
amount: settlement.amount,
// transfer, card, check, cash, direct_debit, sepa, paypal ou other
method: toFacturinoPaymentMethod(settlement.method),
reference: settlement.reference,
paidAt: settlement.paidAt,
}, { idempotencyKey: 'payment-order-4711' }) Les secrets éventuels de votre système d'encaissement restent dans votre configuration serveur. Une référence opaque suffit à relier l'encaissement, la décision et la facture.
3. Adosser la facture
taxDecisionId et decisionLines sont requis :
la TVA vient de la décision, et un vatRate transmis à ce stade serait une
affirmation fiscale hors décision — il est refusé. Une décision finale n'adosse
qu'une seule facture ; une seconde tentative répond 409.
La facture porte la source de sa décision :
taxSource: "facturino" ou taxSource: "integration".
Une valeur taxSource: null peut apparaître en lecture : c'est un brouillon
commercial — créé depuis l'application ou par POST /v1/quotes/:id/convert — dont la
TVA n'est pas encore décidée. Son items est vide et son totals est à
zéro parce qu'aucune ligne fiscale n'existe — jamais parce que la TVA serait nulle ; le
montant saisi se lit dans commercialDraft.totalCents, avec sa base dans
commercialDraft.priceMode.
Pour fiscaliser un tel brouillon, décidez son opération puis adossez la décision à
ce même document avec
POST /v1/invoices/:id/bind-tax-decision (taxDecisionId +
decisionLines). Le cycle complet est
convertir → décider → adosser → finaliser : la facture reste un brouillon après
l'adossement, la finalisation est un appel distinct. Ne créez pas une seconde facture — cela
abandonnerait le brouillon converti. Détail : Devis.
4. Suivre — trois axes indépendants
Un document a trois états qui ne se déduisent pas l'un de l'autre. Le champ
status est un résumé dérivé de ces trois axes — un seul mot
cohérent pour qui n'en veut qu'un, jamais une autorité propre.
{
"id": "inv_7a3c...",
"status": "deposited",
"documentStatus": "finalized",
"transmissionStatus": "deposited",
"transmissionDetail": null,
"paymentStatus": "partially_paid",
"taxSource": "facturino",
"taxDecisionId": "taxdec_9c1f...",
"taxSnapshot": {
"invoiceChannel": "einvoicing",
"transactionReporting": "none",
"paymentReporting": "fr212"
}
} | Axe | Valeurs | Ce qu'il dit |
|---|---|---|
documentStatus | draft, finalized, cancelled | Où en est le document légal. |
transmissionStatus | not_applicable, pending, sending, deposited, transmitted, approved, rejected | Où en est la transmission. Un encaissement ne le modifie jamais. |
paymentStatus | unpaid, partially_paid, paid, partially_refunded, refunded | Où en est l'encaissement. Un remboursement n'efface pas l'encaissement qui a eu lieu. |
5. Plateforme agréée ou e-reporting
Le canal est décidé, pas déduit. Seul invoiceChannel: "einvoicing"
ouvre le dépôt sur une plateforme agréée. Une plateforme connectée ne rend aucune opération
éligible ; un client « qui a l'air français » non plus.
Le tableau suivant illustre un vendeur établi en France métropolitaine dont la vague d'obligation est ouverte. Le moteur tient aussi compte du territoire et du calendrier du vendeur : ces exemples ne remplacent jamais la décision retournée pour l'opération.
| Cas | Canal |
|---|---|
| B2B France métropolitaine, Corse, Guadeloupe, Martinique, Réunion | Facturation électronique |
| B2C France | E-reporting des transactions |
| Acheteur hors de France (UE ou non) | E-reporting des transactions |
| Guyane, Mayotte, collectivités d'outre-mer | E-reporting des transactions |
Tenter de déposer une opération hors canal renvoie not_einvoicing_channel. Ce
refus n'éteint pas l'obligation d'e-reporting correspondante : elle
reste due.
6. Encaissements et remboursements
L'axe paymentReporting de la décision dit où va la donnée de paiement :
fr212— l'encaissement est transmis à la plateforme comme statut « Encaissée », avec le montant ventilé par taux et la date réelle d'encaissement.ereporting— l'encaissement entre dans le volet paiement, déclaré par période.none— rien à transmettre.
Opérations hors du champ de la TVA française : pas de données de paiement
(catégorie O, paymentReporting: none), y compris les prestations
situées en Guyane ou à Mayotte (CGI art. 290 A ; BOI-TVA-DECLA-20-30-60 § 1 et § 10).
Un remboursement est un encaissement négatif : il suit le même canal et corrige la déclaration. Un encaissement enregistré pendant la transmission ne modifie jamais l'axe de transmission.
Activation et échéance
Deux choses distinctes, à ne pas confondre :
- L'échéance légale du dispositif français de facturation électronique et d'e-reporting suit le calendrier DGFiP vérifié le 1er septembre 2026 et détaillé dans notre calendrier de la réforme : réception obligatoire pour toutes les entreprises et émission des grandes entreprises et ETI au 1er septembre 2026, émission des PME, TPE et micro-entreprises au 1er septembre 2027. Ce calendrier s'applique à tout établissement, quels que soient son secteur et ses moyens de paiement ; Facturino n'est figé sur aucun cas particulier.
- L'activation volontaire anticipée est un choix de votre entreprise : vous pouvez émettre et déclarer avant l'échéance, si votre plateforme l'accepte. Dans Facturino, l'e-reporting automatique est une activation explicite par établissement, distincte de l'autorisation de dépôt des factures. Tant qu'elle n'est pas activée, rien n'est transmis en votre nom.
Erreurs fiscales
| Code | Signification |
|---|---|
tax_decision_required | Le document n'a pas de décision. Rien n'est deviné. Le dépôt manuel reste disponible. |
tax_decision_not_final | La décision n'est pas finale : aucun montant n'est arrêté. |
tax_decision_expired | La décision a expiré ; demandez-en une nouvelle. |
tax_decision_buyer_drifted | L'acheteur n'est plus celui sur lequel la décision a été prise. |
tax_decision_lines_mismatch | Les lignes de présentation ne couvrent pas exactement la décision. |
tax_decision_input_rejected | Le payload tente d'imposer un résultat fiscal au lieu de décrire l'opération. |
tax_decision_retry_invalid | La reprise modifie l'opération d'origine au lieu d'ajouter seulement les preuves attendues. |
not_einvoicing_channel | Opération hors canal de facturation électronique. |
deposit_not_enabled | Dépôt réseau désactivé pour cet établissement. |
ereporting_not_enabled | E-reporting automatique non activé pour cet établissement. |
conflict (409) | La décision a déjà été consommée par une facture. |
Avertissement sur la nature de l’acheteur
La réponse peut ajouter warnings, tableau en lecture seule de BuyerNatureWarning. Chaque objet porte code: buyer_nature_suspect, un message anglais et param, le champ à vérifier. Le client ou la décision est créé malgré cet avertissement.
Un nom qui semble désigner une entreprise sur un client particulier ou sans SIRET déclenche ce signal : par exemple « SAS ALPHA MENUISERIE ». Vérifiez le type du client et son SIRET avant de décider le canal de facturation. « Marie Sasu » ne déclenche pas cet avertissement.