- Membres du SDK
- AddPaymentMeans() AddProduct_Comfort() AddTradePaymentTerms() AddTradeTax() BuyerAddressLine1 BuyerCity BuyerCountry BuyerName BuyerPostCode CreateInvoice()
- Termes métier
- BT-1 Invoice number BT-2 Invoice issue date BT-5 Invoice currency code BT-31 Seller VAT identifier BT-81 Payment means type code BT-20 Payment terms BG-25 Invoice line BG-23 VAT breakdown
- Exemples de code
- VB.NET
- Publié le
Ce démarrage rapide présente le chemin complet vers une facture électronique EN 16931 avec le SDK Aloaha ZUGFeRD : créer l'objet, renseigner l'en-tête de facture, le vendeur et l'acheteur, le paiement, une ligne de facture, la TVA et les totaux – puis enregistrer le XML et l'intégrer dans un PDF/A-3. L'exemple est une facture de 10 × 5,00 EUR HT au taux de TVA de 19 %.
1. Créer l'objet et choisir le profil
Dim LicenseKey As String = "VOTRE-CLE-DE-LICENCE" ' licence d'essai : info@aloaha.com
' fixer la culture du format numérique pour la conversion
Dim culturebackup = System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("de-DE")
Dim alo As New Aloaha_ZUGFeRD.XML(Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort, False, LicenseKey) ' profil EN 16931 (COMFORT)
Pour une XRechnung destinée aux administrations publiques allemandes, définissez en plus alo.isKOSIT = True et alo.LeitwegID. Le profil adapté est expliqué dans la comparaison des profils.
2. En-tête de facture
alo.CreateInvoice("RE-2026-0001", "Invoice as per order", alo.TodayDate.Document_Date, alo.TodayDate.Document_DateFormat, , "", "EUR")
alo.InvoiceCurrencyCode = "EUR" ' BT-5
alo.Document_Type = Aloaha_ZUGFeRD.iXML.DocumentType.Invoice
Le deuxième paramètre de CreateInvoice est une note de facture (BT-22), et non le type de facture. Définissez le type (BT-3) ensuite avec Document_Type.
3. Vendeur et acheteur
' vendeur avec numéro de TVA (BT-31)
alo.WriteSeller("Muster GmbH", "20095", "Hamburg", "Hauptstr. 1", "", "DE", "DE123456789")
alo.WriteSellerContactPerson("Erika Muster", "Sales", "sales@muster.example", "+49 40 123456")
alo.set_URIUniversalCommunication("invoice@muster.example", "EM", True) ' BT-34
' acheteur
alo.BuyerName = "Kunde AG"
alo.BuyerAddressLine1 = "Marktplatz 5"
alo.BuyerPostCode = "80331"
alo.BuyerCity = "München"
alo.BuyerCountry = "DE"
alo.set_URIUniversalCommunication("purchasing@kunde.example", "EM", False) ' BT-49
4. Paiement
alo.AddPaymentMeans(alo.PaymentMeansCode(Aloaha_ZUGFeRD.iXML.Payment_Means.SEPA_credit_transfer), "SEPA credit transfer", "DE02120300000000202051", "Muster GmbH", "", "BYLADEM1001", "", "", False)
alo.AddTradePaymentTerms("Payable within 30 days net") ' BT-20
alo.PaymentReference = "RE-2026-0001"
5. Ligne de facture
Dim VatCat As String = alo.VatCategoryCode(Aloaha_ZUGFeRD.iXML.VAT_Category.StandardRate)
alo.AddProduct_Comfort("1", "", "ART-100", "10.00", "C62", "Paper A4", "500 sheets",
"", "EUR", "", "C62", False, "", "", "", "5.00", "EUR", "1.00",
"C62", "VAT", VatCat, "19.00", "", "50.00", "EUR", "", "")
Les unités de mesure sont des codes fixes (recommandation CEE-ONU n° 20, p. ex. C62 = pièce). Tous les paramètres de AddProduct_Comfort sont expliqués dans l'article Ajouter des lignes de facture avec AddProduct_Comfort (en allemand).
6. TVA et totaux
' ventilation de la TVA (BG-23) : 19 % sur 50,00 EUR
alo.AddTradeTax("9.50", "EUR", "50.00", "EUR", "VAT", VatCat, "19.00")
' totaux (BG-22) : total des lignes, total TTC, montant dû, base imposable, TVA
alo.WriteTotals("50.00", "59.50", "59.50", "50.00", "9.50")
Si la facture comporte des remises, la base imposable est le montant HT après remises – voir BR-S-08, BR-S-09 et BR-CO-17.
7. Enregistrer le XML et l'intégrer dans un PDF/A-3
alo.SaveXML("C:\Invoices\RE-2026-0001.xml")
If alo.Last_Error <> "" Then Console.WriteLine(alo.Last_Error)
' facture ZUGFeRD hybride : intégrer le XML dans votre facture PDF existante
alo.MergeXMLIntoPDF("C:\Invoices\RE-2026-0001.xml", "C:\Invoices\RE-2026-0001.pdf",
"C:\Invoices\RE-2026-0001_zugferd.pdf", True, "", LicenseKey)
System.Threading.Thread.CurrentThread.CurrentCulture = culturebackup
Si vous n'avez pas encore de PDF, créez-le avec CreateDocFromXML directement à partir du XML et d'un modèle DOCX – voir fusionner un XML ZUGFeRD avec un modèle DOCX (en allemand). Un exemple plus complet, avec remises et deux taux de TVA, figure dans l'exemple de code pour XRechnung.
Autres langages : Delphi, VB6, VB5 et VBA, ou sans programmer avec le SDK : CSV et zugcmd.
Questions fréquentes
Cela fonctionne-t-il aussi avec C# ou VB6 ?
Oui. Le SDK Aloaha ZUGFeRD est une bibliothèque .NET dotée d'une interface COM ; les mêmes méthodes sont disponibles en C#, VB.NET, VB6/VBA et dans les autres langages compatibles COM.
Quel profil dois-je utiliser ?
Pour la plupart des factures B2B, le profil EN 16931 (COMFORT) ; pour les administrations publiques allemandes, la XRechnung (isKOSIT = True plus Leitweg-ID).
Comment trouver les erreurs dans la facture générée ?
Après SaveXML, Last_Error contient un message d'erreur si le fichier n'a pas pu être créé. Pour vérifier le contenu, validez le XML par rapport aux règles EN 16931 et XRechnung.
Termes métier dans cet article : BT-1 BT-2 BT-5 BT-31 BT-81 BT-20 BG-25 BG-23 BG-22 BT-34 BT-49 BT-10