SSD Nodes Learn Hosting plans →
Gidsen Matt ConnorDoor Matt Connor · Bijgewerkt 2026-10-04

Beste zelfgehoste facturatiesoftware vergeleken

Vergelijk Invoice Ninja, InvoiceShelf, InvoicePlane, Kimai en ERPNext. Ontdek welke software het beste past bij uw behoeften voor facturatie, belasting en betalingsgateways.

Welke zelfgehoste facturatiesoftware moet u kiezen?

Zelfgehoste facturatiesoftware komt neer op vijf realistische keuzes op één VPS, en deze zijn onderling niet uitwisselbaar. Invoice Ninja is het meest volwaardige product: terugkerende facturen, een klantenportaal, betalingsgateways en e-factuurformaten werken direct vanaf de dag van installatie. InvoiceShelf is de lichtere, volledig open-source optie. InvoicePlane is een eenvoudige PHP-applicatie zonder complexe orchestratie. Kimai factureert geregistreerde uren in plaats van losse posten. ERPNext is een volledig boekhoudsysteem dat ook facturen genereert.

Twee problemen zorgen vaker voor het falen van een zelfgehoste factuuromgeving dan een ontbrekende functie. Het eerste is e-mail. Een factuur die in een spammap belandt, is een onbetaalde factuur, en u krijgt hier geen melding van. Het tweede is back-ups. Dit is de enige zelfgehoste database waarvan het verlies leidt tot een fiscaal probleem in plaats van enkel ongemak.

Lees de licentie voordat u de functielijst bekijkt. Drie van deze vijf zijn copyleft, één is permissief en één is source-available met reële beperkingen op wat u ermee mag doen.

De vijf opties en voor wie ze bedoeld zijn

Invoice Ninja

Een Laravel-applicatie, momenteel in de v5-reeks. Zelf hosten is gratis en volledig ontsloten: periodieke facturen, offertes, projecten, urenregistratie, onkosten, een klantenportaal en betalingsgateways waaronder Stripe en PayPal. Het project omschrijft zichzelf als "een source-available factuur-, offerte-, project- en urenregistratie-app gebouwd met Laravel". Het enige betaalde onderdeel is branding. In de woorden van het project zelf: "Wij bieden een white-label licentie van $40 per jaar aan om de Invoice Ninja-branding te verwijderen uit de onderdelen van de app die de klant ziet". Deze prijs is actueel per augustus 2026.

Kies dit als u het meest complete product wilt en bereid bent de grootste stack te draaien.

InvoiceShelf

Een fork van Crater, onder de GNU Affero General Public License versie 3 (AGPL-3.0). Het omvat facturen, schattingen, periodieke facturatie, onkosten, belastingen, valuta-ondersteuning, een klantenportaal en ondersteuning voor meerdere bedrijven. Betalingen en white-labeling bevinden zich in afzonderlijke officiële module-repositories, beide onder AGPL-3.0 en beide gratis. Kaartbetalingen verlopen via Stripe checkout.

Kies dit als u een kleine, volledig open-source applicatie wilt en geen dertig verschillende gateways nodig heeft.

InvoicePlane

Een PHP-applicatie op basis van CodeIgniter, uitgebracht onder de MIT-licentie, en de enige optie hier die wordt geïnstalleerd door bestanden uit te pakken in een web root. Geen Docker en geen Node-buildstap. PDF's worden gegenereerd via mPDF, dus sjablonen zijn HTML en CSS. Klanten krijgen een gastlink om een factuur te bekijken en te betalen.

Het addertje onder het gras zijn de betalingen. De documentatie stelt duidelijk dat InvoicePlane 1.6 standaard alleen Stripe ondersteunt en dat andere providers in die versie zijn verwijderd. De gepubliceerde vereisten voor de 1.6-reeks zijn PHP 8.0 tot 8.1 met MySQL 5.5 of de bijbehorende MariaDB. Lees de opmerkingen bij elke release die u downloadt, aangezien de 1.7-reeks nog in ontwikkeling is.

Kies dit als u gebruikmaakt van shared hosting of een VPS met 512 MB geheugen.

Kimai

