Get a return
curl --request GET \
--url https://api.cubbo.com/v1/returns/{return_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cubbo.com/v1/returns/{return_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cubbo.com/v1/returns/{return_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cubbo.com/v1/returns/{return_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.cubbo.com/v1/returns/{return_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.cubbo.com/v1/returns/{return_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cubbo.com/v1/returns/{return_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": 98765,
"status": "PENDING",
"return_type": "TO_BE_DETERMINED",
"resolved_at": null,
"notes": "Customer changed their mind",
"expected_products": [
{
"product_id": 5551,
"quantity": 1,
"skus": [
"SKU-RED-M"
]
}
],
"return_products": [
{
"product_id": 5551,
"name": "Red T-shirt M",
"barcode": "7501234567890",
"quantity": 1,
"skus": [
"SKU-RED-M"
],
"image_url": "/rails/active_storage/blobs/redirect/abc123/red-tshirt.png"
},
{
"product_id": 5560,
"name": "Smartphone 128GB",
"barcode": "7509876543210",
"quantity": 1,
"skus": [
"PHONE-BLK-128"
],
"image_url": null,
"unit_codes": [
"IMEI-000000000000001"
]
}
],
"returned_order_id": 445566,
"returned_order_number": "ORD-0001",
"created_at": "2026-10-12T15:04:05.123Z"
}Returns
Get a return
Returns the current state of one return of your store: its status and type, what the customer
declared is coming back (expected_products), and the products of the original order that can
be received (return_products). Use it to follow a return after creating it, or to check a
return reported on an order (returned_order_id / returned_order_number).
- For products tracked by unit code (IMEI or serial number), each
return_productsentry also lists theunit_codesthat shipped on the original order. Products that do not track unit codes never carry that key. - A return that does not exist or does not belong to one of your stores answers 404.
GET
/
returns
/
{return_id}
Get a return
curl --request GET \
--url https://api.cubbo.com/v1/returns/{return_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cubbo.com/v1/returns/{return_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cubbo.com/v1/returns/{return_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cubbo.com/v1/returns/{return_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.cubbo.com/v1/returns/{return_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.cubbo.com/v1/returns/{return_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cubbo.com/v1/returns/{return_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": 98765,
"status": "PENDING",
"return_type": "TO_BE_DETERMINED",
"resolved_at": null,
"notes": "Customer changed their mind",
"expected_products": [
{
"product_id": 5551,
"quantity": 1,
"skus": [
"SKU-RED-M"
]
}
],
"return_products": [
{
"product_id": 5551,
"name": "Red T-shirt M",
"barcode": "7501234567890",
"quantity": 1,
"skus": [
"SKU-RED-M"
],
"image_url": "/rails/active_storage/blobs/redirect/abc123/red-tshirt.png"
},
{
"product_id": 5560,
"name": "Smartphone 128GB",
"barcode": "7509876543210",
"quantity": 1,
"skus": [
"PHONE-BLK-128"
],
"image_url": null,
"unit_codes": [
"IMEI-000000000000001"
]
}
],
"returned_order_id": 445566,
"returned_order_number": "ORD-0001",
"created_at": "2026-10-12T15:04:05.123Z"
}Authorizations
Path Parameters
Response
The return.
Response of GET /returns/{return_id}.
Lifecycle status of a return.
PENDING: created and waiting for a decision (review of a customer request, or decision on an order returned by the carrier).REQUESTED: resolved; the customer has the return instructions and the goods are expected back.ORDERED: resolved by creating a new (replacement or resend) order.CANCELLED: cancelled before the goods came back; reserved stock was released.ARRIVED_AT_WAREHOUSE: the package arrived at the warehouse and is waiting to be processed.AWAITING_INSPECTION: the package was opened and is waiting for inspection of its contents.RECEIVED: the goods were checked in and are being re-entered into inventory.REENTERED: the goods were fully re-entered into inventory; the return is complete.UNSUCCESSFUL: closed without receiving anything; every expected product was missing on reception.
Available options:
PENDING, REQUESTED, ORDERED, CANCELLED, ARRIVED_AT_WAREHOUSE, AWAITING_INSPECTION, RECEIVED, REENTERED, UNSUCCESSFUL Example:
"PENDING"
What kind of return this is.
TO_BE_DETERMINED: requested by the customer or by you, not yet reviewed; the outcome (simple return, exchange, rejection) is decided later.SIMPLE_RETURN: the customer sends the goods back; no replacement is shipped.EXCHANGE: the customer sends the goods back and replacement items (exchange_products) are reserved to ship once the return arrives.IMMEDIATE_EXCHANGE: replacement items ship right away, before the return arrives (created from the Cubbo app, not through this API).RETURNED_BY_CARRIER: the carrier could not deliver the order and brought it back; decide it withPOST /returns/{return_id}/decision.UNIDENTIFIED: a package arrived at the warehouse that could not be matched to an order (created by warehouse staff).
Available options:
TO_BE_DETERMINED, SIMPLE_RETURN, EXCHANGE, IMMEDIATE_EXCHANGE, RETURNED_BY_CARRIER, UNIDENTIFIED Example:
"TO_BE_DETERMINED"