Simplebks logo
Developers

Sync products, stock and orders without retyping

Eight endpoints cover the catalogue, stock and orders. Orders are booked as sales the moment they arrive.

Basics

Applies to every endpoint.

Endpoints

Method and pathScopeWhat it does
GET /productscatalogue:readSellable products. Query: search, sku, updated_since (ISO date), parent_id
GET /products/:skucatalogue:readOne product by SKU. 404 if unknown
PUT /products/:sku/imageimages:writeSet the product picture from a public image URL (8 MB limit)
GET /categoriescatalogue:readProduct tags, for mapping to your site categories
GET /stockstock:readQuantity per SKU, plus the online location quantity when one is set. Query: sku
POST /ordersorders:writeCreate an order, booked as a sale
GET /orders/:orderNumberorders:readStatus, payment state and totals
PATCH /orders/:orderNumberorders:writeReport payment.confirmed, fulfilled or cancelled

Products and stock

Every sellable item is one row, so one SKU maps to one variation on your site.

Request
curl "https://app.simplebks.com/api/public/v1/products?updated_since=2026-10-01&limit=2" \
  -H "Authorization: Bearer sbk_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

Each product has id, sku, name, description, barcode, tags, color, size, measurement, sellingPrice, image, isVariant, parentId, stock, orderRule, createdAt and updatedAt. orderRule is read-only (minimum order quantity and multiple) or null.

If the business has set an online stock location in Settings, Developer API, each stock row also carries that location's quantity. Sell from onlineLocation.quantity when it is present, otherwise quantity. Raw materials, archived products and products excluded from the online location are never returned.

Create an order

The order is recorded as a sale straight away. Repeat customers are matched by phone or email, so no duplicates are made.

Request body
{
  "reference": "SHOP-1042",
  "customer": { "name": "Ada Obi", "phone": "08030000000", "email": "[email protected]" },
  "items": [ { "sku": "CQ-001", "quantity": 2, "price": 5000 } ],
  "shippingFee": 1500,
  "paymentStatus": "paid",
  "paymentMethod": "paystack",
  "gatewayReference": "YOUR-GATEWAY-REFERENCE",
  "shippingAddress": "12 Example Street, Lagos",
  "notes": "Gift wrap"
}
Request
curl -X POST "https://app.simplebks.com/api/public/v1/orders" \
  -H "Authorization: Bearer sbk_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Idempotency-Key: SHOP-1042" \
  -H "Content-Type: application/json" \
  -d @order.json

Report what happened on your side

Simplebks does the bookkeeping. Send one event per call.

Mark an order paid
curl -X PATCH "https://app.simplebks.com/api/public/v1/orders/WEB-00012" \
  -H "Authorization: Bearer sbk_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{"event":"payment.confirmed","method":"paystack","reference":"YOUR-GATEWAY-REFERENCE"}'

Set a product picture

Your site owns the pictures. Send the newest one and Simplebks adopts it.

Request
curl -X PUT "https://app.simplebks.com/api/public/v1/products/SK-0012/image" \
  -H "Authorization: Bearer sbk_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://yoursite.example/img/tee.jpg"}'

The URL must be publicly reachable and return real image bytes up to 8 MB. Sending the same picture again returns unchanged: true. An unknown SKU is 404; a bad or unreachable URL is 422. This needs the images:write scope.

Not documented because it does not exist

  • No endpoint writes stock, prices, categories, customers or suppliers.
  • No endpoint reads customers, invoices, payments or reports.
  • No bulk order endpoint: send orders one at a time.

FAQ

Does creating an order reduce stock?

Yes. The order is recorded as a sale at once, so revenue, the customer balance and stock all update.

How do I avoid duplicate orders on retry?

Send an Idempotency-Key header, and use a stable reference. The same reference returns the existing order.

How do I sync only what changed?

Use updated_since on the products endpoint, or subscribe to webhooks for order and stock changes.

What happens to a SKU that does not exist?

A public API key is strict: the order is refused with 422 and each problem listed. WooCommerce orders are handled differently, see the WooCommerce page.

Is there an OpenAPI file?

The product serves one at /api/public/v1/openapi.json on your API host.

Start free and send your first test order.

Products, stock and orders by API. Orders book as sales.
Start Free