The binaries to create Payment Part & Receipts (PPR) are qrinvoice_ppr.exe and qrinvoice_ppr_console.exe (if you prefer a console application).

Type qrinvoice_ppr.exe --help in order to see available options and arguments:

qrinvoice_ppr.exe [OPTION...] [optional stdin]
Table 1. Options
Option Description Default Value


Print help

--basepath <value> -a <value>

Base path for all files. If set, all non-absolute paths are resolved relative to this base path

--inputfile <value> -b <value>

Input data (*) file name / path , if not specified, input is read from standard input.

--inputencoding <value>

Input encoding (UTF-8 | ISO-8859-1)


--inputformat <value> -c <value>

Input format (JSON|CSV)


--inputbase64 -d

Input is base64 encoded


--outputfile <value> -e <value>

Output file name, if not specified output is written into standard output

--outputformat <value> -f <value>

Output format (PDF | PNG | JPG)


--outputbase64 -g

Output is written base64 encoded


--language <value> -h <value>

Language in which the payment part & receipt is to be generated. (DE | FR | IT | EN)


--pagesize <value> -i <value>

Output page size (A4 | A5 | DIN_LANG)


--fontfamily <value> -j <value>

Font family (LiberationSans | Helvetica | Arial)


--fontpath <value> -k <value>

Font path where the font files (TTF files) are located.

--resolution <value> -l <value>

The number of DPI to use in order to rasterize the output (irrelevant for PDF) (150 | 300 | 600)


--boundarylines=<value> -m=<value>

Boundary lines are printed (separation between Bill and payment part & receipt). This is needed if QR Bill is digitally distributed and not printed on paper without perforation. (none | enabled | enabled_with_margins) - See also Output Options


--boundarylinescissors=<value> -n=<value>

Scissor pictogram is printed on the boundary lines to indicate the need for separation. requires boundarylines flag


--boundarylineseparationtext=<value> -o=<value>

A separation text ("Separate before paying in") is written above the payment part. Can only be used if pagesize is larger than DIN_LANG


--additionalprintmargin=<value> -p=<value>

If an additional print margin (1mm) should be added to the left, right and bottom of the payment part & receipt. If set, 6mm instead of 5mm print margin is used. This may be needed for some printers and print services. See also Output Options


--loglevel <value> -x <value>



--logfile <value> -y <value>

Log file name, if log should be printed to log file instead of standard output (if no output file is used, log is written to log.txt as default value)

--lazylogfile=<value> -z <value>

If log file should be lazily initialized. If no logging occurs, file is not created in lazy mode.



The input data (*) if not provided by inputfile.

*) Data can be passed as JSON or CSV document. Please make sure that UTF-8 is used as encoding, otherwise specify it with the option --inputencoding. Input can be passed as base64 encoded string in case you encounter encoding issues, especially when passing via stdin.


A4 PDF from JSON Input File in German

qrinvoice_ppr.exe --inputfile inputdata.json --outputfile qrinvoice_a4.pdf --logfile qrinvoice.log

DIN_LANG PDF from JSON Input File in French

qrinvoice_ppr.exe --inputfile inputdata.json --pagesize DIN_LANG --language FRENCH --outputfile qrinvoice_din_lang.pdf --logfile qrinvoice.log

DIN_LANG PNG from JSON Input File in French

qrinvoice_ppr.exe --inputfile inputdata.json --pagesize DIN_LANG --language FRENCH --outputformat PNG --outputfile qrinvoice_din_lang.png --logfile qrinvoice.log

A5 PDF from JSON Input File in Italian without boundary lines

qrinvoice_ppr.exe --inputfile inputdata.json --pagesize A5 --language ITALIAN --outputformat PDF --outputfile qrinvoice_a5.pdf --logfile qrinvoice.log --boundarylines=none