Headers
| Header | Waarde | Wanneer |
|---|---|---|
Authorization | Bearer factora_… | Altijd |
Accept | application/json | Altijd; zo krijg je fouten als JSON en nooit een redirect |
Content-Type | application/json | Bij POST en PATCH met een body |
Content-Type | multipart/form-data | Bij uploads (bankafschriften, boekhouddocumenten) |
Gegevensformaten
| Type | Formaat | Voorbeeld |
|---|---|---|
| Bedrag | Geheel getal in eurocenten, exclusief btw tenzij anders vermeld | 12500 = € 125,00 |
| Btw-tarief | Percentage als getal, 0–100 | 21 |
| Aantal | Decimaal getal, minimaal 0.01 | 1.5 |
| Datum | YYYY-MM-DD | 2026-11-12 |
| Tijdstip | ISO 8601, met offset of in UTC (Z) | 2026-11-12T09:14:03+01:00 of 2026-11-12T08:14:03.000000Z |
| ID | UUID | 9d3c5e2a-1b7f-4c0e-9a51-2f6d8b7e4c10 |
| Valuta | ISO 4217; verkoopfacturen zijn in euro | EUR |
Datums zonder tijd volgen de kalender van Nederland (Europe/Amsterdam). Een factuur is bijvoorbeeld vervallen zodra haar vervaldatum vóór vandaag in Nederland ligt.
Vorm van een antwoord
De inhoud staat altijd onder data. Acties die niets teruggeven, geven alleen een message.
{
"data": {
"id": "9d3c5e2a-1b7f-4c0e-9a51-2f6d8b7e4c10",
"name": "Jansen Bouw"
}
}{
"message": "Factuur verwijderd."
}Paginering
Lijsten zijn gepagineerd. Met page kies je de pagina en met per_page het aantal resultaten (1–100). Lees door tot next_page_url null is.
{
"data": {
"current_page": 1,
"data": [
{
"id": "9d3c…01",
"name": "Bakkerij De Korf"
},
{
"id": "9d3c…02",
"name": "Jansen Bouw"
}
],
"first_page_url": "https://factora.one/api/v1/customers?page=1",
"from": 1,
"last_page": 66,
"last_page_url": "https://factora.one/api/v1/customers?page=66",
"next_page_url": "https://factora.one/api/v1/customers?page=2",
"path": "https://factora.one/api/v1/customers",
"per_page": 2,
"prev_page_url": null,
"to": 2,
"total": 132
}
}| Groep | Standaard per_page | Waar staat de lijst |
|---|---|---|
| Klanten, facturen, offertes, producten, abonnementen, klantenportaal | 50 | data.data; paginagegevens in data |
Boekhouding (/accounting/…) | 25 | data; paginagegevens op het hoogste niveau |
Filters en sorteren
Filters zijn queryparameters, bijvoorbeeld ?status=sent&customer_id=…. Facturen en offertes zijn te sorteren met sort; een - ervoor sorteert aflopend.
| Resource | Filters | Sorteren |
|---|---|---|
| Klanten | search (naam, e-mail, plaats) | Vast op naam |
| Facturen | status, customer_id, search (nummer of klantnaam) | invoice_date, due_date, invoice_number, total_amount, status, created_at; standaard -invoice_date |
| Offertes | status, customer_id | quote_date, valid_until, quote_number, total_amount, status, created_at; standaard -quote_date |
| Producten | search (naam, SKU, omschrijving), is_active | Actief eerst, dan op naam |
| Abonnementen | status, customer_id | Nieuwste eerst |
| Boekhouddocumenten | status | Nieuwste eerst |
Een onbekende waarde voor sort geeft 422.
Bijwerken met PATCH
PATCH werkt alleen de velden bij die je meestuurt. Uitzondering: stuur je bij een factuur of offerte lines mee, dan vervangt die lijst alle regels. Neem het id van een bestaande regel mee om hem te behouden en bij te werken; regels zonder bekend id worden nieuw aangemaakt en ontbrekende regels verwijderd.
Lees ook
- Fouten en statuscodesWelke HTTP-statuscodes de API gebruikt, hoe een foutantwoord eruitziet en hoe je ermee omgaat.
- LimietenPer API-sleutel 120 verzoeken per minuut. Zo lees je de limietheaders en ga je om met 429.
- FacturenConceptfacturen maken en bijwerken, versturen, betalingen registreren, annuleren met creditnota en PDF downloaden.