Dotsimpel

CMS API 1.2

Orders, omzet, klanten, producten en tickets uit Dotsimpel CMS ophalen.

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, bijvoorbeeld 2026-09-01.
  • Een orderId heeft de vorm website_id.order_id, bijvoorbeeld 2.3. Dit is dezelfde waarde als orderId in /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. Met scope=all komen ook klanten zonder orders mee.
  • /getTurnover met moment=orderDate geeft nu het veld orderDate terug, zoals gedocumenteerd.
  • /getAttachmentByOrderRule, /getInvoice en /getCreditInvoice werken weer correct.
  • /getCredits telt bij orderCount nu het aantal orders in plaats van het aantal regels.

Authenticatie

POST https://api.dotsimpel.nl/login

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

POST https://api.dotsimpel.nl/getTurnover Bearer token

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"
    }
]
POST https://api.dotsimpel.nl/getCredits Bearer token

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"
    }
]
POST https://api.dotsimpel.nl/getCreditOrdersRules Bearer token

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

POST https://api.dotsimpel.nl/getOrders Bearer token

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"
    }
]
POST https://api.dotsimpel.nl/getOrdersRules Bearer token

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

POST https://api.dotsimpel.nl/getAttachmentByOrderRule Bearer token

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..."
    }
]
POST https://api.dotsimpel.nl/getInvoice Bearer token

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"
}
POST https://api.dotsimpel.nl/getCreditInvoice Bearer token

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

POST https://api.dotsimpel.nl/getCustomer Bearer token

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"
    }
]
POST https://api.dotsimpel.nl/getProducts Bearer token

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

POST https://api.dotsimpel.nl/getTickets Bearer token

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.