Orders
Submit website checkout orders to EquityPOS. Staff see them under Communications → Web orders with online-order notifications (enable the Web orders module and use your location API key from Developer settings).
/ordersRequest body
{
"customer": {
"name": "Ahmed Naish",
"email": "ahmed@example.com",
"phone": "+960 123 4567",
"address": "Male, Maldives"
},
"paymentMethod": "card",
"currency": "MVR",
"items": [
{
"productId": "01H...",
"name": "Widget A",
"quantity": 2,
"unitPrice": 150.0,
"lineTotal": 300.0,
"note": "Colour: Z-971 - Soft Grey"
}
],
"subtotal": 300.0,
"tax": 18.0,
"shipping": 100.0,
"total": 418.0,
"external": {
"source": "woocommerce",
"id": "10842",
"orderNumber": "10842",
"storeUrl": "https://shop.example.com",
"status": "processing",
"updatedAt": "2026-08-02T05:14:00.000Z"
}
}The optional external object is used by the EquityPOS WooCommerce plugin. Store URL + external order ID form an idempotency key, so retries update the same unclaimed web order. Cancelled, failed, and refunded WooCommerce orders cancel their matching web order unless it has already been converted.
Each item may include an optional note string. For tint colours, send Colour: {code} - {name} (for example Colour: Z-971 - Soft Grey). Staff see the note on each line in Communications → Web orders and it carries through when the order is converted to a quotation.
Response (201)
{
"data": {
"id": "01H...",
"number": "WEB-01HABCD1",
"status": "new",
"statusToken": "01H...",
"total": "418.0000",
"currency": "MVR",
"createdAt": "2026-06-03T10:00:00.000Z",
"duplicate": false,
"syncAction": "created"
}
}Get order
/orders/:orderIdWith Authorization: Bearer, full order for your company (including items[].note when set). For customer-facing status pages use ?statusToken=... (returned on create; no API key required).
curl -s "https://equitypos.com/api/v1/public/orders/ORDER_ID?statusToken=TOKEN"Upload payment proof
/orders/:orderId/payment-proofAfter checkout, upload a bank transfer slip or receipt. Staff see it in Communications → Web orders and can verify or reject it. Allowed types: JPEG, PNG, WebP, PDF (max 5MB).
multipart/form-data
curl -X POST "https://www.equitypos.com/api/v1/public/orders/ORDER_ID/payment-proof" \
-H "Authorization: Bearer ep_live_..." \
-H "Accept: application/json" \
-F "file=@/path/to/slip.jpg" \
-F "orderNumber=WEB-01KT634T"Response (200)
{
"data": {
"orderId": "01H...",
"number": "WEB-01KT634T",
"paymentProof": {
"status": "pending",
"name": "slip.jpg",
"type": "image/jpeg",
"size": 245120,
"uploadedAt": "2026-06-03T12:00:00.000Z"
}
}
}Re-upload is allowed after staff reject the slip (409 if already pending or verified). Public order status includes paymentProof.status without the file URL.
Add note
/orders/:orderId/notes{
"note": "Your order is being packed.",
"isPublic": true
}Notes with isPublic: true appear on the public status response. Staff can also add notes in the hub.
Hub workflow
- Take the order in Communications → Web orders
- If a payment slip was uploaded, open the order and verify or reject it
- Assign a directory customer (or create one)
- Convert to sale, opens POS with quotation lines, same as API quotes
- Complete the sale in POS