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

# Assign Fulfillment Center


POST https://api.shipbob.com/2026-07/shipment/{shipmentId}:assignFulfillmentCenter
Content-Type: application/json

Assigns a specific fulfillment center to a shipment, overriding the automatically selected one. The caller must have access to the target fulfillment center.

**Important — asynchronous inventory re-evaluation:** This action does NOT pre-check inventory availability at the target fulfillment center. The assignment succeeds immediately and inventory allocation re-evaluates the shipment asynchronously; if stock is missing at the target FC the shipment may land in an exception state. It also does not revalidate that the target fulfillment center supports the shipment's current shipping service. Both behaviors mirror the merchant dashboard.

**Validation:** The action is rejected when the shipment is already picked, being picked, or sorted by the warehouse; cancelled; shipped or completed; a Kitting shipment; an Automated Amazon FBA shipment; or when the target fulfillment center is inactive or not accessible to the caller.

**Note on error handling:** This endpoint returns HTTP 200 for both successful and failed operations. Always check the `is_success` field in the response body; when `is_success` is `false`, the `error` object contains the code and message. HTTP 400 is only returned when the request body itself is missing (null); a missing or non-positive `fulfillment_center_id` is returned as HTTP 200 with `is_success: false`.


Reference: https://developer.shipbob.com/api/orders/assign-fulfillment-center

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: api-2026-07
  version: 1.0.0
paths:
  /2026-07/shipment/{shipmentId}:assignFulfillmentCenter:
    post:
      operationId: assign-fulfillment-center
      summary: |
        Assign Fulfillment Center
      description: >
        Assigns a specific fulfillment center to a shipment, overriding the
        automatically selected one. The caller must have access to the target
        fulfillment center.


        **Important — asynchronous inventory re-evaluation:** This action does
        NOT pre-check inventory availability at the target fulfillment center.
        The assignment succeeds immediately and inventory allocation
        re-evaluates the shipment asynchronously; if stock is missing at the
        target FC the shipment may land in an exception state. It also does not
        revalidate that the target fulfillment center supports the shipment's
        current shipping service. Both behaviors mirror the merchant dashboard.


        **Validation:** The action is rejected when the shipment is already
        picked, being picked, or sorted by the warehouse; cancelled; shipped or
        completed; a Kitting shipment; an Automated Amazon FBA shipment; or when
        the target fulfillment center is inactive or not accessible to the
        caller.


        **Note on error handling:** This endpoint returns HTTP 200 for both
        successful and failed operations. Always check the `is_success` field in
        the response body; when `is_success` is `false`, the `error` object
        contains the code and message. HTTP 400 is only returned when the
        request body itself is missing (null); a missing or non-positive
        `fulfillment_center_id` is returned as HTTP 200 with `is_success:
        false`.
      tags:
        - orders
      parameters:
        - name: shipmentId
          in: path
          description: Unique identifier of the shipment
          required: true
          schema:
            $ref: >-
              #/components/schemas/Orders.Post.Api.V.Version.Shipment.ShipmentId.AssignFulfillmentCenter.ShipmentId.Integer
        - name: Authorization
          in: header
          description: Authentication using Personal Access Token (PAT) token
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Orders.ShipmentApiResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Orders.ErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Orders.AssignFulfillmentCenterRequest'
servers:
  - url: https://api.shipbob.com
    description: https://api.shipbob.com
  - url: https://sandbox-api.shipbob.com
    description: https://sandbox-api.shipbob.com
components:
  schemas:
    Orders.Post.Api.V.Version.Shipment.ShipmentId.AssignFulfillmentCenter.ShipmentId.Integer:
      type: integer
      title: >-
        Orders.Post.Api.V.Version.Shipment.ShipmentId.AssignFulfillmentCenter.ShipmentId.Integer
    Orders.AssignFulfillmentCenterRequest:
      type: object
      properties:
        fulfillment_center_id:
          type: integer
          description: >-
            Unique identifier of the fulfillment center to assign to the
            shipment. The caller must have access to it and it must be active.
      required:
        - fulfillment_center_id
      title: Orders.AssignFulfillmentCenterRequest
    Orders.ErrorCode:
      type: string
      enum:
        - INVALID_PARAMETER
        - VALIDATION_ERROR
        - DATABASE_UPDATE_ERROR
        - REPROCESSING_ERROR
        - DEALLOCATE_ERROR
        - NOT_FOUND
        - CONFLICT
      title: Orders.ErrorCode
    Orders.ErrorResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/Orders.ErrorCode'
          description: Error code identifying the type of error
        message:
          type:
            - string
            - 'null'
          description: Human-readable description of the error
      title: Orders.ErrorResponse
    Orders.ShipmentApiResponse:
      type: object
      properties:
        error:
          oneOf:
            - $ref: '#/components/schemas/Orders.ErrorResponse'
            - type: 'null'
          description: Error details if the update was not successful
        id:
          type: integer
          format: int64
          description: Unique identifier of the shipment
        is_success:
          type: boolean
          description: Indicates whether the update was successful
      title: Orders.ShipmentApiResponse
  securitySchemes:
    PAT:
      type: http
      scheme: bearer
      description: Authentication using Personal Access Token (PAT) token
    OAuth2:
      type: http
      scheme: bearer
      description: OAuth2 authentication using JWT tokens

```

## Examples



**Request**

```json
{
  "fulfillment_center_id": 10
}
```

**Response**

```json
{
  "id": 123456,
  "is_success": true
}
```

**SDK Code**

```python default
import requests

url = "https://api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter"

payload = { "fulfillment_center_id": 10 }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript default
const url = 'https://api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"fulfillment_center_id":10}'
};

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

```go default
package main

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

func main() {

	url := "https://api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter"

	payload := strings.NewReader("{\n  \"fulfillment_center_id\": 10\n}")

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

	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 default
require 'uri'
require 'net/http'

url = URI("https://api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"fulfillment_center_id\": 10\n}"

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

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

HttpResponse<String> response = Unirest.post("https://api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"fulfillment_center_id\": 10\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter', [
  'body' => '{
  "fulfillment_center_id": 10
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp default
using RestSharp;

var client = new RestClient("https://api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"fulfillment_center_id\": 10\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift default
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["fulfillment_center_id": 10] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter")! 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()
```