diff --git a/templates/admin/accommodation_booking/_price_breakdown.html.twig b/templates/admin/accommodation_booking/_price_breakdown.html.twig
new file mode 100644
index 00000000..bfa4945c
--- /dev/null
+++ b/templates/admin/accommodation_booking/_price_breakdown.html.twig
@@ -0,0 +1,98 @@
+{#- Itemised price table, the same lines the customer sees in the offer. Context: booking, priceBreakdown, currency. -#}
+
+ {% for period in priceBreakdown.periods | filter(p => p.position == 'leading') %}
+ {% include 'admin/accommodation_booking/_price_period.html.twig' %}
+ {% endfor %}
+ {% if priceBreakdown.periods is not empty %}
+
+ |
+ Gruppe · {{ booking.mainDateFrom | date('d.m.Y') }} – {{ booking.mainDateTo | date('d.m.Y') }},
+ {{ priceBreakdown.nights }} {{ priceBreakdown.nights != 1 ? 'Nächte' : 'Nacht' }}
+ |
+
+ {% endif %}
+ {% if priceBreakdown.basePrice > 0 %}
+
+ |
+ Basispreis
+ für {{ priceBreakdown.includedPax }} Pers.
+ |
+ {{ (priceBreakdown.basePrice / 100) | format_currency(currency) }} |
+
+ {% endif %}
+ {% if priceBreakdown.additionalPersonsPrice > 0 %}
+
+ |
+ Aufpreis Personenzahl
+ für {{ priceBreakdown.effectivePax - priceBreakdown.includedPax }} Pers.
+ |
+ {{ (priceBreakdown.additionalPersonsPrice / 100) | format_currency(currency) }} |
+
+ {% endif %}
+ {% if priceBreakdown.shortTermSurcharge > 0 %}
+
+ | Aufpreis Kurzzeit |
+ {{ (priceBreakdown.shortTermSurcharge / 100) | format_currency(currency) }} |
+
+ {% endif %}
+ {% if priceBreakdown.boardPrice > 0 %}
+
+ | Verpflegung |
+ {{ (priceBreakdown.boardPrice / 100) | format_currency(currency) }} |
+
+ {% endif %}
+ {% if priceBreakdown.undersubscriptionSurcharge > 0 %}
+
+ | Verpflegungs-Aufschlag für Gruppen unter {{ priceBreakdown.undersubscriptionThreshold }} Personen |
+ {{ (priceBreakdown.undersubscriptionSurcharge / 100) | format_currency(currency) }} |
+
+ {% endif %}
+ {% for service in priceBreakdown.serviceDetails %}
+ {% if service.price > 0 %}
+
+ | {{ service.label }} |
+ {{ (service.price / 100) | format_currency(currency) }} |
+
+ {% endif %}
+ {% endfor %}
+ {% if priceBreakdown.runningCosts > 0 %}
+
+ | Strom- und Abfallgebühren |
+ {{ (priceBreakdown.runningCosts / 100) | format_currency(currency) }} |
+
+ {% endif %}
+ {% for period in priceBreakdown.periods | filter(p => p.position == 'trailing') %}
+ {% include 'admin/accommodation_booking/_price_period.html.twig' %}
+ {% endfor %}
+
+ |
+ Gesamtpreis
+ zzgl. ortsabhängiger Gebühren
+ |
+ {{ (priceBreakdown.total / 100) | format_currency(currency) }} |
+
+ {% for discount in priceBreakdown.discounts %}
+
+ | {{ discount.label }} {{ discount.percent }} % |
+ – {{ (discount.amount / 100) | format_currency(currency) }} |
+
+ {% endfor %}
+ {% if priceBreakdown.discountSubtotal is not null %}
+
+ | Zwischensumme |
+ {{ (priceBreakdown.discountSubtotal / 100) | format_currency(currency) }} |
+
+ {% endif %}
+ {% if priceBreakdown.totalDiscountDetails is not null %}
+
+ | {{ priceBreakdown.totalDiscountDetails.label }} |
+ – {{ (priceBreakdown.totalDiscountDetails.amount / 100) | format_currency(currency) }} |
+
+ {% endif %}
+ {% if priceBreakdown.discounts is not empty or priceBreakdown.totalDiscountDetails is not null %}
+
+ | Gesamtpreis nach Rabatt |
+ {{ (priceBreakdown.discountedTotal / 100) | format_currency(currency) }} |
+
+ {% endif %}
+
diff --git a/templates/admin/accommodation_booking/_price_period.html.twig b/templates/admin/accommodation_booking/_price_period.html.twig
index b0ee7d82..21025fc4 100644
--- a/templates/admin/accommodation_booking/_price_period.html.twig
+++ b/templates/admin/accommodation_booking/_price_period.html.twig
@@ -1,4 +1,4 @@
-{#- One split-off period of the price table on the detail page. Context: period, currency. -#}
+{#- One split-off period of the admin price table. Context: period, currency. -#}