Admin API
Orders
Orders from placement to payment, delivery and refunds.
- POSTMark whole orders as sent (bulk action); each order succeeds or fails on its own
- GETOrders, newest first, with filters
- POSTCreate an order (manual or COD); prices come from the catalog
- GETOne order with lines and timeline
- PATCHChange the note, tags, buyer contact or shipping address
- POSTCancel an unpaid order and put its stock back
- POSTArchive a finished order (closed); it stays searchable and can be reopened
- POSTRecord that the cash for a COD order was collected
- POSTAdd a staff comment to the order timeline (buyers never see it)
- POSTMark items as sent, with optional carrier and tracking
- PATCHChange the carrier or tracking of a shipment
- POSTCancel a shipment that did not go out; its items count as not sent again
- POSTRecord a payment received outside checkout (cash, bank transfer, UPI to you)
- GETPayment attempts of an order, newest first, each with its step trace
- GETRefunds of an order, newest first
- POSTRefund a paid order in full or in part, to the way the buyer paid
- POSTReopen a closed order
- POSTEmail the order confirmation to the buyer again
Mark whole orders as sent (bulk action); each order succeeds or fails on its own
POST/admin/2026-11/fulfilments
scope write_ordersIdempotency-Key required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Request body
order_idsarray of ID (ord_...)requiredUp to 50 items
Response 200
dataarray of objectrequireddata[].order_idID (ord_...)requireddata[].okbooleanrequireddata[].messagestring or nullrequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/fulfilments \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"order_ids": [
"ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R"
]
}'const res = await fetch('https://api.storelyne.com/admin/2026-11/fulfilments', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
"order_ids": [
"ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R"
]
}),
});
const data = await res.json();{
"data": [
{
"order_id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"ok": false,
"message": "Hand block printed cotton."
}
]
}Orders, newest first, with filters
GET/admin/2026-11/orders
Query parameters
limitintegerItems per page, 1 to 250.
Default 50 · 1 to 250
afterstringCursor from a previous next_cursor.
Up to 512 characters
statusenumOne of
opencancelledclosedpayment_statusenumOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumOne of
unfulfilledpartially_fulfilledfulfilledchannelenumOne of
online_storepayment_pageadminapicreated_fromtimestampcreated_totimestampqstringOrder number (#1001), buyer name, email or phone.
At least 1 characters · Up to 100 characters
tagstringOnly orders with this tag.
At least 1 characters · Up to 40 characters
sourcestringOnly orders from this source, like page:<slug>.
At least 1 characters · Up to 200 characters
attentionenumOnly orders that need attention (for example oversold).
One of
yesmin_totalintegerTotal at least this many paise.
At least 0
max_totalintegerTotal at most this many paise.
At least 0
Response 200
dataarray of objectrequireddata[].idID (ord_...)requireddata[].numberintegerrequireddata[].namestringrequiredDisplay number, for example #1001.
data[].customer_idID (cus_...) or nullrequireddata[].buyerobjectrequireddata[].buyer.namestringrequireddata[].buyer.emailstring or nullrequireddata[].buyer.phonestring or nullrequireddata[].channelenumrequiredOne of
online_storepayment_pageadminapidata[].sourcestringrequireddata[].currencystringrequireddata[].subtotalintegerrequireddata[].shipping_totalintegerrequireddata[].tax_totalintegerrequireddata[].totalintegerrequireddata[].discount_totalintegerrequireddata[].discount_codestring or nullrequireddata[].attributesobjectrequiredAnswers to the payment page questions.
data[].checkout_idstring or nullrequireddata[].payment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundeddata[].fulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilleddata[].statusenumrequiredOne of
opencancelledcloseddata[].shipping_addressobject or nullrequireddata[].notestringrequireddata[].tagsarray of stringrequireddata[].needs_attentionarray of stringrequireddata[].cancel_reasonstring or nullrequireddata[].cancelled_attimestamp or nullrequireddata[].paid_attimestamp or nullrequireddata[].linesarray of objectrequireddata[].lines[].idID (oli_...)requireddata[].lines[].product_idID (prd_...)requireddata[].lines[].variant_idID (var_...)requireddata[].lines[].titlestringrequireddata[].lines[].variant_titlestringrequireddata[].lines[].skustring or nullrequireddata[].lines[].quantityintegerrequireddata[].lines[].unit_priceintegerrequireddata[].lines[].totalintegerrequireddata[].lines[].tax_amountintegerrequireddata[].lines[].gst_rate_bpinteger or nullrequireddata[].lines[].hsn_codestring or nullrequireddata[].lines[].requires_shippingbooleanrequireddata[].fulfilmentsarray of objectrequireddata[].fulfilments[].idID (ful_...)requireddata[].fulfilments[].kindenumrequiredOne of
manualdigitaldata[].fulfilments[].statusenumrequiredOne of
fulfilledcancelleddata[].fulfilments[].linesarray of objectrequireddata[].fulfilments[].lines[].line_idID (oli_...)requireddata[].fulfilments[].lines[].quantityintegerrequireddata[].fulfilments[].carrierstring or nullrequireddata[].fulfilments[].tracking_numberstring or nullrequireddata[].fulfilments[].tracking_urlstring or nullrequireddata[].fulfilments[].created_attimestamprequireddata[].eventsarray of objectrequireddata[].events[].idID (oev_...)requireddata[].events[].typestringrequireddata[].events[].messagestringrequireddata[].events[].created_attimestamprequireddata[].created_attimestamprequireddata[].updated_attimestamprequiredhas_morebooleanrequirednext_cursorstring or nullrequired
Errors
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl https://api.storelyne.com/admin/2026-11/orders \
-H "Authorization: Bearer pat_live_..."const res = await fetch('https://api.storelyne.com/admin/2026-11/orders', {
method: 'GET',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
},
});
const data = await res.json();{
"data": [
{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}
],
"has_more": false,
"next_cursor": "eyJpZCI6Ii4uLiJ9"
}Create an order (manual or COD); prices come from the catalog
POST/admin/2026-11/orders
scope write_ordersIdempotency-Key required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Request body
buyerobjectrequiredbuyer.namestringUp to 120 characters
buyer.emailstring or nullDefault null
buyer.phonestring or nulllinesarray of objectrequiredUp to 100 items
lines[].variant_idID (var_...)requiredlines[].quantityintegerrequired1 to 10000
shipping_addressobjectshipping_address.namestringrequiredAt least 1 characters · Up to 120 characters
shipping_address.line1stringrequiredAt least 1 characters · Up to 200 characters
shipping_address.line2stringUp to 200 characters
shipping_address.citystringrequiredAt least 1 characters · Up to 100 characters
shipping_address.statestringrequiredAt least 1 characters · Up to 100 characters
shipping_address.pincodestringrequiredshipping_address.country"IN"Default "IN"
shipping_address.phonestring or nullshipping_totalintegerDefault 0 · 0 to 10000000
paymentenumcod_unpaid for cash on delivery.
One of
unpaidcod_unpaidDefault "unpaid"
channelenumOne of
online_storepayment_pageadminapiDefault "admin"
sourcestringUp to 100 characters
notestringUp to 2000 characters
tagsarray of stringUp to 20 items
Response 201
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/orders \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"buyer": {
"name": "",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"lines": [
{
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
]
}'const res = await fetch('https://api.storelyne.com/admin/2026-11/orders', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
"buyer": {
"name": "",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"lines": [
{
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
]
}),
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}One order with lines and timeline
GET/admin/2026-11/orders/{id}
Path parameters
idID (ord_...)required
Response 200
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R \
-H "Authorization: Bearer pat_live_..."const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R', {
method: 'GET',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
},
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}Change the note, tags, buyer contact or shipping address
PATCH/admin/2026-11/orders/{id}
Contact and address changes are written to the order timeline (D-132).
Path parameters
idID (ord_...)required
Headers
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Request body
notestringUp to 2000 characters
tagsarray of stringUp to 20 items
buyerobjectbuyer.namestringUp to 120 characters
buyer.emailstring or nullbuyer.phonestring or nullshipping_addressobject or nullshipping_address.namestringrequiredAt least 1 characters · Up to 120 characters
shipping_address.line1stringrequiredAt least 1 characters · Up to 200 characters
shipping_address.line2stringUp to 200 characters
shipping_address.citystringrequiredAt least 1 characters · Up to 100 characters
shipping_address.statestringrequiredAt least 1 characters · Up to 100 characters
shipping_address.pincodestringrequiredshipping_address.country"IN"Default "IN"
shipping_address.phonestring or null
Response 200
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X PATCH https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R \
-H "Authorization: Bearer pat_live_..." \
-H "Content-Type: application/json" \
-d '{
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
}
}'const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R', {
method: 'PATCH',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
}
}),
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}Cancel an unpaid order and put its stock back
POST/admin/2026-11/orders/{id}/cancel
scope write_ordersIdempotency-Key required
Path parameters
idID (ord_...)required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Request body
reasonenumOne of
customerinventoryfrauddeclinedotherDefault "other"
restockbooleanDefault true
Response 200
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 409 | conflict | The request conflicts with the current state of the object. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/cancel \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"reason": "customer",
"restock": true
}'const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/cancel', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
"reason": "customer",
"restock": true
}),
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}Archive a finished order (closed); it stays searchable and can be reopened
POST/admin/2026-11/orders/{id}/close
scope write_ordersIdempotency-Key required
Path parameters
idID (ord_...)required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Response 200
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 409 | conflict | The request conflicts with the current state of the object. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/close \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)"const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/close', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
},
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}Record that the cash for a COD order was collected
POST/admin/2026-11/orders/{id}/cod-collected
scope write_ordersIdempotency-Key required
Path parameters
idID (ord_...)required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Response 200
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 409 | conflict | The request conflicts with the current state of the object. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/cod-collected \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)"const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/cod-collected', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
},
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}Add a staff comment to the order timeline (buyers never see it)
POST/admin/2026-11/orders/{id}/comments
scope write_ordersIdempotency-Key required
Path parameters
idID (ord_...)required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Request body
messagestringrequiredAt least 1 characters · Up to 2000 characters
Response 201
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/comments \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"message": "Hand block printed cotton."
}'const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/comments', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
"message": "Hand block printed cotton."
}),
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}Mark items as sent, with optional carrier and tracking
POST/admin/2026-11/orders/{id}/fulfilments
scope write_ordersIdempotency-Key required
Path parameters
idID (ord_...)required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Request body
linesarray of objectLeave out to send everything not sent yet.
Up to 100 items
lines[].line_idID (oli_...)requiredlines[].quantityintegerrequired1 to 10000
carrierstring or nullDefault null
tracking_numberstring or nullDefault null
tracking_urlstring or nullDefault null
Response 201
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 409 | conflict | The request conflicts with the current state of the object. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/fulfilments \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string"
}'const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/fulfilments', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string"
}),
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}Change the carrier or tracking of a shipment
PATCH/admin/2026-11/orders/{id}/fulfilments/{fulfilment_id}
Path parameters
idID (ord_...)requiredfulfilment_idID (ful_...)required
Headers
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Request body
carrierstring or nullrequiredtracking_numberstring or nullrequiredtracking_urlstring or nullrequired
Response 200
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 409 | conflict | The request conflicts with the current state of the object. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X PATCH https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/fulfilments/ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R \
-H "Authorization: Bearer pat_live_..." \
-H "Content-Type: application/json" \
-d '{
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com"
}'const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/fulfilments/ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R', {
method: 'PATCH',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com"
}),
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}Cancel a shipment that did not go out; its items count as not sent again
POST/admin/2026-11/orders/{id}/fulfilments/{fulfilment_id}/cancel
scope write_ordersIdempotency-Key required
Path parameters
idID (ord_...)requiredfulfilment_idID (ful_...)required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Response 200
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 409 | conflict | The request conflicts with the current state of the object. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/fulfilments/ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R/cancel \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)"const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/fulfilments/ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R/cancel', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
},
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}Record a payment received outside checkout (cash, bank transfer, UPI to you)
POST/admin/2026-11/orders/{id}/mark-paid
For unpaid orders only (D-132). The method and reference go on the timeline; a later online payment for the same order is refunded automatically as a duplicate.
scope write_ordersIdempotency-Key required
Path parameters
idID (ord_...)required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Request body
methodenumrequiredOne of
cashbank_transferupichequeotherreferencestringUTR, cheque number or a note.
Up to 120 characters
Response 200
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 409 | conflict | The request conflicts with the current state of the object. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/mark-paid \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"method": "cash"
}'const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/mark-paid', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
"method": "cash"
}),
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}Payment attempts of an order, newest first, each with its step trace
GET/admin/2026-11/orders/{id}/payments
Path parameters
idID (ord_...)required
Response 200
dataarray of objectrequireddata[].idID (att_...)requireddata[].stateenumrequiredOne of
createdawaiting_paymentauthorizedpendingpaidfailedabandonedlate_successcancelleddata[].methodenumrequiredOne of
upicardnetbankingwalletemipaylaterdata[].amountintegerrequireddata[].trace_idstringrequireddata[].cause_groupstring or nullrequireddata[].cause_codeenum or nullrequiredOne of
buyer_cancelledbuyer_left_upi_appbuyer_wrong_pin_or_otpbuyer_insufficient_fundsbuyer_limit_exceededbuyer_otherbank_issuer_downbank_timeoutbank_declinedupi_app_not_respondingbank_otherprovider_5xxprovider_slow_orderprovider_rate_limitedprovider_risk_declinedprovider_otherplatform_api_errorplatform_price_mismatchplatform_reservation_errorplatform_checkout_script_errorplatform_signature_invalidplatform_otherstore_kyc_pendingstore_method_not_enabled...data[].seller_messagestring or nullrequiredWhat happened, in plain words; never a provider name.
data[].created_attimestamprequireddata[].finalized_attimestamp or nullrequireddata[].stepsarray of objectrequireddata[].steps[].stepstringrequireddata[].steps[].sourceenumrequiredOne of
serverprovidersystemclientdata[].steps[].outcomeenumrequiredOne of
okerrordata[].steps[].duration_msinteger or nullrequireddata[].steps[].attimestamprequired
Errors
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/payments \
-H "Authorization: Bearer pat_live_..."const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/payments', {
method: 'GET',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
},
});
const data = await res.json();{
"data": [
{
"id": "att_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"state": "created",
"method": "upi",
"amount": 49900,
"trace_id": "string",
"cause_group": "string",
"cause_code": "buyer_cancelled",
"seller_message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z",
"finalized_at": "2026-11-04T10:00:00.000Z",
"steps": [
{
"step": "string",
"source": "server",
"outcome": "ok",
"duration_ms": 1,
"at": "2026-11-04T10:00:00.000Z"
}
]
}
]
}Refunds of an order, newest first
GET/admin/2026-11/orders/{id}/refunds
Path parameters
idID (ord_...)required
Response 200
dataarray of objectrequireddata[].idID (rfd_...)requireddata[].order_idID (ord_...)requireddata[].amountintegerrequireddata[].reasonenumrequiredOne of
duplicate_capturelate_payment_unfulfillableseller_requestedorder_cancelleddata[].notestringrequireddata[].statusenumrequiredOne of
pendingprocessedfaileddata[].created_attimestamprequired
Errors
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/refunds \
-H "Authorization: Bearer pat_live_..."const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/refunds', {
method: 'GET',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
},
});
const data = await res.json();{
"data": [
{
"id": "rfd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"order_id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"amount": 49900,
"reason": "duplicate_capture",
"note": "Hand block printed cotton.",
"status": "pending",
"created_at": "2026-11-04T10:00:00.000Z"
}
]
}Refund a paid order in full or in part, to the way the buyer paid
POST/admin/2026-11/orders/{id}/refunds
scope write_ordersIdempotency-Key required
Path parameters
idID (ord_...)required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Request body
amountintegerIn paise. Leave out to refund everything not refunded yet.
Up to 1000000000
notestringUp to 500 characters
Response 201
idID (rfd_...)requiredorder_idID (ord_...)requiredamountintegerrequiredreasonenumrequiredOne of
duplicate_capturelate_payment_unfulfillableseller_requestedorder_cancellednotestringrequiredstatusenumrequiredOne of
pendingprocessedfailedcreated_attimestamprequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 409 | conflict | The request conflicts with the current state of the object. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/refunds \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"amount": 49900,
"note": ""
}'const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/refunds', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
"amount": 49900,
"note": ""
}),
});
const data = await res.json();{
"id": "rfd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"order_id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"amount": 49900,
"reason": "duplicate_capture",
"note": "Hand block printed cotton.",
"status": "pending",
"created_at": "2026-11-04T10:00:00.000Z"
}Reopen a closed order
POST/admin/2026-11/orders/{id}/reopen
scope write_ordersIdempotency-Key required
Path parameters
idID (ord_...)required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Response 200
idID (ord_...)requirednumberintegerrequirednamestringrequiredDisplay number, for example #1001.
customer_idID (cus_...) or nullrequiredbuyerobjectrequiredbuyer.namestringrequiredbuyer.emailstring or nullrequiredbuyer.phonestring or nullrequiredchannelenumrequiredOne of
online_storepayment_pageadminapisourcestringrequiredcurrencystringrequiredsubtotalintegerrequiredshipping_totalintegerrequiredtax_totalintegerrequiredtotalintegerrequireddiscount_totalintegerrequireddiscount_codestring or nullrequiredattributesobjectrequiredAnswers to the payment page questions.
checkout_idstring or nullrequiredpayment_statusenumrequiredOne of
unpaidcod_unpaidpaidpartially_refundedrefundedfulfilment_statusenumrequiredOne of
unfulfilledpartially_fulfilledfulfilledstatusenumrequiredOne of
opencancelledclosedshipping_addressobject or nullrequirednotestringrequiredtagsarray of stringrequiredneeds_attentionarray of stringrequiredcancel_reasonstring or nullrequiredcancelled_attimestamp or nullrequiredpaid_attimestamp or nullrequiredlinesarray of objectrequiredlines[].idID (oli_...)requiredlines[].product_idID (prd_...)requiredlines[].variant_idID (var_...)requiredlines[].titlestringrequiredlines[].variant_titlestringrequiredlines[].skustring or nullrequiredlines[].quantityintegerrequiredlines[].unit_priceintegerrequiredlines[].totalintegerrequiredlines[].tax_amountintegerrequiredlines[].gst_rate_bpinteger or nullrequiredlines[].hsn_codestring or nullrequiredlines[].requires_shippingbooleanrequiredfulfilmentsarray of objectrequiredfulfilments[].idID (ful_...)requiredfulfilments[].kindenumrequiredOne of
manualdigitalfulfilments[].statusenumrequiredOne of
fulfilledcancelledfulfilments[].linesarray of objectrequiredfulfilments[].lines[].line_idID (oli_...)requiredfulfilments[].lines[].quantityintegerrequiredfulfilments[].carrierstring or nullrequiredfulfilments[].tracking_numberstring or nullrequiredfulfilments[].tracking_urlstring or nullrequiredfulfilments[].created_attimestamprequiredeventsarray of objectrequiredevents[].idID (oev_...)requiredevents[].typestringrequiredevents[].messagestringrequiredevents[].created_attimestamprequiredcreated_attimestamprequiredupdated_attimestamprequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 409 | conflict | The request conflicts with the current state of the object. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/reopen \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)"const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/reopen', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
},
});
const data = await res.json();{
"id": "ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"number": 1,
"name": "Festive saree",
"customer_id": "cus_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"buyer": {
"name": "Festive saree",
"email": "buyer@example.com",
"phone": "+919876543210"
},
"channel": "online_store",
"source": "string",
"currency": "INR",
"subtotal": 49900,
"shipping_total": 49900,
"tax_total": 49900,
"total": 49900,
"discount_total": 49900,
"discount_code": "string",
"attributes": {},
"checkout_id": "string",
"payment_status": "unpaid",
"fulfilment_status": "unfulfilled",
"status": "open",
"shipping_address": {},
"note": "Hand block printed cotton.",
"tags": [
"string"
],
"needs_attention": [
"string"
],
"cancel_reason": "string",
"cancelled_at": "2026-11-04T10:00:00.000Z",
"paid_at": "2026-11-04T10:00:00.000Z",
"lines": [
{
"id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"product_id": "prd_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"variant_id": "var_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"title": "Festive saree",
"variant_title": "Festive saree",
"sku": "string",
"quantity": 1,
"unit_price": 49900,
"total": 49900,
"tax_amount": 49900,
"gst_rate_bp": 1,
"hsn_code": "string",
"requires_shipping": false
}
],
"fulfilments": [
{
"id": "ful_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"kind": "manual",
"status": "fulfilled",
"lines": [
{
"line_id": "oli_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"quantity": 1
}
],
"carrier": "string",
"tracking_number": "string",
"tracking_url": "https://example.com",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"events": [
{
"id": "oev_01JCG8ZQ5S7T0V4X8K2M3N6P9R",
"type": "string",
"message": "Hand block printed cotton.",
"created_at": "2026-11-04T10:00:00.000Z"
}
],
"created_at": "2026-11-04T10:00:00.000Z",
"updated_at": "2026-11-04T10:00:00.000Z"
}Email the order confirmation to the buyer again
POST/admin/2026-11/orders/{id}/resend-receipt
scope write_ordersIdempotency-Key required
Path parameters
idID (ord_...)required
Headers
Idempotency-KeystringrequiredUnique key for this request. Retries with the same key return the first response.
At least 1 characters · Up to 255 characters
X-CSRF-TokenstringRequired with a seller session cookie: the value of the orb_csrf cookie.
Response 202
queued"true"requiredtostringrequired
Errors
| 400 | idempotency_key_required | Every POST needs an Idempotency-Key header. |
| 400 | validation_failed | A field in the request is missing or invalid. See param. |
| 401 | authentication_required | Send a valid access token or session. |
| 403 | missing_scope | The app token does not have the scope this endpoint needs. |
| 404 | resource_not_found | The object does not exist or belongs to another store. |
| 409 | conflict | The request conflicts with the current state of the object. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still running. |
| 422 | idempotency_key_reused | This Idempotency-Key was used with a different request. |
| 429 | rate_limited | Too many requests. Wait for the time in RateLimit-Reset. |
| 500 | internal_error | Something went wrong on our side. Quote the trace_id to support. |
curl -X POST https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/resend-receipt \
-H "Authorization: Bearer pat_live_..." \
-H "Idempotency-Key: $(uuidgen)"const res = await fetch('https://api.storelyne.com/admin/2026-11/orders/ord_01JCG8ZQ5S7T0V4X8K2M3N6P9R/resend-receipt', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STORELYNE_TOKEN}`,
'Idempotency-Key': crypto.randomUUID(),
},
});
const data = await res.json();{
"queued": true,
"to": "string"
}