# Update a Sales Order

ShipEngine allows users to update sales orders manually via the API.

## Minimum Required Information

- `order_date`
- `ship_to` for every sales order item, if any


## Important Notes

Important
Your sales order will be completely replaced with the information you provide in the request. Key identifying information like `external_order_id` and `order_source` cannot be changed.

## API Endpoint

**PUT /v-beta/sales_orders/:sales_order_id**

## Example Request


```http
PUT /v-beta/sales_orders/32e18d70-52e0-5002-ab7a-ae33843c2187 HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__
Content-Type: application/json
```


```json
{
  "order_date": "2019-07-25T15:24:46.657Z",
  "payment_details": {
    "subtotal": {"currency": "usd", "amount": 200},
    "estimated_shipping": {"currency": "usd", "amount": 10},
    "estimated_tax": {"currency": "usd", "amount": 5},
    "grand_total": {"currency": "usd", "amount": 215}
  },
  "customer": {
    "name": "Amanda Miller",
    "phone": "555-555-5555",
    "email": "example@example.com"
  },
  "bill_to": {
    "email": "example@example.com",
    "address": {
      "name": "Amanda Miller",
      "phone": "555-555-5555",
      "address_line1": "525 S Winchester Blvd",
      "city_locality": "San Jose",
      "state_province": "CA",
      "postal_code": "95128",
      "country_code": "US",
      "address_residential_indicator": "yes"
    }
  },
  "ship_to": {
    "name": "Amanda Miller",
    "phone": "555-555-5555",
    "address_line1": "525 S Winchester Blvd",
    "city_locality": "San Jose",
    "state_province": "CA",
    "postal_code": "95128",
    "country_code": "US",
    "address_residential_indicator": "yes"
  },
  "sales_order_items": [{
    "sales_order_item_id": "02202633-d038-5cfc-bdc2-777968435771",
    "line_item_details": {
      "name": "ball of string A",
      "sku": "ball of string A"
    },
    "price_summary": {
      "unit_price": {"currency": "usd", "amount": 200}
    },
    "ship_to": {
      "name": "Amanda Miller",
      "phone": "555-555-5555",
      "address_line1": "525 S Winchester Blvd",
      "city_locality": "San Jose",
      "state_province": "CA",
      "postal_code": "95128",
      "country_code": "US",
      "address_residential_indicator": "yes"
    },
    "quantity": 4,
    "is_gift": false
  }]
}
```

## Key Limitations

### Updating Sales Order Items

- You can only update existing sales order items
- Cannot add or remove items from a sales order
- Include all items in your request, even unchanged ones
- Items are identified by `sales_order_item_id`


### Order Source Restrictions

You may only use the API to update sales orders with an `api` order source. Amazon or Shopify orders must be updated through their respective platforms.

### Shipping Addresses

- Specify `ship_to` for the entire order OR for each individual item
- If specified at order level, applies to all items
- Can specify at both levels if addresses are identical