Overslaan naar inhoud
Sales, CRM en prijsstelling

Projecten factureren in Odoo: milestones, vaste prijs en nacalculatie

dooPartners· 6 augustus 2026 · 15 min leestijd
Projecten factureren in Odoo: milestones, vaste prijs en nacalculatie

Wat Odoo op een project factureert, en wanneer, wordt bepaald door één veld: de facturatiemethode op het dienstproduct. Vaste prijs factureert het afgesproken bedrag, mijlpalen factureren per afgeronde fase, nacalculatie factureert de geboekte uren. Stel dat veld goed in en de rest van de keten volgt.

Je hebt een klant een vaste prijs voor een project geoffreerd, het team boekte er drie weken werk op, en nu toont het factuurscherm niets om te factureren. Of het tegenovergestelde: je verkocht een gefaseerde bouw in vier mijlpalen, rondde de eerste af, klikte op Factuur aanmaken, en Odoo wil de hele order in één keer factureren. Ergens tussen de offerte, het project en de urenstaten staat de koppeling die bepaalt wat er gefactureerd wordt verkeerd ingesteld, en nu komt het bedrag op de factuur niet overeen met het werk of de deal.

Dit is de meest voorkomende verwarring bij dienstfacturatie in Odoo. Mensen gaan ervan uit dat het project de factuur aanstuurt, of dat tijd boeken automatisch aan de klant factureert. Geen van beide klopt. Eén veld op het product, de facturatiemethode, bepaalt wat Odoo factureert en wanneer. Vaste prijs, mijlpalen en nacalculatie zijn drie instellingen van dat ene veld, en elk gedraagt zich compleet anders. Hier lees je wat elke methode daadwerkelijk factureert, hoe de verkooporder en het project verbonden zijn, en waar mensen het verkeerde bedrag op de factuur krijgen.

Waarom de factuur niet overeenkomt met het werk

De grondoorzaak is een verkeerd mentaal model. De meeste mensen zien het project als datgene wat wordt gefactureerd: het werk gebeurt in het project, dus moet het project de factuur produceren. In Odoo is het andersom. De verkooporder produceert de factuur, en de regel op die verkooporder draagt een facturatiemethode die bepaalt wat als factureerbaar telt.

Het project en de urenstaten voeden die beslissing, ze nemen hem niet. Een urenstaat die op een taak is geboekt, factureert op zichzelf aan niemand. Hij wordt alleen factureerbaar als de verkooporderregel waar hij bij hoort is ingesteld op factureren op geleverde hoeveelheden en urenstaten. Markeer een mijlpaal in het project als af en er wordt niets gefactureerd totdat je teruggaat naar de verkooporder en hem factureert. Het werk leeft in het project; de beslissing om te factureren leeft op de orderregel. Wanneer die twee aan verschillende aannames zijn gekoppeld, krijg je een factuur die te hoog, te laag of leeg is.

De vraag is dus nooit "wat hebben we op het project gedaan". Het is "wat zegt de verkooporderregel dat factureerbaar is, en is aan die voorwaarde voldaan". Drie methodes beantwoorden die vraag op drie verschillende manieren.

Diagram dat laat zien hoe de facturatiemethode op een verkooporderregel bepaalt of Odoo het bestelde bedrag, bereikte mijlpalen of geboekte tijd factureert, met het project dat de order voedt via de analytische rekening

De drie manieren om een project te factureren

Je kiest de methode per product, op de verkooporderregel, met het veld Facturatiemethode. De methode die je kiest is het antwoord op één vraag: wat triggert een factureerbaar bedrag.

1

Vaste prijs: factureer het afgesproken bedrag, ongeacht de inspanning.