Een AGPL-3.0 urenregistratietool die facturen genereert op basis van urenstaten. Dit is de juiste keuze voor iedereen die uren factureert. Factuursjablonen worden geüpload als DOCX-, ODS- of XLSX-bestanden, wat volgens de documentatie de enige geaccepteerde formaten zijn, en worden gerenderd naar PDF of HTML. U maakt uw factuur op in een tekstverwerker in plaats van CSS te schrijven, wat de meeste mensen makkelijker vinden.

Kimai heeft geen klantenportaal en geen betalingsgateway, dus u verstuurt de PDF per e-mail. Gestructureerde e-facturatie is een betaalde store-plugin genaamd E-Invoice Plus, geprijsd op 99 EUR exclusief btw per jaar voor een zelf-gehoste installatie per augustus 2026, en dekt de EN16931-, XRechnung-, ZUGFeRD-, Factur-X- en Peppol-profielen.

Kies dit als de factuur het resultaat is van geregistreerde uren.

ERPNext

GPL-3.0, en een andere categorie software. Een verkoopfactuur is slechts één documenttype binnen een volledig boekhoudsysteem met een rekeningschema, journaalposten, voorraadbeheer en salarisadministratie. Dit is de juiste keuze zodra facturatie niet meer uw enige taak is. Voor één freelancer met acht klanten is dit veel te zware software. Het opzetten ervan is een project op zich, dat wordt behandeld in ERPNext draaien op een VPS.

Terugkerende facturen zijn afhankelijk van een scheduler die u niet ziet

Invoice Ninja, InvoiceShelf, InvoicePlane en ERPNext genereren allemaal terugkerende facturen. Kimai heeft geen functie voor terugkerende facturen in de kern, omdat een factuur daar wordt opgebouwd uit de urenregistraties over een bepaalde periode.

Het faalmechanisme is bij elk op Laravel gebaseerd systeem hetzelfde en verloopt geruisloos. Terugkerende facturen worden aangemaakt door een geplande taak, php artisan schedule:run, die door iets buiten de applicatie elke minuut moet worden aangeroepen. Als niets deze taak aanroept, toont de lijst met terugkerende facturen nog steeds een volgende verzenddatum, en die datum verstrijkt simpelweg. Er verschijnt geen factuur. Er wordt geen fout gelogd, omdat er geen code is uitgevoerd.

Stel daarom, nadat u uw eerste terugkerende factuur heeft aangemaakt, de volgende verzenddatum een paar minuten in de toekomst in en wacht af. Als er niets aankomt, draait de scheduler niet. Bij een Docker-installatie betekent dit meestal dat de cron- of scheduler-service in het compose-bestand nooit is gestart, of dat deze is afgesloten.

docker compose ps
docker compose logs --tail 50

Elke service in het bestand hoort de status running te rapporteren. Een service die zich in de status exited bevindt, is de service waarvan u de logs moet lezen.

Multi-currency en belasting: waar u op moet letten voordat u een keuze maakt

Functielijsten vermelden vaak "multi-currency", maar de betekenis hiervan loopt sterk uiteen. Voer deze vier controles uit op een demo-omgeving met echte cijfers uit uw eigen bedrijfsvoering. Een fout op dit gebied wordt namelijk door uw accountant ontdekt, niet door uzelf.

  1. Slaat de factuur de wisselkoers op die gold op de datum van uitgifte? Dit is verplicht. Als de applicatie totalen telkens opnieuw berekent op basis van een actuele koers, veranderen de rapportages van het vorige kwartaal elke keer dat u ze opent. Hierdoor komen uw boeken niet meer overeen met de reeds ingediende aangiften.
  2. Wordt belasting toegepast per regelitem, per factuur, of beide? Een enkel belastingtarief op factuurniveau volstaat totdat er één regel met een nultarief wordt toegevoegd.
  3. Kunt u prijzen zowel inclusief als exclusief btw invoeren? Achteraf omrekenen leidt tot afrondingsverschillen van een cent per regel, en die centen tellen over een jaar flink op.
  4. Wat toont het document voor een klant in een ander land die geen btw verschuldigd is? U heeft de vrijstellingsvermelding op de factuur nodig, niet enkel een nul in de belastingkolom.

