Contents
Orders
Orders as the customer and your back office see them, with their lines, shipments, refunds made on the sales channel and the returns opened on them.
| Status | Meaning |
|---|---|
received | Arrived from the sales channel or through this API, not yet sent to fulfilment. |
on_hold | Stopped by the merchant or by a rule (for example a payment check). |
in_fulfillment | Assigned to a warehouse or store, which is preparing it. |
shipped | Every parcel has left. |
delivered | The carrier delivered it. |
cancellation_requested | Cancelled after the warehouse took it over: waiting for the warehouse to stop it. |
cancelled | Cancelled. |
Fields that stay inside Nucleo — internal notes, carrier costs, routing decisions, holds' details, customer tags and payment transactions — are not part of the API.
Sending orders. With orders:write your system creates orders with POST /orders. They go through
the same steps as the sales channel's: Nucleo's routing rules choose the location, the warehouse
receives them, and order.created is sent to every key that listens. Send orders ready to ship: they
are treated as paid.
Base URL, authentication and conventions of this API are on the Commerce API page.
/ordersList orders
orders:read scope.Orders sorted by last update, oldest first. Scope orders:read.
To keep a copy in sync, read every page once, then call again with updated_since set to the
updated_at of the last order you stored. A change to a return does not update its order: sync returns
with GET /returns.
Query parameters
statusstringOnly orders in this status.
One ofreceivedon_holdin_fulfillmentshippeddeliveredcancellation_requestedcancelledExample:receivedupdated_sincestring (date-time)Only items updated at or after this time (ISO 8601). Encode
+as%2Bif you send an offset.Example:2026-10-13T08:00:00ZcursorstringThe
next_cursorof the previous page. Keepstatusandupdated_sincethe same; a differentstatusanswers400 invalid_cursor.limitintegerItems per page.
min 1max 200default 50Example:50
Responses
200A page of orders.application/json
HeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
dataarray of OrderrequiredAttributes of each item
idstring (uuid)requirednumberstringrequiredExample:#1042statusstringrequiredOne ofreceivedon_holdin_fulfillmentshippeddeliveredcancellation_requestedcancelledchannelstring | nullWhere the order comes from, for example
shopify;nucleo_apifor orders created withPOST /orders.placed_atstring (date-time) | nullupdated_atstring (date-time) | nullpayment_statusstring | nullOne ofpendingauthorizedpaidcapturedpartially_refundedrefundedvoidedexpirednullon_holdbooleancustomerobjectChild attributes
namestring | nullemailstring | nullphonestring | null
shipping_addressAddressChild attributes
first_namestring | nulllast_namestring | nullcompanystring | nulladdress1string | nulladdress2string | nullcitystring | nullpostal_codestring | nullprovince_codestring | nullcountry_codestring | nullISO 3166-1 alpha-2.
phonestring | null
billing_addressAddress | nullAddress
first_namestring | nulllast_namestring | nullcompanystring | nulladdress1string | nulladdress2string | nullcitystring | nullpostal_codestring | nullprovince_codestring | nullcountry_codestring | nullISO 3166-1 alpha-2.
phonestring | null
shippingobjectThe shipping method the customer chose.
Child attributes
method_codestring | nullmethod_namestring | null
currencystringtotalsobjectcurrent_totalis the total after edits and cancellations;refundedwhat was refunded on the sales channel.Child attributes
subtotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
discountsMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
shippingMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
taxMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
totalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
current_totalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
refundedMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
linesarray of OrderLinerequiredAttributes of each item
line_idstringskustring | nullbarcodestring | nulltitlestring | nullquantityintegerquantity_cancelledintegerquantity_shippedintegerunit_priceMoneyTax included.
Child attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
totalMoneyTax included.
Child attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
tax_ratestringPercentage as a decimal string, for example
22.00.
shipmentsarray of ShipmentAttributes of each item
idstringstatusstringOne oflabel_createdconfirmedshippeddeliveredvoidedlocation_codestring | nullThe location that shipped it.
carrierobjectChild attributes
codestring | nullnamestring | nullservicestring | null
tracking_urlstring | nulltracking_numbersarray of stringshipped_atstring (date-time) | nulldelivered_atstring (date-time) | nulllinesarray of objectAttributes of each item
line_idstring | nullquantityinteger
refundsarray of RefundAttributes of each item
idstringreturn_idstring | nullThe return it belongs to, if any.
refunded_atstring (date-time) | nulltotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
shippingMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
linesarray of objectAttributes of each item
line_idstring | nullskustring | nullbarcodestring | nullquantityintegersubtotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
returnsarray of objectThe returns opened on the order; read each one with
GET /returns/{return}.Attributes of each item
idstringnumberstring | nullstatusstringOne ofrequestedawaiting_receiptin_transitreceivedcompliantnot_compliantclosedcancelled
cancellationobject | nullPresent when the order is cancelled or its cancellation is requested.
object
reasonstring | nullcancelled_atstring (date-time) | null
next_cursorstring | nullrequired
400The request is not valid:
validation_failed(withdetailsper parameter or field),invalid_cursor,invalid_json(the body is not a JSON object) orunknown_item(withdetailsper line, for examplelines.0). application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
401
unauthorized: the key is missing or wrong, or the call comes from an IP outside the connection's allowlist.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
403The key is right but cannot do this:
insufficient_scope(the key lacks the scope of the call),connection_pausedorconnection_not_active(the connection is paused or not turned on yet). application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
429
rate_limited: wait for the seconds inRetry-After.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.Retry-AfterSeconds to wait before the next call.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
curl -X GET 'https://api-commerce.nucleoplatform.com/api/commerce/v1/orders?status=received&updated_since=2026-10-13T08%3A00%3A00Z&limit=50' \
-H "Authorization: Bearer $NUCLEO_ACCESS_TOKEN" \
-H 'Accept: application/json'const res = await fetch("https://api-commerce.nucleoplatform.com/api/commerce/v1/orders?status=received&updated_since=2026-10-13T08%3A00%3A00Z&limit=50", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.NUCLEO_ACCESS_TOKEN}`,
Accept: "application/json",
},
});
const data = await res.json();
console.log(res.status, data);<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://api-commerce.nucleoplatform.com/api/commerce/v1/orders?status=received&updated_since=2026-10-13T08%3A00%3A00Z&limit=50', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('NUCLEO_ACCESS_TOKEN'),
'Accept' => 'application/json',
],
'http_errors' => false,
]);
echo $response->getStatusCode(), PHP_EOL;
echo $response->getBody();{
"data": [
{
"id": "9b2f4c1e-5d7a-4e8b-9c3d-2a1f0e6b7c8d",
"number": "#1042",
"status": "received",
"channel": "string",
"placed_at": "2026-10-01T09:30:00Z",
"updated_at": "2026-10-01T09:30:00Z",
"payment_status": "pending",
"on_hold": true,
"customer": {
"name": "string",
"email": "string",
"phone": "string"
},
"shipping_address": {
"first_name": "string",
"last_name": "string",
"company": "string",
"address1": "string",
"address2": "string",
"city": "string",
"postal_code": "string",
"province_code": "string",
"country_code": "string",
"phone": "string"
},
"billing_address": {
"first_name": "string",
"last_name": "string",
"company": "string",
"address1": "string",
"address2": "string",
"city": "string",
"postal_code": "string",
"province_code": "string",
"country_code": "string",
"phone": "string"
},
"shipping": {
"method_code": "string",
"method_name": "string"
},
"currency": "string",
"totals": {
"subtotal": {
"amount": "180.00",
"currency": "EUR"
},
"discounts": {
"amount": "180.00",
"currency": "EUR"
},
"shipping": {
"amount": "180.00",
"currency": "EUR"
},
"tax": {
"amount": "180.00",
"currency": "EUR"
},
"total": {
"amount": "180.00",
"currency": "EUR"
},
"current_total": {
"amount": "180.00",
"currency": "EUR"
},
"refunded": {
"amount": "180.00",
"currency": "EUR"
}
},
"lines": [
{
"line_id": "string",
"sku": "string",
"barcode": "string",
"title": "string",
"quantity": 1,
"quantity_cancelled": 1,
"quantity_shipped": 1,
"unit_price": {
"amount": "180.00",
"currency": "EUR"
},
"total": {
"amount": "180.00",
"currency": "EUR"
},
"tax_rate": "string"
}
],
"shipments": [
{
"id": "string",
"status": "label_created",
"location_code": "string",
"carrier": {
"code": "string",
"name": "string",
"service": "string"
},
"tracking_url": "string",
"tracking_numbers": [
"string"
],
"shipped_at": "2026-10-01T09:30:00Z",
"delivered_at": "2026-10-01T09:30:00Z",
"lines": [
{}
]
}
],
"refunds": [
{
"id": "string",
"return_id": "string",
"refunded_at": "2026-10-01T09:30:00Z",
"total": {
"amount": "180.00",
"currency": "EUR"
},
"shipping": {
"amount": "180.00",
"currency": "EUR"
},
"lines": [
{}
]
}
],
"returns": [
{
"id": "string",
"number": "string",
"status": "requested"
}
],
"cancellation": {
"reason": "string",
"cancelled_at": "2026-10-01T09:30:00Z"
}
}
],
"next_cursor": "string"
}{
"error": {
"code": "validation_failed",
"message": "The request is not valid.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c",
"details": {
"status": [
"Must be one of: received, on_hold, in_fulfillment, shipped, delivered, cancellation_requested, cancelled."
]
}
}
}{
"error": {
"code": "unauthorized",
"message": "Missing or invalid API key.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}{
"error": {
"code": "insufficient_scope",
"message": "This API key does not have the orders:read scope.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests: retry after the number of seconds in Retry-After.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}/ordersCreate an order
orders:write scope.Sends an order from your system to Nucleo. Scope orders:write.
- No duplicates.
channel_order_refis your own id of the order. Sending the samechannel_order_refagain with the same key creates nothing: the answer is200with the order created the first time, unchanged. The body is still validated, but its content is not applied. Use it to recover an answer you lost. References are per key: another key can use the same one. - Number. Nucleo shows the order as
API-followed by yournumber(B2B-871becomesAPI-B2B-871), so it never clashes with the sales channel's numbers; read it withGET /orders/API-B2B-871.numbermay use letters, digits,.,-and_, at most 40 characters. Without it,channel_order_refis used and must follow the same rule (400 validation_failedonnumberotherwise). A number another order already has answers409 number_taken— for example two keys sending the samechannel_order_refwithout anumber. - Items. Every line needs the
skuor thebarcodeof an item Nucleo knows, with a barcode; with both, they must be the same item. Unknown or mismatched items reject the whole order with400 unknown_item, one message per line indetails(lines.0,lines.1, …). - Amounts are in EUR, tax included;
currencycan only beEUR. Every line needs itstax_rate, andshipping.tax_rateis required withshipping.price. Nucleo computessubtotal(sum ofunit_price × quantity),tax(the tax of the lines and of the shipping),total(subtotalplusshipping.price);discountsis0: send prices already discounted. - Dates.
placed_atcan carry any offset; Nucleo stores and returns it in UTC. - What happens next. The order is treated as paid. Nucleo's routing rules choose the location.
If no rule covers the order, or no location of its rule has all the items in stock, it stays
on_holduntil the merchant adds or fixes the rule and routes it again.notesreaches the merchant and the warehouse with the order.order.createdis sent to every key that receives webhooks, yours included, always withstatus: received; the status it reaches next comes withorder.status_changed.
Orders created here cannot be changed or cancelled through the API yet: ask the merchant.
Headers
Idempotency-KeystringAny unique string you generate (1–255 printable ASCII characters, no spaces), for example a UUID. For 48 hours, the same key with the same body returns the stored answer without doing the work again (header
Idempotent-Replayed: true; the replayed body is the original one). The same key with a different body answers409 idempotency_key_reused; while the first request is still running,409 idempotency_key_in_progress. A key left in progress for more than 2 minutes (an interrupted call) is free again. Keys are per connection. The body is compared byte by byte: resend exactly the same bytes. Server errors (5xx) and429are not stored: retry them with the same key. Other errors (4xx) are stored too: after fixing the request, send it with a new key. Without a key,channel_order_refstill prevents duplicates.max length 255
Request bodyapplication/json
channel_order_refstringrequiredYour id of the order (printable ASCII, no spaces). Unique per key; sending it again returns the existing order.
max length 120pattern ^[!-~]+$numberstringShown in Nucleo and to the warehouse as
API-plus this value. Defaultchannel_order_ref, which must then follow the same pattern.max length 40pattern ^[A-Za-z0-9][A-Za-z0-9._-]*$placed_atstring (date-time)When the customer placed it, with any offset; stored in UTC. Default now.
currencystringOnly
EUR. DefaultEUR.One ofEURcustomerobjectrequiredChild attributes
namestringDefault the shipping address's first and last name.
max length 255emailstring (email)requiredmax length 255phonestringDefault the shipping address's phone.
max length 40
shipping_addressAddressInputrequiredChild attributes
first_namestringmax length 120last_namestringmax length 120companystringmax length 120address1stringrequiredmax length 255address2stringmax length 255citystringrequiredmax length 120postal_codestringmax length 20province_codestringmax length 10country_codestringrequiredISO 3166-1 alpha-2 (
IT; lowercase is accepted).min length 2max length 2phonestringmax length 40
billing_addressAddressInputChild attributes
first_namestringmax length 120last_namestringmax length 120companystringmax length 120address1stringrequiredmax length 255address2stringmax length 255citystringrequiredmax length 120postal_codestringmax length 20province_codestringmax length 10country_codestringrequiredISO 3166-1 alpha-2 (
IT; lowercase is accepted).min length 2max length 2phonestringmax length 40
shippingobjectChild attributes
method_codestringThe shipping method, as configured in the merchant's carrier rules.
max length 120method_namestringmax length 255pricestring | numberShipping price in EUR, tax included. Default
0.min 0max 100000tax_ratenumberTax percentage of the shipping, for example
22. Required withprice.min 0max 100
notesstringA note for the merchant and the warehouse; it is not returned by the API.
max length 2000linesarray of objectrequiredmin items 1max items 250Attributes of each item
skustringmax length 255barcodestringmax length 255titlestringDefault the item's title in Nucleo.
max length 255quantityintegerrequiredmin 1max 100000unit_pricestring | numberrequiredPrice of one piece in EUR, tax included, after discounts.
min 0max 1000000tax_ratenumberrequiredTax percentage, for example
22.min 0max 100
Responses
200An order with this
channel_order_refalready exists for your key; it is returned unchanged.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
idstring (uuid)requirednumberstringrequiredExample:#1042statusstringrequiredOne ofreceivedon_holdin_fulfillmentshippeddeliveredcancellation_requestedcancelledchannelstring | nullWhere the order comes from, for example
shopify;nucleo_apifor orders created withPOST /orders.placed_atstring (date-time) | nullupdated_atstring (date-time) | nullpayment_statusstring | nullOne ofpendingauthorizedpaidcapturedpartially_refundedrefundedvoidedexpirednullon_holdbooleancustomerobjectChild attributes
namestring | nullemailstring | nullphonestring | null
shipping_addressAddressChild attributes
first_namestring | nulllast_namestring | nullcompanystring | nulladdress1string | nulladdress2string | nullcitystring | nullpostal_codestring | nullprovince_codestring | nullcountry_codestring | nullISO 3166-1 alpha-2.
phonestring | null
billing_addressAddress | nullAddress
first_namestring | nulllast_namestring | nullcompanystring | nulladdress1string | nulladdress2string | nullcitystring | nullpostal_codestring | nullprovince_codestring | nullcountry_codestring | nullISO 3166-1 alpha-2.
phonestring | null
shippingobjectThe shipping method the customer chose.
Child attributes
method_codestring | nullmethod_namestring | null
currencystringtotalsobjectcurrent_totalis the total after edits and cancellations;refundedwhat was refunded on the sales channel.Child attributes
subtotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
discountsMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
shippingMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
taxMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
totalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
current_totalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
refundedMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
linesarray of OrderLinerequiredAttributes of each item
line_idstringskustring | nullbarcodestring | nulltitlestring | nullquantityintegerquantity_cancelledintegerquantity_shippedintegerunit_priceMoneyTax included.
Child attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
totalMoneyTax included.
Child attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
tax_ratestringPercentage as a decimal string, for example
22.00.
shipmentsarray of ShipmentAttributes of each item
idstringstatusstringOne oflabel_createdconfirmedshippeddeliveredvoidedlocation_codestring | nullThe location that shipped it.
carrierobjectChild attributes
codestring | nullnamestring | nullservicestring | null
tracking_urlstring | nulltracking_numbersarray of stringshipped_atstring (date-time) | nulldelivered_atstring (date-time) | nulllinesarray of objectAttributes of each item
line_idstring | nullquantityinteger
refundsarray of RefundAttributes of each item
idstringreturn_idstring | nullThe return it belongs to, if any.
refunded_atstring (date-time) | nulltotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
shippingMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
linesarray of objectAttributes of each item
line_idstring | nullskustring | nullbarcodestring | nullquantityintegersubtotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
returnsarray of objectThe returns opened on the order; read each one with
GET /returns/{return}.Attributes of each item
idstringnumberstring | nullstatusstringOne ofrequestedawaiting_receiptin_transitreceivedcompliantnot_compliantclosedcancelled
cancellationobject | nullPresent when the order is cancelled or its cancellation is requested.
object
reasonstring | nullcancelled_atstring (date-time) | null
201The order was created.application/json
HeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
idstring (uuid)requirednumberstringrequiredExample:#1042statusstringrequiredOne ofreceivedon_holdin_fulfillmentshippeddeliveredcancellation_requestedcancelledchannelstring | nullWhere the order comes from, for example
shopify;nucleo_apifor orders created withPOST /orders.placed_atstring (date-time) | nullupdated_atstring (date-time) | nullpayment_statusstring | nullOne ofpendingauthorizedpaidcapturedpartially_refundedrefundedvoidedexpirednullon_holdbooleancustomerobjectChild attributes
namestring | nullemailstring | nullphonestring | null
shipping_addressAddressChild attributes
first_namestring | nulllast_namestring | nullcompanystring | nulladdress1string | nulladdress2string | nullcitystring | nullpostal_codestring | nullprovince_codestring | nullcountry_codestring | nullISO 3166-1 alpha-2.
phonestring | null
billing_addressAddress | nullAddress
first_namestring | nulllast_namestring | nullcompanystring | nulladdress1string | nulladdress2string | nullcitystring | nullpostal_codestring | nullprovince_codestring | nullcountry_codestring | nullISO 3166-1 alpha-2.
phonestring | null
shippingobjectThe shipping method the customer chose.
Child attributes
method_codestring | nullmethod_namestring | null
currencystringtotalsobjectcurrent_totalis the total after edits and cancellations;refundedwhat was refunded on the sales channel.Child attributes
subtotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
discountsMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
shippingMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
taxMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
totalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
current_totalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
refundedMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
linesarray of OrderLinerequiredAttributes of each item
line_idstringskustring | nullbarcodestring | nulltitlestring | nullquantityintegerquantity_cancelledintegerquantity_shippedintegerunit_priceMoneyTax included.
Child attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
totalMoneyTax included.
Child attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
tax_ratestringPercentage as a decimal string, for example
22.00.
shipmentsarray of ShipmentAttributes of each item
idstringstatusstringOne oflabel_createdconfirmedshippeddeliveredvoidedlocation_codestring | nullThe location that shipped it.
carrierobjectChild attributes
codestring | nullnamestring | nullservicestring | null
tracking_urlstring | nulltracking_numbersarray of stringshipped_atstring (date-time) | nulldelivered_atstring (date-time) | nulllinesarray of objectAttributes of each item
line_idstring | nullquantityinteger
refundsarray of RefundAttributes of each item
idstringreturn_idstring | nullThe return it belongs to, if any.
refunded_atstring (date-time) | nulltotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
shippingMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
linesarray of objectAttributes of each item
line_idstring | nullskustring | nullbarcodestring | nullquantityintegersubtotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
returnsarray of objectThe returns opened on the order; read each one with
GET /returns/{return}.Attributes of each item
idstringnumberstring | nullstatusstringOne ofrequestedawaiting_receiptin_transitreceivedcompliantnot_compliantclosedcancelled
cancellationobject | nullPresent when the order is cancelled or its cancellation is requested.
object
reasonstring | nullcancelled_atstring (date-time) | null
400The request is not valid:
validation_failed(withdetailsper parameter or field),invalid_cursor,invalid_json(the body is not a JSON object) orunknown_item(withdetailsper line, for examplelines.0). application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
401
unauthorized: the key is missing or wrong, or the call comes from an IP outside the connection's allowlist.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
403The key is right but cannot do this:
insufficient_scope(the key lacks the scope of the call),connection_pausedorconnection_not_active(the connection is paused or not turned on yet). application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
409
number_taken(another order has thisnumber),idempotency_key_reusedoridempotency_key_in_progress(withRetry-After). application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.Retry-AfterSeconds to wait before the next call.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
413The body is larger than 5 MB (
payload_too_large). Nothing was read.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
429
rate_limited: wait for the seconds inRetry-After.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.Retry-AfterSeconds to wait before the next call.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
curl -X POST https://api-commerce.nucleoplatform.com/api/commerce/v1/orders \
-H "Authorization: Bearer $NUCLEO_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"channel_order_ref": "SO-2026-00871",
"number": "B2B-871",
"placed_at": "2026-10-13T10:12:00+02:00",
"customer": {
"name": "Anna Rossi",
"email": "buyer@example.com"
},
"shipping_address": {
"first_name": "Anna",
"last_name": "Rossi",
"company": "Rossi Boutique",
"address1": "Via Emilia 120",
"city": "Modena",
"postal_code": "41121",
"province_code": "MO",
"country_code": "IT",
"phone": "+39 059 000000"
},
"shipping": {
"method_code": "standard",
"method_name": "Standard",
"price": "5.00",
"tax_rate": 22
},
"lines": [
{
"sku": "TEE-BLK-M",
"quantity": 2,
"unit_price": "29.90",
"tax_rate": 22
},
{
"barcode": "8000000000017",
"quantity": 1,
"unit_price": "59.00",
"tax_rate": 22
}
]
}'const res = await fetch("https://api-commerce.nucleoplatform.com/api/commerce/v1/orders", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.NUCLEO_ACCESS_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"channel_order_ref": "SO-2026-00871",
"number": "B2B-871",
"placed_at": "2026-10-13T10:12:00+02:00",
"customer": {
"name": "Anna Rossi",
"email": "buyer@example.com"
},
"shipping_address": {
"first_name": "Anna",
"last_name": "Rossi",
"company": "Rossi Boutique",
"address1": "Via Emilia 120",
"city": "Modena",
"postal_code": "41121",
"province_code": "MO",
"country_code": "IT",
"phone": "+39 059 000000"
},
"shipping": {
"method_code": "standard",
"method_name": "Standard",
"price": "5.00",
"tax_rate": 22
},
"lines": [
{
"sku": "TEE-BLK-M",
"quantity": 2,
"unit_price": "29.90",
"tax_rate": 22
},
{
"barcode": "8000000000017",
"quantity": 1,
"unit_price": "59.00",
"tax_rate": 22
}
]
}),
});
const data = await res.json();
console.log(res.status, data);<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('POST', 'https://api-commerce.nucleoplatform.com/api/commerce/v1/orders', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('NUCLEO_ACCESS_TOKEN'),
],
'json' => [
'channel_order_ref' => 'SO-2026-00871',
'number' => 'B2B-871',
'placed_at' => '2026-10-13T10:12:00+02:00',
'customer' => [
'name' => 'Anna Rossi',
'email' => 'buyer@example.com',
],
'shipping_address' => [
'first_name' => 'Anna',
'last_name' => 'Rossi',
'company' => 'Rossi Boutique',
'address1' => 'Via Emilia 120',
'city' => 'Modena',
'postal_code' => '41121',
'province_code' => 'MO',
'country_code' => 'IT',
'phone' => '+39 059 000000',
],
'shipping' => [
'method_code' => 'standard',
'method_name' => 'Standard',
'price' => '5.00',
'tax_rate' => 22,
],
'lines' => [
[
'sku' => 'TEE-BLK-M',
'quantity' => 2,
'unit_price' => '29.90',
'tax_rate' => 22,
],
[
'barcode' => '8000000000017',
'quantity' => 1,
'unit_price' => '59.00',
'tax_rate' => 22,
],
],
],
'http_errors' => false,
]);
echo $response->getStatusCode(), PHP_EOL;
echo $response->getBody();{
"id": "9b2f4c1e-5d7a-4e8b-9c3d-2a1f0e6b7c8d",
"number": "#1042",
"status": "received",
"channel": "string",
"placed_at": "2026-10-01T09:30:00Z",
"updated_at": "2026-10-01T09:30:00Z",
"payment_status": "pending",
"on_hold": true,
"customer": {
"name": "string",
"email": "string",
"phone": "string"
},
"shipping_address": {
"first_name": "string",
"last_name": "string",
"company": "string",
"address1": "string",
"address2": "string",
"city": "string",
"postal_code": "string",
"province_code": "string",
"country_code": "string",
"phone": "string"
},
"billing_address": {
"first_name": "string",
"last_name": "string",
"company": "string",
"address1": "string",
"address2": "string",
"city": "string",
"postal_code": "string",
"province_code": "string",
"country_code": "string",
"phone": "string"
},
"shipping": {
"method_code": "string",
"method_name": "string"
},
"currency": "string",
"totals": {
"subtotal": {
"amount": "180.00",
"currency": "EUR"
},
"discounts": {
"amount": "180.00",
"currency": "EUR"
},
"shipping": {
"amount": "180.00",
"currency": "EUR"
},
"tax": {
"amount": "180.00",
"currency": "EUR"
},
"total": {
"amount": "180.00",
"currency": "EUR"
},
"current_total": {
"amount": "180.00",
"currency": "EUR"
},
"refunded": {
"amount": "180.00",
"currency": "EUR"
}
},
"lines": [
{
"line_id": "string",
"sku": "string",
"barcode": "string",
"title": "string",
"quantity": 1,
"quantity_cancelled": 1,
"quantity_shipped": 1,
"unit_price": {
"amount": "180.00",
"currency": "EUR"
},
"total": {
"amount": "180.00",
"currency": "EUR"
},
"tax_rate": "string"
}
],
"shipments": [
{
"id": "string",
"status": "label_created",
"location_code": "string",
"carrier": {
"code": "string",
"name": "string",
"service": "string"
},
"tracking_url": "string",
"tracking_numbers": [
"string"
],
"shipped_at": "2026-10-01T09:30:00Z",
"delivered_at": "2026-10-01T09:30:00Z",
"lines": [
{
"line_id": "string",
"quantity": 1
}
]
}
],
"refunds": [
{
"id": "string",
"return_id": "string",
"refunded_at": "2026-10-01T09:30:00Z",
"total": {
"amount": "180.00",
"currency": "EUR"
},
"shipping": {
"amount": "180.00",
"currency": "EUR"
},
"lines": [
{
"line_id": "string",
"sku": "string",
"barcode": "string",
"quantity": 1,
"subtotal": {
"amount": "180.00",
"currency": "EUR"
}
}
]
}
],
"returns": [
{
"id": "string",
"number": "string",
"status": "requested"
}
],
"cancellation": {
"reason": "string",
"cancelled_at": "2026-10-01T09:30:00Z"
}
}{
"id": "9b2f4c1e-5d7a-4e8b-9c3d-2a1f0e6b7c8d",
"number": "#1042",
"status": "received",
"channel": "string",
"placed_at": "2026-10-01T09:30:00Z",
"updated_at": "2026-10-01T09:30:00Z",
"payment_status": "pending",
"on_hold": true,
"customer": {
"name": "string",
"email": "string",
"phone": "string"
},
"shipping_address": {
"first_name": "string",
"last_name": "string",
"company": "string",
"address1": "string",
"address2": "string",
"city": "string",
"postal_code": "string",
"province_code": "string",
"country_code": "string",
"phone": "string"
},
"billing_address": {
"first_name": "string",
"last_name": "string",
"company": "string",
"address1": "string",
"address2": "string",
"city": "string",
"postal_code": "string",
"province_code": "string",
"country_code": "string",
"phone": "string"
},
"shipping": {
"method_code": "string",
"method_name": "string"
},
"currency": "string",
"totals": {
"subtotal": {
"amount": "180.00",
"currency": "EUR"
},
"discounts": {
"amount": "180.00",
"currency": "EUR"
},
"shipping": {
"amount": "180.00",
"currency": "EUR"
},
"tax": {
"amount": "180.00",
"currency": "EUR"
},
"total": {
"amount": "180.00",
"currency": "EUR"
},
"current_total": {
"amount": "180.00",
"currency": "EUR"
},
"refunded": {
"amount": "180.00",
"currency": "EUR"
}
},
"lines": [
{
"line_id": "string",
"sku": "string",
"barcode": "string",
"title": "string",
"quantity": 1,
"quantity_cancelled": 1,
"quantity_shipped": 1,
"unit_price": {
"amount": "180.00",
"currency": "EUR"
},
"total": {
"amount": "180.00",
"currency": "EUR"
},
"tax_rate": "string"
}
],
"shipments": [
{
"id": "string",
"status": "label_created",
"location_code": "string",
"carrier": {
"code": "string",
"name": "string",
"service": "string"
},
"tracking_url": "string",
"tracking_numbers": [
"string"
],
"shipped_at": "2026-10-01T09:30:00Z",
"delivered_at": "2026-10-01T09:30:00Z",
"lines": [
{
"line_id": "string",
"quantity": 1
}
]
}
],
"refunds": [
{
"id": "string",
"return_id": "string",
"refunded_at": "2026-10-01T09:30:00Z",
"total": {
"amount": "180.00",
"currency": "EUR"
},
"shipping": {
"amount": "180.00",
"currency": "EUR"
},
"lines": [
{
"line_id": "string",
"sku": "string",
"barcode": "string",
"quantity": 1,
"subtotal": {
"amount": "180.00",
"currency": "EUR"
}
}
]
}
],
"returns": [
{
"id": "string",
"number": "string",
"status": "requested"
}
],
"cancellation": {
"reason": "string",
"cancelled_at": "2026-10-01T09:30:00Z"
}
}{
"error": {
"code": "validation_failed",
"message": "The request is not valid.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c",
"details": {
"status": [
"Must be one of: received, on_hold, in_fulfillment, shipped, delivered, cancellation_requested, cancelled."
]
}
}
}{
"error": {
"code": "unauthorized",
"message": "Missing or invalid API key.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}{
"error": {
"code": "insufficient_scope",
"message": "This API key does not have the orders:read scope.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}{
"error": {
"code": "number_taken",
"message": "Another order is already numbered API-B2B-871: send a different number.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}{
"error": {
"code": "string",
"message": "string",
"request_id": "string",
"details": {}
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests: retry after the number of seconds in Retry-After.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}/orders/{order}Get an order
orders:read scope.One order, by number or id. Scope orders:read.
Path parameters
orderstringrequiredThe order number (
1042,%231042) or the orderid.Example:1042
Responses
200The order.application/json
HeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
idstring (uuid)requirednumberstringrequiredExample:#1042statusstringrequiredOne ofreceivedon_holdin_fulfillmentshippeddeliveredcancellation_requestedcancelledchannelstring | nullWhere the order comes from, for example
shopify;nucleo_apifor orders created withPOST /orders.placed_atstring (date-time) | nullupdated_atstring (date-time) | nullpayment_statusstring | nullOne ofpendingauthorizedpaidcapturedpartially_refundedrefundedvoidedexpirednullon_holdbooleancustomerobjectChild attributes
namestring | nullemailstring | nullphonestring | null
shipping_addressAddressChild attributes
first_namestring | nulllast_namestring | nullcompanystring | nulladdress1string | nulladdress2string | nullcitystring | nullpostal_codestring | nullprovince_codestring | nullcountry_codestring | nullISO 3166-1 alpha-2.
phonestring | null
billing_addressAddress | nullAddress
first_namestring | nulllast_namestring | nullcompanystring | nulladdress1string | nulladdress2string | nullcitystring | nullpostal_codestring | nullprovince_codestring | nullcountry_codestring | nullISO 3166-1 alpha-2.
phonestring | null
shippingobjectThe shipping method the customer chose.
Child attributes
method_codestring | nullmethod_namestring | null
currencystringtotalsobjectcurrent_totalis the total after edits and cancellations;refundedwhat was refunded on the sales channel.Child attributes
subtotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
discountsMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
shippingMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
taxMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
totalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
current_totalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
refundedMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
linesarray of OrderLinerequiredAttributes of each item
line_idstringskustring | nullbarcodestring | nulltitlestring | nullquantityintegerquantity_cancelledintegerquantity_shippedintegerunit_priceMoneyTax included.
Child attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
totalMoneyTax included.
Child attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
tax_ratestringPercentage as a decimal string, for example
22.00.
shipmentsarray of ShipmentAttributes of each item
idstringstatusstringOne oflabel_createdconfirmedshippeddeliveredvoidedlocation_codestring | nullThe location that shipped it.
carrierobjectChild attributes
codestring | nullnamestring | nullservicestring | null
tracking_urlstring | nulltracking_numbersarray of stringshipped_atstring (date-time) | nulldelivered_atstring (date-time) | nulllinesarray of objectAttributes of each item
line_idstring | nullquantityinteger
refundsarray of RefundAttributes of each item
idstringreturn_idstring | nullThe return it belongs to, if any.
refunded_atstring (date-time) | nulltotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
shippingMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
linesarray of objectAttributes of each item
line_idstring | nullskustring | nullbarcodestring | nullquantityintegersubtotalMoneyChild attributes
amountstringrequiredDecimal string with two decimals.
Example:180.00currencystringrequiredISO 4217 code.
Example:EUR
returnsarray of objectThe returns opened on the order; read each one with
GET /returns/{return}.Attributes of each item
idstringnumberstring | nullstatusstringOne ofrequestedawaiting_receiptin_transitreceivedcompliantnot_compliantclosedcancelled
cancellationobject | nullPresent when the order is cancelled or its cancellation is requested.
object
reasonstring | nullcancelled_atstring (date-time) | null
401
unauthorized: the key is missing or wrong, or the call comes from an IP outside the connection's allowlist.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
403The key is right but cannot do this:
insufficient_scope(the key lacks the scope of the call),connection_pausedorconnection_not_active(the connection is paused or not turned on yet). application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
404
order_not_foundorreturn_not_found.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
429
rate_limited: wait for the seconds inRetry-After.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.Retry-AfterSeconds to wait before the next call.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
curl -X GET https://api-commerce.nucleoplatform.com/api/commerce/v1/orders/1042 \
-H "Authorization: Bearer $NUCLEO_ACCESS_TOKEN" \
-H 'Accept: application/json'const res = await fetch("https://api-commerce.nucleoplatform.com/api/commerce/v1/orders/1042", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.NUCLEO_ACCESS_TOKEN}`,
Accept: "application/json",
},
});
const data = await res.json();
console.log(res.status, data);<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://api-commerce.nucleoplatform.com/api/commerce/v1/orders/1042', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('NUCLEO_ACCESS_TOKEN'),
'Accept' => 'application/json',
],
'http_errors' => false,
]);
echo $response->getStatusCode(), PHP_EOL;
echo $response->getBody();{
"id": "9b2f4c1e-5d7a-4e8b-9c3d-2a1f0e6b7c8d",
"number": "#1042",
"status": "received",
"channel": "string",
"placed_at": "2026-10-01T09:30:00Z",
"updated_at": "2026-10-01T09:30:00Z",
"payment_status": "pending",
"on_hold": true,
"customer": {
"name": "string",
"email": "string",
"phone": "string"
},
"shipping_address": {
"first_name": "string",
"last_name": "string",
"company": "string",
"address1": "string",
"address2": "string",
"city": "string",
"postal_code": "string",
"province_code": "string",
"country_code": "string",
"phone": "string"
},
"billing_address": {
"first_name": "string",
"last_name": "string",
"company": "string",
"address1": "string",
"address2": "string",
"city": "string",
"postal_code": "string",
"province_code": "string",
"country_code": "string",
"phone": "string"
},
"shipping": {
"method_code": "string",
"method_name": "string"
},
"currency": "string",
"totals": {
"subtotal": {
"amount": "180.00",
"currency": "EUR"
},
"discounts": {
"amount": "180.00",
"currency": "EUR"
},
"shipping": {
"amount": "180.00",
"currency": "EUR"
},
"tax": {
"amount": "180.00",
"currency": "EUR"
},
"total": {
"amount": "180.00",
"currency": "EUR"
},
"current_total": {
"amount": "180.00",
"currency": "EUR"
},
"refunded": {
"amount": "180.00",
"currency": "EUR"
}
},
"lines": [
{
"line_id": "string",
"sku": "string",
"barcode": "string",
"title": "string",
"quantity": 1,
"quantity_cancelled": 1,
"quantity_shipped": 1,
"unit_price": {
"amount": "180.00",
"currency": "EUR"
},
"total": {
"amount": "180.00",
"currency": "EUR"
},
"tax_rate": "string"
}
],
"shipments": [
{
"id": "string",
"status": "label_created",
"location_code": "string",
"carrier": {
"code": "string",
"name": "string",
"service": "string"
},
"tracking_url": "string",
"tracking_numbers": [
"string"
],
"shipped_at": "2026-10-01T09:30:00Z",
"delivered_at": "2026-10-01T09:30:00Z",
"lines": [
{
"line_id": "string",
"quantity": 1
}
]
}
],
"refunds": [
{
"id": "string",
"return_id": "string",
"refunded_at": "2026-10-01T09:30:00Z",
"total": {
"amount": "180.00",
"currency": "EUR"
},
"shipping": {
"amount": "180.00",
"currency": "EUR"
},
"lines": [
{
"line_id": "string",
"sku": "string",
"barcode": "string",
"quantity": 1,
"subtotal": {
"amount": "180.00",
"currency": "EUR"
}
}
]
}
],
"returns": [
{
"id": "string",
"number": "string",
"status": "requested"
}
],
"cancellation": {
"reason": "string",
"cancelled_at": "2026-10-01T09:30:00Z"
}
}{
"error": {
"code": "unauthorized",
"message": "Missing or invalid API key.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}{
"error": {
"code": "insufficient_scope",
"message": "This API key does not have the orders:read scope.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}{
"error": {
"code": "order_not_found",
"message": "Order 1042 not found.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests: retry after the number of seconds in Retry-After.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}/orders/{order}/timelineGet an order's timeline
orders:read scope.What happened to the order, oldest first: status changes, holds, address and line changes,
shipments, returns and refunds. Internal events (routing, notes, customer care) are not listed.
Scope orders:read.
Path parameters
orderstringrequiredThe order number (
1042,%231042) or the orderid.Example:1042
Responses
200The order's public events.application/json
HeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
dataarray of TimelineEventrequiredAttributes of each item
typestringOne oforder.receivedorder.status_changedorder.hold_placedorder.hold_releasedorder.address_changedorder.shipping_method_changedorder.lines_changedorder.lines_cancelledorder.item_replacedorder.reship_createdorder.refunded_on_channelshipment.confirmedshipment.shippedshipment.tracking_updatedshipment.voidedreturn.requestedreturn.status_changedstore.ready_for_pickupstore.collectedfrom_statusstring | nullFor status changes, the public status before (an order status, or a return status for
return.status_changed).to_statusstring | nulloccurred_atstring (date-time) | null
401
unauthorized: the key is missing or wrong, or the call comes from an IP outside the connection's allowlist.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
403The key is right but cannot do this:
insufficient_scope(the key lacks the scope of the call),connection_pausedorconnection_not_active(the connection is paused or not turned on yet). application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
404
order_not_foundorreturn_not_found.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
429
rate_limited: wait for the seconds inRetry-After.application/jsonHeadersX-Request-IdThe id of this call. Quote it if you contact support; errors repeat it asrequest_id.Retry-AfterSeconds to wait before the next call.
errorobjectrequiredChild attributes
codestringrequiredMachine-readable code. Branch on this, never on
message.messagestringrequiredrequest_idstringrequireddetailsobjectFor
validation_failed, the messages per parameter.
curl -X GET https://api-commerce.nucleoplatform.com/api/commerce/v1/orders/1042/timeline \
-H "Authorization: Bearer $NUCLEO_ACCESS_TOKEN" \
-H 'Accept: application/json'const res = await fetch("https://api-commerce.nucleoplatform.com/api/commerce/v1/orders/1042/timeline", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.NUCLEO_ACCESS_TOKEN}`,
Accept: "application/json",
},
});
const data = await res.json();
console.log(res.status, data);<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://api-commerce.nucleoplatform.com/api/commerce/v1/orders/1042/timeline', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('NUCLEO_ACCESS_TOKEN'),
'Accept' => 'application/json',
],
'http_errors' => false,
]);
echo $response->getStatusCode(), PHP_EOL;
echo $response->getBody();{
"data": [
{
"type": "order.received",
"from_status": null,
"to_status": null,
"occurred_at": "2026-10-12T09:14:00Z"
},
{
"type": "order.status_changed",
"from_status": "received",
"to_status": "in_fulfillment",
"occurred_at": "2026-10-12T09:15:02Z"
},
{
"type": "shipment.shipped",
"from_status": null,
"to_status": null,
"occurred_at": "2026-10-12T16:40:11Z"
}
]
}{
"error": {
"code": "unauthorized",
"message": "Missing or invalid API key.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}{
"error": {
"code": "insufficient_scope",
"message": "This API key does not have the orders:read scope.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}{
"error": {
"code": "order_not_found",
"message": "Order 1042 not found.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}{
"error": {
"code": "rate_limited",
"message": "Too many requests: retry after the number of seconds in Retry-After.",
"request_id": "1f7e3c2a-9b8d-4e6f-a5c4-3b2a1d0e9f8c"
}
}