A library to create, read and validate ZUGFeRD compliant invoices. Available for Java and .NET

Overview

Konik ZUGFeRD Library

Join the chat at https://gitter.im/konik-io/konik

Is an easy to use open source implementation of the ZUGFeRD data model including various enhancements.

Features

  • Easy and understandable API to create and read ZUGFeRD compliant invoices.
  • Extensive documentation with examples. See konik.io/docs
  • XML schema and semantic invoice validation.
  • Validation of invoices against ZUGFeRD profiles.
  • Validation of invoices against specific country invoice regulations.
  • Attaching or extracting XMLs from PDFs.
  • Multiple PDF Carriages from different vendors (Currently iText and PDFBox). Choose your favorite or use any other of your choice.

Modules

Quick overview of the different modules.

  • konik Contains the ZUGFeRD data model.
  • harness API connecting the Konik library to a PDF-Carriage.
  • itext-carriage The PDF provider iText which can be used together with the Konik library.
  • pdfbox-carriage The PDF provider which can be used together with the Konik library.
  • distribution Zip distribution package. For those who are not using maven.
  • project content related to the project like Scripts, Formatting rules, dictionary. (Not a Maven module).

Documentation

http://konik.io/docs

License

All code is licensed under the AGPL, v3 or later.

Comments
  • Preise und Zwischenwerte bei der Rabattberechnung müssen nach der ZUGFeRD-Vorgabe mit 4 Nachkommastellen angegeben werden.

    Preise und Zwischenwerte bei der Rabattberechnung müssen nach der ZUGFeRD-Vorgabe mit 4 Nachkommastellen angegeben werden.

    Hallo, wir verwenden Konik 1.2.9 mit java. Beim Validieren der generierten Rechnung auf https://www.din-zugferd-validation.org erhalten wir folgenden Fehler: "Preise und Zwischenwerte bei der Rabattberechnung müssen nach der ZUGFeRD-Vorgabe mit 4 Nachkommastellen angegeben werden."

    In der Datei steht tatsächlich auch nur mit 2 Nachkommastellen:
    <ram:BasisAmount currencyID="EUR">515.00</ram:BasisAmount> <ram:ActualAmount currencyID="EUR">10.00</ram:ActualAmount> ram:ReasonRabatt (absolut) </ram:Reason>

    Allerdings verwenden wir ein BigDecimal mit 4 Nachkommastellen: double netamout = 10d; charge.setActual(new Amount(BigDecimal.valueOf(netamount).setScale(4), currencyCode));

    -->Scheinbar beachtet konik dies nicht. -->Bug? Workaround?

    question 
    opened by StefanSchmaltz 18
  • ZUGFeRD 2.0

    ZUGFeRD 2.0

    Hi.

    I have the following question: When is it to be expected that "konik" will also support the "ZUGFeRD 2.0" format adapted to the European standard? Currently, in my opinion, only the possibility to export in the "old" ZUGFeRD 1.0 format.

    question 
    opened by horstoeko 16
  • ZUGFeRD 1.0 - Fehler bei LineTotal

    ZUGFeRD 1.0 - Fehler bei LineTotal

    Hallo,

    der Wert, den ich für MonetarySummation.LineTotalAmount übergebe wird durch TaxBasisTotalAmount ersetzt. Hat das Gründe oder liegt hier ein Bug vor? Vielleicht wird es ja mir Version 2.x behoben...

    VG SchwarzBeere

    opened by SchwarzBeere 12
  • Validation Error

    Validation Error

    Hello,

    i'm using iTextSharp to produce a ZUGFeRD compatible PDF document. I am only using the validator from the konik library. The validator cannot find a file inside the produced document. It throws "The PDF does not contain an attached file named ZUGFeRD-invoice.xml". I can't see any mistake done by myself, so i think there is a validor bug.

    This is the file: 1432gmtx.yxt.pdf

    wontfix 
    opened by horstoeko 12
  • Change ProfileVersion to 1.0

    Change ProfileVersion to 1.0

    Hello, I need to change the line "<zf: version> 1p0 </ zf: version>" to "<zf: version> 1.0 </ zf: version>".

    Otherwise the files can not be imported. How can I change this?

    opened by oledede 11
  • @ trade.items[0].settlement.monetarySummation.totalAllowanceCharge - Error

    @ trade.items[0].settlement.monetarySummation.totalAllowanceCharge - Error

    Hallo, ich verwende die DLL in der Version 1.3.1 und bekomme nun folgende Meldung:

    Invoice has (1) violations. Berechneter Wert ist [-9.82] aber tatsächliche vorhander Wert ist [4.91] @ trade.items[1].settlement.monetarySummation.totalAllowanceCharge

    Der Kunde hat einen Artikel mit der Menge 2 gekauft. Insgesamt bekommt er dann 9,82 € Rabatt. Was ja auch richtig wäre, doch warum ist der Wert mit einem - Vorzeichen und warum ist der andere Wert 4,91 €?

    stale 
    opened by oledede 9
  • paymentDiscountTerm.setBasis is inaccessible due to its protection level

    paymentDiscountTerm.setBasis is inaccessible due to its protection level

    I am testing konik.io Library using .NET.
    I want to setup payment discount for an invoice. I thought I could do this with the class PaymentDiscountTerms:

    var paymentDiscountTerm = new PaymentDiscountTerms();
    paymentDiscountTerm.setBasis(DiscountAmount, CurrencyCode.EUR));
    

    But this seems not possible - the compiler outputs an error message: paymentDiscountTerm.setBasis is inaccessible due to its protection level

    What is going wrong? How is discount managed otherwise?

    I made also an issue on stackoverflow: https://stackoverflow.com/questions/51725147/konik-zugferd-paymentdiscountterms

    I found a similar issue at https://groups.google.com/forum/#!topic/konik-io/88z6KyQkX5U

    opened by horstoeko 5
  • [Feature request] Setting the author in the PDF file via properties file

    [Feature request] Setting the author in the PDF file via properties file

    When I append a ZUGFeRD invoice to an existing PDF, the author in the PDF is set to my system user name. I can change the author name by calling

    System.setProperty("io.konik.carriage.pdf.author", "My Author Name")
    

    in my code. In addition to that, I would like to be able to set the author name in Konik's property file as follows:

    io.konik.carriage.pdf.author=My Author Name
    
    enhancement question 
    opened by oova 5
  • error during validation of io.konik.zugferd.Invoice@142ce1f

    error during validation of io.konik.zugferd.Invoice@142ce1f

    We try to implement a ZUGFErD interface in our software on a Windows/Dotnet/C# platform on the based on your zugferd.dll. In our test project derived from your master example, it works pretty good. But in our main project (same platform) we get during the validation phase always the following exception: error during validation of io.konik.zugferd.Invoice@142ce1f

    with the inner exception: interface javax.validation.constraints.NotNull is not visible from class loader

    We googled but found none solution for this problem. Here is the sample of our validation method:

       public List<String> Validate(Invoice invoice)
        {
            List<String> err = new List<String>();
            InvoiceValidator Validator = new InvoiceValidator();
    
            try
            {
                Set violations = Validator.validate(invoice);
    
                if (violations.size() > 0)
                {
                    err.Add("....);
                    foreach (ConstraintViolation violation in violations.toArray())
                    {
                        err.Add(violation.getMessage() + " @ " + violation.getPropertyPath() + "\n");
                    }
                }
            }
            catch (Exception ex)
            {
                err.Add(ex.Message);
            }
            return (err);
        }
    
    opened by Frogrek 4
  • Preise und Zwischenwerte bei der Rabattberechnung müssen nach der ZUGFeRD-Vorgabe mit 4 Nachkommastellen angegeben werden.

    Preise und Zwischenwerte bei der Rabattberechnung müssen nach der ZUGFeRD-Vorgabe mit 4 Nachkommastellen angegeben werden.

    Hallo, gibt es schon eine Lösung für das Problem?

    Ich habe nun alles versucht, aber es werden nach wie vor 4 Nachkommastellen gefordert.

    <ram:BasisAmount currencyID="EUR">66.12</ram:BasisAmount> --Preise und Zwischenwerte bei der Rabattberechnung müssen nach der ZUGFeRD-Vorgabe mit 4 Nachkommastellen angegeben werden.

    opened by oledede 4
  • HeaderExchangedDocument - IssueDateTime - is missing

    HeaderExchangedDocument - IssueDateTime - is missing

    Hello,

    I have the ZUGFeRD XML below and want to read the IssueDateTime with the following code but it returns null on .getIssued(). The XML was created with konik - according to my customer.

    Do I do something wrong or is this a bug?

    Code:

                var handler = new PdfHandler();
                using (InputStream inputZugferdPdfStream = new FileInputStream(pdfFileName)) {
                    var invoice = handler.extractInvoice(inputZugferdPdfStream);
                    var header = invoice.getHeader();
                    if (!string.IsNullOrWhiteSpace(header?.getIssued()?.toString())) {
                        var rechnungsDatum = DateTime.Parse(header?.getIssued()?.toString());
                    }
    

    XML:

    	<rsm:HeaderExchangedDocument>
    		<ram:ID>7063111335</ram:ID>
    		<ram:Name>Sammelrechnung</ram:Name>
    		<ram:TypeCode>380</ram:TypeCode>
    		<ram:IssueDateTime>
    			<udt:DateTimeString format="102">20190122</udt:DateTimeString>
    		</ram:IssueDateTime>
    
    wontfix stale 
    opened by mahop-net 4
Releases(konik-1.3.2)
Owner
Konik
Open Source ZUGFeRD Library and Tools
Konik
Assistant to create, update and validate Modget manifests

Modget Create This tool helps to create Modget Manifests, which is used by the mod Modget. Modget Create (or MGC for short) is NOT perfect, but will a

null 5 Aug 13, 2022
Generates and keeps up-to-date your Spring Boot applications' Let's Encrypt or other ACME compliant SSL certificates.

Generates and keeps up-to-date your Spring Boot applications' Let's Encrypt or other ACME compliant SSL certificates. Pure Java in a single file of library code. An automated embedded alternative to Certbot and docker-sidecars. No JVM restart is needed on certificate update.

Valentyn Berezin 12 Nov 18, 2022
A joint research effort for building highly optimized Reactive-Streams compliant operators.

reactive-streams-commons A joint research effort for building highly optimized Reactive-Streams compliant operators. Current implementors include RxJa

Reactor 350 Dec 23, 2022
Library that makes it possible to read, edit and write CSV files

AdaptiveTableLayout Welcome the new CSV Library AdaptiveTableLayout for Android by Cleveroad Pay your attention to our new library that makes it possi

Cleveroad 1.9k Jan 6, 2023
Excel utility for Java to read and write data in declarative way.

Data Excel Exporter A Java wrapper using Apache POI to read and write Excel file in declarative fashion. Installation ExcelUtil is using Apache POI ve

null 27 Oct 16, 2022
There are two challenges one is to create a backend api the other is to create a frontend application to consume the public data api devall.

Sobre | Desafio | Resolução | Tecnologias | Execução | Itexto desafio tecnico Sobre os Desafios existem dois desafios um é criar uma api backend o out

fabricio S Miranda 1 Oct 18, 2021
Drifty is an open-source interactive File Downloader system built with java. It is currently available in CLI mode and has the GUI version under active development.

Drifty Drifty is an open-source interactive File Downloader system built using Java. It takes the link to the file, the directory where it needs to be

Saptarshi Sarkar 60 Dec 24, 2022
Generate and read big Excel files quickly

fastexcel fastexcel-writer There are not many alternatives when you have to generate xlsx Excel workbooks in Java. The most popular one (Apache POI) i

Cegid Conciliator 449 Jan 1, 2023
The Apache Software Foundation 605 Dec 30, 2022
Flutter plugin for notification read & reply

Reflex Flutter plugin for notification read & reply. Compatibility ✅ Android ❌ iOS (active issue: iOS support for reflex) Show some ❤️ and ⭐ the repo

Devs On Flutter 14 Dec 20, 2022
Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.

Cadence This repo contains the source code of the Cadence server and other tooling including CLI, schema tools, bench and canary. You can implement yo

Uber Open Source 6.5k Jan 4, 2023
Get notified with available vaccination centres via SMS

About A simple spring boot application that can track vaccine availability and automatically sends a SMS alert with the avilable centers Features Dose

Vic 21 Nov 16, 2022
Create a Music Playlist Library -Core JAVA, JAVA Swing, AWT

Project Specifications Manage Everything about a basic Music Playlist Application in Java A Music Library for Listing, Replaying, Navigating between c

Muhammad Asad 7 Nov 8, 2022
Android Library to create Lottie animation view dialog easily with a lot of customization

LottieDialog Android Library to create Lottie animation view dialog easily with a lot of customization Why you should use Lottie Dialog You have no li

Amr Hesham 39 Oct 7, 2022
The goal of the project is to create a web application using Java EE and database (PostgreSQL) without connecting a modern technology stack like spring boot and hibernate

About The Project SignIn page SignUp page Profile page The goal of the project is to create a web application using Java EE and database (PostgreSQL)

Islam Khabibullin 2 Mar 23, 2022
Create your Java crypto trading bot in minutes. Our Spring boot starter takes care of exchange connections, accounts, orders, trades, and positions so you can focus on building your strategies.

Quick Start | Documentation | Discord | Twitter Create and run your java crypto trading bot in minutes Our Spring boot starter takes care of exchange

Cassandre 442 Jan 3, 2023
Rivr is a lightweight open-source dialogue engine enabling Java developers to easily create enterprise-grade VoiceXML applications.

Overview Rivr is a lightweight open-source dialogue engine enabling Java developers to easily create enterprise-grade VoiceXML applications. Read our

Nu Echo Inc. 57 Jun 27, 2022
Multi-OS Engine: Create iOS Apps in Java (or Kotlin ... etc.)

Multi-OS Engine Overview Multi-OS Engine provides a Java runtime and Java interfaces to iOS platform API to develop native iOS applications with nativ

Multi-OS Engine 561 Dec 22, 2022
This is simple project to show how to create a basic API using Java 11 + Maven + Spring Boot + PostgrSQL + Flyway.

This is simple project to show how to create a basic API using Java 11 + Maven + Spring Boot + PostgrSQL + Flyway.

Sean Maxwell 11 Dec 10, 2022