diff --git a/User.php b/User.php
index 5e8487e..91cfa21 100644
--- a/User.php
+++ b/User.php
@@ -3,6 +3,7 @@
 
 class User
 {
+    public $id;
     public $username;
     public $first_name;
     public $last_name;
@@ -23,10 +24,14 @@
     public $participation_confirmed_at;
     public bool $student;
     public bool $conference_dinner;
+    public $registered_at;
+    public bool $earlybird_registration;
     public float $total_due;
+    public $invoice;
 
     function __construct()
     {
+        $this->id = "";
         $this->username = "";
         $this->first_name = "";
         $this->last_name = "";
@@ -47,7 +52,10 @@
         $this->participation_confirmed_at = "";
         $this->student = false;
         $this->conference_dinner = false;
+        $this->registered_at = date("Y-m-d H:i:s") . "UTC";
+        $this->earlybird_registration = false;
         $this->total_due = 0.0;
+        $this->invoice = "";
     }
 
     function __construct1(object $data)
@@ -97,6 +105,7 @@
     function to_string()
     {
         $tmp_user = $this;
+        $tmp_user->invoice = "";
         $tmp_user->password = "***";
         $tmp_user->user_hash = "***";
         return  json_encode($tmp_user);
@@ -113,7 +122,7 @@
     function to_table() {
         $table = "<table  style='border: 1px solid #e1e4e8; border-collapse: collapse; width: 100%;'>";
         foreach ($this as $key => $value) {
-            if ($key != "password" && $key != "user_hash" && !empty($value)) {
+            if ($key != "password" && $key != "user_hash" && !empty($value) && $key != "invoice") {
                 if (is_bool($value)) {
                     if ($value) $value = "yes";
                     else $value = "no";
diff --git a/composer.json b/composer.json
index cbe00da..826dc18 100644
--- a/composer.json
+++ b/composer.json
@@ -1,6 +1,13 @@
 {
+    "repositories": [
+        {
+            "type": "vcs",
+            "url": "https://github.com/morckx/pdf-invoice"
+        }
+    ],
     "require": {
         "gregwar/captcha": "1.*",
-        "monolog/monolog": "3.*"
+        "monolog/monolog": "3.*",
+        "konekt/pdf-invoice": "master-dev"
     }
-}
+}
\ No newline at end of file
diff --git a/db_backend.php b/db_backend.php
index e1be86e..6876558 100644
--- a/db_backend.php
+++ b/db_backend.php
@@ -16,7 +16,7 @@
         global $DB, $DB_USER, $DB_PASS;
         $this->log = $log;
         try {
-            $this->pdo = new PDO($DB, $DB_USER, $DB_PASS);
+            $this->pdo = new PDO($DB, $DB_USER, $DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );
             if($log)
                 $log->info("Connected to database $DB");
         } catch (PDOException $e) {
@@ -34,6 +34,7 @@
                 $a[$key] = $value;
             }
         }
+        $a["participation_confirmed_at"] = date("Y-m-d H:i:s UTC");
         $keys = array_keys($a);
         $sql = "INSERT INTO person (" . implode(", ", $keys) . ") \n";
         $sql .= "VALUES ( :" . implode(", :", $keys) . ")";
@@ -42,7 +43,9 @@
         foreach ($a as $value)
             $q->bindParam($i++, $value);
         $this->log->debug($sql);
-        return $q->execute($a);
+        $res = $q->execute($a);
+        $user->id = $this->pdo->lastInsertId();
+        return $res;
     }
 
     function getColumnNames($table)
diff --git a/index.php b/index.php
index 5ce87e6..47712cd 100755
--- a/index.php
+++ b/index.php
@@ -8,6 +8,7 @@
 include_once 'db_backend.php';
 include_once 'validators.php';
 include_once 'User.php';
+include_once 'invoice.php';
 require __DIR__ . '/vendor/autoload.php';
 use Monolog\Level;
 use Monolog\Logger as Logger;
@@ -50,7 +51,7 @@
         "subject" => $WELCOME_TEMPLATE->subject,
         "text"    => replace_all_user_variables($WELCOME_TEMPLATE->text, $user, $url),
         "html"    => replace_all_user_variables($WELCOME_TEMPLATE->html, $user, $url)
-    ]);
+    ], $user);
 }
 
 function send_confirmation_email(string $mail, object $smtp, string $url, User $user)
