Direct naar inhoud

API-referentie

Facturen

Conceptfacturen maken en bijwerken, versturen, betalingen registreren, annuleren met creditnota en PDF downloaden.

Basis-URL: https://factora.one/api/v1

Overzicht

Pakketfeature invoices. Een nieuwe factuur is altijd een concept en krijgt het volgende factuurnummer volgens de nummering van de organisatie. Alleen concepten kun je wijzigen of verwijderen.

StatusBetekenis
draftConcept; wijzigbaar en verwijderbaar
sentVerzonden (per e-mail of gemarkeerd als verzonden)
overdueVervallen. Filter status=overdue geeft ook verzonden facturen met een verstreken vervaldatum; is_overdue zegt het per factuur
paidVolledig betaald
cancelledGeannuleerd, eventueel met creditnota

Bedragen in het antwoord: subtotal (excl. btw), tax_amount, total_amount, paid_amount en outstanding_amount, allemaal in centen. public_pay_url is gevuld als online betalen aan staat en er een betaallink is.

Factuurvelden

VeldTypeRegels
customer_iduuidVerplicht; klant van dezelfde organisatie
invoice_datedateVerplicht
due_datedateOptioneel, op of na invoice_date. Standaard: factuurdatum + betalingstermijn
notesstringMax. 1000 tekens
linesarrayMinimaal één regel. Bij PATCH vervangt deze lijst alle regels.
lines[].iduuidAlleen bij PATCH: bestaande regel behouden en bijwerken
lines[].descriptionstringMax. 5000 tekens; meerdere regels toegestaan
lines[].quantitynumberMinimaal 0.01
lines[].unit_priceintegerPrijs per eenheid in centen exclusief btw, minimaal 0
lines[].tax_ratenumberBtw-percentage, 0–100

Endpoints

GET/invoices

Facturen opvragen

Gepagineerde lijst zonder regels; standaard nieuwste factuurdatum eerst.

Pakketfeature
invoices
Recht (app-login)
invoices.view

Queryparameters

  • statusstring

    draft, sent, overdue, paid of cancelled

  • customer_iduuid

    Alleen facturen van deze klant

  • searchstring

    Zoekt in factuurnummer en klantnaam (max. 100 tekens)

  • sortstring

    invoice_date, due_date, invoice_number, total_amount, status of created_at; - ervoor voor aflopend

  • per_pageinteger

    1–100, standaard 50

curl "https://factora.one/api/v1/invoices?status=sent&sort=due_date" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json"

200 Voorbeeldantwoord

{
  "data": {
    "current_page": 1,
    "data": [
      {
        "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
        "invoice_number": "2026-0142",
        "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
        "customer": {
          "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
          "name": "Jansen Bouw",
          "email": "info@jansenbouw.nl"
        },
        "invoice_date": "2026-11-12",
        "due_date": "2026-11-26",
        "status": "sent",
        "is_overdue": false,
        "invoice_type": "regular",
        "is_credit_note": false,
        "credited_invoice_id": null,
        "credit_note_id": null,
        "currency": "EUR",
        "subtotal": 15000,
        "tax_amount": 3150,
        "total_amount": 18150,
        "paid_amount": 0,
        "outstanding_amount": 18150,
        "notes": "Bedankt voor de opdracht.",
        "labels": [],
        "sent_at": "2026-11-12T10:02:00+01:00",
        "paid_at": null,
        "cancelled_at": null,
        "cancellation_reason": null,
        "public_pay_url": null,
        "created_at": "2026-11-12T09:20:11+01:00",
        "updated_at": "2026-11-12T09:20:11+01:00"
      }
    ],
    "first_page_url": "https://factora.one/api/v1/invoices?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "https://factora.one/api/v1/invoices?page=1",
    "next_page_url": null,
    "path": "https://factora.one/api/v1/invoices",
    "per_page": 50,
    "prev_page_url": null,
    "to": 1,
    "total": 1
  }
}
GET/invoices/{id}

Factuur tonen

Factuur met alle regels.

Pakketfeature
invoices
Recht (app-login)
invoices.view
curl "https://factora.one/api/v1/invoices/<id>" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json"

200 Voorbeeldantwoord

