Factuurspecificatie-sjablonen zijn een speciaal type factuursjabloon. Ze worden gebruikt om een gedetailleerd overzicht van registraties toe te voegen aan een factuur. Je kunt dit detailoverzicht als aparte pagina of bijlage aan de factuur laten toevoegen.
Een factuurspecificatie wordt aan de factuur toegevoegd als aan alle drie onderstaande voorwaarden is voldaan:
- Factuurspecificaties zijn ingeschakeld
- Er zijn registraties gekoppeld aan de factuur
- Er is een sjabloon van het type 'Factuurspecificatie' beschikbaar
💡 Lees ook het artikel over het inschakelen van factuurspecificaties: Factuurspecificaties instellen op bedrijfs-, relatie- en opdrachtniveau
Begin niet vanaf nul – gebruik een voorbeeldsjabloon voor factuurspecificaties
Factuurspecificatie-sjablonen kunnen best complex zijn. Ze laten namelijk toe om meerdere lagen van details te tonen. In AdminPulse en Voorbeeldsjablonen voor facturen en factuurspecificaties zijn er daarom al heel wat voorbeeldsjablonen beschikbaar. Voordat je zelf een sjabloon vanaf nul maakt, loont het de moeite om eerst tussen de voorbeelden te kijken. Je kunt die:
- gebruiken zoals ze zijn (met wat aanpassingen aan je huisstijl)
- of als basis gebruiken om op verder te bouwen
💡 Tip: ga je voor het eerst met tabellen werken in een factuursjabloon? Lees dan eerst de artikelen over hoe tabellen in factuursjablonen werken:
- Basisartikel: Factuursjablonen: facturen personaliseren – invulvelden, tabellen en huisstijl
- Tabellen in factuursjablonen (behalve factuurspecificaties): Factuursjablonen: invulvelden voor tabellen
Wat zijn prijslijstitemtypen, prijslijstitems en subklassen?
Om goed te begrijpen hoe factuurspecificaties zijn opgebouwd, is het handig om eerst kort stil te staan bij hoe de prijslijst is opgebouwd. Want het registreren op de items in de prijslijst en het gebruiken van een van de tabellen die hieronder beschreven zijn, bepaalt welke informatie precies op de factuurspecificaties verschijnt.
In AdminPulse bestaat een prijslijst uit prijslijstitems en subklassen. Daarnaast zie je bij elk prijslijstitem een type.
👉 De structuur van je prijslijst bepaalt dus hoe je registraties gegroepeerd worden op de factuurspecificaties — per prijslijstitem, per subklasse … of een combinatie.
Prijslijstitemtype
Het type van een prijslijstitem bepaalt hoe een prijslijstitem wordt geregistreerd en gefactureerd — bijvoorbeeld per uur of per aantal.
- Tijd: gefactureerd per uur (bijv. advieswerk)
- Product/kost: per eenheid (bijv. kosten voor neerlegging griffie)
- Afstand: per verplaatsing (bijv. taxi of bedrijfswagen)
Prijslijstitem
Met een prijslijstitem groepeer je verwante diensten. Denk aan categorieën zoals:
- Advies – alle adviesdiensten
- Erelonen – administratief werk
Prijslijstitems werden soms ook hoofdklassen genoemd.
Prijslijstitemsubklasse
Een subklasse is een specifieke dienst binnen een prijslijstitem. Om subklassen aan te kunnen maken, moet eerst het prijslijstitem bestaan.
In de voorbeeldprijslijst hieronder zijn 3 prijslijstitems zichtbaar: Interne werkzaamheden, Advies en Erelonen. Alle drie zijn van het type 'Tijd'. Advies bevat 3 subklassen en Erelonen bevat 2 subklassen.
Verplicht begin en einde van een sjabloon voor factuurspecificaties
👉 Let op: anders dan bij gewone factuursjablonen, moet elk factuurspecificatie-sjabloon verplicht starten met {BeginGroup:InvoiceDetail} en eindigen met {EndGroup:InvoiceDetail}.
{BeginGroup:InvoiceDetail} plaats je bovenaan de tabel voor de factuurspecificaties. {EndGroup:InvoiceDetail} zet je onderaan diezelfde tabel.
Als je deze velden vergeet, krijg je een foutmelding zodra je het sjabloon probeert te bekijken met een voorbeeldweergave of bij het maken van een factuurvoorstel.
Voorbeeld:
Overzicht van beschikbare tabellen in sjablonen voor factuurspecificaties
In een factuurspecificatie-sjabloon kun je verschillende tabellen gebruiken om gegevens weer te geven. Hieronder vind je eerst een overzicht van de beschikbare hoofdtabellen, gevolgd door de mogelijke subtabellen die je binnen die hoofdtabellen kunt gebruiken.
Hiërarchie van de beschikbare tabellen voor factuurspecificaties
-
Niveau 0 – Containertabellen (optioneel):
Relations,Assignments -
Niveau 1 – Hoofdtabellen: bijv.
PriceListItemDetails,TaskDetails, … -
Niveau 2 – Subtabellen: bijv.
RegistrationDays,Registrations, … -
Niveau 3 – Sub-subtabellen: bijv.
RegistrationsbinnenResources,SubtasksbinnenTaskDetails
👉 Alleen tabellen die daadwerkelijk gegevens bevatten, worden op een factuurspecificatie getoond.
Hoofdtabellen voor factuurspecificatie-sjablonen
In onderstaande tabel vind je alle hoofdtabellen (niveau 1) die je kunt gebruiken in je factuurspecificatie-sjabloon. Containertabellen (niveau 0; Relations, Assignments) vind je in een aparte sectie hieronder.
Per hoofdtabel zie je:
- Wat er precies wordt getoond
- Welke invulvelden beschikbaar zijn
- Of je binnen die tabel ook subtabellen kunt opnemen
| Hoofdtabel | Wat toont deze tabel? | Beschikbare velden | Heeft subtabellen? |
| {TableStart:PriceListItemDetails} ... {TableEnd:PriceListItemDetails} | Registraties gegroepeerd per subklasse | {Name} {FullName} {Total} {TotalPrice} {Code} |
Ja — bevat 'RegistrationDays' en 'Registrations' |
| {TableStart:PriceListItemCategoryDetails} ... {TableEnd:PriceListItemCategoryDetails} | Registraties gegroepeerd per prijslijstitem | {Name} {FullName} {Total} {TotalPrice} {Code} |
Ja — bevat 'RegistrationDays', 'Registrations' en 'Resources' |
| {TableStart:RegistrationDateDetails} ... {TableEnd:RegistrationDateDetails} | Registraties gegroepeerd per datum | {Date} {Name} {Amount} {TotalPrice} {Remark} |
Nee |
| {TableStart:TaskDetails} ... {TableEnd:TaskDetails} | Registraties gegroepeerd per taak | {TaskName} {TaskTotal} {TotalPrice} |
Ja — bevat 'Registrations' en 'Subtasks' |
| {TableStart:RegistrationTotals} ... {TableEnd:RegistrationTotals} | Totaaloverzicht per item uit de prijslijst | {Name} {Amount} {TotalPrice} |
Nee |
| {TableStart:RegistrationDetails} ... {TableEnd:RegistrationDetails} | Alle registraties zonder groepering | {Code} {Date} {Name} {Amount} {Remark} {Time} {Employee} {UnitPrice} {TotalPrice} {Billable} {InForfait} {InSubscription} {ReferenceYear} |
Nee |
Subtabellen voor factuurspecificatie-sjablonen
Naast hoofdtabellen kun je in factuurspecificatie-sjablonen ook subtabellen gebruiken. Die tonen bijvoorbeeld extra informatie per dag, per registratie of per medewerker. Elke subtabel hoort bij één of meerdere hoofdtabellen.
In onderstaand overzicht zie je welke subtabellen je kunt gebruiken, binnen welke hoofdtabellen ze beschikbaar zijn, welke velden je kunt gebruiken en of de subtabel zelf nog andere tabellen kan bevatten.
💡 Alleen subtabellen met gegevens worden getoond. Lege blokken of secties verschijnen dus niet in het eindresultaat.
👉 Belangrijk: subtabellen moeten altijd gebruikt worden binnen een hoofdtabel in factuurspecificatie-sjablonen. Ze kunnen niet los gebruikt worden.
| Subtabel | Wat toont deze subtabel? | Beschikbaar binnen deze hoofdtabellen |
Beschikbare velden binnen de subtabel |
Heeft zelf subtabellen |
| {TableStart:RegistrationDays} ... {TableEnd:RegistrationDays} | Registraties gegroepeerd per dag met dagelijkse totalen | PriceListItemDetails, PriceListItemCategoryDetails | {Name} {Date} {Amount} {Remark} {Time} {Employee} {UnitPrice} {TotalPrice} |
Nee |
| {TableStart:Registrations} ... {TableEnd:Registrations} |
Individuele registraties met details | PriceListItemDetails, PriceListItemCategoryDetails, TaskDetails, Resources, Subtasks |
{Code} {Date} {Name} {Amount} {Remark} {Time} {Employee} {UnitPrice} {TotalPrice} {Billable} {InForfait} {InSubscription} {ReferenceYear} |
Nee |
| {TableStart:Resources} ... {TableEnd:Resources} |
Subklassen binnen een prijslijstitem (alleen bij prijslijstitem-groepering in de hoofdtabel) |
PriceListItemCategoryDetails | {Name} {FullName} {Total} {TotalPrice} {Code} |
Ja — bevat 'RegistrationDays' en 'Registrations' |
| {TableStart:Subtasks} ... {TableEnd:Subtasks} | Deeltaken binnen een hoofdtaak (alleen bij taakgroepering in de hoofdtabel) | TaskDetails | {SubtaskName} {SubtaskTotal} |
Ja — bevat 'Registrations' |
Sub-subtabellen voor factuurspecificatie-sjablonen
| Sub-subtabel | Wat toont deze sub-subtabel? | Beschikbaar binnen deze subtabellen |
Beschikbare velden binnen de sub-subtabel |
Heeft subtabellen |
| {TableStart:Registrations} ... {TableEnd:Registrations} |
Individuele registraties met details | Resources (binnen PriceListItemCategory), Subtasks (binnen TaskDetails) |
{Code}, {Date}, {Name}, {Amount}, {Remark}, {Time}, {Employee}, {UnitPrice}, {TotalPrice}, {Billable}, {InForfait}, {InSubscription}, {ReferenceYear} |
Nee |
| {TableStart:RegistrationDays} ... {TableEnd:RegistrationDays} |
Registraties gegroepeerd per dag met dagelijkse totalen | Resources (binnen PriceListItemCategoryDetails) | {Name}, {Date}, {Amount}, {Remark}, {Time}, {Employee}, {UnitPrice}, {TotalPrice} |
Nee |
Containertabellen in factuurspecificatie-sjablonen (optioneel)
Soms wil je de factuurspecificaties groeperen per klant of per opdracht. Dat kan met containertabellen. Die werken als een buitenlaag rond de andere tabellen, zodat je de inhoud netjes per relatie of per opdracht kunt weergeven.
Containertabellen zijn optioneel, maar heel handig als je één factuur maakt met registraties van meerdere opdrachten of relaties.
| Containertabel | Wat doet deze container | Beschikbare velden binnen de container | Heeft subtabellen |
| {TableStart:Relations} ... {TableEnd:Relations} |
Groepering per relatie (voor meerdere relaties) |
{Relation} {Total} {TotalAmount} |
Ja — bevat alle andere hoofdtabellen |
| {TableStart:Assignments} ... {TableEnd:Assignments} |
Groepering per opdracht (voor meerdere opdrachten) |
{AssignmentName} {AssignmentOrDefault} {Total} {TotalAmount} |
Ja — bevat alle andere hoofdtabellen |
Beschikbare hoofdtabellen en velden voor factuurspecificaties
Hoofdtabel: 'PriceListItemDetails' – groepering per subklasse
De hoofdtabel PriceListItemDetails toont alle registraties gegroepeerd per subklasse, met een overzicht van de totale hoeveelheid en het totaalbedrag per subklasse.
💡Wanneer je op prijslijstitemniveau hebt geregistreerd en je gebruikt {TableStart:PriceListItemDetails}, dan wordt de naam van het prijslijstitem getoond in plaats van de subklassennaam.
| Veld | Beschrijving |
| {TableStart:PriceListItemDetails} | Start van de tabel |
| {Name} | Naam van de subklasse |
| {FullName} | Volledige naam (prijslijstitem + subklasse) |
| {Code} | Code van de subklasse |
| {Total} | Totaal aantal/uren |
| {TotalPrice} | Totaalbedrag |
| {TableEnd:PriceListItemDetails} | Einde van de tabel |
Voorbeeld van de hoofdtabel PriceListItemDetails met de subtabel Registrations:
Hoofdtabel: 'PriceListItemCategoryDetails' – groepering per prijslijstitem
De hoofdtabel PriceListItemCategoryDetails toont alle registraties gegroepeerd per prijslijstitem, waarbij alle subklassen binnen hetzelfde prijslijstitem worden samengevoegd.
| Veld | Beschrijving |
| {TableStart:PriceListItemCategoryDetails} | Start van de tabel |
| {Name} | Naam van het prijslijstitem |
| {FullName} | Volledige naam |
| {Code} | Code van het prijslijstitem |
| {Total} | Totaal aantal/uren |
| {TotalPrice} | Totaalbedrag |
| {TableEnd:PriceListItemCategoryDetails} | Einde van de tabel |
Voorbeeld van de hoofdtabel PriceListItemCategoryDetails met de subtabel RegistrationDays:
Hoofdtabel: 'RegistrationDateDetails' – groepering op datum
De hoofdtabel RegistrationDateDetails toont alle registraties gegroepeerd per datum, zodat je kunt zien welke activiteiten op welke dagen zijn uitgevoerd.
| Veld | Beschrijving |
| {TableStart:RegistrationDateDetails} | Start van de tabel |
| {Date} | Datum van de registratie |
| {Name} | Naam van het prijslijstitem |
| {Amount} | Aantal eenheden/tijd geregistreerd voor dit item |
| {TotalPrice} | Totaalbedrag geregistreerd voor dit item |
| {Remark} | Opmerking van de registraties |
| {TableEnd:RegistrationDateDetails} | Einde van de tabel |
Voorbeeld van de hoofdtabel RegistrationDateDetails:
Hoofdtabel: 'TaskDetails' – groepering per taak
De hoofdtabel TaskDetails toont alle registraties gegroepeerd per taak, inclusief deeltaken voor een gedetailleerd overzicht van de werkzaamheden.
| Veld | Beschrijving |
| {TableStart:TaskDetails} | Start van de tabel |
| {TaskName} | Naam van de taak |
| {TaskTotal} | Totaal aantal/uren geregistreerd voor de taak |
| {TotalPrice} | Totaalbedrag geregistreerd voor de taak |
| {TableEnd:TaskDetails} | Einde van de tabel |
Voorbeeld van de hoofdtabel TaskDetails met de subtabel RegistrationDays:
Hoofdtabel: 'RegistrationTotals' – totaal van de registraties per prijslijstitem
De hoofdtabel RegistrationTotals toont een overzicht van de totale hoeveelheid en het totaalbedrag per prijslijstitem, zonder gedetailleerde registraties.
| Veld | Beschrijving |
| {TableStart:RegistrationTotals} | Start van de tabel |
| {Name} | Naam van het item uit de prijslijst |
| {Amount} | Aantal eenheden/tijd geregistreerd voor dit item |
| {TotalPrice} | Totaalprijs van de registraties voor dit item uit de prijslijst |
| {TableEnd:RegistrationTotals} | Einde van de tabel |
Voorbeeld van de hoofdtabel RegistrationTotals:
💡 In dit geval waren er registraties op prijslijstitem- én subklasseniveau, daarom worden deze dan ook getoond.
Hoofdtabel: 'RegistrationDetails' - niet-gegroepeerde registraties
De hoofdtabel RegistrationDetails toont alle individuele registraties zonder groepering, inclusief alle details zoals medewerker, tijdsperiode en factureerbaarheid.
| Veld | Beschrijving |
| {TableStart:RegistrationDetails} | Start van de tabel |
| {Code} | Code van het item |
| {Date} | Datum van registratie |
| {Name} | Naam van het item |
| {Amount} | Aantal/uren geregistreerd voor dit item |
| {Remark} | Opmerking van de registratie |
| {Time} | Begin- en eindtijd van de registratie (voor tijdregistraties) |
| {Employee} | Naam van de medewerker |
| {UnitPrice} | Eenheidsprijs van het item |
| {TotalPrice} | Totaalbedrag |
| {Billable} | Factureerbaar (Ja/Nee) |
| {InForfait} | In abonnement (Ja/Nee) |
| {InSubscription} | In abonnement (Ja/Nee) |
| {ReferenceYear} | Referentiejaar van de registratie |
| {TableEnd:RegistrationDetails} | Einde van de tabel |
Voorbeeld van de hoofdtabel RegistrationDetails:
Beschikbare subtabellen en velden voor factuurspecificaties
Subtabel: 'RegistrationDays' - groepering per registratiedag
De subtabel RegistrationDays toont registraties gegroepeerd per dag.
- Beschikbaar in: 'PriceListItemCategoryDetails'
| Veld | Beschrijving |
| {TableStart:RegistrationDays} | Start van de tabel |
| {Name} | Naam van het item |
| {Date} | Datum van registratie |
| {Amount} | Aantal/uren geregistreerd voor dit item |
| {Remark} | Opmerking van de registratie |
| {Time} | Tijdsperiode |
| {Employee} | Medewerker |
| {UnitPrice} | Eenheidsprijs |
| {TotalPrice} | Totaalbedrag |
| {TableEnd:RegistrationDays} | Einde van de tabel |
Voorbeeld met subtabel RegistrationDays binnen de hoofdtabel PriceListItemCategoryDetails:
Subtabel: 'Registrations' - geen groepering van registraties
De subtabel Registrations toont alle individuele registraties, inclusief alle details zoals medewerker, tijdsperiode en factureerbaarheid.
- Beschikbaar in: 'PriceListItemCategoryDetails', 'TaskDetails' en 'Subtasks'
| Veld | Beschrijving |
| {TableStart:Registrations} | Start van de tabel |
| {Code} | Code van het prijslijstitem |
| {Date} | Datum van registratie |
| {Name} | Naam van het item |
| {Amount} | Aantal/uren |
| {Remark} | Opmerking |
| {Time} | Tijdsperiode |
| {Employee} | Medewerker |
| {UnitPrice} | Eenheidsprijs |
| {TotalPrice} | Totaalbedrag |
| {Billable} | Factureerbaar (Ja/Nee) |
| {InForfait} | In abonnement (Ja/Nee) |
| {InSubscription} | In abonnement (Ja/Nee) |
| {ReferenceYear} | Referentiejaar |
| {TableEnd:Registrations} | Einde van de tabel |
Voorbeeld van de subtabel Registrations binnen de hoofdtabel TaskDetails:
Subtabel: 'Resources' - groepering op subklasse
De subtabel Resources toont per prijslijstitem hoeveel er per subklasse is geregistreerd, met de totale hoeveelheid en het totaalbedrag.
- Beschikbaar in: 'PriceListItemCategoryDetails'
- Bevat ook: 'RegistrationDays' en 'Registrations'
| Veld | Beschrijving |
| {TableStart:Resources} | Start van de tabel |
| {Name} | Naam van het prijslijstitem |
| {FullName} | Volledige naam (prijslijstitem + subklasse) |
| {Total} | Totaal aantal/uren geregistreerd voor dit prijslijstitem |
| {TotalPrice} | Totaalbedrag |
| {Code} | Code van het prijslijstitem |
| {TableEnd:Resources} | Einde van de tabel |
Voorbeeld met PriceListItemCategoryDetails als hoofdtabel en Resources als subtabel:
Subtabel: 'Subtasks' - groepering op deeltaak
De subtabel Subtasks toont alle deeltaken binnen een hoofdtaak, met hun totale hoeveelheid en totaalbedrag.
- Beschikbaar in: 'TaskDetails'
- Bevat ook: 'Registrations'
| Veld | Beschrijving |
| {TableStart:Subtasks} | Start van de tabel |
| {SubtaskName} | Naam van de deeltaak |
| {SubtaskTotal} | Totaal aantal/uren geregistreerd voor deze deeltaak |
| {TableEnd:Subtasks} | Einde van de tabel |
Voorbeeld met TaskDetails als hoofdtabel en Subtasks als subtabel:
Andere velden voor in factuurspecificatie-sjablonen
Alle algemene velden uit de gewone factuursjablonen zijn ook beschikbaar voor de factuurspecificatie-sjablonen. Denk bijvoorbeeld aan:
- Bedrijfsgegevens ({CompanyName}, {CompanyStreetAndNr}, etc.)
- Relatiegegevens ({RelationName}, {RelationStreetAndNr}, etc.)
- Factuurgegevens ({InvoiceNumber}, {InvoiceDate}, etc.)
- Totaalbedragen ({InvoiceAmount}, {InvoiceVatAmount}, etc.)
Het overzicht van alle algemene invulvelden is in het volgende artikel beschikbaar: Factuursjablonen: invulvelden voor algemene factuurinfo
Bijkomende velden specifiek voor factuurspecificatie-sjablonen in het algemeen:
| Veld | Beschrijving |
| {TotalTimeAmount} | Totaal aantal uren |
| {TotalCostAmount} | Totaal kostenbedrag |
| {TotalAmount} | Totaalbedrag (uren + kosten) |
Deze velden kunnen in een factuurspecificatie-sjabloon gebruikt worden zonder in een tabel te staan, als aanvulling op een tabel. Ze moeten dus wel binnen {BeginGroup:InvoiceDetail} ... {EndGroup:InvoiceDetail} staan.
Voorbeeld:
💡Goed om te lezen
- Net gestart met factuursjablonen? Bekijk dan zeker eerst onze reeks van artikelen over factuursjablonen. Start hier: Factuursjablonen: schermoverzicht, typen en toepassing
- Dit artikel maakt deel uit van een reeks.
- ⏪ In het eerste artikel krijg je een overzicht van de algemene invulvelden die je kunt gebruiken in factuursjablonen: Factuursjablonen: invulvelden voor algemene factuurinfo
- ⏪ Gebruik je een tabel op je factuur? De juiste invulvelden en structuur vind je in het tweede artikel: Factuursjablonen: invulvelden voor tabellen
- Op zoek naar voorbeeldsjablonen? Bekijk dan zeker het volgende artikel: Voorbeeldsjablonen voor facturen en factuurspecificaties
- Zie je een melding in plaats van gegevens in je preview of factuur? Kijk dan hier: FAQ - Waarom staat er ‘System.Collections.Generic…’ op mijn factuur in plaats van gegevens?