Voorbeelden
Complete curl-voorbeelden voor de EenFactuurMaken.nl REST API. Een factuur maken, controleren, definitief maken, mailen, als betaald markeren, crediteren, herinneren en btw-cijfers ophalen.
Alle voorbeelden gebruiken curl en jq. Zet eerst je sleutel in een variabele:
export EENFACTUURMAKEN_API_KEY=efm_jouw_sleutel
export API=https://eenfactuurmaken.nl/api/v1Factuur maken en versturen
1. Een concept maken
Met een nieuwe klant erin (die wordt dan meteen aangemaakt). Gebruik customerId voor een bestaande klant.
INVOICE=$(curl -s -X POST "$API/invoices" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"type": "business",
"name": "Bakkerij De Gouden Korst",
"email": "administratie@goudenkorst.nl",
"addressLine1": "Dorpsstraat 1",
"postalCode": "1234 AB",
"city": "Utrecht",
"country": "NL",
"kvkNumber": "12345678"
},
"reference": "Website 2026",
"lines": [
{ "description": "Webdesign", "quantity": "12", "unit": "HUR", "unitPriceCents": 8500, "vatRate": "21" },
{ "description": "Hosting (jaar)", "quantity": "1", "unitPriceCents": 12000, "vatRate": "21" }
]
}' | jq -r .id)
echo $INVOICEDatums, betaaltermijn, taal en btw-behandeling komen van de klant en je instellingen. Het antwoord is het complete factuurobject, met totalCents (hier 137940) en compliance.
2. Controleren
curl -s "$API/invoices/$INVOICE/compliance" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" | jq '.[] | select(.level=="error")'Geen uitvoer betekent: geen fouten. Zie Factuurcontrole voor alle codes.
3. Definitief maken
curl -s -X POST "$API/invoices/$INVOICE/issue" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' | jq '{number, status, publicUrl}'Je kunt "number" meegeven voor een eigen nummer, of "issueDate" voor een andere factuurdatum. Dit is onomkeerbaar.
4. Mailen
curl -s -X POST "$API/invoices/$INVOICE/send" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "attachUbl": true }' | jq .statusZonder to gaat de mail naar het e-mailadres (en cc) van de klant. Je kunt to, cc, subject en message meegeven (placeholders zoals {number} werken). Zie Versturen per e-mail.
5. PDF en UBL downloaden
curl -s "$API/invoices/$INVOICE/pdf?download=1" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" -o factuur.pdf
curl -s "$API/invoices/$INVOICE/ubl" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" -o factuur.xmlAls betaald markeren
Koppel je eigen betaaldienst of bank: zodra een betaling binnen is, markeer je de factuur.
curl -s -X POST "$API/invoices/$INVOICE/mark-paid" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "paidAt": "2026-10-20" }' | jq .statusEen factuur zoeken op nummer, bijvoorbeeld uit de omschrijving van een bankbetaling:
curl -s "$API/invoices?q=2026-0042&kind=invoice" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" | jq '.data[] | {id, number, totalCents, displayStatus}'Vergist? POST /invoices/{id}/mark-unpaid zet hem terug.
Btw verlegd en EU-klanten
Geef vatTreatment mee (en bij EU- en buitenlandse klanten supplyType). De klant heeft dan een btw-nummer nodig.
curl -s -X POST "$API/invoices" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer": { "name": "Muster GmbH", "country": "DE", "vatNumber": "DE123456789",
"addressLine1": "Hauptstraße 5", "postalCode": "10115", "city": "Berlin" },
"vatTreatment": "intra_eu",
"supplyType": "services",
"locale": "de",
"lines": [ { "description": "Beratung", "quantity": "8", "unit": "HUR", "unitPriceCents": 9500 } ]
}' | jq '{id, vatTreatment, vatTotalCents, totalCents}'Waarden voor vatTreatment: standard, reverse_charge, intra_eu, export, kor, exempt (met vatExemptionReason). Zie Btw-behandeling kiezen.
Crediteren
Volledig crediteren, als concept:
CREDIT=$(curl -s -X POST "$API/invoices/$INVOICE/credit-note" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" | jq -r .id)Gedeeltelijk: vervang de regels (positieve bedragen) en maak hem definitief:
curl -s -X PATCH "$API/invoices/$CREDIT" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "lines": [ { "description": "Korting webdesign", "quantity": "1", "unitPriceCents": 20000, "vatRate": "21" } ] }'
curl -s -X POST "$API/invoices/$CREDIT/issue" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" \
-H "Content-Type: application/json" -d '{}' | jq .numberEen factuur van buiten EenFactuurMaken.nl crediteren: POST /invoices met "kind": "credit_note", "creditedInvoiceNumber" en "creditedInvoiceDate".
Herinneringen voor te late facturen
for id in $(curl -s "$API/invoices?status=overdue&pageSize=100" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" | jq -r '.data[].id'); do
curl -s -X POST "$API/invoices/$id/remind" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" | jq -r '"\(.number): \(.reminderCount) herinnering(en)"'
doneMet Pro kan EenFactuurMaken.nl dit ook automatisch doen.
Btw-cijfers voor je aangifte
curl -s "$API/stats?year=2026&quarter=3" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" | jq .vat.selectedJe krijgt de omzet en btw per rubriek (1a, 1b, 1c, 1e, 3a, 3b) plus vrijgestelde en KOR-omzet. Zie Btw-aangifte.
Wijzigingen bijhouden
EenFactuurMaken.nl heeft (nog) geen webhooks. Wil je weten welke facturen nieuw of betaald zijn, vraag dan periodiek de lijst op, gesorteerd op het nieuwste:
curl -s "$API/invoices?sort=-createdAt&pageSize=50" \
-H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY"Houd je aan de rate limits: eens per paar minuten is ruim genoeg.
Laatst bijgewerkt op 13 oktober 2026
Kom je er niet uit?
Mail ons op support@eenfactuurmaken.nl. Vertel wat je probeerde en wat er gebeurde, dan helpen we je verder.