{
  "data": {
    "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
    "invoice_number": "2026-0142",
    "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
    "customer": {
      "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "name": "Jansen Bouw",
      "email": "info@jansenbouw.nl"
    },
    "invoice_date": "2026-11-12",
    "due_date": "2026-11-26",
    "status": "draft",
    "is_overdue": false,
    "invoice_type": "regular",
    "is_credit_note": false,
    "credited_invoice_id": null,
    "credit_note_id": null,
    "currency": "EUR",
    "subtotal": 15000,
    "tax_amount": 3150,
    "total_amount": 18150,
    "paid_amount": 0,
    "outstanding_amount": 18150,
    "notes": "Bedankt voor de opdracht.",
    "labels": [],
    "sent_at": null,
    "paid_at": null,
    "cancelled_at": null,
    "cancellation_reason": null,
    "public_pay_url": null,
    "created_at": "2026-11-12T09:20:11+01:00",
    "updated_at": "2026-11-12T09:20:11+01:00",
    "lines": [
      {
        "id": "9d3cbe60-7fd3-4264-d0b7-83c4e132af76",
        "description": "Website onderhoud",
        "quantity": 2,
        "unit_price": 7500,
        "tax_rate": 21,
        "subtotal": 15000,
        "tax_amount": 3150,
        "total_amount": 18150
      }
    ]
  }
}
POST/invoices

Conceptfactuur aanmaken

Maakt een concept met regels. Factora berekent alle bedragen en kiest het factuurnummer.

Pakketfeature
invoices
Recht (app-login)
invoices.manage

Mogelijke fouten

  • 422Validatiefout of factuurlimiet van het pakket bereikt
curl -X POST "https://factora.one/api/v1/invoices" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
    "invoice_date": "2026-11-12",
    "due_date": "2026-11-26",
    "notes": "Bedankt voor de opdracht.",
    "lines": [
      {
        "description": "Website onderhoud",
        "quantity": 2,
        "unit_price": 7500,
        "tax_rate": 21
      }
    ]
  }'

201 Voorbeeldantwoord

{
  "data": {
    "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
    "invoice_number": "2026-0142",
    "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
    "customer": {
      "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "name": "Jansen Bouw",
      "email": "info@jansenbouw.nl"
    },
    "invoice_date": "2026-11-12",
    "due_date": "2026-11-26",
    "status": "draft",
    "is_overdue": false,
    "invoice_type": "regular",
    "is_credit_note": false,
    "credited_invoice_id": null,
    "credit_note_id": null,
    "currency": "EUR",
    "subtotal": 15000,
    "tax_amount": 3150,
    "total_amount": 18150,
    "paid_amount": 0,
    "outstanding_amount": 18150,
    "notes": "Bedankt voor de opdracht.",
    "labels": [],
    "sent_at": null,
    "paid_at": null,
    "cancelled_at": null,
    "cancellation_reason": null,
    "public_pay_url": null,
    "created_at": "2026-11-12T09:20:11+01:00",
    "updated_at": "2026-11-12T09:20:11+01:00",
    "lines": [
      {
        "id": "9d3cbe60-7fd3-4264-d0b7-83c4e132af76",
        "description": "Website onderhoud",
        "quantity": 2,
        "unit_price": 7500,
        "tax_rate": 21,
        "subtotal": 15000,
        "tax_amount": 3150,
        "total_amount": 18150
      }
    ]
  }
}
PATCH/invoices/{id}

Conceptfactuur bijwerken

Alleen concepten. Wijzig je invoice_date zonder due_date, dan rekent Factora de vervaldatum opnieuw uit. lines vervangt alle regels.

Pakketfeature
invoices
Recht (app-login)
invoices.manage

Mogelijke fouten

  • 422Alleen conceptfacturen kunnen bewerkt worden.
curl -X PATCH "https://factora.one/api/v1/invoices/<id>" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "lines": [
      {
        "id": "9d3cbe60-7fd3-4264-d0b7-83c4e132af76",
        "description": "Website onderhoud",
        "quantity": 3,
        "unit_price": 7500,
        "tax_rate": 21
      }
    ]
  }'

200 Voorbeeldantwoord