Invoice Ninja en ERPNext ondersteunen alle vier deze punten. InvoiceShelf vermeldt belastingen en multi-currency als functies. InvoicePlane en Kimai zijn eenvoudiger van opzet; test deze daarom met uw meest complexe factuur in plaats van met uw eenvoudigste.

Klantportaal en betalingsgateways

Een klantportaal is een pagina waar een klant zijn facturen kan inzien, de PDF kan downloaden en kan betalen. Dit is belangrijker dan het lijkt, omdat het najagen van betalingen via e-mail meer tijd kost dan het opstellen van de factuur zelf.

Invoice Ninja is hierin het sterkst, met een volledig portaal, vele gateways, opgeslagen betaalmethoden en automatische facturering voor terugkerende facturen. InvoiceShelf beschikt over een klantportaal en voegt Stripe checkout toe via de betalingsmodule. InvoicePlane geeft elke factuur een gastlink en ondersteunt Stripe. Kimai heeft geen van beide, waardoor de PDF als bijlage wordt verzonden.

Eén punt zorgt constant voor verwarring. Het zelf hosten van de facturatieapplicatie betekent niet dat u creditcardnummers opslaat. Bij Stripe checkout wordt de klant omgeleid naar Stripe, voert daar de kaartgegevens in en uw VPS ziet het nummer nooit. Uw PCI-scope (Payment Card Industry) blijft klein, juist omdat u het betalingsformulier niet zelf heeft gebouwd. Als u later meer dan één verwerker nodig heeft, of betalingen wilt routeren op basis van land, dan hoort dat thuis in een aparte laag zoals self-hosted payment orchestration with Hyperswitch.

PDF-kwaliteit en het template dat u zult bewerken

U zult het template bewerken. Elke standaardinstelling hier plaatst uw adres op de verkeerde plek voor uw land.

Invoice Ninja rendert HTML- en CSS-templates naar PDF met behulp van een headless Chromium die in de image is gebundeld; dit is de reden waarom de container groot is. Reserveer voldoende geheugen hiervoor: een headless browser is het zwaarste proces in de stack, waardoor een 1 GB VPS krap is. InvoicePlane gebruikt mPDF, wat pure PHP is en lichtgewicht, maar dit gaat ten koste van ondersteuning voor moderne CSS. Kimai kiest de tegenovergestelde aanpak en laat u een DOCX- of ODS-bestand uploaden, waardoor de lay-out wordt gedaan in LibreOffice of Word door iemand die nog nooit een stylesheet heeft geschreven.

Als een vormgegeven factuur belangrijk voor u is en CSS niet, dan is de aanpak van Kimai de beste keuze. Als u het template in versiebeheer wilt hebben en verschillen wilt kunnen vergelijken, dan wint HTML.

Staat de licentie commercieel gebruik toe?

Alle vijf laten u toe om uw eigen klanten te factureren. De verschillen worden duidelijk wanneer u verder gaat dan dat.

Invoice Ninja valt onder de Elastic License 2.0. Twee clausules zijn hierbij van belang.

U mag de software niet aan derden aanbieden als een gehoste of beheerde dienst, waarbij de dienst gebruikers toegang geeft tot een substantieel deel van de functies of functionaliteit van de software.
U mag de licentiesleutel-functionaliteit in de software niet verplaatsen, wijzigen, uitschakelen of omzeilen.

Het draaien voor uw eigen bedrijf is dus toegestaan, maar het aanbieden van instanties aan klanten als product niet. De tweede clausule is de reden waarom het verwijderen van de branding een licentie van $40 vereist in plaats van een patch op de broncode.

InvoiceShelf, Kimai en Crater vallen onder de AGPL-3.0. Commercieel gebruik is gratis en er is geen hogere licentielaag. De verplichting staat in sectie 13: als u de code wijzigt en andere mensen via een netwerk gebruik laat maken van uw gewijzigde versie, moet u hen de broncode van uw wijzigingen aanbieden. Een ongewijzigde instantie valt al onder de publieke broncode van de upstream, dus de meeste zelf-hosters krijgen hier nooit mee te maken.

