API
Run payment, shipping and processing in your own systems. Read your orders and customers, push payment status and tracking back, and trigger the buyer-facing WhatsApp messages — all over a simple REST API.
Building an integration with an AI tool? There’s a copy-paste, machine-readable version of this reference at /llms.txt.
Authentication
Create a key in Settings → API (owner only). The full key is shown once — store it securely. Send it on every request:
Authorization: Bearer dwk_live_…Base URL: https://dropmanager.nl/api/v1. Request bodies are JSON. Your account needs an active (or complimentary) plan, otherwise requests return 402.
Conventions
- Errors return
{ "error": { "code", "message" } }with an HTTP status (400 bad request, 401 invalid key, 402 no plan, 404 not found, 422 not deliverable, 5xx server/provider). - List endpoints support
limit(≤ 200),offset, andsince(ISO-8601, onupdated_at) — pollsinceto pick up changes. - An order is a sale: it carries the items, buyer, customer, payment, and shipment.
- WhatsApp messages reach only buyers with a real phone number on WhatsApp; otherwise the response notes it. Action endpoints accept
"notify": falseto skip the message.
Orders
GET /orders— list. Filters:status,paid,external_id,window_id,customer_id,since.GET /orders/:id— one order.PATCH /orders/:id— setexternal_id,notes, orstatus(payment_received,refunded,payment_failed). Marking paid stamps the time and DMs the buyer.POST /orders/:id/payment-link— create a Mollie/Stripe link and WhatsApp it to the buyer.POST /orders/:id/payment-reminder— re-send the existing link.POST /orders/:id/tracking— attachcarrier+tracking_code(+ optionaltracking_url,status) and DM track & trace.POST /orders/:id/message— send a free-form WhatsApp DM (text) to the buyer.
Customers & products
GET /customers,POST /customers(create —namerequired),GET /customers/:id,PATCH /customers/:id(contact + address).GET /products,POST /products(create —name+unit_price_centsrequired),PATCH /products/:id— set anexternal_id(your SKU / product id) so matching against your catalogue is easy.
Examples
# new orders not yet paid, changed since a timestamp
curl -H "Authorization: Bearer $KEY" \
"https://dropmanager.nl/api/v1/orders?paid=false&since=2026-06-12T00:00:00Z"
# create + send a payment link
curl -X POST -H "Authorization: Bearer $KEY" \
https://dropmanager.nl/api/v1/orders/$ID/payment-link
# mark paid after charging in your own system
curl -X PATCH -H "Authorization: Bearer $KEY" -H "content-type: application/json" \
-d '{"status":"payment_received","external_id":"SHOP-1042"}' \
https://dropmanager.nl/api/v1/orders/$ID
# push tracking after shipping with your own carrier
curl -X POST -H "Authorization: Bearer $KEY" -H "content-type: application/json" \
-d '{"carrier":"dhl","tracking_code":"JD0002","tracking_url":"https://track/JD0002"}' \
https://dropmanager.nl/api/v1/orders/$ID/trackingFull machine reference: /llms.txt. Questions? arno@webroots.nl, or see the getting-started docs.