{
  "data": {
    "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
    "invoice_number": "2026-0142",
    "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
    "customer": {
      "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "name": "Jansen Bouw",
      "email": "info@jansenbouw.nl"
    },
    "invoice_date": "2026-11-12",
    "due_date": "2026-11-26",
    "status": "draft",
    "is_overdue": false,
    "invoice_type": "regular",
    "is_credit_note": false,
    "credited_invoice_id": null,
    "credit_note_id": null,
    "currency": "EUR",
    "subtotal": 22500,
    "tax_amount": 4725,
    "total_amount": 27225,
    "paid_amount": 0,
    "outstanding_amount": 27225,
    "notes": "Bedankt voor de opdracht.",
    "labels": [],
    "sent_at": null,
    "paid_at": null,
    "cancelled_at": null,
    "cancellation_reason": null,
    "public_pay_url": null,
    "created_at": "2026-11-12T09:20:11+01:00",
    "updated_at": "2026-11-12T09:20:11+01:00",
    "lines": [
      {
        "id": "9d3cbe60-7fd3-4264-d0b7-83c4e132af76",
        "description": "Website onderhoud",
        "quantity": 2,
        "unit_price": 7500,
        "tax_rate": 21,
        "subtotal": 15000,
        "tax_amount": 3150,
        "total_amount": 18150
      }
    ]
  }
}
DELETE/invoices/{id}

Conceptfactuur verwijderen

Alleen concepten.

Pakketfeature
invoices
Recht (app-login)
invoices.manage

Mogelijke fouten

  • 422Alleen conceptfacturen kunnen verwijderd worden.
curl -X DELETE "https://factora.one/api/v1/invoices/<id>" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json"

200 Voorbeeldantwoord

{
  "message": "Factuur verwijderd."
}
POST/invoices/{id}/send

Factuur versturen per e-mail

Verstuurt de factuur naar de klant en zet de status op sent.

Pakketfeature
invoices + automatic_emails
Recht (app-login)
invoices.send

Mogelijke fouten

  • 422Factuur kan in deze status of zonder e-mailadres van de klant niet verstuurd worden
curl -X POST "https://factora.one/api/v1/invoices/<id>/send" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json"

200 Voorbeeldantwoord

{
  "data": {
    "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
    "invoice_number": "2026-0142",
    "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
    "customer": {
      "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "name": "Jansen Bouw",
      "email": "info@jansenbouw.nl"
    },
    "invoice_date": "2026-11-12",
    "due_date": "2026-11-26",
    "status": "sent",
    "is_overdue": false,
    "invoice_type": "regular",
    "is_credit_note": false,
    "credited_invoice_id": null,
    "credit_note_id": null,
    "currency": "EUR",
    "subtotal": 15000,
    "tax_amount": 3150,
    "total_amount": 18150,
    "paid_amount": 0,
    "outstanding_amount": 18150,
    "notes": "Bedankt voor de opdracht.",
    "labels": [],
    "sent_at": "2026-11-12T10:02:00+01:00",
    "paid_at": null,
    "cancelled_at": null,
    "cancellation_reason": null,
    "public_pay_url": null,
    "created_at": "2026-11-12T09:20:11+01:00",
    "updated_at": "2026-11-12T09:20:11+01:00",
    "lines": [
      {
        "id": "9d3cbe60-7fd3-4264-d0b7-83c4e132af76",
        "description": "Website onderhoud",
        "quantity": 2,
        "unit_price": 7500,
        "tax_rate": 21,
        "subtotal": 15000,
        "tax_amount": 3150,
        "total_amount": 18150
      }
    ]
  }
}
POST/invoices/{id}/reminder

Betalingsherinnering versturen

Stuurt de klant een betalingsherinnering voor een openstaande factuur.

Pakketfeature
invoices + automatic_emails
Recht (app-login)
invoices.send
curl -X POST "https://factora.one/api/v1/invoices/<id>/reminder" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json"

200 Voorbeeldantwoord