InvoicePlane valt onder de MIT-licentie, de lichtste verplichting in deze groep, hoewel de README vermeldt dat de naam en het logo eigendom blijven van het project.

ERPNext valt onder de GPL-3.0. Wijzigingen die u distribueert moeten worden gedeeld, en het privé draaien ervan brengt geen verplichtingen met zich mee.

Dit is een beschrijving van de licentietekst en geen juridisch advies.

Wordt het project nog onderhouden? Controleer het commit-logboek

Crater was jarenlang een populaire open-source applicatie voor facturatie en wordt in veel handleidingen nog steeds aanbevolen. De standaard branch heeft al 741 dagen geen commit meer ontvangen.

ChartGap since the last commit on the default branch, in days, checked 21 August 2026
The data behind this chart
[
  {
    "label": "ERPNext",
    "commit_gap": 0
  },
  {
    "label": "Invoice Ninja",
    "commit_gap": 1
  },
  {
    "label": "Kimai",
    "commit_gap": 1
  },
  {
    "label": "InvoicePlane",
    "commit_gap": 3
  },
  {
    "label": "InvoiceShelf",
    "commit_gap": 4
  },
  {
    "label": "Crater",
    "commit_gap": 741
  }
]

Van de 6 projecten in dat blok, hadden er vijf in de afgelopen week een commit. InvoiceShelf is de fork die het werk van Crater heeft voortgezet, onder dezelfde AGPL-3.0 licentie en met hetzelfde datamodel. Overstappen is daarom eerder een datamigratie dan een herschrijving. Installeer InvoiceShelf, niet Crater.

Elk onderdeel installeren op een VPS

Alles behalve InvoicePlane draait het eenvoudigst onder Docker Compose. Als dit nieuw voor u is, begin dan met een eerste Docker Compose stack op een VPS en keer daarna hier terug.

Invoice Ninja levert een eigen compose-repository.

git clone https://github.com/invoiceninja/dockerfiles.git
cd dockerfiles
docker run --rm -it invoiceninja/invoiceninja php artisan key:generate --show

Kopieer die sleutel naar het bestand env in de repository, samen met uw werkelijke APP_URL. Stel vervolgens het eigenaarschap in dat de image verwacht en start deze.

chmod 755 docker/app/public
sudo chown -R 1500:1500 docker/app
docker compose up -d

Het eigenaarschap 1500:1500 komt overeen met de gebruiker binnen de image. Slaat u dit over, dan kan de applicatie zijn cache of gegenereerde PDF's niet schrijven. Geef in de installatiewizard db op als databasehost, omdat dit de servicenaam is op het compose-netwerk. localhost verwijst daar naar de applicatiecontainer zelf.

InvoiceShelf publiceert kant-en-klare compose-bestanden, één per database-engine.

curl -fLO https://raw.githubusercontent.com/InvoiceShelf/docker/master/docker-compose.mysql.yml
mv docker-compose.mysql.yml docker-compose.yml

Open dat bestand voordat u het start. Elk wachtwoord daarin is een tijdelijke aanduiding; het bestand vermeldt dit zelf in de opmerkingen. APP_URL, SESSION_DOMAIN en SANCTUM_STATEFUL_DOMAINS staan standaard op localhost, en voor alle drie moet u uw werkelijke hostnaam instellen vóór de eerste aanmelding. Start het daarna op.

docker compose up -d

Het publiceert poort 8090 op de host en bedient 8080 binnen de container. Plaats een reverse proxy met TLS (transport layer security) ervoor voordat u er ook maar één klant naartoe stuurt.

