API reference
Products, stock and orders, with request and response fields.
Simplebks calls your URL when an order or a stock level changes, signed so you can trust it.
Creating endpoints needs the Professional and Enterprise plans.
Go to Settings, Integrations, then Developer API, and find the Webhooks card.
Press + Add endpoint, enter your HTTPS URL and tick the events you want.
It starts with whsec_ and is shown only once. Keep it on your server.
Press Send test. Your endpoint receives a test.ping event. Reply with any 2xx status.
| Event | When it fires | Data |
|---|---|---|
order.created | An order arrives through the public API | The full order |
order.updated | Payment, fulfilment or cancellation changes, whether your site reported it or staff did it in Simplebks | The full order when reported through the API. A smaller object (orderNumber, status, paymentStatus, total) when staff act in Simplebks |
stock.updated | Any stock movement: till sales, purchases, adjustments, web orders | items: a list of sku, name, quantity, updatedAt. Batched about once a minute, up to 200 products per batch |
Every delivery is a POST with a JSON body.
{
"event": "order.updated",
"createdAt": "2026-10-26T09:30:00.000Z",
"data": { }
}
X-Simplebks-Event carries the event name.X-Simplebks-Timestamp carries the send time in milliseconds.X-Simplebks-Signature carries sha256= followed by an HMAC-SHA256 (hex) of the timestamp, a dot, then the raw request body, keyed with your signing secret.Hash the raw body exactly as received, not a re-serialised copy.
const crypto = require('crypto')
function isValid(req, rawBody, secret) {
const ts = req.headers['x-simplebks-timestamp']
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(`${ts}.${rawBody}`)
.digest('hex')
const given = req.headers['x-simplebks-signature'] || ''
return given.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(given), Buffer.from(expected))
}
What your endpoint can rely on.
What Simplebks stores and how you take it back.
order.created, order.updated and stock.updated. There are no invoice, payment or customer events yet.
Check X-Simplebks-Signature. It is an HMAC-SHA256 of the timestamp, a dot and the raw body, keyed with your endpoint secret.
Simplebks retries after 1 minute, 5 minutes, 30 minutes, 2 hours and 6 hours, then marks the delivery dead. You can replay it from Integration activity.
It fires for any stock movement, batched about once a minute with up to 200 products per batch.
Start free and add your first webhook endpoint.