{
  "data": {
    "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
    "invoice_number": "2026-0142",
    "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
    "customer": {
      "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "name": "Jansen Bouw",
      "email": "info@jansenbouw.nl"
    },
    "invoice_date": "2026-11-12",
    "due_date": "2026-11-26",
    "status": "sent",
    "is_overdue": false,
    "invoice_type": "regular",
    "is_credit_note": false,
    "credited_invoice_id": null,
    "credit_note_id": null,
    "currency": "EUR",
    "subtotal": 15000,
    "tax_amount": 3150,
    "total_amount": 18150,
    "paid_amount": 0,
    "outstanding_amount": 18150,
    "notes": "Bedankt voor de opdracht.",
    "labels": [],
    "sent_at": "2026-11-12T10:02:00+01:00",
    "paid_at": null,
    "cancelled_at": null,
    "cancellation_reason": null,
    "public_pay_url": null,
    "created_at": "2026-11-12T09:20:11+01:00",
    "updated_at": "2026-11-12T09:20:11+01:00",
    "lines": [
      {
        "id": "9d3cbe60-7fd3-4264-d0b7-83c4e132af76",
        "description": "Website onderhoud",
        "quantity": 2,
        "unit_price": 7500,
        "tax_rate": 21,
        "subtotal": 15000,
        "tax_amount": 3150,
        "total_amount": 18150
      }
    ]
  }
}
POST/invoices/{id}/resend

Factuur opnieuw versturen

Verstuurt een al verzonden factuur nog een keer.

Pakketfeature
invoices + automatic_emails
Recht (app-login)
invoices.send
curl -X POST "https://factora.one/api/v1/invoices/<id>/resend" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json"

200 Voorbeeldantwoord

{
  "data": {
    "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
    "invoice_number": "2026-0142",
    "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
    "customer": {
      "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "name": "Jansen Bouw",
      "email": "info@jansenbouw.nl"
    },
    "invoice_date": "2026-11-12",
    "due_date": "2026-11-26",
    "status": "sent",
    "is_overdue": false,
    "invoice_type": "regular",
    "is_credit_note": false,
    "credited_invoice_id": null,
    "credit_note_id": null,
    "currency": "EUR",
    "subtotal": 15000,
    "tax_amount": 3150,
    "total_amount": 18150,
    "paid_amount": 0,
    "outstanding_amount": 18150,
    "notes": "Bedankt voor de opdracht.",
    "labels": [],
    "sent_at": "2026-11-12T10:02:00+01:00",
    "paid_at": null,
    "cancelled_at": null,
    "cancellation_reason": null,
    "public_pay_url": null,
    "created_at": "2026-11-12T09:20:11+01:00",
    "updated_at": "2026-11-12T09:20:11+01:00",
    "lines": [
      {
        "id": "9d3cbe60-7fd3-4264-d0b7-83c4e132af76",
        "description": "Website onderhoud",
        "quantity": 2,
        "unit_price": 7500,
        "tax_rate": 21,
        "subtotal": 15000,
        "tax_amount": 3150,
        "total_amount": 18150
      }
    ]
  }
}
POST/invoices/{id}/mark-as-sent

Markeren als verzonden

Zet een concept op sent zonder e-mail, bijvoorbeeld als je de factuur zelf verstuurt.

Pakketfeature
invoices
Recht (app-login)
invoices.manage
curl -X POST "https://factora.one/api/v1/invoices/<id>/mark-as-sent" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json"

200 Voorbeeldantwoord

{
  "data": {
    "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
    "invoice_number": "2026-0142",
    "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
    "customer": {
      "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "name": "Jansen Bouw",
      "email": "info@jansenbouw.nl"
    },
    "invoice_date": "2026-11-12",
    "due_date": "2026-11-26",
    "status": "sent",
    "is_overdue": false,
    "invoice_type": "regular",
    "is_credit_note": false,
    "credited_invoice_id": null,
    "credit_note_id": null,
    "currency": "EUR",
    "subtotal": 15000,
    "tax_amount": 3150,
    "total_amount": 18150,
    "paid_amount": 0,
    "outstanding_amount": 18150,
    "notes": "Bedankt voor de opdracht.",
    "labels": [],
    "sent_at": "2026-11-12T10:02:00+01:00",
    "paid_at": null,
    "cancelled_at": null,
    "cancellation_reason": null,
    "public_pay_url": null,
    "created_at": "2026-11-12T09:20:11+01:00",
    "updated_at": "2026-11-12T09:20:11+01:00",
    "lines": [
      {
        "id": "9d3cbe60-7fd3-4264-d0b7-83c4e132af76",
        "description": "Website onderhoud",
        "quantity": 2,
        "unit_price": 7500,
        "tax_rate": 21,
        "subtotal": 15000,
        "tax_amount": 3150,
        "total_amount": 18150
      }
    ]
  }
}
POST/invoices/{id}/mark-paid