Kimai productie compose-bestand, uit de projectdocumentatie
services:

  sqldb:
    image: mysql:8.3
    volumes:
      - mysql:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=kimai
      - MYSQL_USER=kimaiuser
      - MYSQL_PASSWORD=kimaipassword
      - MYSQL_ROOT_PASSWORD=changemeplease
    command: --default-storage-engine innodb
    restart: unless-stopped
    healthcheck:
      test: mysqladmin -uroot -p$$MYSQL_ROOT_PASSWORD ping -h 127.0.0.1 --silent
      interval: 10s
      timeout: 5s
      retries: 12
      start_period: 30s

  kimai:
    image: kimai/kimai2:stable
    depends_on:
      sqldb:
        condition: service_healthy
        restart: true
    volumes:
      - data:/opt/kimai/var/data
      - plugins:/opt/kimai/var/plugins
    ports:
      - 8001:8001
    environment:
      - APP_SECRET=your-fantastic-long-random-and-ultra-secure-secret
      - TRUSTED_HOSTS=kimai.example.com
      - ADMINMAIL=admin@example.com
      - ADMINPASS=changemeplease
      - DATABASE_URL=mysql://kimaiuser:kimaipassword@sqldb/kimai?charset=utf8mb4&serverVersion=8.3.0
    restart: unless-stopped

volumes:
  data:
  mysql:
  plugins:

Stel APP_SECRET in op een lange willekeurige tekenreeks van uzelf en TRUSTED_HOSTS op het domein dat u daadwerkelijk gaat gebruiken. ADMINMAIL en ADMINPASS maken de eerste beheerder aan bij de eerste opstart; wijzig dat wachtwoord daarna in de interface en verwijder het uit het bestand.

InvoicePlane heeft geen container. Maak eerst een lege database aan.

sudo mysql -e "CREATE DATABASE invoiceplane CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

Download het archief van de releases-pagina van het project, pak het uit in uw webroot, kopieer ipconfig.php.example naar ipconfig.php en stel uw URL daarin in volgens de opmerkingen in dat bestand. Open vervolgens https://your-domain.example/index.php/setup en doorloop het installatieprogramma.

Waarom uw factuur in de spammap belandt

Dit is de fout die u geld kost, terwijl de applicatie vrolijk rapporteert dat de factuur is verzonden.

Verstuur factuur-e-mails niet vanaf het eigen IP-adres van de VPS. Een nieuw VPS-IP-adres heeft geen verzendhistorie en grote e-mailontvangers beschouwen een eerste bericht van een onbekend adres in een hosting-range standaard als verdacht. Verstuur e-mail via een SMTP (simple mail transfer protocol) relay op een domein dat u heeft geauthenticeerd. Het volledig inrichten hiervan is een handleiding op zich, en betrouwbaar e-mail versturen vanuit een zelfgehoste applicatie behandelt de relay, de DNS-records en het testen.

Het From-adres is waar de meeste facturatie-instellingen de fout in gaan. Dit moet een adres zijn op een domein dat u beheert en dat uw relay ondertekent met DKIM (domainkeys identified mail). Het adres van de klant in het From-veld plaatsen lijkt beleefd, maar verstoort de aflevering. De ontvangende server controleert namelijk of het From-domein overeenkomt met het domein dat het bericht heeft geauthenticeerd. Gmail wijst deze mismatch direct af:

550 5.7.1 Unauthenticated email from example.com is not accepted due to domain's DMARC policy

Houd uw eigen adres in het From-veld en plaats de klant in Reply-To. Controleer uw gepubliceerde records voordat u daadwerkelijk iets verstuurt.

dig +short TXT example.com
dig +short TXT _dmarc.example.com
dig +short TXT selector1._domainkey.example.com

De eerste opdracht hoort een SPF (sender policy framework) record terug te geven waarin uw relay wordt genoemd. De tweede hoort een DMARC (domain-based message authentication, reporting and conformance) beleid terug te geven. De derde is afhankelijk van de selector die uw relay aan u heeft verstrekt; een leeg antwoord betekent dat het DKIM-record ontbreekt of onder de verkeerde naam is gepubliceerd, waardoor elk bericht dat u verstuurt faalt bij de handtekeningcontrole.

Verstuur vervolgens een echte factuur naar een account dat u bezit bij een grote provider en lees de ruwe headers. dkim=pass en spf=pass in de Authentication-Results header is het enige bewijs dat telt. De "verzonden"-status van de applicatie zelf betekent alleen dat deze het bericht heeft overgedragen aan de relay.

Back-ups: de enige database die u niet mag verliezen

