API Documentatie

✦ API v1 — Stabiel

Introductie

De FactuurMakenOnline REST API geeft je volledige toegang tot je facturen, klanten en producten. Alle responses zijn JSON.

Base URL: https://dashboard.factuurmakenonline.nl/api

ℹ️ De API is momenteel beschikbaar voor interne integraties. Publieke API-sleutels komen binnenkort beschikbaar.

Authenticatie

De API gebruikt Laravel Sanctum — een cookie-gebaseerde sessie voor browser-clients (SPA) en token-gebaseerde auth voor externe clients.

Sessie-authenticatie (browser / SPA)

# 1. CSRF cookie ophalen
GET /sanctum/csrf-cookie

# 2. Inloggen
POST /login
{
  "email": "jouw@email.nl",
  "password": "..."
}

# 3. Alle verzoeken sturen met Cookie + X-XSRF-TOKEN header

Token-authenticatie (externe apps)

POST /api-tokens
{
  "token_name": "mijn-app"
}

# Response
{ "token": "1|abcdef123456..." }

# Gebruik in verzoeken
Authorization: Bearer 1|abcdef123456...

Foutafhandeling

HTTP-statuscodes volgen de standaard conventies:

CodeBetekenis
200Succes
201Aangemaakt
401Niet ingelogd / ongeldig token
403Geen toegang (ander bedrijf)
422Validatiefout — zie errors in de response
413Bestand te groot / opslagquotum vol
500Serverfout
# Voorbeeld validatiefout
{
  "message": "The email field is required.",
  "errors": {
    "email": ["The email field is required."]
  }
}

Klanten

GET /api/customers Alle klanten ophalen

Geeft een gepagineerde lijst van klanten voor het ingelogde bedrijf.

{
  "data": [
    {
      "id": 1,
      "naam": "Jan Jansen",
      "bedrijfsnaam": "Jansen BV",
      "email": "jan@jansen.nl",
      "btw_nummer": "NL123456789B01"
    }
  ],
  "total": 42
}
POST /api/customers Klant aanmaken
VeldTypeVerplichtBeschrijving
naamstringverplichtVolledige naam of contactpersoon
emailstringverplichtE-mailadres
bedrijfsnaamstringoptioneelBedrijfsnaam
btw_nummerstringoptioneelBTW-nummer (NL123456789B01)
adresstringoptioneelStraat + huisnummer
postcodestringoptioneelPostcode
stadstringoptioneelWoonplaats
landstringoptioneelLandcode (NL, BE, DE...)

Facturen

GET /api/invoices Alle facturen ophalen
Query paramTypeBeschrijving
statusstringFilter op status: concept, verzonden, betaald, verlopen
klant_idintegerFilter op klant-ID
per_pageintegerAantal per pagina (max 100, default 25)
{
  "data": [
    {
      "id": 1,
      "factuurnummer": "F2024-001",
      "status": "verzonden",
      "totaal": "242.00",
      "vervaldatum": "2024-02-15",
      "customer": { "id": 1, "naam": "Jan Jansen" }
    }
  ]
}
POST /api/invoices Factuur aanmaken
VeldTypeVerplichtBeschrijving
customer_idintegerverplichtID van de klant
regelsarrayverplichtFactuurregels (zie hieronder)
vervaldatumdateoptioneelYYYY-MM-DD (default: 30 dagen)
notitiesstringoptioneelVrije tekst onderaan factuur
btw_percentageintegeroptioneel0, 9 of 21 (default: 21)
# regels-object
{
  "omschrijving": "Webdesign - 10 uur",
  "aantal": 10,
  "prijs": "85.00",
  "btw": 21
}
GET /api/invoices/{id}/pdf PDF downloaden

Geeft de factuur terug als application/pdf. Je kunt de Content-Disposition header bekijken voor de bestandsnaam.

POST /api/invoices/{id}/verzend Factuur e-mailen

Verstuurt de factuur per e-mail naar de klant en zet de status op verzonden.

VeldTypeBeschrijving
berichtstringOptioneel persoonlijk bericht in de e-mail

Producten

GET /api/products Productcatalogus ophalen

Geeft alle producten/diensten terug die zijn opgeslagen als sjabloon voor factuurregels.

POST /api/products Product aanmaken
VeldTypeVerplichtBeschrijving
naamstringverplichtProductnaam of dienstomschrijving
prijsnumericverplichtPrijs exclusief BTW
btwintegeroptioneelBTW-tarief: 0, 9 of 21
eenheidstringoptioneeluur, stuk, m², etc.

Systeemstatus

GET /api/status Publiek — geen auth vereist

Geeft de live systeemstatus terug. Zie ook status.factuurmakenonline.nl.

{
  "overall": "ok",
  "checks": [
    { "id": "database", "name": "Database", "status": "ok", "detail": "12 ms" },
    { "id": "cache",    "name": "Cache",    "status": "ok", "detail": "3 ms"  }
  ],
  "timestamp": "2026-06-26T08:00:00+02:00",
  "uptime_pct": 99.98
}
FactuurMakenOnline · Dashboard · Status