Markeren als betaald

Markeert de factuur als volledig betaald.

Pakketfeature
invoices
Recht (app-login)
invoices.manage

Mogelijke fouten

  • 422Status staat dit niet toe
curl -X POST "https://factora.one/api/v1/invoices/<id>/mark-paid" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json"

200 Voorbeeldantwoord

{
  "data": {
    "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
    "invoice_number": "2026-0142",
    "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
    "customer": {
      "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "name": "Jansen Bouw",
      "email": "info@jansenbouw.nl"
    },
    "invoice_date": "2026-11-12",
    "due_date": "2026-11-26",
    "status": "paid",
    "is_overdue": false,
    "invoice_type": "regular",
    "is_credit_note": false,
    "credited_invoice_id": null,
    "credit_note_id": null,
    "currency": "EUR",
    "subtotal": 15000,
    "tax_amount": 3150,
    "total_amount": 18150,
    "paid_amount": 18150,
    "outstanding_amount": 0,
    "notes": "Bedankt voor de opdracht.",
    "labels": [],
    "sent_at": null,
    "paid_at": "2026-11-12T14:00:00+01:00",
    "cancelled_at": null,
    "cancellation_reason": null,
    "public_pay_url": null,
    "created_at": "2026-11-12T09:20:11+01:00",
    "updated_at": "2026-11-12T09:20:11+01:00"
  }
}
POST/invoices/{id}/mark-unpaid

Betaald terugzetten

Zet een betaalde factuur terug naar sent.

Pakketfeature
invoices
Recht (app-login)
invoices.manage

Mogelijke fouten

  • 422Alleen betaalde facturen kunnen teruggezet worden.
curl -X POST "https://factora.one/api/v1/invoices/<id>/mark-unpaid" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json"

200 Voorbeeldantwoord

{
  "data": {
    "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
    "invoice_number": "2026-0142",
    "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
    "customer": {
      "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "name": "Jansen Bouw",
      "email": "info@jansenbouw.nl"
    },
    "invoice_date": "2026-11-12",
    "due_date": "2026-11-26",
    "status": "sent",
    "is_overdue": false,
    "invoice_type": "regular",
    "is_credit_note": false,
    "credited_invoice_id": null,
    "credit_note_id": null,
    "currency": "EUR",
    "subtotal": 15000,
    "tax_amount": 3150,
    "total_amount": 18150,
    "paid_amount": 0,
    "outstanding_amount": 18150,
    "notes": "Bedankt voor de opdracht.",
    "labels": [],
    "sent_at": "2026-11-12T10:02:00+01:00",
    "paid_at": null,
    "cancelled_at": null,
    "cancellation_reason": null,
    "public_pay_url": null,
    "created_at": "2026-11-12T09:20:11+01:00",
    "updated_at": "2026-11-12T09:20:11+01:00"
  }
}
POST/invoices/{id}/register-payment

(Deel)betaling registreren

Registreert een ontvangen betaling. Zonder amount_cents geldt het openstaande bedrag. Pas als alles binnen is, wordt de factuur paid.

Pakketfeature
invoices
Recht (app-login)
invoices.manage

Body

  • amount_centsinteger

    Ontvangen bedrag in centen, minimaal 1

  • paid_atdate

    Betaaldatum; standaard nu

curl -X POST "https://factora.one/api/v1/invoices/<id>/register-payment" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "amount_cents": 5000,
    "paid_at": "2026-11-12"
  }'

200 Voorbeeldantwoord

{
  "data": {
    "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
    "invoice_number": "2026-0142",
    "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
    "customer": {
      "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "name": "Jansen Bouw",
      "email": "info@jansenbouw.nl"
    },
    "invoice_date": "2026-11-12",
    "due_date": "2026-11-26",
    "status": "sent",
    "is_overdue": false,
    "invoice_type": "regular",
    "is_credit_note": false,
    "credited_invoice_id": null,
    "credit_note_id": null,
    "currency": "EUR",
    "subtotal": 15000,
    "tax_amount": 3150,
    "total_amount": 18150,
    "paid_amount": 5000,
    "outstanding_amount": 13150,
    "notes": "Bedankt voor de opdracht.",
    "labels": [],
    "sent_at": null,
    "paid_at": null,
    "cancelled_at": null,
    "cancellation_reason": null,
    "public_pay_url": null,
    "created_at": "2026-11-12T09:20:11+01:00",
    "updated_at": "2026-11-12T09:20:11+01:00",
    "lines": [
      {
        "id": "9d3cbe60-7fd3-4264-d0b7-83c4e132af76",
        "description": "Website onderhoud",
        "quantity": 2,
        "unit_price": 7500,
        "tax_rate": 21,
        "subtotal": 15000,
        "tax_amount": 3150,
        "total_amount": 18150
      }
    ]
  }
}
POST/invoices/{id}/cancel

