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

# Submit an inbound PO

POST https://dream.rushorder.com/api/inbound
Content-Type: application/json

Submit an advance shipment notice with a purchase order number expected delivery date, shipment notes, contact email, and items. The PO number must be unique for each ASN. Upon submission and later approval for receiving, you will receive an email notification.

Reference: https://docs.rushorder.com/api-reference/inbound/submit

## Authentication

- `Authorization` header (basic auth, required) — Basic authentication of the form `Basic <base64(username:password)>`.

## Request

### Headers

- `RushOrderMomCode` (string, required) — All requests require the header to contain RushOrderMomCode, a 3 character string that represents the client internally in Rush Order. This should be given to you by Rush Order.

### Body (application/json)

This endpoint expects an object.

- `ExpectedDeliveryDate` (datetime, required) — The expected delivery date for the PO, in MM/DD/YY format.
- `POReferenceNumber` (string, required) — The reference number for the PO.
- `Notes` (string, required) — Any additional notes or comments about the PO.
- `ContainerLoad` (enum, required) — The type of container load for the PO.
  - Allowed values: `floor-loaded`, `palletized`
- `HazardType` (enum, required) — The hazard type for the PO.
  - Allowed values: `N/A`, `batteries`, `gas`, `liquid`
- `Location` (enum, required) — The location for the PO.
  - Allowed values: `ca`, `ny`, `tx`, `ont`, `eu`, `uk`, `hk`, `au`, `tec`, `oth`
- `Email` (string, required) — The email address for the person submitting the PO.
- `Items` (list of InboundPostRequestBodyContentApplicationJsonSchemaItemsItems, required) — The list of items to be included in the PO.
- `BillOfLading` (string, optional) — The bill of lading or tracking number for the shipment. Together with `POReferenceNumber`, it identifies the inbound PO, so pass the same value to later lookups, appointments, and cancellations.

## Response

### 200

Success

- `Success` (boolean, optional) — Indicates whether the request was successful or not
- `Error` (string, optional) — An error message in case the request failed
- `Message` (string, optional) — A message that provides additional information about the response

## Errors

### 400 Bad Request Error

The request was rejected, either as a malformed request body or because a line item could not be accepted. Item-level failures carry Success and Error fields explaining the problem; malformed requests return an empty body.

- `Success` (boolean, optional) — Indicates if the request was successful.
- `Error` (string, optional) — The error message describing why the request was bad.

### 401 Unauthorized Error

Access token is missing or invalid

- `any`

### 409 Conflict Error

The requested item was already submitted

- `any`

## Types

### InboundPostRequestBodyContentApplicationJsonSchemaItemsItems

- `Sku` (string, required) — The SKU of the item.
- `Description` (string, required) — A description of the item.
- `QtyExpected` (integer, required) — The expected quantity of the item.
- `LineId` (string, optional) — The line ID of the item.

## Examples

**Request**

```json
{
  "ExpectedDeliveryDate": "2024-01-15T09:30:00Z",
  "POReferenceNumber": "string",
  "Notes": "string",
  "ContainerLoad": "floor-loaded",
  "HazardType": "N/A",
  "Location": "ca",
  "Email": "string",
  "Items": [
    {
      "Sku": "string",
      "Description": "string",
      "QtyExpected": 1
    }
  ]
}
```

**Response**

```json
{
  "Success": true,
  "Error": "string",
  "Message": "string"
}
```

**SDK Code**

```python
import requests

url = "https://dream.rushorder.com/api/inbound"

payload = {
    "ExpectedDeliveryDate": "2024-01-15T09:30:00Z",
    "POReferenceNumber": "string",
    "Notes": "string",
    "ContainerLoad": "floor-loaded",
    "HazardType": "N/A",
    "Location": "ca",
    "Email": "string",
    "Items": [
        {
            "Sku": "string",
            "Description": "string",
            "QtyExpected": 1
        }
    ]
}
headers = {
    "RushOrderMomCode": "ABC"
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers, auth=("<username>", "<password>"))

print(response.json())
```

```javascript
const url = 'https://dream.rushorder.com/api/inbound';
const credentials = btoa("<username>:<password>");

const options = {
  method: 'POST',
  headers: {
    RushOrderMomCode: 'ABC',
    Authorization: `Basic ${credentials}`,
    'Content-Type': 'application/json'
  },
  body: '{"ExpectedDeliveryDate":"2024-01-15T09:30:00Z","POReferenceNumber":"string","Notes":"string","ContainerLoad":"floor-loaded","HazardType":"N/A","Location":"ca","Email":"string","Items":[{"Sku":"string","Description":"string","QtyExpected":1}]}'
};

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

```go
package main

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

