---
title: "Upsert shipment details."
method: PUT
path: "/api/v4/capacityproviders/ltl/shipments"
tags: ["LTL: Push Tracking"]
---

# Upsert shipment details.

`PUT /api/v4/capacityproviders/ltl/shipments`

## Request

- Base URL: `https://na12.api.project44.com`
- URL: `https://na12.api.project44.com/api/v4/capacityproviders/ltl/shipments`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `/api/v4/oauth2/token`
- TypeScript: <https://skmtc.dev/project44/apis/project44-rest-api/docs/api/v4/capacityproviders/ltl/shipments/put.ts> (a function with typed inputs; its response is checked against the schema)

<h4><b>Required Fields</h4></b>
<ul><li><b>  customerAccount: </b></li><ul><li> accountIdentifier </li></ul><li><b>  carrierIdentifier: </b></li><ul><li> type </li><li> value </li></ul><li><b>  shipmentIdentifiers: </b></li><ul><li> type </li><li> value </li><li> primaryForType (if more than one shipment identifier of the same type)</li></ul></ul>

## Request body

- LtlCapacityProviderPushShipment
  - `carrierIdentifier` CapacityProviderIdentifier: A capacity provider identifier object.
    - `type` 'SCAC' | 'DOT_NUMBER' | 'MC_NUMBER' | 'P44_EU' | 'SYSTEM' | 'P44_GLOBAL' | 'VAT': Capacity provider identifier type.
    - `value` string: Capacity provider identifier value.
  - `customerAccount` CustomerAccount
    - `accountIdentifier` string: The account identifier of the customer to whom this shipment belongs. This will be used to identify the mutual customer in project44's system.
  - `shipmentIdentifiers` LtlShipmentIdentifier[]: A list of shipment identifiers that, with the exception of the EXTERNAL type, can be used to track the shipment. At least one identifier of type 'PRO' must be included in the list. The source field cannot be provided in this API.
    - `primaryForType` boolean: Only used in LTL tracking. Whether this is the primary shipment identifier for this type for the given shipment. The primary shipment identifier for a type will always be attempted before other identifiers of that type with the capacity provider.
    - `source` 'CUSTOMER' | 'CAPACITY_PROVIDER': Only used in LTL tracking. Whether this shipment identifier originated from the customer or the capacity provider. If the customer has provided this identifier at any point during the shipment's lifetime, this source will be 'CUSTOMER'. Otherwise, the source will be 'CAPACITY_PROVIDER'. This field is useful for ensuring uniqueness across your shipment identifiers -- you can't control whether duplicates exist among the capacity-provider-sourced identifiers, but you can ensure on your end that all of your provided identifiers are unique and query for unique shipments accordingly.
    - `type` 'PRO' | 'BILL_OF_LADING' | 'CUSTOMER_REFERENCE' | 'PICKUP' | 'PURCHASE_ORDER' | 'EXTERNAL': The type of the shipment identifier.
    - `value` string: The value of the shipment identifier.
  - `shipmentStops` LtlTrackedShipmentStop[]: A list of the shipment stops for the shipment. When stop data is provided, there must be at least two stops -- one of type 'ORIGIN' and one of type 'DESTINATION'. 'ORIGIN' and 'DESTINATION' stops must have location address information including addressLines, city, state, country, postalCode and location contact information including companyName. Stops of type 'TERMINAL' (service center) may be included or added as the shipment is tracked and they are discovered. 'TERMINAL' stops must have location address information including city, state, country, postalCode and location contact information including companyName. 'TERMINAL' stops must also have terminalCode. All stop types require a stop number. The stop number represents the order for which the stops will be visited. Besides 'ORIGIN' always being stopNumber: 1, stopNumber may change as 'TERMINAL's are discovered throughout tracking (i.e. initially there may only be two known stops; 'ORIGIN' with stopNumber 1 and 'DESTINATION' with stopNumber 2. Once a 'TERMINAL' stop is discovered, the 'DESTINATION' stop will now have stopNumber 3. Stop objects contain an object called 'appointmentWindow'. These appointment windows are the requested appointment windows found on the bill of lading. If the stop type is 'ORIGIN', it is a requested pickup appointment window and if the stop type is 'DESTINATION', it is a requested delivery appointment window.
    - `additionalAppointmentWindows` LtlAdditionalAppointmentWindow[]: Optional user-defined field in which one or many additional appointment windows can be provided on the stop. Note that the start and end times are required for 'appointmentWindow'; the default start time does not apply to this field. On responses, the time zone identifier (for example, 'America/Chicago') for this date time window is determined by project44 when possible based on the stop's address.
      - `appointmentStatus` 'PENDING' | 'REJECTED' | 'BOOKED' | 'CANCELLED' | 'COMPLETED' | 'PENDING_CARRIER' | 'PENDING_INTERNAL' | 'NONE_AVAILABLE': This is the state of the appointment as determined by the source appointment management system. This status is used to represent where the appointment is within its lifecycle, it does not represent the physical state of the asset fulfilling the appointment.
      - `appointmentWindow` ZonedDateTimeWindow: A date and time range, including a time zone, representing a window of availability.
        - `endDateTime` string, date-time: End date and time of this window in the applicable time zone. (format: yyyy-MM-dd'T'HH:mm:ss)
        - `localTimeZoneIdentifier` string: The time zone identifier (e.g., 'America/Chicago') for this date time window.
        - `startDateTime` string, date-time: Start date and time of this window in the applicable time zone.(default: current date, format: yyyy-MM-dd'T'HH:mm:ss)
      - `identifiers` AdditionalAppointmentWindowIdentifier[]: A list of identifiers of the additional appointment windows to a shipment.
        - `type` 'DOCK' | 'BOOKING_ID': The type of additional appointment window identifier.
        - `value` string: The value of additional appointment window identifier.
      - `type` 'STRATEGIC' | 'SLOT_BOOKING_PICKUP' | 'SLOT_BOOKING_DELIVERY' | 'SLOT_BOOKING_PICKUP_DELIVERY': The type of appointment window.
    - `appointmentWindow` ZonedDateTimeWindow: A date and time range, including a time zone, representing a window of availability.
      - `endDateTime` string, date-time: End date and time of this window in the applicable time zone. (format: yyyy-MM-dd'T'HH:mm:ss)
      - `localTimeZoneIdentifier` string: The time zone identifier (e.g., 'America/Chicago') for this date time window.
      - `startDateTime` string, date-time: Start date and time of this window in the applicable time zone.(default: current date, format: yyyy-MM-dd'T'HH:mm:ss)
    - `geoCoordinates` GeoCoordinates
      - `latitude` number, float: The approximate geographic latitude of a location, using the WGS84 coordinate system.
      - `longitude` number, float: The approximate geographic longitude of a location, using the WGS84 coordinate system.
    - `id` integer: The id of the stop. This value is read only; it will be ignored on create and update.
    - `involvedParties` Party[]: A list of parties and their identifiers related to the shipment stop. These are your customers receiving freight at this stop or your suppliers providing freight from this stop.
      - `addressInfo` PartyAddress: A postal address.
        - `addressLines` string[]: Street name, number, direction, PO box, etc. Only three address lines are currently permitted.
        - `addressLabel` string: The project44-generated label for the address persisted in location-service.
        - `city` string: Name of city, town, etc.
        - `country` 'US' | 'CA' | 'MX' | 'AG' | 'BB' | 'BS' | 'BZ' | 'CR' | 'CU' | 'DM' | 'DO' | 'GD' | 'GT' | 'HN' | 'HT' | 'JM' | 'KN' | 'LC' | 'NI' | 'PA' | 'SV' | 'TT' | 'VC' | 'AI' | 'AW' | 'BL' | 'BM' | 'BQ' | 'CW' | 'GL' | 'GP' | 'KY' | 'MF' | 'MQ' | 'MS' | 'PM' | 'PR' | 'SX' | 'TC' | 'UM' | 'VG' | 'VI' | 'AT' | 'BE' | 'BG' | 'CY' | 'CZ' | 'DK' | 'DE' | 'EE' | 'ES' | 'FI' | 'FR' | 'GB' | 'GR' | 'HR' | 'HU' | 'IE' | 'IT' | 'LT' | 'LU' | 'LV' | 'MT' | 'NL' | 'PL' | 'PT' | 'RO' | 'SE' | 'SK' | 'SI' | 'CH' | 'IS' | 'LI' | 'NO' | 'AL' | 'ME' | 'MK' | 'RS' | 'TR' | 'AD' | 'AX' | 'BA' | 'BV' | 'BY' | 'FO' | 'GG' | 'GI' | 'IM' | 'IO' | 'JE' | 'MC' | 'MD' | 'SJ' | 'SM' | 'TF' | 'UA' | 'VA' | 'AE' | 'AF' | 'AM' | 'AZ' | 'BD' | 'BH' | 'BN' | 'BT' | 'CN' | 'GE' | 'HK' | 'ID' | 'IL' | 'IN' | 'IQ' | 'IR' | 'JO' | 'JP' | 'KG' | 'KH' | 'KP' | 'KR' | 'KW' | 'KZ' | 'LA' | 'LB' | 'LK' | 'MM' | 'MN' | 'MO' | 'MV' | 'MY' | 'NP' | 'OM' | 'PH' | 'PK' | 'PS' | 'QA' | 'RU' | 'SA' | 'SG' | 'SY' | 'TH' | 'TJ' | 'TL' | 'TM' | 'TW' | 'UZ' | 'VN' | 'YE' | 'AO' | 'BF' | 'BI' | 'BJ' | 'BW' | 'CD' | 'CF' | 'CG' | 'CI' | 'CM' | 'CV' | 'DJ' | 'DZ' | 'EG' | 'EH' | 'ER' | 'ET' | 'GA' | 'GH' | 'GM' | 'GN' | 'GQ' | 'GW' | 'HM' | 'KE' | 'KM' | 'LR' | 'LS' | 'LY' | 'MA' | 'MG' | 'ML' | 'MR' | 'MU' | 'MW' | 'MZ' | 'NA' | 'NE' | 'NG' | 'RE' | 'RW' | 'SC' | 'SD' | 'SH' | 'SL' | 'SN' | 'SO' | 'SS' | 'ST' | 'SZ' | 'TD' | 'TG' | 'TN' | 'TZ' | 'UG' | 'YT' | 'ZA' | 'ZM' | 'ZW' | 'AR' | 'BO' | 'BR' | 'CL' | 'CO' | 'EC' | 'FK' | 'GF' | 'GS' | 'GY' | 'PE' | 'PY' | 'SR' | 'UY' | 'VE' | 'AS' | 'AU' | 'CC' | 'CK' | 'CX' | 'FJ' | 'FM' | 'GU' | 'KI' | 'MH' | 'MP' | 'NC' | 'NF' | 'NR' | 'NU' | 'NZ' | 'PF' | 'PG' | 'PN' | 'PW' | 'SB' | 'TK' | 'TO' | 'TV' | 'VU' | 'WF' | 'WS' | 'AQ' | 'EL' | 'UK' | 'XK' | 'XS' | 'XI', enum: Abbreviation of country (using ISO 3166 standards). (default: 'US')
        - `id` string, uuid: The project44-generated identifier for the address persisted in location-service.
        - `postalCode` string: The ZIP or postal code.
        - `state` string: Abbreviation of state, province, district, etc.
      - `contactInfo` BookingContact
        - `companyName` string: Name of the Company with whom the Contact is associated.
        - `email` string, email: The Contact's email address.
        - `familyName` string: The Contact's last or family name.
        - `givenName` string: The Contact's first or given name.
        - `mobilePhoneNumber` string: The Contact's mobile phone number.
        - `phoneNumber` string: The Contact's work or other primary phone number.
      - `identifyingCodes` IdentifyingCodes
        - `codeListProvider` 'WAVE' | 'CARX' | 'ESSD' | 'IDT' | 'BOLE' | 'EDOX' | 'IQAX' | 'SECR' | 'TRGO' | 'ETEU' | 'TRAC' | 'BRIT' | 'GSBN' | 'WISE' | 'GLEIF' | 'W3C' | 'DNB' | 'FMC' | 'DCSA' | 'ZZZ': An enumeration.
        - `codeListName` 'DID' | 'LEI' | 'DUNS': An enumeration.
        - `partyCode` string: Code to identify the party as provided by the code list provider
      - `locationIdentifiers` RatingLocationIdentifier[]: Identifiers for the location of the party.
        - `type` 'UNKNOWN' | 'AIRPORT_IATA' | 'AIRPORT_ICAO' | 'PORT_UN_LOCODE' | 'RAIL_SPLC' | 'DATA_PROVIDER_LOCATION_CODE' | 'LOCODE': An enumeration.
        - `value` string
      - `partyType` 'SHIPPER' | 'CONSIGNEE' | 'BILL_TO' | 'NOTIFY_PARTY' | 'BOOKING_AGENT' | 'CARRIER_BOOKING_OFFICE': An enumeration.
      - `vatNumber` string: Optional, VAT number of the listed party, if applicable.
    - `location` Location: A physical location.
      - `address` Address: A postal address.
        - `addressLines` string[]: Street name, number, direction, PO box, etc. Only three address lines are currently permitted.
        - `city` string: Name of city, town, etc.
        - `country` 'US' | 'CA' | 'MX' | 'AG' | 'BB' | 'BS' | 'BZ' | 'CR' | 'CU' | 'DM' | 'DO' | 'GD' | 'GT' | 'HN' | 'HT' | 'JM' | 'KN' | 'LC' | 'NI' | 'PA' | 'SV' | 'TT' | 'VC' | 'AI' | 'AW' | 'BL' | 'BM' | 'BQ' | 'CW' | 'GL' | 'GP' | 'KY' | 'MF' | 'MQ' | 'MS' | 'PM' | 'PR' | 'SX' | 'TC' | 'UM' | 'VG' | 'VI' | 'AT' | 'BE' | 'BG' | 'CY' | 'CZ' | 'DK' | 'DE' | 'EE' | 'ES' | 'FI' | 'FR' | 'GB' | 'GR' | 'HR' | 'HU' | 'IE' | 'IT' | 'LT' | 'LU' | 'LV' | 'MT' | 'NL' | 'PL' | 'PT' | 'RO' | 'SE' | 'SK' | 'SI' | 'CH' | 'IS' | 'LI' | 'NO' | 'AL' | 'ME' | 'MK' | 'RS' | 'TR' | 'AD' | 'AX' | 'BA' | 'BV' | 'BY' | 'FO' | 'GG' | 'GI' | 'IM' | 'IO' | 'JE' | 'MC' | 'MD' | 'SJ' | 'SM' | 'TF' | 'UA' | 'VA' | 'AE' | 'AF' | 'AM' | 'AZ' | 'BD' | 'BH' | 'BN' | 'BT' | 'CN' | 'GE' | 'HK' | 'ID' | 'IL' | 'IN' | 'IQ' | 'IR' | 'JO' | 'JP' | 'KG' | 'KH' | 'KP' | 'KR' | 'KW' | 'KZ' | 'LA' | 'LB' | 'LK' | 'MM' | 'MN' | 'MO' | 'MV' | 'MY' | 'NP' | 'OM' | 'PH' | 'PK' | 'PS' | 'QA' | 'RU' | 'SA' | 'SG' | 'SY' | 'TH' | 'TJ' | 'TL' | 'TM' | 'TW' | 'UZ' | 'VN' | 'YE' | 'AO' | 'BF' | 'BI' | 'BJ' | 'BW' | 'CD' | 'CF' | 'CG' | 'CI' | 'CM' | 'CV' | 'DJ' | 'DZ' | 'EG' | 'EH' | 'ER' | 'ET' | 'GA' | 'GH' | 'GM' | 'GN' | 'GQ' | 'GW' | 'HM' | 'KE' | 'KM' | 'LR' | 'LS' | 'LY' | 'MA' | 'MG' | 'ML' | 'MR' | 'MU' | 'MW' | 'MZ' | 'NA' | 'NE' | 'NG' | 'RE' | 'RW' | 'SC' | 'SD' | 'SH' | 'SL' | 'SN' | 'SO' | 'SS' | 'ST' | 'SZ' | 'TD' | 'TG' | 'TN' | 'TZ' | 'UG' | 'YT' | 'ZA' | 'ZM' | 'ZW' | 'AR' | 'BO' | 'BR' | 'CL' | 'CO' | 'EC' | 'FK' | 'GF' | 'GS' | 'GY' | 'PE' | 'PY' | 'SR' | 'UY' | 'VE' | 'AS' | 'AU' | 'CC' | 'CK' | 'CX' | 'FJ' | 'FM' | 'GU' | 'KI' | 'MH' | 'MP' | 'NC' | 'NF' | 'NR' | 'NU' | 'NZ' | 'PF' | 'PG' | 'PN' | 'PW' | 'SB' | 'TK' | 'TO' | 'TV' | 'VU' | 'WF' | 'WS' | 'AQ' | 'EL' | 'UK' | 'XK' | 'XS' | 'XI', enum: Abbreviation of country (using ISO 3166 standards). (default: 'US')
        - `postalCode` string: The ZIP or postal code.
        - `state` string: Abbreviation of state, province, district, etc.
      - `contact` Contact: Contact information.
        - `companyName` string: Company name.
        - `contactName` string: Contact name. May be required for shipments.
        - `email` string: Email address. May be required for shipments.
        - `faxNumber` string: Fax number. E.164 or North American Number Plan (NANP) phone numbers are accepted. If a phone number is passed in without the associated country code field, the number will be treated as a number that adheres to the NANP standard. The number will be returned in responses in the NANP format: '[+123 ]123-456-7890[, ext. 123456]'. If the associated country code field is passed in as well, the number will be treated as a number that adheres to the E.164 international phone number standard. The number will be returned in a response in the E.164 format: '[+123 ]12345678910[, ext. 123456]'. In requests, only digits and an optional 'X' (or lowercase 'x') marking the start of an extension will be used. Any other characters included for formatting will be stripped -- project44 will provide the phone number to the capacity provider in the format they accept. There must be at least ten digits before the optional 'X' (for the area code, central office code, and station code for NANP numbers or simply the subscriber number for E.164 numbers). For NANP numbers, no more than thirteen, with the first digits exceeding ten being interpreted as the country code when the country code. The number of digits after the optional 'X' must be less than seven. Examples of acceptable NANP phone numbers: '123-456-7890 x 32', '(123)456-7890 ext 30', '1234567890', '11234567890', '+55-123-456-7890 ext. 312412', '123-456-7890, ext. 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]123-456-7890[, ext. 123456]'. Examples of acceptable E.164 phone numbers: '20-1234-5678 x 1234', '(20) 1234-5678x1234', '2012345678', '20 1234-5678 ext 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]2012345678[, ext. 1234]'.
        - `faxNumberCountryCode` string: The country code associated with the phone number. If this is blank, the phone number will be treated as a number that adheres to the North American Number Plan (NANP) format. Acceptable country codes formats: '+123' or '123'.
        - `phoneNumber` string: Phone number. May be required for shipments. E.164 or North American Number Plan (NANP) phone numbers are accepted. If a phone number is passed in without the associated country code field, the number will be treated as a number that adheres to the NANP standard. The number will be returned in responses in the NANP format: '[+123 ]123-456-7890[, ext. 123456]'. If the associated country code field is passed in as well, the number will be treated as a number that adheres to the E.164 international phone number standard. The number will be returned in a response in the E.164 format: '[+123 ]12345678910[, ext. 123456]'. In requests, only digits and an optional 'X' (or lowercase 'x') marking the start of an extension will be used. Any other characters included for formatting will be stripped -- project44 will provide the phone number to the capacity provider in the format they accept. There must be at least ten digits before the optional 'X' (for the area code, central office code, and station code for NANP numbers or simply the subscriber number for E.164 numbers). For NANP numbers, no more than thirteen, with the first digits exceeding ten being interpreted as the country code when the country code. The number of digits after the optional 'X' must be less than seven. Examples of acceptable NANP phone numbers: '123-456-7890 x 32', '(123)456-7890 ext 30', '1234567890', '11234567890', '+55-123-456-7890 ext. 312412', '123-456-7890, ext. 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]123-456-7890[, ext. 123456]'. Examples of acceptable E.164 phone numbers: '20-1234-5678 x 1234', '(20) 1234-5678x1234', '2012345678', '20 1234-5678 ext 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]2012345678[, ext. 1234]'.
        - `phoneNumber2` string: Alternate phone number. E.164 or North American Number Plan (NANP) phone numbers are accepted. If a phone number is passed in without the associated country code field, the number will be treated as a number that adheres to the NANP standard. The number will be returned in responses in the NANP format: '[+123 ]123-456-7890[, ext. 123456]'. If the associated country code field is passed in as well, the number will be treated as a number that adheres to the E.164 international phone number standard. The number will be returned in a response in the E.164 format: '[+123 ]12345678910[, ext. 123456]'. In requests, only digits and an optional 'X' (or lowercase 'x') marking the start of an extension will be used. Any other characters included for formatting will be stripped -- project44 will provide the phone number to the capacity provider in the format they accept. There must be at least ten digits before the optional 'X' (for the area code, central office code, and station code for NANP numbers or simply the subscriber number for E.164 numbers). For NANP numbers, no more than thirteen, with the first digits exceeding ten being interpreted as the country code when the country code. The number of digits after the optional 'X' must be less than seven. Examples of acceptable NANP phone numbers: '123-456-7890 x 32', '(123)456-7890 ext 30', '1234567890', '11234567890', '+55-123-456-7890 ext. 312412', '123-456-7890, ext. 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]123-456-7890[, ext. 123456]'. Examples of acceptable E.164 phone numbers: '20-1234-5678 x 1234', '(20) 1234-5678x1234', '2012345678', '20 1234-5678 ext 1234'. In responses, phone numbers will be returned in the following format: '[+123 ]2012345678[, ext. 1234]'.
        - `phoneNumber2CountryCode` string: The country code associated with the phone number. If this is blank, the phone number will be treated as a number that adheres to the North American Number Plan (NANP) format. Acceptable country codes formats: '+123' or '123'.
        - `phoneNumberCountryCode` string: The country code associated with the phone number. If this is blank, the phone number will be treated as a number that adheres to the North American Number Plan (NANP) format. Acceptable country codes formats: '+123' or '123'.
    - `locationIdentifiers` LocationIdentifier[]: The identifiers associated with the user-defined stop location, to be used with the Stop Location API.
      - `type` 'EXTERNAL' | 'SYSTEM': The type of the location identifier. Must be either SYSTEM (Project44-supplied) or EXTERNAL (customer-supplied).
      - `value` string: The value of the location identifier.
    - `stopDescription` string: Description related to the stop.
    - `stopName` string: The user-defined or capacity provider-defined name of this stop. This is a freeform field. Project44 will default the name of each stop based on the stop number and type if no other name is available.
    - `stopNumber` integer: The stop number, where "1'" is the origin, and the destination has the largest number, with any stops in between ordered by appointment time. This field may not be provided when creating a shipment. The destination stop number will change dynamically as terminals are discovered along the shipment's route from origin to destination. Thus, the stop type is most useful for easily and reliably identifying the origin and destination.
    - `stopType` 'ORIGIN' | 'DESTINATION' | 'TERMINAL': The type of this stop. The user-defined stops will always have the type of 'ORIGIN' and 'DESTINATION', which are customer locations. Stops of the type 'TERMINAL', which are capacity provider redistribution centers, may be inserted dynamically as they are returned by the capacity provider. Note that 'TERMINAL' will be ignored if provided as part of a PUT.
    - `uuid` string, uuid: UUID that uniquely identifies a stop. This value is generated by project44 on a successful PUT or POST.
  - `sourceType` 'API' | 'EDI': The original type of data source for where this shipment originated from. (default: API)
  - `transitDays` integer: The number of days it will take to deliver the load after pickup.

## Response `202`

Accepted

## Other responses

- `400`: Invalid request
- `401`: Invalid or missing credentials
- `403`: User not authorized to perform this operation

---

[API](https://skmtc.dev/project44/apis/project44-rest-api.md) - [All operations](https://skmtc.dev/project44/apis/project44-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/project44/apis/project44-rest-api/revisions/cdf9675e2294?raw)