Factuur annuleren

Annuleert de factuur, optioneel met creditnota (die je ook kunt e-mailen).

Pakketfeature
invoices
Recht (app-login)
invoices.manage

Body

  • reasonstring

    Reden, max. 500 tekens

  • create_credit_noteboolean

    Maak een creditnota

  • email_credit_noteboolean

    Verstuur de creditnota per e-mail

curl -X POST "https://factora.one/api/v1/invoices/<id>/cancel" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Dubbel gefactureerd",
    "create_credit_note": true,
    "email_credit_note": false
  }'

200 Voorbeeldantwoord

{
  "data": {
    "invoice": {
      "id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
      "invoice_number": "2026-0142",
      "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "customer": {
        "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
        "name": "Jansen Bouw",
        "email": "info@jansenbouw.nl"
      },
      "invoice_date": "2026-11-12",
      "due_date": "2026-11-26",
      "status": "cancelled",
      "is_overdue": false,
      "invoice_type": "regular",
      "is_credit_note": false,
      "credited_invoice_id": null,
      "credit_note_id": "9d3ccf71-80e4-4375-e1c8-94d5f243b087",
      "currency": "EUR",
      "subtotal": 15000,
      "tax_amount": 3150,
      "total_amount": 18150,
      "paid_amount": 0,
      "outstanding_amount": 18150,
      "notes": "Bedankt voor de opdracht.",
      "labels": [],
      "sent_at": null,
      "paid_at": null,
      "cancelled_at": "2026-11-12T15:00:00+01:00",
      "cancellation_reason": "Dubbel gefactureerd",
      "public_pay_url": null,
      "created_at": "2026-11-12T09:20:11+01:00",
      "updated_at": "2026-11-12T09:20:11+01:00"
    },
    "credit_note": {
      "id": "9d3ccf71-80e4-4375-e1c8-94d5f243b087",
      "invoice_number": "2026-0143",
      "customer_id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
      "customer": {
        "id": "9d3c6f1b-2a8e-4d1f-8b62-3e7f9c8d5a21",
        "name": "Jansen Bouw",
        "email": "info@jansenbouw.nl"
      },
      "invoice_date": "2026-11-12",
      "due_date": "2026-11-26",
      "status": "draft",
      "is_overdue": false,
      "invoice_type": "credit_note",
      "is_credit_note": true,
      "credited_invoice_id": "9d3c7a2c-3b9f-4e20-9c73-4f80ad9e6b32",
      "credit_note_id": null,
      "currency": "EUR",
      "subtotal": -15000,
      "tax_amount": -3150,
      "total_amount": -18150,
      "paid_amount": 0,
      "outstanding_amount": 0,
      "notes": "Bedankt voor de opdracht.",
      "labels": [],
      "sent_at": null,
      "paid_at": null,
      "cancelled_at": null,
      "cancellation_reason": null,
      "public_pay_url": null,
      "created_at": "2026-11-12T09:20:11+01:00",
      "updated_at": "2026-11-12T09:20:11+01:00"
    }
  },
  "message": "Factuur 2026-0142 is gecrediteerd met creditfactuur 2026-0143."
}
GET/invoices/{id}/pdf

PDF downloaden

Geeft de factuur als PDF (application/pdf). Met ?inline=1 wordt hij in de browser getoond.

Pakketfeature
invoices + pdf_export
Recht (app-login)
invoices.view

Queryparameters

  • inlineboolean

    Toon inline in plaats van als download

curl "https://factora.one/api/v1/invoices/<id>/pdf" \
  -H "Authorization: Bearer $FACTORA_API_KEY" \
  -o document.pdf

Antwoord: het PDF-bestand met Content-Type: application/pdf.