Update Parcel Status
curl --request POST \
--url https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses \
--header 'Content-Type: application/json' \
--data '
{
"merchantParcelStatusCode": "Delivered"
}
'import requests
url = "https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses"
payload = { "merchantParcelStatusCode": "Delivered" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({merchantParcelStatusCode: 'Delivered'})
};
fetch('https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses', 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://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'merchantParcelStatusCode' => 'Delivered'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses"
payload := strings.NewReader("{\n \"merchantParcelStatusCode\": \"Delivered\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses")
.header("Content-Type", "application/json")
.body("{\n \"merchantParcelStatusCode\": \"Delivered\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"merchantParcelStatusCode\": \"Delivered\"\n}"
response = http.request(request)
puts response.read_body{
"Success": true
}Update parcel status (Merchant to Global-e)
Notify Global-e of a parcel’s status change. The notification is handled asynchronously until the new parcel status is successfully updated.
POST
/
orders
/
{orderId}
/
parcels
/
{parcelCode}
/
statuses
Update Parcel Status
curl --request POST \
--url https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses \
--header 'Content-Type: application/json' \
--data '
{
"merchantParcelStatusCode": "Delivered"
}
'import requests
url = "https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses"
payload = { "merchantParcelStatusCode": "Delivered" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({merchantParcelStatusCode: 'Delivered'})
};
fetch('https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses', 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://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'merchantParcelStatusCode' => 'Delivered'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses"
payload := strings.NewReader("{\n \"merchantParcelStatusCode\": \"Delivered\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses")
.header("Content-Type", "application/json")
.body("{\n \"merchantParcelStatusCode\": \"Delivered\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{globale_api_domain}/orders/{orderId}/parcels/{parcelCode}/statuses")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"merchantParcelStatusCode\": \"Delivered\"\n}"
response = http.request(request)
puts response.read_body{
"Success": true
}Make sure your integration follows the latest authentication and IP whitelisting guidelines.
If the status update to the new status requested by the merchant is not allowed, or if the parcel has not yet been created, manual intervention by Global-e will be required.
Prerequisites
When using this call for the Buy-Online-Pick-In-Store (BOPIS) procedure, theUpdateParcelStatus call is initiated by the merchant following the issue of the UpdateOrderDispatchV2 call.
Error codes
The following error code may be returned in the response.| # | Code | Error Message | Description |
|---|---|---|---|
| 1 | B001 | Order ID not found | The Order ID provided by the merchant does not exist. |
Path Parameters
Body
application/json
Response
200 - application/json
Status update accepted. Check the Success field; on failure, Error carries the message (and is omitted from the JSON when the call succeeds).