@@ -315,7 +316,7 @@
                         $pending = redis_get("pending");
                         if ($pending) {
                             $maillist = $pending->mails;
-                            if (in_array($user->email, $maillist)) {
+                            if (is_array($maillist) && in_array($user->email, $maillist)) {
                                 unset($maillist[array_search($user->email, $maillist)]);
                                 redis_set("pending", (object)["mails" => $maillist], $MAIL_CONFIRMATION_AWAIT_DELAY);
                             }
diff --git a/invoice.php b/invoice.php
index d1de840..53bba3d 100644
--- a/invoice.php
+++ b/invoice.php
@@ -1,41 +1,76 @@
 <?php
 
-require '../vendor/autoload.php';
+include_once 'User.php';
+use \User as User;
+
+require 'vendor/autoload.php';
 
 use Konekt\PdfInvoice\InvoicePrinter;
 
-include '../src/InvoicePrinter.php';
-$invoice = new InvoicePrinter("A4", "€", "en");
-$invoice->lang['product'] = "Item";
-/* Header Settings */
-$invoice->setLogo('images/iclc-logo.png');
-$invoice->setColor('#4bb044');
-$invoice->setType('Invoice');
-$invoice->setReference('55033645');
-$invoice->setDate(date('Y-m-d', time()));
-$invoice->setFrom(['', 'Leibniz-Institute for the German Language', 'R5 6-13', '68181 Mannheim', 'Germany']);
-$invoice->setTo(['', 'Marc Kupietz', 'U4 4', '68161 Mannheim', 'Germany']);
+#include_once '../src/InvoicePrinter.php';
+include 'config.php';
 
-$invoice->setDue(date('Y-m-d', strtotime('+2 weeks')));
-// $invoice->hide_tofrom();
-/* Adding Items in table */
-$invoice->addItem('ICLC-10 Early Bird Standard Registration', '10ᵗʰ International Contrastive Linguistics Conference, 18-21 July in Mannheim (Germany)', 1, false, 280, false, 280);
-$invoice->addItem('Conference Dinner', 'The conference dinner will take place on 20 July.', 1, false, 60, false, 60);
-/* Add totals */
-$invoice->addTotal('Total', 340);
-$invoice->addTotal('Total due', 340, true);
+function create_invoice(User $user)
+{
+    global $SERVICE_ACRONYM, $SERVICE_NAME, $SERVICE_LOGO, $REGULAR_CONFERENCE_FEE, $EARLYBIRD_CONFERENCE_FEE, $STUDENT_DISCOUNT, $CONFERENCE_DINNER;
 
-$invoice->addTitle("Payment Details");
+    $invoice = new InvoicePrinter("A4", "€", "en");
+    $invoice->lang['product'] = "Item";
+    /* Header Settings */
+    $invoice->setLogo(str_replace(".svg", ".png", $SERVICE_LOGO));
+    $invoice->setColor('#4bb044');
+    $invoice->setType('Invoice');
+    $invoice->setReference('ICLC-10-' . $user->id);
+    $invoice->setDate(date('Y-m-d', time()));
+    $invoice->setFrom(['', 'Leibniz-Institute for the German Language', 'R5 6-13', '68181 Mannheim', 'Germany']);
+    $invoice->setTo([$user->first_name . ' ' . $user->last_name, $user->organization, $user->street, $user->zip . ' ' . $user->city, $user->country]);
+    $invoice->setDue(date('Y-m-d', strtotime('+2 weeks')));
+    // $invoice->hide_tofrom();
+    /* Adding Items in table */
+    if ($user->earlybird_registration) {
+        $invoice->addItem( $SERVICE_ACRONYM . ' Early Bird Registration', $SERVICE_NAME, 1, false, $EARLYBIRD_CONFERENCE_FEE, false, $EARLYBIRD_CONFERENCE_FEE);
+    } else
+        $invoice->addItem( $SERVICE_ACRONYM . ' Registration', $SERVICE_NAME, 1, false, $REGULAR_CONFERENCE_FEE, false, $REGULAR_CONFERENCE_FEE);
+    if($user->student) $invoice->addItem('Student Discount', 'Student discount', 1, false, "", $STUDENT_DISCOUNT, -$STUDENT_DISCOUNT);
+    if($user->conference_dinner)
+        $invoice->addItem('Conference Dinner', 'The conference dinner will take place on 20 July.', 1, false, $CONFERENCE_DINNER, false, $CONFERENCE_DINNER);
+    /* Add totals */
+    $invoice->addTotal('Total', $user->total_due);
+    // $invoice->addTotal('Discount', $STUDENT_DISCOUNT);
+    $invoice->addTotal('Total due', $user->total_due, true);
 
-$invoice->addParagraph("Please make payment by Bank Transfer, quoting the above REFERENCE and INVOICE NUMBER as shown above. Bank details are given below:");
+    $invoice->addTitle("Payment Details");
 
-$invoice->addParagraph("Leibniz-Institute for the German Language
+    $invoice->addParagraph("Please transfer the total amount to the following account: ");
+
+    $invoice->addParagraph("Leibniz-Institute for the German Language
 IBAN: DE70 6708 0050 0694 9411 00
 BIC: DRESDEFF670
 Commerzbank Mannheim
-  
-VAT ID: DE 143845359
+
+Reference: ICLC-10-" . $user->id . "
 ");
-$invoice->setFooterNote("xx");
-/* Render */
-$invoice->render('example2.pdf', 'I'); /* I => Display on browser, D => Force Download, F => local path save, S => return document path */
+    //$invoice->setFooterNote("xx");
+
+    /* Render */
+    $path = tempnam(sys_get_temp_dir(), 'prefix');
+    $ret = $invoice->render('example4.pdf', 'S'); /* I => Display on browser, D => Force Download, F => local path save, S => return document path */
+    return $ret;
+}
+
+/*
+$user = new User();
+$user->id = 107;
+$user->first_name = "John";
+$user->last_name = "Урсула";
+$user->organization = "Урсула ACME Inc.";
+$user->street = "123 Main St.";
+$user->zip = "12345";
+$user->city = "Mannheim";
+$user->country = "Germany";
+$user->total_due = 260.0;
+$user->student = true;
+$user->conference_dinner = true;
+create_invoice($user);
+*/
+?>
\ No newline at end of file
diff --git a/mail.php b/mail.php
index c0f3251..3a0440f 100755
--- a/mail.php
+++ b/mail.php
@@ -2,8 +2,10 @@
 require_once "Mail.php";
 include('Mail/mime.php');
 include 'config.php';
+include_once 'User.php';
+use \User as User;
 
-function send_mail(string $email, object $smtp, object $message) {
+function send_mail(string $email, object $smtp, object $message, User $user = null) {
     include 'config.php';
 
     $crlf = "\r\n";
@@ -41,6 +43,9 @@
     // Setting the body of the email
     $mime->setTXTBody($message->text);
     $mime->setHTMLBody($message->html);
+    if ($user && $user->invoice) {
+        $mime->addAttachment ( $user->invoice , 'application/pdf' , $SERVICE_ACRONYM."-invoice.pdf" , false, "base64" );
+    }
 
     $body = $mime->get();
     $headers = $mime->headers($headers);
diff --git a/templates/mail_confirmed.htm b/templates/mail_confirmed.htm
index c01da31..6057d6e 100644
--- a/templates/mail_confirmed.htm
+++ b/templates/mail_confirmed.htm
@@ -1,5 +1,10 @@
 <div class="alert alert-success" role="alert">
     <p>Your email address was confirmed! Thank you for registering for
-        <?php echo $SERVICE_ACRONYM; if(!empty($REDIRECT_TO) ) { echo "</p><p>You are being redirected..."; } ?>
+        <?php 
+        echo $SERVICE_ACRONYM ."!";
+        if ($CONFERENCE_REGISTRATION) {
+            echo " A confirmation email including the invoice and payment instructions has been sent to you.";
+        }
+        if(!empty($REDIRECT_TO) ) { echo "</p><p>You are being redirected..."; } ?>
     </p>
 </div>
diff --git a/templates/register.htm b/templates/register.htm
index cf63cce..8ea509c 100644
--- a/templates/register.htm
+++ b/templates/register.htm
@@ -481,7 +481,7 @@
     <?php endif; ?>
      <?php if( $CONFERENCE_REGISTRATION ): ?>
      <div class="form-outline col-md-7">
-        <label class="form-label fw-bold" for="student">Author Status</label>
+        <label class="form-label fw-bold" for="author">Author Status</label>
         <div class="form-group form-check">
             <input type="checkbox" class="form-check-input" name="author" id="author"
                 <?php echo isset($_POST['author']) ? 'checked' : '' ?>
@@ -493,7 +493,7 @@
     </div>
 
     <div class="form-outline col-md-5">
-        <label class="form-label fw-bold" for="student">Paper ID</label>
+        <label class="form-label fw-bold" for="paper_id">Paper ID</label>
         <input type="text" class="form-control fs-4" name="accepted_paper_id" id="paper_id"
             <?php echo isset($_POST['author']) ? 'placeholder="0000"' : 'disabled' ?>
             value="<?php echo isset($_POST['paper_id']) ? htmlspecialchars($_POST['paper_id']) : '' ?>" />
@@ -511,10 +511,14 @@
                 value="participation_confirmed">
             <label class="form-check-label fs-4" for="participation_confirmed">I confirm that I will be attending the <?php echo $SERVICE_ACRONYM; ?> conference. 
                 <?php if(new DateTimeImmutable("now") <= new DateTimeImmutable($EARLYBIRD_DEADLINE." 23:59:59 HST")) {
-                    echo "The early bird conference fee of <strong>€ <span id='conference_fee'>". $EARLYBIRD_CONFERENCE_FEE."</span></strong> is still valid until ".$EARLYBIRD_DEADLINE.".
+                        echo "The early bird conference fee of <strong>€ <span id='conference_fee'>". $EARLYBIRD_CONFERENCE_FEE."</span></strong> is still valid until ".$EARLYBIRD_DEADLINE.".
                      (afterwards the fee fee will be € <span id='conference_fee'>". $REGULAR_CONFERENCE_FEE.")";
+                        echo '<input type="hidden" name="conference_fee" value="' . $EARLYBIRD_CONFERENCE_FEE . '">';
+                        echo '<input type="hidden" name="earlybird_registration" value="earlybird_registration">';
                     } else {
                         echo "The conference fee is <strong>€ <span id='conference_fee'>". $REGULAR_CONFERENCE_FEE."</span></strong>.";
+                        echo '<input type="hidden" name="conference_fee" value="' . $REGULAR_CONFERENCE_FEE . '">';
+                        echo '<input type="hidden" name="earlybird_registration" value="">';
                     } ?>
             </label>
             <div class="invalid-feedback">
@@ -531,7 +535,7 @@
                 <?php echo isset($_POST['student']) ? 'checked' : '' ?>
                 oninput="update_total_due()"
                 value="student">
-            <label class="form-check-label fs-4" for="student">I am student and will therefore benefit from student discount of <strong>€ <span id="student_discount"><?php echo $STUDENT_DISCOUNT; ?></span></strong>.
+            <label class="form-check-label fs-4" for="student">I am student and will therefore benefit from student discount of <strong>€&nbsp;<span id="student_discount"><?php echo $STUDENT_DISCOUNT; ?></span></strong>.
             </label>
         </div>
     </div>
@@ -543,7 +547,7 @@
                 <?php echo isset($_POST['conference_dinner']) ? 'checked' : '' ?>
                 oninput="update_total_due()"
                 value="conference_dinner">
-            <label class="form-check-label fs-4" for="conference_dinner">I will be attending the conference dinner on 20 July at 8pm at the Rheinterrassen for the price of <strong>€ <span id="conference_dinner_price"><?php echo $CONFERENCE_DINNER; ?></span></strong>.
+            <label class="form-check-label fs-4" for="conference_dinner">I will be attending the conference dinner on 20 July at 8pm at the Rheinterrassen for the price of <strong>€&#160;<span id="conference_dinner_price"><?php echo $CONFERENCE_DINNER; ?></span></strong>.
             </label>
         </div>
     </div>
@@ -553,7 +557,7 @@
               <div class="input-group-text fs-3">€</div>
               <input lang="en" name="total_due" id="total_due" class="form-control text-end fw-bold fs-3" readonly>
             </div>
-            <div id="totalHelp" class="form-text fs-4">Only bank transfer is available as a payment method. After submitting the form, you will be asked to confirm your e-mail address. After you have confirmed it, you will receive an invoice with all bank details.</div>
+            <div id="totalHelp" class="form-text fs-4">Please note that bank transfer is the only payment method. After submitting this form, you will be asked to confirm your email address. After that you will receive an invoice with all bank details.</div>
     </div>
 
     <?php endif; ?>
