Naar de inhoud

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:

bash
export EENFACTUURMAKEN_API_KEY=efm_jouw_sleutel
export API=https://eenfactuurmaken.nl/api/v1

Factuur maken en versturen

1. Een concept maken

Met een nieuwe klant erin (die wordt dan meteen aangemaakt). Gebruik customerId voor een bestaande klant.

bash
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 $INVOICE

Datums, 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

bash
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

bash
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

bash
curl -s -X POST "$API/invoices/$INVOICE/send" \
  -H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "attachUbl": true }' | jq .status

Zonder 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

bash
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.xml

Als betaald markeren

Koppel je eigen betaaldienst of bank: zodra een betaling binnen is, markeer je de factuur.

bash
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 .status

Een factuur zoeken op nummer, bijvoorbeeld uit de omschrijving van een bankbetaling:

bash
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.

bash
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:

bash
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:

bash
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 .number

Een factuur van buiten EenFactuurMaken.nl crediteren: POST /invoices met "kind": "credit_note", "creditedInvoiceNumber" en "creditedInvoiceDate".

Herinneringen voor te late facturen

bash
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)"'
done

Met Pro kan EenFactuurMaken.nl dit ook automatisch doen.

Btw-cijfers voor je aangifte

bash
curl -s "$API/stats?year=2026&quarter=3" \
  -H "Authorization: Bearer $EENFACTUURMAKEN_API_KEY" | jq .vat.selected

Je 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:

bash
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.

support@eenfactuurmaken.nl