Stel de facturatiemethode van het dienstproduct in op "Bestelde hoeveelheden". De klant ging akkoord met een totaal voor het op te leveren resultaat, dus laat Odoo je het volledige bestelde bedrag factureren zodra de order is bevestigd, of het team nu twee uur of tweehonderd uur besteedde. Tijd wordt nog steeds op het gekoppelde project geboekt voor je eigen margeoverzicht, maar het verandert de factuur niet. Dit is de methode voor een afgebakend resultaat tegen een vaste prijs: een website, een implementatie met vaste scope, een gedefinieerde audit. De klant betaalt het bedrag dat je hebt geoffreerd. Eén kanttekening uit ons eigen werk met vaste prijs: meestal wil je niet dat de klant de echte uren ziet, en het Odoo-portaal toont ze maar al te graag. De oplossing waar mensen naar grijpen is een schaduwproject dat niet aan de klant is gekoppeld, en dat is een slechte ruil, want je marge per project en je urenstaatdiscipline gaan daarmee kapot. Wij lossen het op met een kleine module die de urenstaatdetails op projecten met vaste prijs verbergt voor het portaal. De uren blijven op het echte project staan voor je eigen margeoverzicht; de klant ziet de mijlpalen en het resultaat.

2

Mijlpalen: factureer elke fase zodra je hem afrondt.

Stel de facturatiemethode in op "Op basis van mijlpalen". Je deelt de deal op in fasen (ontwerp, bouw, go-live) elk met een eigen bedrag, en je factureert een fase pas zodra hij is bereikt. Dit geeft je een gestage cashflow over een lang project en geeft de klant een helder betalingsschema gekoppeld aan zichtbare voortgang. De valkuil waar iedereen in trapt: de order bevestigen factureert niets, en het werk in het project afronden factureert niets. Je factureert een mijlpaal pas nadat je hem als bereikt hebt gemarkeerd en daarna de factuur vanuit de order aanmaakt.

3

Nacalculatie: factureer wat je daadwerkelijk besteedt.

Stel de facturatiemethode in op "Op basis van urenstaten" (geleverde hoeveelheden). De klant betaalt voor de geboekte uren, plus eventuele kosten en eventuele inkopen die je voor hem hebt gedaan. Dit is de methode wanneer de scope onduidelijk is of zal veranderen: supportcontracten, open-einde ontwikkeling, consulting. Elk uur dat je team op de projecttaak boekt, vloeit terug naar de verkooporder als factureerbare hoeveelheid, en bij het factureren factureert Odoo de tijd die is geboekt maar nog niet gefactureerd.

De draad die alle drie aan het project verbindt, is dezelfde. Wanneer je een verkooporder met een dienstproduct bevestigt, maakt Odoo een project en de analytische rekening erachter aan (of koppelt eraan). Urenstaten, kosten en leveranciersfacturen die op die analytische rekening worden geboekt, rollen op naar de order. Dat is de verbinding die mensen missen: de verkooporder en het project zijn verbonden via de analytische rekening, en dat is wat Odoo laat weten welke kosten en uren bij welke deal horen.

Zo stel je het in zodat het juiste bedrag wordt gefactureerd

De inrichting is kort. Het goed doen draait om het in de juiste volgorde doen en de methode kiezen voordat je bevestigt.

1

Stel eerst de facturatiemethode in op het dienstproduct.

Stel op het product het producttype in op Dienst en kies de facturatiemethode: Bestelde hoeveelheden voor vaste prijs, Op basis van mijlpalen voor gefaseerd, of Op basis van urenstaten voor nacalculatie. Dit is de keuze waar al het andere uit volgt. Wijzig je hem nadat de order is bevestigd, dan vecht je tegen het systeem.

2

Vertel het dienstproduct om een project of taak aan te maken.

Stel op het dienstproduct het veld "Aanmaken bij order" zo in dat het bevestigen van de order een project opstart, een taak in een bestaand project aanmaakt, of niets, afhankelijk van hoe je werkt. Dit is wat de verkoop fysiek koppelt aan de plek waar het werk en de urenstaten zullen leven.

3

Offreer het, bevestig het, en laat Odoo de projectkoppeling opbouwen.

Zet het dienstproduct op de offerte, bevestig hem, en Odoo maakt het project of de taak aan en de analytische rekening die ze aan elkaar bindt. Op de verkooporder verschijnen knoppen (Project, Taken of Mijlpalen) zodat je vanuit de deal direct naar het werk kunt springen.

4

Doe het werk in het project, factureer daarna vanuit de order.

