💻 Create ZUGFeRD Invoices with C# – API and CLI Integration Examples

Want to create ZUGFeRD-compliant invoices with your own C# application? No problem! With the 7-PDF Attach Extract and Remove tool and the integrated 7-PDF Invoice Extractor, you can automatically process PDF invoices into valid ZUGFeRD documents (PDF/A-3 with XML) using either the command line or REST API.

Important: To make a PDF invoice ZUGFeRD-compliant, the file must be in PDF/A-3 format. If your file isn’t, simply convert it beforehand using our 7-PDF Printer Professional.

🛠️ Workflow: From PDF to ZUGFeRD

  1. Create invoice as PDF/A-3 (e.g. with 7-PDF Printer)
  2. Process it using C# via CLI or API
  3. Generate ZUGFeRD XML and embed it into the PDF

🧪 Example 1: C# Console App Using CLI – Embed XML

This example uses the locally installed PDFAttachExtractAndRemoveFiles.exe to embed an existing factur-x.xml file into a PDF. No API token is required – ideal for tests and trial mode.

using System.Diagnostics;

class Program
{
    static void Main()
    {
        string attachToolPath = @"C:\Program Files (x86)\7-PDF\7-PDF Attach Extract And Remove Files\PDFAttachExtractAndRemoveFiles.exe";
        string inputPdf = @"C:\Invoices\original.pdf";
        string zugferdXml = @"C:\Invoices\factur-x.xml";

        string args = $"-mode \"console\" -usage \"attach\" -inpdf \"{inputPdf}\" -infile \"{zugferdXml}\" -estandard \"ZF21\"";

        var proc = new Process();
        proc.StartInfo.FileName = attachToolPath;
        proc.StartInfo.Arguments = args;
        proc.StartInfo.CreateNoWindow = true;
        proc.StartInfo.UseShellExecute = false;
        proc.Start();

        proc.WaitForExit();

        if (proc.ExitCode == 0)
        {
            Console.WriteLine("PDF successfully updated with ZUGFeRD XML.");
        }
        else
        {
            Console.WriteLine($"Error embedding XML. Exit code: {proc.ExitCode}");
        }
    }
}

Note: The tool 7-PDF Attach Extract and Remove must be installed locally. The trial version can be used directly (e.g. with an empty API token in print mode).


🔐 Example 2: C# with API Token – Analyze PDF & Get XML

This example sends the PDF invoice to the 7-PDF FastAPI. You’ll receive a full analysis and the generated ZUGFeRD XML. This variant requires a valid API token. With a license purchase, you’ll receive 25 free conversions included.

using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.IO;

class Program
{
    static async Task Main()
    {
        string pdfPath = @"C:\Invoices\original.pdf";
        string apiToken = "YOUR_API_TOKEN"; // View token via https://generator.7-pdf.de/login

        var form = new MultipartFormDataContent();
        var fileStream = File.OpenRead(pdfPath);
        var fileContent = new StreamContent(fileStream);
        fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/pdf");
        form.Add(fileContent, "file", Path.GetFileName(pdfPath));

        var client = new HttpClient();
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiToken);

        var response = await client.PostAsync("https://generator.7-pdf.de/extract-invoice/", form);
        var jsonResponse = await response.Content.ReadAsStringAsync();

        dynamic parsed = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonResponse);
        File.WriteAllText("factur-x.xml", (string)parsed.xml);

        Console.WriteLine("ZUGFeRD XML saved as factur-x.xml");
    }
}

Try it now: Get API Access


📎 Add-on: Embed XML via CLI

PDFAttachExtractAndRemoveFiles.exe -mode "console" -usage "attach" -inpdf "original.pdf" -infile "factur-x.xml" -estandard "ZF21"

✅ The result is a ZUGFeRD-compliant PDF/A-3 e-invoice (DIN EN 16931).

📥 Start Now – Use the Tools & API

Get API Access & Start

Top