Het verlies van een mediaserver betekent dat u bestanden opnieuw moet downloaden. Zelfs een zelfgehoste fotoserver zoals PhotoPrism of Immich bevat meestal een tweede kopie van originelen die nog op de telefoon staan waarmee ze zijn gemaakt. Het verlies van uw facturatiedatabase betekent dat u niet kunt aantonen wat u heeft gefactureerd, wat u heeft ontvangen of wat u nog tegoed heeft. Behandel deze data dienovereenkomstig.

Maak back-ups van vier zaken. De database. Het opslagvolume, dat logo's, gegenereerde PDF's en onkostennota's bevat. Het omgevingsbestand van de applicatie. En de gegenereerde PDF's die als gewone bestanden worden bewaard, omdat een PDF over tien jaar nog steeds opent zonder de applicatie die deze heeft geproduceerd.

Het omgevingsbestand is belangrijker dan men vaak denkt. Laravel versleutelt gevoelige opgeslagen waarden, waaronder inloggegevens voor betalingsgateways, met behulp van de APP_KEY in dat bestand. Als u de database herstelt naast een vers gegenereerde sleutel, kunnen deze waarden niet worden ontsleuteld. Uw facturen zijn dan wel aanwezig, maar uw gateway-instellingen zijn onleesbaar.

Een dump van de InvoiceShelf-stack ziet er als volgt uit. De databaseservice draait mariadb:10, dus de tool in de container is mariadb-dump.

docker compose exec -T database mariadb-dump \
  --user=root --password=YOUR_ROOT_PASSWORD \
  --single-transaction --databases invoiceshelf > invoiceshelf.sql

--single-transaction maakt een consistente snapshot van de InnoDB-tabellen zonder deze te vergrendelen, zodat de applicatie beschikbaar blijft terwijl de dump wordt uitgevoerd. -T voorkomt dat Docker een terminal toewijst, wat anders de omgeleide uitvoer zou beschadigen en een dumpbestand zou opleveren dat niet kan worden geïmporteerd.

Verstuur deze volgens een schema vanaf de server met versleutelde restic-back-ups naar externe opslag, en stel de bewaartermijn lang genoeg in om de periode te dekken die uw accountant voorschrijft.

Herstel de back-up vervolgens. Plaats de dump in een tijdelijke container, log in en open de factuur van vorige maand. Totdat u dit eenmaal heeft gedaan, weet u niet of de back-up werkt.

Waar uw accountant om zal vragen

Neem geen belastingadvies aan van een handleiding. Wat hieronder volgt, is wat deze software kan produceren, zodat u de lijst kunt meenemen naar uw adviseur.

Exporteerbare gegevens. U moet uw facturen en betalingen vanuit de interface naar CSV kunnen exporteren, zonder database-client en zonder een supportticket te openen. Een SQL-dump is een back-up, geen export, omdat uw accountant deze niet kan openen.

Onveranderlijke nummering. Factuurnummers moeten opeenvolgend zijn en mogen nooit worden hergebruikt, zonder hiaten. Het verwijderen van een factuur laat een gat achter dat vervolgens moet worden verklaard. Annuleer of crediteer in plaats daarvan, wat elke applicatie hier ondersteunt. Of sluitende nummering voor u verplicht is, hangt af van waar u bent geregistreerd; het is de moeite waard om dit vroegtijdig te vragen.

Bewaartermijn. Bewaar de database-dumps en de gegenereerde PDF's zo lang als uw regels vereisen. De PDF is het document dat daadwerkelijk is verzonden en dat is het bewijsstuk dat telt als een factuur ooit wordt betwist.

Een wijzigingshistorie. Het kunnen aantonen wie een factuur heeft bewerkt en wanneer is waardevol, en dit verschilt het meest tussen deze applicaties. Invoice Ninja houdt een activiteitenlogboek per record bij.

