Facture en devise étrangère

Une facture en GBP dont le montant de TVA est également indiqué en EUR – avec le taux de change et sa date. S’y ajoutent un représentant fiscal, un bénéficiaire du paiement distinct, une période de facturation, un acompte et des remises au niveau de la ligne.

La base est la facture d’exemple officielle X07_01_Fremdwaehrung issue de la documentation Factur-X / ZUGFeRD (jeu d’exemples FeRD, ZUGFeRD 2.5.0, profil EXTENDED). Le code ci-dessous produit exactement ce document, champ par champ et dans le même ordre.

Certains liens de cette page mènent à la documentation approfondie dans l’espace client et demandent une connexion.

C’est le plus exigeant des trois documents d’exemple : il réunit dans un seul fichier ce qui est autrement dispersé sur de nombreuses pages. Si vous construisez un document EXTENDED pour la première fois, la facture de marchandises étendue est le meilleur point de départ ; ici, il est question des cas particuliers.

Ce que montre cet exemple

  • Deux devises : devise de facturation GBP (BT-5), devise comptable EUR (BT-6)
  • Le montant de TVA deux fois – une fois par devise (BT-110 et BT-111) – plus le taux de change (BG-X-41)
  • Représentant fiscal du vendeur (BG-11) et bénéficiaire du paiement distinct (BG-10)
  • Remises au niveau de la ligne comme SpecifiedTradeAllowanceCharge
  • Période de facturation (BT-73/BT-74) et acompte (BT-113)

1. En-tête de facture et les deux devises

La ligne décisive est invoice.TaxCurrency. Tous les montants du document sont exprimés dans la devise de facturation BT-5, ici GBP ; la devise comptable BT-6 ne concerne que le montant de TVA indiqué en supplément.

2. Notes en texte libre

Le code TXD (information fiscale) explique au lecteur humain pourquoi deux devises apparaissent dans le document – un complément utile aux champs structurés plus bas.

Les sauts de ligne et l’indentation à l’intérieur d’une note sont significatifs dans le XML. Les tabulations du premier appel ne sont pas décoratives – elles proviennent caractère par caractère du fichier de référence, et sans elles le contrôle croisé signale une différence.

Les textes des notes, les noms de produits et les motifs de remise restent en allemand sur toute cette page : ce sont les données de la facture de référence officielle, et les traduire romprait la comparaison avec elle.

3. Vendeur et représentant fiscal

Le représentant fiscal (BG-11) est une partie à part entière avec son propre numéro de TVA – typique lorsqu’un fournisseur étranger opère sur le territoire par l’intermédiaire d’un représentant fiscal. Il se définit comme toute autre partie, mais son numéro fiscal passe par une méthode dédiée.

4. Acheteur

Deux petites choses souvent recherchées : street2 remplit ram:LineTwo, c’est-à-dire la deuxième ligne d’adresse, et l’adresse électronique de l’acheteur (BT-49) porte ici une Leitweg-ID.

5. Livraison et période de facturation

Le destinataire des marchandises porte lui aussi une adresse électronique. Contrairement au vendeur et à l’acheteur, il n’existe pas de méthode Set… pour cela : le champ ElectronicAddress est rattaché directement à la partie et n’est écrit que dans le profil EXTENDED.

6. Bénéficiaire du paiement et coordonnées bancaires

Le paiement ne va pas au vendeur mais à son prestataire financier (BG-10). Les coordonnées bancaires se définissent séparément via AddCreditorFinancialAccount.

7. Ligne avec remises

Une seule ligne, mais avec la distinction la plus souvent confondue en pratique : il existe deux types de remise différents au niveau de la ligne.

Méthode Élément XML Effet
AddTradeAllowance ram:AppliedTradeAllowanceCharge
(à l’intérieur du prix brut)
Montant par unité. Abaisse le prix net. C’est ainsi que procède la facture de marchandises.
AddSpecifiedTradeAllowance ram:SpecifiedTradeAllowanceCharge
(dans le règlement de la ligne)
Montant pour la ligne entière. Abaisse le total de ligne, le prix reste inchangé. C’est la voie utilisée ici.

Concrètement : le prix unitaire reste à 100 GBP, le total de ligne passe de 1 000 à 850 GBP du fait des deux remises.

8. Suppléments et remises au niveau du document

Un supplément pour emballage à usage unique et une remise de fidélité en pourcentage. Dans le XML, les deux partagent le même élément ram:SpecifiedTradeAllowanceCharge et ne se distinguent que par ram:ChargeIndicator. Le writer les écrit dans l’ordre où ils ont été ajoutés – c’est pourquoi le supplément figure en premier dans le code.

9. TVA dans la devise de facturation

