Stuur bestellingen vanuit je webshop rechtstreeks naar het KassaPay kassasysteem.
Elke request naar
/api/site/orders
vereist een geldig token via de
siteAuthentication middleware. Voeg de volgende
header toe aan elke request:
X-Site-Token header vereist
Voeg dit toe aan je HTTP request:
X-Site-Token: <jouw-token>
Content-Type: application/json
Stuur een JSON body mee met de volgende velden. Verplichte velden moeten altijd aanwezig zijn, anders krijg je een 400 terug.
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
| id | UUID string | Ja | Unieke order ID (UUID v4). Duplicate ID geeft een 409 conflict terug. |
| fname | string | Ja | Voornaam van de klant. |
| lname | string | Ja | Achternaam van de klant. |
| string | Ja | E-mailadres van de klant. | |
| phone | string | Nee |
Telefoonnummer. Wordt
null als
weggelaten.
|
| pickup | boolean | Ja | true = afhalen · false = levering aan huis. |
| pickup_time | string | Nee |
Gewenste afhaaltijd, bijv.
"18:30".
|
| delivery_type | string | Nee |
Wordt automatisch afgeleid van
pickup als
weggelaten. Waarden:
"afhalen" /
"levering".
|
| street | string | Nee* | Straat + huisnummer. Vereist bij levering. |
| zip | string | Nee* | Postcode. Vereist bij levering. |
| city | string | Nee* | Stad. Vereist bij levering. |
| remarks | string | Nee | Opmerkingen van de klant, bijv. allergieën of wensen. |
| subtotal | float | Ja | Subtotaal zonder belasting. Afgerond op 2 decimalen. |
| tax | float | Ja | Belastingbedrag. Afgerond op 2 decimalen. |
| total | float | Ja | Totaalbedrag inclusief belasting. |
| status | enum | Ja |
Status van de bestelling. Gebruik
"pending" voor
nieuwe bestellingen. Opties: pending · preparing · completed
· cancelled.
|
| created_at | ISO 8601 | Ja |
Tijdstip van bestelling, bijv.
"2025-05-15T18:30:00.000Z".
|
| source | string | Ja |
Herkomst van de bestelling. Gebruik altijd
"site" voor
webbestellingen.
|
| items | array | Ja | Lijst van bestelde producten. Minimaal 1 item vereist. Zie items[]. |
| betaling | object | Nee | Betalingsgegevens. Zie betaling{}. |
* Conditioneel verplicht:
street,
zip en
city zijn vereist
wanneer pickup = false.
De velden
items
en
betaling
hebben elk hun eigen structuur.
| Veld | Type | Verplicht |
|---|---|---|
| product_id | UUID string | Ja |
| quantity | integer | Ja |
| Veld | Type | Verplicht |
|---|---|---|
| payment_method | string | Nee |
| checkout_id | string | Nee |
Voor payment_method gebruik je
"card" of
"cash". Standaard is
"card".
De API geeft standaard HTTP statuscodes terug.
Bestelling succesvol aangemaakt. Geeft het volledige order object terug als JSON.
Verplichte velden ontbreken, geen items, of product ID niet gevonden in de database.
Ongeldige of ontbrekende Bearer token.
Een order met dit
id bestaat al in
de database.
Interne fout. Response bevat
error en
sql velden voor
debugging.
Een compleet voorbeeld van een leveringsbestelling met twee producten.
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"fname": "Jan",
"lname": "Janssen",
"email": "jan@email.com",
"phone": "0478123456",
"pickup": false,
"pickup_time": null,
"delivery_type": "levering",
"street": "Kerkstraat 12",
"zip": "2000",
"city": "Antwerpen",
"remarks": "Geen uien aub",
"subtotal": 84.50,
"tax": 10.14,
"total": 94.64,
"status": "pending",
"created_at": "2025-05-15T18:30:00.000Z",
"source": "site",
"items": [
{ "product_id": "abc123-...", "quantity": 2 },
{ "product_id": "def456-...", "quantity": 1 }
],
"betaling": {
"payment_method": "card",
"checkout_id": "ch_abc123xyz"
}
}