diff --git a/aleksis/apps/tezor/models/invoice.py b/aleksis/apps/tezor/models/invoice.py
index 356aa4b942a59e89ba1f2b6c2266f7e2840c793d..03f4fc9c6131ade2eb47fac6b9b05bc97197eec8 100644
--- a/aleksis/apps/tezor/models/invoice.py
+++ b/aleksis/apps/tezor/models/invoice.py
@@ -10,6 +10,7 @@ from payments.models import BasePayment
 from aleksis.core.mixins import ExtensibleModel, PureDjangoModel
 
 from .base import Client
+from ..tables import PurchasedItemsTable, TotalsTable
 
 
 class InvoiceGroup(ExtensibleModel):
@@ -44,3 +45,30 @@ class Invoice(BasePayment, PureDjangoModel):
         constraints = [
             models.UniqueConstraint(fields=["transaction_id", "group"], name="number_uniq_per_group")
         ]
+
+    @property
+    def purchased_items_table(self):
+        items = [i._asdict() for i in self.get_purchased_items()]
+        return PurchasedItemsTable(items)
+
+    @property
+    def totals_table(self):
+        tax_amounts = {}
+        for item in self.get_purchased_items():
+            tax_amounts.setdefault(item.tax_rate, 0)
+            tax_amounts[item.tax_rate] += item.price / (item.tax_rate + 100) * item.tax_rate
+
+        values = []
+        for tax_rate, total in tax_amounts:
+            values.append({
+                "name": _("Included VAT {} %").format(tax_rate),
+                "value": total,
+                "currency": self.currency,
+            })
+        values.append({
+            "name": _("Gross total"),
+            "value": self.total,
+            "currency": self.currency,
+        })
+
+        return TotalsTable(values)
diff --git a/aleksis/apps/tezor/tables.py b/aleksis/apps/tezor/tables.py
new file mode 100644
index 0000000000000000000000000000000000000000..5eff6243995caa0a3d34766612a75c5a2617a86d
--- /dev/null
+++ b/aleksis/apps/tezor/tables.py
@@ -0,0 +1,16 @@
+import django_tables2 as tables
+
+
+class PurchasedItemsTable(tables.Table):
+    sku = tables.Column()
+    name = tables.Column()
+    tax_rate = tables.Column()
+    quantity = tables.Column()
+    price = tables.Column()
+    currency = tables.Column()
+
+
+class TotalsTable(tables.Table):
+    name = tables.Column()
+    value = tables.Column()
+    currency = tables.Column()