func main() {

	url := "https://dream.rushorder.com/api/inbound"

	payload := strings.NewReader("{\n  \"ExpectedDeliveryDate\": \"2024-01-15T09:30:00Z\",\n  \"POReferenceNumber\": \"string\",\n  \"Notes\": \"string\",\n  \"ContainerLoad\": \"floor-loaded\",\n  \"HazardType\": \"N/A\",\n  \"Location\": \"ca\",\n  \"Email\": \"string\",\n  \"Items\": [\n    {\n      \"Sku\": \"string\",\n      \"Description\": \"string\",\n      \"QtyExpected\": 1\n    }\n  ]\n}")

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

	req.Header.Add("RushOrderMomCode", "ABC")
	req.SetBasicAuth("<username>", "<password>")
	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
require 'uri'
require 'net/http'

url = URI("https://dream.rushorder.com/api/inbound")

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

request = Net::HTTP::Post.new(url)
request["RushOrderMomCode"] = 'ABC'
request.basic_auth("<username>", "<password>")
request["Content-Type"] = 'application/json'
request.body = "{\n  \"ExpectedDeliveryDate\": \"2024-01-15T09:30:00Z\",\n  \"POReferenceNumber\": \"string\",\n  \"Notes\": \"string\",\n  \"ContainerLoad\": \"floor-loaded\",\n  \"HazardType\": \"N/A\",\n  \"Location\": \"ca\",\n  \"Email\": \"string\",\n  \"Items\": [\n    {\n      \"Sku\": \"string\",\n      \"Description\": \"string\",\n      \"QtyExpected\": 1\n    }\n  ]\n}"

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

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

HttpResponse<String> response = Unirest.post("https://dream.rushorder.com/api/inbound")
  .header("RushOrderMomCode", "ABC")
  .basicAuth("<username>", "<password>")
  .header("Content-Type", "application/json")
  .body("{\n  \"ExpectedDeliveryDate\": \"2024-01-15T09:30:00Z\",\n  \"POReferenceNumber\": \"string\",\n  \"Notes\": \"string\",\n  \"ContainerLoad\": \"floor-loaded\",\n  \"HazardType\": \"N/A\",\n  \"Location\": \"ca\",\n  \"Email\": \"string\",\n  \"Items\": [\n    {\n      \"Sku\": \"string\",\n      \"Description\": \"string\",\n      \"QtyExpected\": 1\n    }\n  ]\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://dream.rushorder.com/api/inbound', [
  'body' => '{
  "ExpectedDeliveryDate": "2024-01-15T09:30:00Z",
  "POReferenceNumber": "string",
  "Notes": "string",
  "ContainerLoad": "floor-loaded",
  "HazardType": "N/A",
  "Location": "ca",
  "Email": "string",
  "Items": [
    {
      "Sku": "string",
      "Description": "string",
      "QtyExpected": 1
    }
  ]
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'RushOrderMomCode' => 'ABC',
  ],
    'auth' => ['<username>', '<password>'],
]);

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

```csharp
using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://dream.rushorder.com/api/inbound");
client.Authenticator = new HttpBasicAuthenticator("<username>", "<password>");
var request = new RestRequest(Method.POST);
request.AddHeader("RushOrderMomCode", "ABC");

request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"ExpectedDeliveryDate\": \"2024-01-15T09:30:00Z\",\n  \"POReferenceNumber\": \"string\",\n  \"Notes\": \"string\",\n  \"ContainerLoad\": \"floor-loaded\",\n  \"HazardType\": \"N/A\",\n  \"Location\": \"ca\",\n  \"Email\": \"string\",\n  \"Items\": [\n    {\n      \"Sku\": \"string\",\n      \"Description\": \"string\",\n      \"QtyExpected\": 1\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let credentials = Data("<username>:<password>".utf8).base64EncodedString()

let headers = [
  "RushOrderMomCode": "ABC",
  "Authorization": "Basic \(credentials)",
  "Content-Type": "application/json"
]
let parameters = [
  "ExpectedDeliveryDate": "2024-01-15T09:30:00Z",
  "POReferenceNumber": "string",
  "Notes": "string",
  "ContainerLoad": "floor-loaded",
  "HazardType": "N/A",
  "Location": "ca",
  "Email": "string",
  "Items": [
    [
      "Sku": "string",
      "Description": "string",
      "QtyExpected": 1
    ]
  ]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://dream.rushorder.com/api/inbound")! 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()
```