Invovate โ† Terug naar Factuur Generator

Factuur API Documentatie

Genereer professionele PDF facturen programmatisch via een eenvoudige REST API

v1.0

Overzicht

De Invovate factuur API stelt ontwikkelaars in staat om professionele facturen te genereren via een eenvoudige HTTP POST aanroep. U kunt kiezen tussen een gestructureerde JSON-reactie met alle berekeningen of een directe PDF download. De API ondersteunt 11 talen, 20+ valuta en 5 ontwerpssjablonen โ€” ideaal voor Nederlandse freelancers, SaaS-bedrijven en boekhoudapplicaties die factuurautomatisering nodig hebben.

Gratis te starten

40 aanroepen/uur, geen creditcard vereist

JSON of PDF

Kies uw gewenste uitvoerformaat

BTW-berekening

Per regel of globale belasting

Meertalig

nl, en, de, fr, es en meer

Basis URL:
https://invovate.com/api

Snelstart

Uw eerste factuur in drie stappen genereren:

Stap 1 โ€” Account aanmaken
Meld u gratis aan op invovate.com en verifieer uw e-mailadres.
Stap 2 โ€” API-sleutel ophalen
Ga naar het dashboard en klik op "API-sleutel genereren". Uw sleutel begint met inv_.
Stap 3 โ€” Eerste aanroep doen
curl -X POST https://invovate.com/api/generate-invoice \ -H "Content-Type: application/json" \ -H "Authorization: Bearer inv_uwapisleutel" \ -d '{ "from": {"name": "Mijn Bedrijf BV"}, "to": {"name": "Klant BV"}, "items": [{"description": "Webdesign", "quantity": 1, "unit_price": 1500, "tax_rate": 21}], "invoice": {"currency": "EUR", "language": "nl"} }'

Authenticatie

De API ondersteunt drie authenticatiemethoden:

1. API-sleutel (aanbevolen voor server-side gebruik)

Authorization: Bearer inv_uwapisleutelhier

2. Sessiecookie (voor webapplicaties)

Wanneer u bent ingelogd via de browser, wordt het sessiecookie inv_session automatisch meegestuurd.

3. Anoniem (zonder authenticatie)

Aanroepen zonder authenticatie zijn mogelijk maar beperkt tot JSON-uitvoer en worden gelimiteerd op IP-adres. Geschikt om de API te testen.

Beveiliging: Verwerk uw API-sleutel nooit in client-side code of bewaar hem in een Git-repository. Gebruik omgevingsvariabelen op uw server.

Limieten & Tarieven

PlanPrijsPer uurPer week
Gratisโ‚ฌ040400
Starterโ‚ฌ9/maand2004.000
Proโ‚ฌ29/maand1.00040.000
EnterpriseOp aanvraagOnbeperktOnbeperkt

Limieten worden bijgehouden via de antwoordheaders:

X-RateLimit-Limit-Hourly: 40 X-RateLimit-Remaining-Hourly: 39 X-RateLimit-Reset-Hourly: 1712123456 X-RateLimit-Limit-Weekly: 400 X-RateLimit-Remaining-Weekly: 399 X-RateLimit-Reset-Weekly: 1712345678

Factuur Genereren

POST
/api/generate-invoice

Genereert een factuur en retourneert JSON met berekeningen of een binair PDF-bestand.

Verzoekformaat

Afzender (from)

VeldTypeVereistBeschrijving
from.namestringJaUw bedrijfsnaam
from.addressstringNeeUw bedrijfsadres
from.emailstringNeeUw e-mailadres
from.tax_idstringNeeBTW-nummer (bijv. NL123456789B01)

Ontvanger (to)

VeldTypeVereistBeschrijving
to.namestringJaNaam klant of bedrijf
to.addressstringNeeAdres van de klant
to.emailstringNeeE-mailadres van de klant

Factuurgegevens (invoice)

VeldTypeStandaardBeschrijving
invoice.numberstringAutoFactuurnummer
invoice.datestringVandaagFactuurdatum (YYYY-MM-DD)
invoice.due_datestringโ€”Vervaldatum (YYYY-MM-DD)
invoice.currencystringUSDValutacode (bijv. EUR)
invoice.languagestringenTaalcode (bijv. nl)
invoice.termsstringโ€”Betalingsvoorwaarden (bijv. "30 dagen netto")
invoice.po_numberstringโ€”Inkoopordernummer

Regelitems (items array)

VeldTypeVereistBeschrijving
descriptionstringJaOmschrijving van het product of dienst
quantitynumberJaAantal eenheden
unit_pricenumberJaPrijs per eenheid
discountnumberNeeKorting (percentage of bedrag)
discount_typestringpercent"percent" of "amount"
tax_ratenumberNeeBTW-percentage per regel (bijv. 21)

Overige velden

VeldTypeBeschrijving
global_taxnumberGlobaal BTW-percentage (geldt als geen per-regel BTW is ingesteld)
global_discountnumberKorting op het totaal
global_discount_typestring"percent" of "amount"
amount_paidnumberReeds betaald bedrag (voor deelbetaling)
notesstringNotities onderaan de factuur
refund_policystringRestitutiebeleid
templatestringSjabloonnaam: classic, modern, bold, minimal, navy
outputstring"json" (standaard) of "pdf"

Antwoordformaat

JSON antwoord (output: "json")

