> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://ups.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://ups.ferndocs.com/_mcp/server.

# Close Out Shipment

POST https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/{shipment-gccn}
Content-Type: application/json

Finalizes the shipment process by marking a package or set of packages as ready for dispatch, effectively ending the consolidation stage.


Reference: https://ups.ferndocs.com/api-reference/world-ease-shipment-management/world-ease-shipment-management-shipment/save-close-out-shipment

## Authentication

- `Authorization` header (bearer token, required) — Find your Client ID and Secret on your app info page. 1. Select "Try It" 2. In the Security section enter your Client ID and Secret 3. Select "Request Token" 4. Enter any additional information in the Body and Parameters sections 5. Select "Send" to execute your API request"

## Servers

- `https://wwwcie.ups.com/api/ship/v1` (Customer Integration Environment, default)
- `https://onlinetools.ups.com/api/ship/v1` (Production)

## Request

### Path parameters

- `shipment-gccn` (string, required) — The unique identifier of the shipment to close Out. It also known as GCCN.
- `version` (enum, required, default: v1) — Indicates WorldEase Shipment Management API to display the new release features
  - Allowed values: `v1`

### Headers

- `transId` (string, required) — Client generated id which is treated as the Transaction ID
- `transactionSrc` (string, required) — An identifier of the client/source application that is making the request.Length 512

### Body (application/json)

This endpoint expects a PostRequest.

- `shipperAccountNumber` (string, required) — This is the unique account number associated with the Shipper. It is also known as UPS Shipper Account Number

## Response

### 202

Request accepted

- `transId` (string, required) — Client generated id which is treated as the Transaction ID
- `label` (PostResponseLabel, required) — This will contain master shipment label

## Errors

### 400 Bad Request Error

Missing required values or incorrect values or validation fails

- `errors` (list of Error, required) — error payload - array containing one or more Errors

### 401 Unauthorized Error

Unauthorized

- `errors` (list of Error, required) — error payload - array containing one or more Errors

### 404 Not Found Error

Not Found

- `errors` (list of Error, required) — error payload - array containing one or more Errors

## Types

### PostResponseLabel

This will contain master shipment label

- `opTyp` (enum, optional) — The is the output type in which label is generated
  - Allowed values: `PNG`, `GIF`, `PDF`, `ZPL`, `EPL`, `STAR`, `SPL`
- `lblNmbr` (string, optional) — The label number assigned to this label
- `lblData` (string, optional) — Base64 encoded label image

### Error

- `code` (string, optional) — The code is specific to the error
- `message` (string, optional) — The message that associated with the above error code

## Examples

### CloseOutResponse

**Response**

```json
{
  "transId": "4ce27ff5-8e17-4797-a8c1-089796db",
  "label": {
    "opTyp": "PNG",
    "lblNmbr": "MVpJU1VTMDE2NzIzODc4Mjc3",
    "lblData": "asdfhkjuiovrtyuiopfghjkxcv"
  }
}
```

**SDK Code**

```python CloseOutResponse
import requests

url = "https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn"

headers = {
    "transId": "4ce27ff5-8e17-4797-a8c1-089796db",
    "transactionSrc": "SAM",
    "Authorization": "Bearer <token>"
}

response = requests.post(url, headers=headers)

print(response.json())
```

```javascript CloseOutResponse
const url = 'https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn';
const options = {
  method: 'POST',
  headers: {
    transId: '4ce27ff5-8e17-4797-a8c1-089796db',
    transactionSrc: 'SAM',
    Authorization: 'Bearer <token>'
  }
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go CloseOutResponse
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn"

	req, _ := http.NewRequest("POST", url, nil)

	req.Header.Add("transId", "4ce27ff5-8e17-4797-a8c1-089796db")
	req.Header.Add("transactionSrc", "SAM")
	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby CloseOutResponse
require 'uri'
require 'net/http'

url = URI("https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["transId"] = '4ce27ff5-8e17-4797-a8c1-089796db'
request["transactionSrc"] = 'SAM'
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java CloseOutResponse
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn")
  .header("transId", "4ce27ff5-8e17-4797-a8c1-089796db")
  .header("transactionSrc", "SAM")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php CloseOutResponse
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'transId' => '4ce27ff5-8e17-4797-a8c1-089796db',
    'transactionSrc' => 'SAM',
  ],
]);

echo $response->getBody();
```

```csharp CloseOutResponse
using RestSharp;

var client = new RestClient("https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn");
var request = new RestRequest(Method.POST);
request.AddHeader("transId", "4ce27ff5-8e17-4797-a8c1-089796db");
request.AddHeader("transactionSrc", "SAM");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift CloseOutResponse
import Foundation

let headers = [
  "transId": "4ce27ff5-8e17-4797-a8c1-089796db",
  "transactionSrc": "SAM",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### CloseOutRequest

**Request**

```json
{
  "shipperAccountNumber": "ISUS01"
}
```

**Response**

```json
{
  "transId": "4ce27ff5-8e17-4797-a8c1-089796db",
  "label": {
    "opTyp": "PNG",
    "lblNmbr": "MVpJU1VTMDE2NzIzODc4Mjc3",
    "lblData": "asdfhkjuiovrtyuiopfghjkxcv"
  }
}
```

**SDK Code**

```python CloseOutRequest
import requests

url = "https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn"

payload = { "shipperAccountNumber": "ISUS01" }
headers = {
    "transId": "4ce27ff5-8e17-4797-a8c1-089796db",
    "transactionSrc": "SAM",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript CloseOutRequest
const url = 'https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn';
const options = {
  method: 'POST',
  headers: {
    transId: '4ce27ff5-8e17-4797-a8c1-089796db',
    transactionSrc: 'SAM',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"shipperAccountNumber":"ISUS01"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go CloseOutRequest
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn"

	payload := strings.NewReader("{\n  \"shipperAccountNumber\": \"ISUS01\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("transId", "4ce27ff5-8e17-4797-a8c1-089796db")
	req.Header.Add("transactionSrc", "SAM")
	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby CloseOutRequest
require 'uri'
require 'net/http'

url = URI("https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["transId"] = '4ce27ff5-8e17-4797-a8c1-089796db'
request["transactionSrc"] = 'SAM'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"shipperAccountNumber\": \"ISUS01\"\n}"

response = http.request(request)
puts response.read_body
```

```java CloseOutRequest
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn")
  .header("transId", "4ce27ff5-8e17-4797-a8c1-089796db")
  .header("transactionSrc", "SAM")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"shipperAccountNumber\": \"ISUS01\"\n}")
  .asString();
```

```php CloseOutRequest
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn', [
  'body' => '{
  "shipperAccountNumber": "ISUS01"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'transId' => '4ce27ff5-8e17-4797-a8c1-089796db',
    'transactionSrc' => 'SAM',
  ],
]);

echo $response->getBody();
```

```csharp CloseOutRequest
using RestSharp;

var client = new RestClient("https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn");
var request = new RestRequest(Method.POST);
request.AddHeader("transId", "4ce27ff5-8e17-4797-a8c1-089796db");
request.AddHeader("transactionSrc", "SAM");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"shipperAccountNumber\": \"ISUS01\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift CloseOutRequest
import Foundation

let headers = [
  "transId": "4ce27ff5-8e17-4797-a8c1-089796db",
  "transactionSrc": "SAM",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["shipperAccountNumber": "ISUS01"] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://wwwcie.ups.com/api/ship/v1/master-shipment/closeout/shipment-gccn")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```