Skip to main content

Inbound Shipment API

Track and manage inbound shipments from vendors (Advanced Receiving feature).


Endpoints

MethodEndpointDescription
GET/record/v1/inboundShipmentList inbound shipments
GET/record/v1/inboundShipment/{id}Get specific shipment
POST/record/v1/inboundShipmentCreate shipment
PATCH/record/v1/inboundShipment/{id}Update shipment
DELETE/record/v1/inboundShipment/{id}Delete shipment

Key Fields

FieldTypeDescriptionRequired
idstringInternal ID-
customFormobjectCustom formNo
shipmentNumberstringShipment tracking numberNo
shipmentStatusobjectShipment statusRead-only
expectedShippingDatestringExpected ship dateNo
expectedDeliveryDatestringExpected delivery dateNo
actualShippingDatestringActual ship dateNo
actualDeliveryDatestringActual delivery dateNo
shipmentMemostringShipment notesNo
vendorobjectVendorYes
subsidiaryobjectSubsidiaryYes (OneWorld)
landedCostAmountnumberTotal landed costNo
itemscollectionItems in shipmentYes

Example: Create Inbound Shipment

POST /record/v1/inboundShipment
Content-Type: application/json

Request Body

{
"vendor": {
"id": "789"
},
"shipmentNumber": "TRACK-123456789",
"expectedShippingDate": "2025-12-26",
"expectedDeliveryDate": "2025-12-28",
"subsidiary": {
"id": "1"
},
"shipmentMemo": "Bulk order shipment - container #CONT-456",
"items": {
"items": [
{
"purchaseOrder": { "id": "2001" },
"item": { "id": "789" },
"quantityExpected": 100,
"quantityReceived": 0,
"unitRate": 25.00
},
{
"purchaseOrder": { "id": "2001" },
"item": { "id": "790" },
"quantityExpected": 50,
"quantityReceived": 0,
"unitRate": 50.00
}
]
}
}

Response

{
"id": "12001",
"shipmentNumber": "TRACK-123456789",
"shipmentStatus": {
"id": "A",
"refName": "In Transit"
},
"expectedShippingDate": "2025-12-26",
"expectedDeliveryDate": "2025-12-28",
"actualShippingDate": null,
"actualDeliveryDate": null,
"vendor": {
"id": "789",
"refName": "Acme Suppliers Inc"
},
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"shipmentMemo": "Bulk order shipment - container #CONT-456",
"items": {
"items": [
{
"purchaseOrder": { "id": "2001", "refName": "PO-2025-001" },
"item": { "id": "789", "refName": "Widget A - Standard" },
"quantityExpected": 100,
"quantityReceived": 0,
"unitRate": 25.00
},
{
"purchaseOrder": { "id": "2001", "refName": "PO-2025-001" },
"item": { "id": "790", "refName": "Widget B - Premium" },
"quantityExpected": 50,
"quantityReceived": 0,
"unitRate": 50.00
}
]
},
"links": [
{
"rel": "self",
"href": "https://account.suitetalk.api.netsuite.com/services/rest/record/v1/inboundShipment/12001"
}
]
}

Example: Update Inbound Shipment

PATCH /record/v1/inboundShipment/12001
Content-Type: application/json

Request Body

{
"actualShippingDate": "2025-12-26",
"expectedDeliveryDate": "2025-12-27",
"shipmentMemo": "Bulk order shipment - container #CONT-456 - Expedited shipping",
"items": {
"items": [
{
"purchaseOrder": { "id": "2001" },
"item": { "id": "789" },
"quantityExpected": 100,
"quantityReceived": 0,
"unitRate": 25.00
},
{
"purchaseOrder": { "id": "2001" },
"item": { "id": "790" },
"quantityExpected": 50,
"quantityReceived": 0,
"unitRate": 50.00
},
{
"purchaseOrder": { "id": "2002" },
"item": { "id": "791" },
"quantityExpected": 25,
"quantityReceived": 0,
"unitRate": 75.00
}
]
}
}

Line Items

Items Sublist Fields

