Urenregistratie per klant voor softwarebureaus: zo houd je grip op facturatie

Elk bureau voert maandelijks hetzelfde gesprek: de uren in de registratie kloppen niet met het werk dat iedereen zich herinnert. De gebruikelijke conclusie is dat developers discipline missen. Die conclusie klopt niet, en ernaar handelen levert slechtere data op. Urenregistratie gaat structureel mis, en je kunt het structureel oplossen.

calendar_monthtimer 8 min leestijdlanguage Read this article in English
Urenregels op een ticket die oprollen naar klant en project en klaarstaan om te factureren

Waarom urenregistratie misgaat bij ontwikkelteams

Drie oorzaken verklaren vrijwel alles, en geen ervan is luiheid.

De urentool staat los van het werk

Als een uur schrijven betekent dat je een andere applicatie opent, de klant zoekt, het project zoekt en een omschrijving typt van iets dat je twintig minuten geleden afrondde, dan gebeurt het aan het eind van de dag uit het hoofd, of op vrijdag aan de hand van de agenda. Geheugen rondt naar beneden af, en doet dat consequent.

De eenheid van werk is niet de eenheid van factureren

Developers werken in tickets. Facturen gaan over projecten en contracten. Koppelt niets die twee, dan moet iemand aan het eind van de maand vertalen, en precies daar beginnen de discussies.

Klein werk is onzichtbaar

De fix van twaalf minuten, het belletje over een deployment, het "even kijken" naar een probleem op staging. Afzonderlijk verwaarloosbaar, samen het verschil tussen een rendabel contract en quitte spelen.

Regel 1: schrijf uren waar het werk gebeurt

De ingreep met de grootste hefboom is de timer op het ticket zetten. Niet in een aparte tool die 's nachts synchroniseert, maar op het record dat de developer toch al open heeft. Een lopende timer die hij start als hij het ticket oppakt, en een handmatige regel met notitie voor wat een timer niet vangt.

Daarmee wordt toewijzing ook automatisch: een regel op ticket #1035 weet al bij welk project en welke klant hij hoort, want het ticket weet dat. Niemand kiest een klant uit een lijst, dus niemand kiest de verkeerde. Zo werkt urenregistratie in Suporta, inclusief vanuit de Outlook-invoegtoepassing, zodat een supportgesprek vanuit de mailbox op hetzelfde ticket landt.

Regel 2: één regel context per urenregel

Een urenregel met "ontwikkeling, 3u" is onverdedigbaar zodra een klant ernaar vraagt. Een regel met "500-fout bij ongeldig e-mailadres gereproduceerd, regressietest toegevoegd, 1u20" doorstaat elke controle en kost negen seconden zolang het werk vers is.

Dat telt het zwaarst bij werk voor een vaste prijs, waar de klant niet per uur betaalt maar jij intern nog steeds moet weten of die vaste prijs klopte.

Regel 3: registreer ook niet-declarabele tijd

Bureaus vragen mensen vaak alleen declarabele uren te schrijven. Dat beschermt de factuur en vernietigt de stuurinformatie, want je verliest elk zicht op hoeveel niet-declarabel werk een klant veroorzaakt. Een contract met 30 gefactureerde uren en 15 uur onbetaalde afstemming is een ander bedrijf dan een contract met 30 gefactureerde en 2 onbetaalde uren, en een rapport dat alleen declarabele uren telt, ziet dat verschil niet.

CategorieDeclarabelWaarom registreren
Functionaliteit op een ticketMeestal welDe kern van de factuur
Bug in je eigen recente opleveringMeestal nietMeet herstelwerk, en dat is een kwaliteitssignaal
Supportgesprek of triageHangt van het contract afVaak de grootste verborgen kostenpost op een contract
Deployment en releasewerkVaak welWordt vaker vergeten dan welke categorie ook
Intern overleg over de klantNeeLaat zien welke klanten duur zijn om te bedienen

Regel 4: scheid "wij betalen" van "zij betalen"