D’abord tout à fait ordinaire, en GBP : 850,00 + 30,00 − 21,25 = 858,75, dont 19 % = 163,1625 → 163,16 GBP.

10. Montant de TVA en devise comptable et taux de change

Pour la déclaration de TVA, le montant en devise étrangère ne suffit pas : l’art. 230 de la directive TVA de l’UE (2006/112/CE) exige le montant également dans la monnaie nationale du vendeur. Trois indications solidaires existent pour cela :

Code Champ Signification
BT-6 TaxCurrency La devise comptable elle-même, ici EUR.
BT-111 TaxTotalAmountInAccountingCurrency Le même montant de TVA, converti en BT-6 : 183,14 EUR.
BG-X-41 TaxCurrencyExchange (groupe) Le taux avec lequel la conversion a été faite.
BT-X-258 SourceCurrency Devise de facturation, donc BT-5 (GBP). FactoorSharp la déduit automatiquement.
BT-X-259 TargetCurrency Devise comptable, donc BT-6 (EUR).
BT-X-260 ConversionRate Le taux proprement dit, ici 1,12244.
BT-X-261 ConversionRateTimestamp Date du taux, facultative. Ici le jour de la livraison, 25.11.2025.

Sans BG-X-41, seul le résultat figurerait dans le document, pas le chemin qui y mène – et pour une comptabilité qui veut recalculer le montant ou le vérifier contre le taux du jour, c’est précisément l’indication qui manque.

Pourquoi une seule méthode pour trois business terms ? Parce que la règle de gestion EN 16931 BR-53 exige que si BT-6 est présent, BT-111 soit fourni également. Et le taux de BG-X-41 est la justification de la valeur de BT-111. Des setters séparés auraient permis de définir un montant de TVA en devise comptable sans jamais dire avec quel taux il a été obtenu – ou inversement d’enregistrer un taux qui ne correspond à aucun montant déclaré.

L’ancienne méthode SetTaxTotalInAccountingCurrency ne définissait que BT-111 et BT-6, sans taux. Elle a été supprimée dans la version 20.0 ; utilisez SetTaxCurrencyExchange.

Sur le taux lui-même : BT-X-260 est défini dans le schéma comme un simple xs:decimal sans limite de décimales, et la référence FeRD en écrit cinq. Le writer arrondit donc de manière adaptative – à deux décimales quand c’est possible sans perte, sinon jusqu’à cinq – et restitue 1,12244 exactement. La date du taux s’écrit, comme tous les champs de date, au format UN/CEFACT 102 (AAAAMMJJ).

BG-X-41 n’existe que dans le profil EXTENDED et uniquement côté CII. UBL connaît certes avec cac:TaxExchangeRate un élément structurellement comparable, mais celui-ci se situe en dehors de la CIUS EN 16931 et n’est donc pas pris en charge par FactoorSharp – voir UBL vs. CII.

11. Conditions de paiement

Deux échéances, ici délibérément en texte libre avec date. La façon de rendre un escompte exploitable automatiquement est montrée par la facture de marchandises.

12. Totaux du document

Tous les totaux sont en GBP. Nouveauté par rapport aux autres exemples : l’acompte (BT-113), qui est déduit du montant TTC :

Code BT Paramètre Calcul (GBP)
BT-106 lineTotalAmount 850,00 (total de ligne après les deux remises)
BT-108 chargeTotalAmount 30,00 (emballage à usage unique)
BT-107 allowanceTotalAmount 21,25 (remise de fidélité)
BT-109 taxBasisAmount 850,00 + 30,00 − 21,25 = 858,75
BT-110 taxTotalAmount 858,75 × 19 % = 163,16
BT-112 grandTotalAmount 858,75 + 163,16 = 1 021,91
BT-113 totalPrepaidAmount 500,00. La façon de détailler les acomptes est décrite sous Acomptes.
BT-115 duePayableAmount 1 021,91 − 500,00 = 521,91

13. Enregistrement et contrôle

Le résultat doit présenter la même structure arborescente que X07_01_Fremdwaehrung.xml du jeu d’exemples FeRD. Quant à savoir si le document respecte également le jeu de règles, vous le vérifiez soit dans le navigateur, soit directement depuis votre code.

Un constat est à prévoir et ne provient pas de la reconstruction : la référence FeRD porte comme Leitweg-ID 04011000-1234512345-35, dont la clé de contrôle est fausse. La valeur est reprise caractère par caractère du modèle, le constat touche donc le modèle tout autant. Si vous utilisez cette facture comme document propre, mettez ici une Leitweg-ID valide.

Une version lisible par un humain est produite par le visualiseur ; la façon d’en tirer un PDF/A-3 avec XML intégré est décrite sous Travailler avec des fichiers PDF.