Gestructureerde e-facturatie is in delen van de EU een echte vereiste geworden in plaats van een leuke extra. Invoice Ninja genereert de gangbare formaten, waaronder ZUGFeRD en XRechnung, Facturae, FatturaPA en de generieke EN16931. Levering via het Peppol-netwerk vanuit een self-hosted instantie verloopt via het eigen toegangspunt van Invoice Ninja: u registreert uw entiteit bij hen en koopt credits per inzending, dus het is vanaf augustus 2026 een betaalde dienst. Kimai bereikt dezelfde formaten via de betaalde plugin. De andere drie produceren momenteel helemaal geen gestructureerde e-facturen, wat de belangrijkste reden is om voor Invoice Ninja te kiezen als u binnen de EU factureert. Factureert u als zzp'er of bv vanuit Nederland, lees dan ook wat de Nederlandse e-factuurplicht van 1 juli 2030 betekent voor zelfgehoste facturatie, inclusief welke tools nu al een UBL-factuur kunnen maken.

FAQ

Moet ik Crater of InvoiceShelf installeren?

InvoiceShelf. De standaard branch van Crater heeft op 21 augustus 2026 al 741 dagen geen commit meer ontvangen, en de eigen issue tracker verwijst gebruikers door naar de fork. InvoiceShelf hanteert dezelfde AGPL-3.0-licentie en hetzelfde datamodel, waardoor overstappen tussen beide applicaties neerkomt op een databasemigratie in plaats van een volledige herschrijving. Elke handleiding die nog Crater aanbeveelt, is geschreven voordat het project inactief werd.

Kan ik Invoice Ninja gebruiken voor mijn eigen bedrijf zonder te betalen?

Ja. De zelfgehoste versie van Invoice Ninja is volledig functioneel en kosteloos onder de Elastic License 2.0, inclusief terugkerende facturen, het klantportaal en betalingsgateways. Twee zaken kosten geld. Het verwijderen van de Invoice Ninja-branding van pagina's die klanten zien, vereist de white-label licentie, die per augustus 2026 volgens het project "$40 per jaar" kost. Het versturen van e-facturen via het Peppol-netwerk wordt afzonderlijk afgerekend. Wat de licentie verbiedt, is het aanbieden van de software als een gehoste dienst voor derden.

Waarom belanden mijn factuur-e-mails in de spammap?

Dit komt bijna altijd doordat het bericht niet is geauthenticeerd voor het domein in het From-adres. Verstuur e-mail via een SMTP-relay in plaats van direct vanaf de VPS, publiceer SPF- en DMARC-records voor uw domein en voeg het DKIM-record toe onder de selector die uw relay verstrekt. Houd uw eigen adres in het From-veld en plaats de klant in het Reply-To-veld. Het adres van de klant als afzender instellen zorgt ervoor dat Gmail het bericht weigert met 550 5.7.1 Unauthenticated email from example.com is not accepted due to domain's DMARC policy. Bevestig de oplossing door te controleren of dkim=pass en spf=pass voorkomen in de Authentication-Results header van een testbericht.

Welke moet ik kiezen als ik per uur factureer?

Kimai. Het is in de eerste plaats een urenregistratietool, dus de factuur wordt gegenereerd op basis van goedgekeurde urenstaten en de factuurregels zijn de werkzaamheden die u heeft geregistreerd. Sjablonen zijn DOCX-, ODS- of XLSX-bestanden die u ontwerpt in een tekstverwerker, wat eenvoudiger is dan het bewerken van CSS. Het nadeel is dat Kimai geen klantportaal en geen betalingsgateway heeft; u e-mailt de PDF en ontvangt betaling per overboeking. Invoice Ninja houdt ook tijd bij en beschikt wel over een portaal, dus kies daarvoor als online kaartbetalingen belangrijker voor u zijn dan gedetailleerde urenstaten.

Wat moet ik precies back-uppen?

De database, het opslagvolume met logo's en gegenereerde PDF's, het omgevingsbestand en de gerenderde PDF's die als losse bestanden worden bewaard. Het omgevingsbestand is wat mensen vaak vergeten: Laravel-applicaties zoals Invoice Ninja en InvoiceShelf versleutelen opgeslagen inloggegevens met APP_KEY. Een database die wordt hersteld met een nieuw gegenereerde sleutel maakt uw instellingen voor de betalingsgateway onleesbaar. Herstel de volledige back-up eenmaal naar een testomgeving en open een oude factuur; dat is de enige manier om te controleren of de back-up werkt.