Boek urenstaten op de taak, markeer mijlpalen als bereikt, leg kosten vast. Niets daarvan factureert op zichzelf aan de klant. Wanneer je er klaar voor bent, open je de verkooporder en klik je op Factuur aanmaken. Odoo factureert dan volgens de methode: het volledige bedrag (vaste prijs), alleen de bereikte mijlpalen, of de geboekte-maar-niet-gefactureerde tijd en kosten.

5

Factureer kosten en inkopen door ze in te stellen op "tegen kostprijs" of "tegen verkoopprijs".

Bij nacalculatie hebben kosten en inkopen die je aan de klant doorbelast hun eigen instelling nodig (tegen kostprijs of tegen verkoopprijs) en een analytische verdeling die naar het project wijst. Stel dat in en ze verschijnen op de verkooporder als factureerbare regels naast de tijd. Sla het over en je draait op voor kosten die je wilde doorbelasten.

Het stuk waar mensen over struikelen

Een paar dingen overkomen vrijwel iedereen

Hier komt het verkeerde bedrag vandaan. Een handvol valkuilen pakt vrijwel iedereen.

Tijd boeken factureert op zichzelf nooit aan de klant. Mensen met nacalculatie verwachten dat een urenstaat een factuur is. Dat is het niet. Een urenstaat wordt alleen factureerbaar als de orderregel is ingesteld op factureren op basis van urenstaten, en hij wordt pas gefactureerd wanneer je de factuur vanuit de verkooporder aanmaakt. Uren die op een regel met vaste prijs zijn geboekt, zijn zichtbaar voor de marge maar worden nooit gefactureerd; dat is correct gedrag, geen bug.

Een bereikte mijlpaal is geen gefactureerde mijlpaal. Een mijlpaal in het project als bereikt markeren, of zelfs via de Mijlpalen-knop op de order, leidt niet tot een factuur. Je moet nog steeds op Factuur aanmaken klikken op de verkooporder, en Odoo factureert dan alleen de mijlpalen die als bereikt zijn gemarkeerd. Mensen markeren alles als af, zien geen factuur, en gaan ervan uit dat Odoo kapot is.

Mijlpaalfacturatie bestaat alleen op producten van het type dienst. De methode "Op basis van mijlpalen" verschijnt alleen bij diensten (en evenementtickets, stands, cursussen). Zet je een opslagbaar of verbruiksproduct op de regel, dan is de optie er niet. Kun je mijlpaalfacturatie niet vinden, controleer dan eerst het producttype.

Vaste prijs negeert de inspanning met opzet. Op een regel met "Bestelde hoeveelheden" kun je het volledige bedrag factureren zodra de order is bevestigd, voordat er een uur is geboekt. Dat is juist de bedoeling van vaste prijs, maar het verrast mensen die verwachten dat de factuur de voortgang volgt. Wil je dat de factuur de voortgang volgt, dan wilde je mijlpalen, geen vaste prijs.

Methodes combineren op één order is prima, maar elke regel factureert volgens zijn eigen regels. Eén verkooporder kan een regel met vaste prijs, een mijlpaalregel en een nacalculatieregel dragen. Elke regel factureert volgens zijn eigen methode. De fout is op Factuur aanmaken klikken en één net totaal verwachten; in plaats daarvan krijg je de som van wat elke regel op dat moment als factureerbaar beschouwt, wat een gedeeltelijke factuur kan zijn. Lees de conceptfactuur voordat je hem boekt.

De methode wijzigen na bevestiging herstelt met terugwerkende kracht niets. De facturatiemethode wordt uitgelezen op het moment dat de orderregel wordt aangemaakt. Heb je op de verkeerde methode bevestigd, pas dan de orderregel aan (of maak hem opnieuw aan) in plaats van alleen het product te wijzigen; alleen de productsjabloon wijzigen herschrijft geen regel die al bestaat.