{ "success": true, "invoice": { "number": "FACT-001", "date": "2026-04-03", "due_date": "2026-05-03", "currency": "EUR", "language": "nl", "template": "classic", "from": { "name": "Mijn Bedrijf BV", "tax_id": "NL123456789B01" }, "to": { "name": "Klant BV" }, "items": [ { "description": "Webdesign", "quantity": 1, "unit_price": 1500, "discount": 0, "tax_rate": 21, "tax_amount": 315.00, "line_total": 1815.00 } ], "subtotal": 1500.00, "global_discount": 0, "total_tax": 315.00, "grand_total": 1815.00, "amount_paid": 0, "balance_due": 1815.00, "notes": "Bedankt voor uw opdracht!" }, "meta": { "processing_ms": 11, "credits_remaining": { "hourly": 39, "weekly": 399 }, "rate_limits": { "hourly": { "limit": 40, "used": 1, "reset_at": 1712123456 }, "weekly": { "limit": 400, "used": 1, "reset_at": 1712345678 } } } }

PDF antwoord (output: "pdf")

Retourneert een binair PDF-bestand met de volgende headers:

Content-Type: application/pdf Content-Disposition: attachment; filename="factuur.pdf"

Foutcodes

{ "success": false, "error": { "message": "Ten minste รฉรฉn regelitem is vereist" } }
HTTP StatusBetekenis
400Validatiefout โ€” controleer uw verzoekformaat
401Authenticatie vereist of API-sleutel ongeldig
403E-mailadres niet geverifieerd
429Snelheidslimiet overschreden
500Interne serverfout

Authenticatie Endpoints

MethodePadBeschrijving
POST/api/auth/registerAccount aanmaken met e-mail en wachtwoord
POST/api/auth/loginInloggen, retourneert sessiecookie
POST/api/auth/logoutUitloggen
GET/api/auth/meHuidige gebruikersinfo en API-sleutel ophalen
POST/api/auth/generate-api-keyNieuwe API-sleutel genereren (geverifieerd e-mail vereist)

Codevoorbeelden

cURL โ€” PDF factuur in euro

curl -X POST https://invovate.com/api/generate-invoice \ -H "Content-Type: application/json" \ -H "Authorization: Bearer inv_uwapisleutel" \ -d '{ "from": { "name": "Webbureau Amsterdam BV", "address": "Herengracht 123, 1015 BH Amsterdam", "tax_id": "NL123456789B01" }, "to": { "name": "Opdrachtgever BV", "address": "Kalverstraat 10, 1012 NX Amsterdam", "email": "financien@opdrachtgever.nl" }, "invoice": { "number": "FACT-2026-042", "date": "2026-04-03", "due_date": "2026-05-03", "currency": "EUR", "language": "nl", "terms": "30 dagen netto" }, "items": [ { "description": "Website ontwerp en ontwikkeling", "quantity": 1, "unit_price": 3500.00, "tax_rate": 21 }, { "description": "SEO optimalisatie", "quantity": 5, "unit_price": 150.00, "tax_rate": 21 } ], "notes": "Bedankt voor uw opdracht!", "template": "modern", "output": "pdf" }' --output factuur.pdf

JavaScript (Node.js)

// Factuur genereren met de Invovate API const response = await fetch('https://invovate.com/api/generate-invoice', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer inv_uwapisleutel' }, body: JSON.stringify({ from: { name: 'Mijn Bedrijf BV', tax_id: 'NL123456789B01' }, to: { name: 'Klant BV', email: 'klant@voorbeeld.nl' }, invoice: { number: 'FACT-001', currency: 'EUR', language: 'nl', due_date: '2026-05-03' }, items: [ { description: 'Consultancy', quantity: 8, unit_price: 125, tax_rate: 21 } ], output: 'json' }) }); const data = await response.json(); if (data.success) { console.log('Totaal (incl. BTW):', data.invoice.grand_total, 'EUR'); console.log('Resterende aanroepen dit uur:', data.meta.credits_remaining.hourly); } else { console.error('Fout:', data.error.message); }

Python

import requests API_KEY = "inv_uwapisleutel" URL = "https://invovate.com/api/generate-invoice" # Factuur aanmaken voor Nederlandse klant factuur = { "from": { "name": "Freelance Ontwerper", "address": "Nieuwmarkt 5, 1011 PW Amsterdam", "tax_id": "NL123456789B01" }, "to": { "name": "Klant Bedrijf BV", "address": "Prinsengracht 200, 1016 HC Amsterdam" }, "invoice": { "number": "FACT-2026-001", "currency": "EUR", "language": "nl", "terms": "14 dagen netto" }, "items": [ {"description": "Logo ontwerp", "quantity": 1, "unit_price": 800, "tax_rate": 21}, {"description": "Visitekaartjes", "quantity": 3, "unit_price": 120, "tax_rate": 21} ], "output": "pdf" } headers = {"Authorization": f"Bearer {API_KEY}"} response = requests.post(URL, json=factuur, headers=headers) if response.status_code == 200: # PDF opslaan with open("factuur.pdf", "wb") as f: f.write(response.content) print("Factuur opgeslagen als factuur.pdf") else: fout = response.json() print(f"Fout: {fout['error']['message']}")

Ondersteunde Talen

CodeTaalSchrijfrichting
nlNederlandsLTR
enEngelsLTR
deDuitsLTR
frFransLTR
esSpaansLTR
itItaliaansLTR
ptPortugeesLTR
ruRussischLTR
hiHindiLTR
jaJapansLTR
arArabischRTL

PDF Sjablonen

NaamStijl
classicBlauw accent, afwisselende grijze rijen (standaard)
modernTeal/cyaan, strak en modern
boldDonker antraciet koptekst, hoog contrast
minimalLichtgrijs, zonder randlijnen
navyDiepblauw koptekst met gouden accentlijn

Ondersteunde Valuta

EUR, USD, GBP, JPY, CAD, AUD, CHF, CNY, INR, AED, SAR, SGD, NZD, KRW, BRL, MXN, ZAR, SEK, NOK, DKK