Introductie
Alle endpoints staan onder https://api.dotsimpel.nl/ en werken met POST. Stuur de parameters mee als form-data (application/x-www-form-urlencoded of multipart/form-data). Het antwoord is altijd JSON.
Elk API-account hoort bij één bedrijf en ziet alleen de gegevens van dat bedrijf.
- Datums hebben de vorm
Y-m-d, bijvoorbeeld2026-09-01. - Een
orderIdheeft de vormwebsite_id.order_id, bijvoorbeeld2.3. Dit is dezelfde waarde alsorderIdin /getOrders. - Bedragen en aantallen komen terug als string.
Authenticatie
Vraag een token op via /login. Stuur dat token bij elke volgende aanvraag mee als header:
Authorization: Bearer <token>
Een token is 20 minuten geldig. Hergebruik het token tot het verloopt, in plaats van bij elke aanvraag opnieuw in te loggen. Aanvragen komen alleen binnen vanaf IP-adressen die voor het account zijn vrijgegeven.
Rate limiting
| Endpoints | Per minuut | Per uur |
|---|---|---|
| Alle data-endpoints samen | 1 | 10 |
/login |
5 | 20 |
Bij overschrijding volgt HTTP 429 Too Many Requests:
{
"error": "Rate limit exceeded",
"message": "Te veel aanvragen. Probeer het over enkele minuten opnieuw."
}
Haal je regelmatig dezelfde periode op, sla de resultaten dan aan je eigen kant op en ververs ze periodiek. Periodes die volledig in het verleden liggen worden per dag gecachet.
Foutmeldingen
Een fout komt terug als JSON met een veld error:
{
"error": "Invalid startDate"
}
Access denied, invalid bearer token |
Token ontbreekt, is ongeldig of verlopen. |
Access denied |
Het IP-adres is niet vrijgegeven voor dit account. |
Empty ... / Invalid ... |
Een verplichte parameter ontbreekt of heeft een ongeldige waarde. |
No data |
Er zijn geen gegevens voor deze aanvraag. |
Changelog
1.2 29-09-2026
- Nieuw: /getProducts met de volledige productcatalogus, inclusief inactieve producten, categorieën, productgroepen en productkenmerken.
- Nieuw: /getTickets met de openstaande supporttickets en de berichten.
- /getOrdersRules haalt nu alle orderregels binnen een periode in één aanvraag op, met artikelnummer, korting en regeltotalen.
- /getCreditOrdersRules werkt nu met een periode en geeft creditnummer en oorspronkelijke order terug.
- /getCustomer geeft nu de klantgroep (
role) en het klanttype terug. Metscope=allkomen ook klanten zonder orders mee. - /getTurnover met
moment=orderDategeeft nu het veldorderDateterug, zoals gedocumenteerd. - /getAttachmentByOrderRule, /getInvoice en /getCreditInvoice werken weer correct.
- /getCredits telt bij
orderCountnu het aantal orders in plaats van het aantal regels.
Authenticatie
Inloggen
Geeft een token terug dat 20 minuten geldig is. Deze endpoint accepteert zowel form-data als een JSON-body.
Parameters
| Naam | Type | Omschrijving | |
|---|---|---|---|
username |
string | verplicht | Gebruikersnaam van het API-account. |
password |
string | verplicht | Wachtwoord van het API-account. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/login \ -d "username=gebruikersnaam" \ -d "password=wachtwoord"
Voorbeeld antwoord
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ...voorbeeld..."
}
Omzet en credits
Omzet
Omzet gegroepeerd per datum en land. Standaard op factuurdatum en alleen betaalde orders.
Parameters
| Naam | Type | Omschrijving | |
|---|---|---|---|
startDate |
Y-m-d | verplicht | Begin van de periode. |
endDate |
Y-m-d | verplicht | Einde van de periode. |
moment |
string | optioneel | invoice (standaard) of orderDate. Bij orderDate heet het datumveld orderDate in plaats van invoiceDate. |
paidOnly |
string | optioneel | true (standaard) of false. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/getTurnover \ -H "Authorization: Bearer <token>" \ -d "startDate=2026-09-01" \ -d "endDate=2026-09-30" \ -d "moment=invoice" \ -d "paidOnly=true"
Voorbeeld antwoord
[
{
"invoiceDate": "2026-09-01",
"countryName": "Netherlands",
"countryIso": "NL",
"countryIsEu": "1",
"orderCount": "10",
"totalPriceInclVat": "1210.000",
"totalPriceExclVat": "1000.000",
"totalVatHigh": "210.000",
"totalVatLow": "0.000",
"totalVat": "210.000"
}
]
Credits (totalen)
Gecrediteerde bedragen gegroepeerd per aanmaakdatum en land. Voor losse creditregels gebruik je /getCreditOrdersRules.
Parameters
| Naam | Type | Omschrijving | |
|---|---|---|---|
startDate |
Y-m-d | verplicht | Begin van de periode. |
endDate |
Y-m-d | verplicht | Einde van de periode. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/getCredits \ -H "Authorization: Bearer <token>" \ -d "startDate=2026-09-01" \ -d "endDate=2026-09-30"
Voorbeeld antwoord
[
{
"date": "2026-09-01",
"countryName": "Netherlands",
"countryIso": "NL",
"countryIsEu": "1",
"orderCount": "1",
"totalPrice": "24.20",
"totalVat": "4.200"
}
]
Creditregels
Losse creditregels binnen een periode, met het creditnummer en de oorspronkelijke order. Bedragen zijn het gecrediteerde bedrag.
Parameters
| Naam | Type | Omschrijving | |
|---|---|---|---|
startDate |
Y-m-d | verplicht | Begin van de periode. |
endDate |
Y-m-d | verplicht | Einde van de periode. Maximaal 366 dagen na startDate. |
moment |
string | optioneel | created (standaard) of refunded. |
date |
Y-m-d | optioneel | Verouderd. Wordt behandeld als een periode van één dag. |
Velden in het antwoord
creditId |
Te gebruiken in /getCreditInvoice. |
orderId |
De oorspronkelijke order. |
originalRuleId |
De oorspronkelijke orderregel. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/getCreditOrdersRules \ -H "Authorization: Bearer <token>" \ -d "startDate=2026-09-01" \ -d "endDate=2026-09-30" \ -d "moment=created"
Voorbeeld antwoord
[
{
"creditId": "1001",
"creditNumber": "C1001",
"creditInvoiceNumber": "101",
"orderId": "2.3",
"orderInvoiceNumber": "500",
"customer_id": "1",
"originalRuleId": "1",
"datetime": "2026-09-15 10:00:00",
"refunded": null,
"product_id": "12",
"sku": "ABC-1000",
"productNumber": "P1000",
"name": "Productnaam",
"number": "1",
"vat": "21",
"price": "20.0000",
"totalExclVat": "20.000",
"totalVat": "4.200",
"totalInclVat": "24.20",
"shipmentCosts": "0.000",
"credCoupon": "0.000",
"supplier": "1",
"supplierName": "Leverancier"
}
]
Orders
Orders
Alle niet-geannuleerde orders met een orderdatum binnen de periode.
Parameters
| Naam | Type | Omschrijving | |
|---|---|---|---|
startDate |
Y-m-d | verplicht | Begin van de periode. |
endDate |
Y-m-d | verplicht | Einde van de periode. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/getOrders \ -H "Authorization: Bearer <token>" \ -d "startDate=2026-09-01" \ -d "endDate=2026-09-30"
Voorbeeld antwoord
[
{
"orderId": "2.3",
"customer_id": "1",
"datetime": "2026-09-01 10:00:00",
"date": "2026-09-01",
"invoice_date": "2026-09-01",
"invoice_number": "500",
"status": "sent",
"invoice_address": "Voorbeeldbedrijf B.V.\nVoorbeeldstraat 1\n1234 AB Voorbeeldstad",
"post_address": "Voorbeeldbedrijf B.V.\nVoorbeeldstraat 1\n1234 AB Voorbeeldstad",
"post_address_name": "Jan Jansen",
"post_address_company_name": "Voorbeeldbedrijf B.V.",
"post_address_street": "Voorbeeldstraat",
"post_address_street_number": "1",
"post_address_street_number_additive": "",
"post_address_zip": "1234 AB",
"post_address_city": "Voorbeeldstad",
"post_address_country": "528",
"post_address_state": null,
"balance": "0.00",
"costPrice": "40.00",
"totalPrice": "121.000",
"totalVat": "21.000",
"totalVatHigh": "21.000",
"totalVatLow": "0.000",
"bol_order_id": null,
"reference": null,
"customer_name": "Jan Jansen",
"countryName": "Netherlands",
"countryIso": "NL",
"countryIsEu": "1"
}
]
Orderregels
Orderregels van alle orders binnen een periode, of van één losse order. Alle regeltypes komen mee (product, shipment, payment, coupon, ...). Filter op type voor alleen productregels.
Parameters
| Naam | Type | Omschrijving | |
|---|---|---|---|
startDate |
Y-m-d | optioneel | Begin van de periode. Verplicht als er geen orderId is. |
endDate |
Y-m-d | optioneel | Einde van de periode. Maximaal 366 dagen na startDate. |
moment |
string | optioneel | orderDate (standaard, gelijk aan /getOrders) of invoice. |
orderId |
string | optioneel | Eén order in de vorm website_id.order_id. Vervangt de periode. |
Velden in het antwoord
price |
Stukprijs excl. btw, vóór korting. |
discountPercentage |
Kortingspercentage op de regel. |
discountAmountExclVat |
Kortingsbedrag excl. btw over de hele regel. |
lineTotalExclVat |
Regeltotaal excl. btw na korting. |
lineTotalInclVat |
Regeltotaal incl. btw na korting. |
product_id |
Gelijk aan product_id in /getProducts. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/getOrdersRules \ -H "Authorization: Bearer <token>" \ -d "startDate=2026-09-01" \ -d "endDate=2026-09-30"
Voorbeeld antwoord
[
{
"orderId": "2.3",
"orderDate": "2026-09-10",
"invoiceDate": "2026-09-10",
"id": "1",
"type": "product",
"product_id": "12",
"sku": "ABC-1000",
"productNumber": "P1000",
"name": "Productnaam",
"number": "5",
"vat": "21.0",
"price": "20.0000",
"discount": "10.00",
"costPrice": "8.0000",
"defPrice": "108.90",
"supplier": "1",
"supplierName": "Leverancier",
"stock": "false",
"released": "true",
"sent": null,
"review": null,
"packinglist_id": null,
"page_id": "0",
"shipment_id": "4",
"quotation": "0",
"comment": null,
"procurement_id": null,
"locked": "0",
"replaced": null,
"canceled": null,
"parent_rule_id": null,
"discountPercentage": "10.00",
"discountAmountExclVat": "10.0000",
"lineTotalExclVat": "90.0000",
"lineTotalInclVat": "108.90"
}
]
Documenten
Bijlagen bij orderregel
Bijlagen bij een orderregel, als base64.
Parameters
| Naam | Type | Omschrijving | |
|---|---|---|---|
orderId |
string | verplicht | Order in de vorm website_id.order_id. |
orderRuleId |
int | verplicht | Het id van de orderregel. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/getAttachmentByOrderRule \ -H "Authorization: Bearer <token>" \ -d "orderId=2.3" \ -d "orderRuleId=1"
Voorbeeld antwoord
[
{
"attachmentId": "1",
"filename": "bijlage.pdf",
"mimetype": "application/pdf",
"content": "JVBERi0xLjQK..."
}
]
Factuur
De factuur van een order als PDF (base64).
Parameters
| Naam | Type | Omschrijving | |
|---|---|---|---|
orderId |
string | verplicht | Order in de vorm website_id.order_id. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/getInvoice \ -H "Authorization: Bearer <token>" \ -d "orderId=2.3"
Voorbeeld antwoord
{
"content": "JVBERi0xLjQK...",
"mimetype": "application/pdf"
}
Creditfactuur
De creditfactuur van een creditregel als PDF (base64).
Parameters
| Naam | Type | Omschrijving | |
|---|---|---|---|
orderId |
string | verplicht | Order in de vorm website_id.order_id. |
creditId |
int | verplicht | creditId uit /getCreditOrdersRules. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/getCreditInvoice \ -H "Authorization: Bearer <token>" \ -d "orderId=2.3" \ -d "creditId=1001"
Voorbeeld antwoord
{
"content": "JVBERi0xLjQK...",
"mimetype": "application/pdf"
}
Klanten en producten
Klanten
Klanten met hun orderstatistieken, klantgroep en type.
Parameters
| Naam | Type | Omschrijving | |
|---|---|---|---|
startDate |
Y-m-d | optioneel | Begin van de periode. Verplicht bij scope=period. |
endDate |
Y-m-d | optioneel | Einde van de periode. Verplicht bij scope=period. |
moment |
string | optioneel | invoice (standaard) of orderDate. |
scope |
string | optioneel | period (standaard): klanten met minimaal één order in de periode. all: alle klanten, ook zonder orders. Zonder datums gelden de statistieken dan over alle orders. |
Velden in het antwoord
role |
De klantgroep, of Zakelijk / Particulier als er geen klantgroep gekoppeld is. |
customer_type |
business of private. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/getCustomer \ -H "Authorization: Bearer <token>" \ -d "scope=all"
Voorbeeld antwoord
[
{
"customer_id": "1",
"customer_name": "Jan Jansen",
"customer_company_name": "Voorbeeldbedrijf B.V.",
"customer_status": "1",
"registration_date": "2026-01-15 10:00:00",
"countryIso": "NL",
"customer_groups": "Reseller 20%",
"last_order_date": "2026-09-01",
"order_count": "10",
"total_price_ex_vat": "1000.00",
"customer_type": "business",
"role": "Reseller 20%",
"ordered_categories": null,
"total_price_ex_vat_last_year": "1000.00"
}
]
Producten
De volledige productcatalogus van het account, inclusief inactieve producten. Elk API-account geeft de catalogus van het eigen bedrijf.
Parameters
| Naam | Type | Omschrijving | |
|---|---|---|---|
activeOnly |
string | optioneel | false (standaard) of true. |
Velden in het antwoord
sellingPriceInclVat / sellingPriceExclVat |
Verkoopprijs. |
advicePriceInclVat / advicePriceExclVat |
Adviesprijs (van-prijs). |
attributes |
Alle productkenmerken als naam/waarde, bijvoorbeeld inhoud en gewicht. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/getProducts \ -H "Authorization: Bearer <token>"
Voorbeeld antwoord
[
{
"product_id": "12",
"sku": "ABC-1000",
"productNumber": "P1000",
"barcode": "8712345678901",
"title": "Productnaam",
"active": "1",
"endoflife": "0",
"costPrice": "8.000",
"sellingPriceInclVat": "24.2000",
"advicePriceInclVat": "29.9500",
"vat": "21",
"stock": "42",
"stockMinimum": "10",
"supplier": "1",
"supplierName": "Leverancier",
"datetimeAdded": "2026-01-10 09:00:00",
"datetimeEdited": "2026-09-01 14:22:10",
"sellingPriceExclVat": "20.0000",
"advicePriceExclVat": "24.7521",
"categories": [
{
"id": "5",
"name": "Categorie"
}
],
"productGroups": [
{
"id": "3",
"name": "Productgroep"
}
],
"attributes": [
{
"id": "7",
"name": "Inhoud",
"value": "1000 gram"
},
{
"id": "9",
"name": "Gewicht",
"value": "1 kg"
}
]
}
]
Support
Tickets
De openstaande supporttickets van het account bij Dotsimpel waar een gebruiker van het eigen bedrijf aan gekoppeld is, met per ticket de berichten uit het gesprek. Gesloten tickets komen niet mee.
Parameters
Geen parameters.
Velden in het antwoord
status |
open, requestClose, pendingReview of insufficientInformation. |
waitingOn |
Bij wie de volgende actie ligt: dotsimpel of customer. |
messages |
Berichten op volgorde van datum. fromDotsimpel is 1 bij een bericht van Dotsimpel. |
Voorbeeld aanvraag
curl -X POST https://api.dotsimpel.nl/getTickets \ -H "Authorization: Bearer <token>"
Voorbeeld antwoord
[
{
"ticketNumber": "T2.15",
"title": "Voorbeeldticket",
"created": "2026-09-01 09:30:00",
"status": "open",
"category": "request",
"priority": "medium",
"waitingOn": "dotsimpel",
"plannedDate": null,
"messages": [
{
"messageId": "1001",
"added": "2026-09-01 09:30:00",
"author": "Jan Jansen",
"fromDotsimpel": "0",
"message": "Kunnen jullie hiernaar kijken?"
},
{
"messageId": "1002",
"added": "2026-09-01 11:15:00",
"author": "Medewerker Dotsimpel",
"fromDotsimpel": "1",
"message": "Zeker, we pakken het deze week op."
}
]
}
]
Alle voorbeelden op deze pagina zijn fictief.