Snelle checklist

  • Producttype Dienst ingesteld, met de juiste facturatiemethode gekozen voordat de order wordt bevestigd.
  • Vaste prijs = Bestelde hoeveelheden. Gefaseerd = Op basis van mijlpalen. Nacalculatie = Op basis van urenstaten.
  • "Aanmaken bij order" ingesteld, zodat het bevestigen van de offerte het project of de taak aanmaakt.
  • Order bevestigd, zodat Odoo het project, de taak en de analytische koppeling opbouwt.
  • Mijlpalen gedefinieerd met bedragen, en pas als bereikt gemarkeerd wanneer ze echt af zijn.
  • Urenstaten geboekt op de taak, kosten en inkopen ingesteld om door te belasten met analytische verdeling naar het project.
  • De factuur komt voort uit de verkooporder, niet uit het project, en je controleert het concept voordat je het boekt.
  • Bij gemengde orders controleer je het factureerbare bedrag van elke regel op de conceptfactuur.

FAQ

Hoe factureer ik een project in Odoo, en wat bepaalt wat er gefactureerd wordt?

De verkooporder produceert de factuur, niet het project. Elk dienstproduct op de order heeft een veld Facturatiemethode dat bepaalt wat factureerbaar is: "Bestelde hoeveelheden" voor een vaste prijs, "Op basis van mijlpalen" voor gefaseerde facturatie, of "Op basis van urenstaten" voor nacalculatie. Het project en de urenstaten voeden de berekening, maar je maakt de factuur altijd aan vanuit de verkooporder, en Odoo factureert volgens die methode.

Wat is het verschil tussen facturatie op vaste prijs, mijlpalen en nacalculatie in Odoo?

Vaste prijs ("Bestelde hoeveelheden") factureert het afgesproken totaal, ongeacht hoeveel uur het team besteedt. Mijlpalen ("Op basis van mijlpalen") factureert elke fase zodra je hem als bereikt markeert, wat je een betalingsschema geeft over een lang project. Nacalculatie ("Op basis van urenstaten") factureert de daadwerkelijk geboekte uren plus doorbelaste kosten en inkopen, voor werk waarbij de scope open is. Je stelt de methode per product in op de orderregel.

Waarom leidt het boeken van urenstaten niet tot een factuur in Odoo?

Omdat een urenstaat werk vastlegt, factureert hij het niet. Tijd wordt alleen factureerbaar als de verkooporderregel de facturatiemethode "Op basis van urenstaten" gebruikt, en zelfs dan wordt hij pas gefactureerd wanneer je op Factuur aanmaken klikt op de verkooporder. Op een regel met vaste prijs worden geboekte uren getoond voor de marge maar nooit gefactureerd. Je factureert dus altijd vanuit de order, niet vanuit het project.

Hoe factureer ik een mijlpaal in Odoo?

Gebruik een dienstproduct met de facturatiemethode op "Op basis van mijlpalen", bevestig de verkooporder, open daarna de Mijlpalen-knop op de order en vink de mijlpaal aan in de kolom Bereikt zodra het werk af is. Klik vervolgens op Factuur aanmaken op de verkooporder. Odoo maakt een conceptfactuur aan die alleen de bereikte mijlpalen toont. Een mijlpaal als bereikt markeren leidt op zichzelf niet tot de factuur; je maakt hem nog steeds aan vanuit de order.

Hoe verbindt de verkooporder zich met het project in Odoo?

Wanneer je een verkooporder bevestigt die een dienstproduct bevat, maakt Odoo een project (en een taak) en een analytische rekening aan die ze samenvoegt, of koppelt eraan. De instelling "Aanmaken bij order" op het product bepaalt of er een project, een taak of niets wordt aangemaakt. Urenstaten, kosten en leveranciersfacturen die op die analytische rekening worden geboekt, rollen op naar de verkooporder, en zo weet Odoo welke uren en kosten bij welke deal horen.

Lees verder Terugkerende facturatie en abonnementen in Odoo: plannen opzetten zonder handmatige facturen

Open kennis. Ben je een Odoo-partner die deze problemen ook oplost? Draag je eigen oplossingen bij en groei samen met het netwerk richting Gold.

Voor partners
Wanneer een partner inschakelen

Sommige problemen vragen om een paar handen, niet om een handleiding.

dooPartners is een wereldwijd netwerk van onafhankelijke, Odoo-gecertificeerde partners. Lokaal waar je bent, met het netwerk erachter wanneer een project groter wordt dan één bureau. Je houdt één aanspreekpunt, en je kiest met wie je werkt.

Vind een partner bij jou in de buurt