FieldTypeDescriptionRequired
purchaseOrderobjectSource POYes
itemobjectItem in shipmentYes
quantityExpectednumberExpected quantityYes
quantityReceivednumberQuantity received (read-only)-
quantityRemainingnumberQty not yet received (read-only)-
unitRatenumberUnit costNo
expectedReceiptDatestringExpected receipt dateNo

Shipment Statuses

StatusDescription
In TransitShipment is in transit
ReceivedShipment fully received
Partially ReceivedPartial receipt completed
CancelledShipment cancelled

Example: Track Shipment with Landed Costs

POST /record/v1/inboundShipment
Content-Type: application/json

Request Body

{
"vendor": {
"id": "789"
},
"shipmentNumber": "TRACK-987654321",
"expectedDeliveryDate": "2025-12-30",
"subsidiary": {
"id": "1"
},
"landedCostAmount": 500.00,
"shipmentMemo": "International shipment with customs fees",
"items": {
"items": [
{
"purchaseOrder": { "id": "2005" },
"item": { "id": "800" },
"quantityExpected": 500,
"unitRate": 15.00
}
]
}
}

Query Filters

Find In Transit Shipments

GET /record/v1/inboundShipment?q=shipmentStatus.id='A'

Find by Vendor

GET /record/v1/inboundShipment?q=vendor='789'

Find by Expected Delivery Date

GET /record/v1/inboundShipment?q=expectedDeliveryDate BETWEEN '2025-12-01' AND '2025-12-31'

Find by Tracking Number

GET /record/v1/inboundShipment?q=shipmentNumber='TRACK-123456789'

Find Overdue Shipments

GET /record/v1/inboundShipment?q=expectedDeliveryDate < SYSDATE AND shipmentStatus.id='A'

Receive Shipment

Create Item Receipt when shipment arrives:

POST /record/v1/itemReceipt
Content-Type: application/json
{
"entity": {
"id": "789"
},
"tranDate": "2025-12-28",
"subsidiary": {
"id": "1"
},
"location": {
"id": "1"
},
"createdFrom": {
"id": "2001"
},
"memo": "Received from inbound shipment TRACK-123456789",
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 100,
"itemReceive": true
},
{
"item": { "id": "790" },
"quantity": 50,
"itemReceive": true
}
]
}
}

Advanced Receiving Workflow

  1. Vendor Ships Items - Vendor provides tracking number
  2. Create Inbound Shipment - Record shipment details in NetSuite
  3. Track in Transit - Monitor shipment status and expected delivery
  4. Update Actual Dates - Record actual ship/delivery dates
  5. Receive Items - Create Item Receipt when shipment arrives
  6. Link to Shipment - System links receipt to inbound shipment
  7. Update Status - Shipment status automatically updates

Example: Partial Receipt from Shipment

POST /record/v1/itemReceipt
Content-Type: application/json
{
"entity": {
"id": "789"
},
"tranDate": "2025-12-28",
"subsidiary": {
"id": "1"
},
"location": {
"id": "1"
},
"createdFrom": {
"id": "2001"
},
"memo": "Partial receipt from shipment TRACK-123456789 - some items damaged",
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 95,
"itemReceive": true
},
{
"item": { "id": "790" },
"quantity": 50,
"itemReceive": true
}
]
}
}

Important Notes

  • Inbound Shipment requires the Advanced Receiving feature to be enabled
  • Provides visibility into shipments before they arrive at the warehouse
  • Tracking numbers can be used for carrier integration and status updates
  • The shipmentStatus field is read-only and updated automatically
  • Shipments can include items from multiple purchase orders
  • Expected dates help with warehouse planning and resource allocation
  • Actual dates are typically set when shipment tracking is updated
  • Landed costs (freight, customs, duties) can be tracked per shipment
  • Item receipts are linked to inbound shipments automatically
  • Partial receipts update the shipment status to "Partially Received"
  • Full receipt updates the shipment status to "Received"
  • Shipment records provide an audit trail for receiving activities
  • Multiple item receipts can be created from a single inbound shipment
  • Cancelling a shipment does not affect already created item receipts
  • The quantityReceived field is updated automatically from item receipts
  • Advanced Receiving is particularly useful for international shipments
  • Integration with carrier tracking systems can auto-update shipment status

See Also