Bureaus met zzp'ers of onderaannemers hebben twee afrekencycli over dezelfde uren: wat je de klant factureert, en wat de zzp'er jou factureert. Houd je dat bij met één vinkje, dan gebeurt een van twee dingen. Of een uur wordt met de zzp'er afgerekend en nooit doorbelast, of het wordt dubbel gefactureerd omdat een tweede export het opnieuw meenam.

Twee onafhankelijke statussen per regel — een klantfactuurstatus en een zzp-factuurstatus — haalt die hele foutcategorie weg. Het klinkt als een detail in het datamodel. Het is het verschil tussen je export vertrouwen en hem handmatig nalopen.

Hoe de maandafsluiting eruit hoort te zien

Een afsluiting in vijf stappen

  1. Nakijken, niet reconstruerenOpen de uren per klant over de periode. Alles is al toegewezen, dus dit is nakijken en geen onderzoek.
  2. Controleer de uitschietersRegels zonder notitie, verdacht ronde getallen, en tickets die ver over hun schatting gingen.
  3. Bepaal de coulanceSchrijf bewust af wat je wilt afschrijven, en leg vast dat je dat deed. Stille afboekingen leren je niets.
  4. Exporteren en facturerenMaak de factuurregels per klant en project, met je opslag waar die geldt, en markeer die regels daarna als gefactureerd.
  5. Kijk naar de verhoudingDeclarabel tegenover totaal, per klant. Dit is het getal dat aangeeft welk contract je opnieuw moet bespreken.

Een Excel-export blijft hier belangrijk, want financiële afdelingen draaien op spreadsheets en dat blijft zo. Het verschil is dat de spreadsheet een uitvoer van het systeem is en niet de plek waar de waarheid woont.

Waar AI-kosten in passen

Gebruik je AI-agents voor ontwikkelwerk, dan komt er naast de menselijke uren een tweede kostenpost per ticket bij. Behandel die hetzelfde: geboekt op het ticket, opgeteld per klant en project, en zichtbaar naast de uren als je factureert. Een ticket dat twee ontwikkeluren en een klein bedrag aan modelkosten opsoupeerde, hoort je beide getallen te geven. Zie AI-ontwikkelkosten per klant beheersen.

Een team zover krijgen dat het ook gebeurt

Wat werkt, op volgorde van effect

  • check_circleMaak uren schrijven mogelijk zonder het ticket te verlaten. Al het andere is hieraan ondergeschikt.
  • check_circleVraag om een notitie, geen verslag. Eén zin, geschreven terwijl het werk vers is.
  • check_circleGebruik urendata nooit om developers publiek te vergelijken. Doe dat één keer en de datakwaliteit is voorgoed weg.
  • check_circleLaat het team de rendementscijfers per klant zien die uit hun registratie komen, zodat het schrijven zichtbaar ergens toe dient.
  • check_circleMaak het dagelijkse nakijken een gewoonte van twee minuten op een vast moment, in plaats van een reconstructie op vrijdag.
  • check_circleRegistreer niet-declarabele tijd als volwaardige categorie, zodat niemand hoeft te verhullen waar de dag heen ging.

Het doel is geen perfecte urenstaat. Het doel is een urenstaat die nauwkeurig genoeg is om direct op te factureren, en volledig genoeg om te zien welke klanten de moeite waard zijn. Allebei haalbaar binnen een maand nadat de timer naast het werk is komen te staan.

Gerelateerde artikelen

Alle artikelen arrow_forward
Kostenbeheersing voor AI: model per agent, eigen sleutel, maandplafond met waarschuwing en kosten geboekt op klant en project
AI-agents8 min leestijd

Hoe beheer je AI-ontwikkelkosten per klant?

AI-kosten zijn niet duur door de tarieven. Ze zijn duur omdat ze onzichtbaar blijven tot de maandfactuur, en tegen die tijd horen ze bij niemand in het bijzonder.

Lees artikel arrow_forward

Put your ticket queue to work

Fourteen days, every feature unlocked, no credit card. Bring your own model, or point it at the Claude Code you already pay for.