---
title: Inventory API
description: "The **Inventory API** is used to create and manage inventory, and then to publish and manage this inventory on an eBay marketplace. There are also methods in this API that will convert eligible, active eBay listings into the Inventory API model."
api_version: 1.0
api_name: inventory_api
api_type: REST
api_group: sell/inventory_api
source_url:
  html: https://developer.ebay.com/develop/api/sell/inventory_api
  md: https://developer.ebay.com/develop/api/sell/inventory_api.md
---

# Inventory API API

The **Inventory API** is used to create and manage inventory, and then to publish and manage this inventory on an eBay marketplace. There are also methods in this API that will convert eligible, active eBay listings into the Inventory API model.

## API Methods

The following API methods are available:

### bulkCreateOrReplaceInventoryItem

#### POST /bulk_create_or_replace_inventory_item
**Description:** **Note:** Please note that any eBay listing created using the Inventory API cannot be revised or relisted using the Trading API calls.  
**Note:** Each listing can be revised up to 250 times in one calendar day. If this revision threshold is reached, the seller will be blocked from revising the item until the next calendar day.  
This call can be used to create and/or update up to 25 new inventory item records. It is up to sellers whether they want to create a complete inventory item records right from the start, or sellers can provide only some information with the initial **bulkCreateOrReplaceInventoryItem** call, and then make one or more additional **bulkCreateOrReplaceInventoryItem** calls to complete all required fields for the inventory item records and prepare for publishing. Upon first creating inventory item records, only the SKU values are required.  
  

**Important!**Publish offer note: Fields may be optional or conditionally required when calling this method, but become required when publishing the offer to create an active listing. For this method, see [Inventory item fields](</api-docs/sell/static/inventory/publishing-offers.html#inventory_item >) for a list of fields required to publish an offer.

  
**Note:** In addition to the `authorization` header, which is required for all eBay REST API calls, this call also requires the `Content-Language` and `Content-Type` headers.  
In the case of updating existing inventory item records, the **bulkCreateOrReplaceInventoryItem** call will do a complete replacement of the existing inventory item records, so all fields that are currently defined for the inventory item record are required in that update action, regardless of whether their values changed. So, when replacing/updating an inventory item record, it is advised that the seller run a 'Get' call to retrieve the full details of the inventory item records and see all of its current values/settings before attempting to update the records. Any changes that are made to inventory item records that are part of one or more active eBay listings, a successful call will automatically update these active listings.  
  
The key information that is set with the **bulkCreateOrReplaceInventoryItem** call include:

*   Seller-defined SKU value for the product. Each seller product, including products within an item inventory group, must have their own SKU value.
*   Condition of the item
*   Product details, including any product identifier(s), such as a UPC, ISBN, EAN, or Brand/Manufacturer Part Number pair, a product description, a product title, product/item aspects, and links to images. eBay will use any supplied eBay Product ID (ePID) or a GTIN (UPC, ISBN, or EAN) and attempt to match those identifiers to a product in the eBay Catalog, and if a product match is found, the product details for the inventory item will automatically be populated.
*   Quantity of the inventory item that is available for purchase
*   Package weight and dimensions, which is required if the seller will be offering calculated shipping options. The package weight will also be required if the seller will be providing flat-rate shipping services, but charging a weight surcharge.

For those who prefer to create or update a single inventory item record, the [createOrReplaceInventoryItem](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-createorreplaceinventoryitem) method can be used.
**Parameters:**
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.
- **Content-Language** (string) *required*
  - This header sets the natural language that will be used in the field values of the request payload. For example, the value passed in this header should be `en-US` for English or `de-DE` for German.

### bulkGetInventoryItem

#### POST /bulk_get_inventory_item
**Description:** This call retrieves up to 25 inventory item records. The SKU value of each inventory item record to retrieve is specified in the request payload.  
  
**Note:** In addition to the `authorization` header, which is required for all Inventory API calls, this call also requires the `Content-Type` header.  
For those who prefer to retrieve only one inventory item record by SKU value, the [getInventoryItem](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-getinventoryitem) method can be used. To retrieve all inventory item records defined on the seller's account, the [getInventoryItems](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-getinventoryitems) method can be used (with pagination control if desired).
**Parameters:**
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### bulkUpdatePriceQuantity

#### POST /bulk_update_price_quantity
**Description:** This call is used by the seller to update the total ship-to-home quantity of one inventory item, and/or to update the price and/or quantity of one or more offers associated with one inventory item. Up to 25 offers associated with an inventory item may be updated with one **bulkUpdatePriceQuantity** call. Only one SKU (one product) can be updated per call.  
  
**Note:** Each listing can be revised up to 250 times in one calendar day. If this revision threshold is reached, the seller will be blocked from revising the item until the next calendar day.  
**Note:** In addition to the `authorization` header, which is required for all Inventory API calls, this call also requires the `Content-Type` header.  
The [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) call can be used to retrieve all offers associated with a SKU. The seller will just pass in the correct SKU value through the **sku** query parameter. To update an offer, the **offerId** value is required, and this value is returned in the **getOffers** call response. It is also useful to know which offers are unpublished and which ones are published. To get this status, look for the **status** value in the **getOffers** call response. Offers in the published state are live eBay listings, and these listings will be revised with a successful **bulkUpdatePriceQuantity** call.  
  
An issue will occur if duplicate **offerId** values are passed through the same **offers** container, or if one or more of the specified offers are associated with different products/SKUs.  
  
**Note:** For multiple-variation listings, it is recommended that the [bulkUpdatePriceQuantity](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-bulkupdatepricequantity) call be used to update price and quantity information for each SKU within that multiple-variation listing instead of using [createOrReplaceInventoryItem](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-createorreplaceinventoryitem) calls to update the price and quantity for each SKU. Just remember that only one SKU (one product variation) can be updated per call.
**Parameters:**
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### createOrReplaceInventoryItem

#### PUT /inventory_item/{sku}
**Description:** **Note:** Please note that any eBay listing created using the Inventory API cannot be revised or relisted using the Trading API calls.  
**Note:** Each listing can be revised up to 250 times in one calendar day. If this revision threshold is reached, the seller will be blocked from revising the item until the next calendar day.  
This call creates a new inventory item record or replaces an existing inventory item record. It is up to sellers whether they want to create a complete inventory item record right from the start, or sellers can provide only some information with the initial **createOrReplaceInventoryItem** call, and then make one or more additional **createOrReplaceInventoryItem** calls to complete all required fields for the inventory item record and prepare it for publishing. Upon first creating an inventory item record, only the SKU value in the call path is required.  
  

**Important!**Publish offer note: Fields may be optional or conditionally required when calling this method, but become required when publishing the offer to create an active listing. For this method, see [Inventory item fields](/api-docs/sell/static/inventory/publishing-offers.html#inventory_item) for a list of fields required to publish an offer.

  
**Note:** In addition to the `authorization` header, which is required for all Inventory API calls, this call also requires the `Content-Type` and `Content-Language` headers.  
In the case of replacing an existing inventory item record, the **createOrReplaceInventoryItem** call will do a complete replacement of the existing inventory item record, so all fields that are currently defined for the inventory item record are required in that update action, regardless of whether their values changed. So, when replacing/updating an inventory item record, it is advised that the seller run a [getInventoryItem](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-getinventoryitem) call to retrieve the full inventory item record and see all of its current values/settings before attempting to update the record. And if changes are made to an inventory item that is part of one or more active eBay listings, a successful call will automatically update these eBay listings.  
  
The key information that is set with the **createOrReplaceInventoryItem** call include:

*   The seller-defined SKU value for the product. Each seller product, including products within an item inventory group, must have their own SKU value. This SKU value is passed in at the end of the call URI.
*   The condition of the item.
*   Product details, including any product identifier(s), such as a UPC, ISBN, EAN, or Brand/Manufacturer Part Number pair, a product description, a product title, product/item aspects, and links to images. eBay will use any supplied eBay Product ID (ePID) or a GTIN (UPC, ISBN, or EAN) and attempt to match those identifiers to a product in the eBay Catalog, and if a product match is found, the product details for the inventory item will automatically be populated.
*   The quantity of the inventory item that is available for purchase.
*   Package weight and dimensions, which is required if the seller will be offering calculated shipping options. The package weight will also be required if the seller will be providing flat-rate shipping services, but charging a weight surcharge.

In addition to the `authorization` header, which is required for all eBay REST API calls, the **createOrReplaceInventoryItem** call also requires the `Content-Language` header, that sets the natural language that will be used in the field values of the request payload. For US English, the code value passed in this header should be `en-US`. To view other supported `Content-Language` values, and to read more about all supported HTTP headers for eBay REST API calls, see the [HTTP request headers](/api-docs/static/rest-request-components.html#HTTP) topic in the **Using eBay RESTful APIs** document.

For those who prefer to create or update numerous inventory item records with one call (up to 25 at a time), the [bulkCreateOrReplaceInventoryItem](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-bulkcreateorreplaceinventoryitem) method can be used.
**Parameters:**
- **Content-Language** (string) *required*
  - This header sets the natural language that will be used in the field values of the request payload. For example, the value passed in this header should be `en-US` for English or `de-DE` for German.
- **sku** (string) *required*
  - This path parameter specifies the seller-defined SKU value for the inventory item being created or updated. SKU values must be unique across the seller's inventory.  
  
**Maximum length**: 50
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### deleteInventoryItem

#### DELETE /inventory_item/{sku}
**Description:** This call is used to delete an inventory item record associated with a specified SKU. A successful call will not only delete that inventory item record, but will also have the following effects:

*   Delete any and all unpublished offers associated with that SKU;
*   Delete any and all single-variation eBay listings associated with that SKU;
*   Automatically remove that SKU from a multiple-variation listing and remove that SKU from any and all inventory item groups in which that SKU was a member.

The `authorization` header is the only required HTTP header for this call. See the **HTTP request headers** section for more information.
**Parameters:**
- **sku** (string) *required*
  - This path parameter specifies the seller-defined SKU value of the product whose inventory item record you wish to delete.  
  
Use the [getInventoryItems](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-getinventoryitems) method to retrieve SKU values.  
  
**Maximum length**: 50

### getInventoryItem

#### GET /inventory_item/{sku}
**Description:** This call retrieves the inventory item record for a given SKU. The SKU value is passed in at the end of the call URI. There is no request payload for this call.  
  
The `authorization` header is the only required HTTP header for this call, and it is required for all Inventory API calls. See the **HTTP request headers** section for more information.  
  
For those who prefer to retrieve numerous inventory item records by SKU value with one call (up to 25 at a time), the **bulkGetInventoryItem** method can be used. To retrieve all inventory item records defined on the seller's account, the **getInventoryItems** method can be used (with pagination control if desired).
**Parameters:**
- **sku** (string) *required*
  - This path parameter specifies the seller-defined SKU value of the product whose inventory item record you wish to retrieve.  
  
Use the [getInventoryItems](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-getinventoryitems) method to retrieve SKU values.  
  
**Maximum length**: 50

### getInventoryItems

#### GET /inventory_item
**Description:** This call retrieves all inventory item records defined for the seller's account. The **limit** query parameter allows the seller to control how many records are returned per page, and the **offset** query parameter is used to retrieve a specific page of records. The seller can make multiple calls to scan through multiple pages of records. There is no request payload for this call.  
  
The `authorization` header is the only required HTTP header for this call, and it is required for all Inventory API calls. See the **HTTP request headers** section for more information.  
  
For those who prefer to retrieve numerous inventory item records by SKU value with one call (up to 25 at a time), the **bulkGetInventoryItem** method can be used.
**Parameters:**
- **limit** (string)
  - The value passed in this query parameter sets the maximum number of records to return per page of data. Although this field is a string, the value passed in this field should be an integer from `1` to `200`.  
  
**Min:** 1  
  
**Max:** 200  
  
**Default:** 25
- **offset** (string)
  - The value passed in this query parameter sets the page number to retrieve. The first page of records has a value of `0`, the second page of records has a value of `1`, and so on. If this query parameter is not set, its value defaults to `0`, and the first page of records is returned.

### createOrReplaceProductCompatibility

#### PUT /inventory_item/{sku}/product_compatibility
**Description:** This call is used by the seller to create or replace a list of products that are compatible with the inventory item. The inventory item is identified with a SKU value in the URI. Product compatibility is currently only applicable to motor vehicle parts and accessory categories, but more categories may be supported in the future.  
  
**Note:** In addition to the `authorization` header, which is required for all Inventory API calls, this call also requires the `Content-Type` and `Content-Language` headers.
**Parameters:**
- **Content-Language** (string) *required*
  - This header sets the natural language that will be used in the field values of the request payload. For example, the value passed in this header should be `en-US` for English or `de-DE` for German.
- **sku** (string) *required*
  - This path parameter specifies the SKU (stock keeping unit) of the inventory item associated with the compatibility list being created.  
  
Use the [getInventoryItems](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-getinventoryitems) method to retrieve SKU values.
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### deleteProductCompatibility

#### DELETE /inventory_item/{sku}/product_compatibility
**Description:** This call is used by the seller to delete the list of products that are compatible with the inventory item that is associated with the compatible product list. The inventory item is identified with a SKU value in the URI. Product compatibility is currently only applicable to motor vehicle parts and accessory categories, but more categories may be supported in the future.
**Parameters:**
- **sku** (string) *required*
  - This path parameter specifies the SKU (stock keeping unit) of the inventory item that is associated with the product compatibility list that is being deleted.  
  
Use the [getInventoryItems](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-getinventoryitems) method to retrieve SKU values.

### getProductCompatibility

#### GET /inventory_item/{sku}/product_compatibility
**Description:** This call is used by the seller to retrieve the list of products that are compatible with the inventory item. The SKU value for the inventory item is passed into the call URI, and a successful call with return the compatible vehicle list associated with this inventory item. Product compatibility is currently only applicable to motor vehicle parts and accessory categories, but more categories may be supported in the future.
**Parameters:**
- **sku** (string) *required*
  - This path parameter specifies the SKU (stock keeping unit) of the inventory item associated with the product compatibility list being retrieved.  
  
Use the [getInventoryItems](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-getinventoryitems) method to retrieve SKU values.

### createOrReplaceInventoryItemGroup

#### PUT /inventory_item_group/{inventoryItemGroupKey}
**Description:** **Note:** Each listing can be revised up to 250 times in one calendar day. If this revision threshold is reached, the seller will be blocked from revising the item until the next calendar day.  
This call creates a new inventory item group or updates an existing inventory item group. It is up to sellers whether they want to create a complete inventory item group record right from the start, or sellers can provide only some information with the initial **createOrReplaceInventoryItemGroup** call, and then make one or more additional **createOrReplaceInventoryItemGroup** calls to complete the inventory item group record. Upon first creating an inventory item group record, the only required elements are the [inventoryItemGroupKey](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item_group-createorreplaceinventoryitemgroup.inventoryitemgroup.subtitle) identifier in the call URI, and the members of the inventory item group specified through the [variantSKUs](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item_group-createorreplaceinventoryitemgroup.inventoryitemgroup.variantskus) array in the request payload.  
  

**Important!**Publish offer note: Fields may be optional or conditionally required when calling this method, but become required when publishing the offer to create an active listing. For this method, see [Inventory item group fields](/api-docs/sell/static/inventory/publishing-offers.html#inventory_item_group) for a list of fields required to publish an offer.

  
**Note:** In addition to the `authorization` header, which is required for all Inventory API calls, this call also requires the `Content-Type` and `Content-Language` headers.  
In the case of updating/replacing an existing inventory item group, this call does a complete replacement of the existing inventory item group record, so all fields (including the member SKUs) that make up the inventory item group are required, regardless of whether their values changed. So, when replacing/updating an inventory item group record, it is advised that the seller run a [getInventoryItemGroup](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item_group-getinventoryitemgroup) call for that inventory item group to see all of its current values/settings/members before attempting to update the record. And if changes are made to an inventory item group that is part of a live, multiple-variation eBay listing, these changes automatically update the eBay listing. For example, if a SKU value is removed from the inventory item group, the corresponding product variation will be removed from the eBay listing as well.  
  
In addition to the required inventory item group identifier and member SKUs, other key information that is set with this call include:

*   Title and description of the inventory item group. The string values provided in these fields will actually become the listing title and listing description of the listing once the first SKU of the inventory item group is published successfully
*   Common aspects that inventory items in the group share
*   Product aspects that vary within each product variation
*   Links to images demonstrating the variations of the product, and these images should correspond to the product aspect that is set with the [variesBy.aspectsImageVariesBy](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item_group-createorreplaceinventoryitemgroup.variesby.aspectsimagevariesby) field

  
**Note:** For more information, see [Creating and managing inventory item groups](/api-docs/sell/static/inventory/inventory-item-groups.html).
**Parameters:**
- **Content-Language** (string) *required*
  - This header sets the natural language that will be used in the field values of the request payload. For example, the value passed in this header should be `en-US` for English or `de-DE` for German.
- **inventoryItemGroupKey** (string) *required*
  - This path parameter specifies the unique identifier of the inventory item group being created or updated. This identifier is defined by the seller.  
  
This value cannot be changed once it is set.  
  
**Maximum length:** 50
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### deleteInventoryItemGroup

#### DELETE /inventory_item_group/{inventoryItemGroupKey}
**Description:** This call deletes the inventory item group for a given **inventoryItemGroupKey** value.
**Parameters:**
- **inventoryItemGroupKey** (string) *required*
  - This path parameter specifies the unique identifier of the inventory item group being deleted. This value is assigned by the seller when an inventory item group is created.

### getInventoryItemGroup

#### GET /inventory_item_group/{inventoryItemGroupKey}
**Description:** This call retrieves the inventory item group for a given **inventoryItemGroupKey** value. The **inventoryItemGroupKey** value is passed in at the end of the call URI.
**Parameters:**
- **inventoryItemGroupKey** (string) *required*
  - This path parameter specifies the unique identifier of the inventory item group being retrieved. This value is assigned by the seller when an inventory item group is created.

### bulkMigrateListing

#### POST /bulk_migrate_listing
**Description:** This call is used to convert existing eBay Listings to the corresponding Inventory API objects. If an eBay listing is successfully migrated to the Inventory API model, new Inventory Location, Inventory Item, and Offer objects are created. For a multiple-variation listing that is successfully migrated, in addition to the three new Inventory API objects just mentioned, an Inventory Item Group object will also be created. If the eBay listing is a motor vehicle part or accessory listing with a compatible vehicle list (**ItemCompatibilityList** container in Trading API's Add/Revise/Relist/Verify calls), a Product Compatibility object will be created.  
  

#### Migration Requirements

  
To be eligible for migration, the active eBay listings must meet the following requirements:

*   Listing type is Fixed-Price
    
    **Note:** Auction listings are supported by the Inventory API, but the **bulkMigrateListing** method cannot be used to migrate auction listings.
    
*   The item(s) in the listings must have seller-defined SKU values associated with them, and in the case of a multiple-variation listing, each product variation must also have its own SKU value
*   Business Polices (Payment, Return Policy, and Shipping) must be used on the listing, as legacy payment, return policy, and shipping fields will not be accepted. With the Payment Policy associated with a listing, the immediate payment requirement must be enabled.
*   The postal/zip code (**PostalCode** field in Trading's **ItemType**) or city (**Location** field in Trading's **ItemType**) must be set in the listing; the country is also needed, but this value is required in Trading API, so it will always be set for every listing

  

### Unsupported Listing Features

  
The following features are not yet available to be set or modified through the Inventory API, but they will remain on the active eBay listing, even after a successful migration to the Inventory model. The downside to this is that the seller will be completely blocked (in APIs or My eBay) from revising these features/settings once the migration takes place:

*   Any listing-level Buyer Requirements
*   Listing enhancements like a bold listing title or Gallery Plus

  

### Making the Call

  
In the request payload of the **bulkMigrateListings** call, the seller will pass in an array of one to five eBay listing IDs (aka Item IDs). To save time and hassle, that seller should do a pre-check on each listing to make sure those listings meet the requirements to be migrated to the new Inventory model. This method also requires the `Content-Type` request header. There are no path or query parameters for this call.  
  

### Call Response

  
If an eBay listing is migrated successfully to the new Inventory model, the following will occur:

*   An Inventory Item object will be created for the item(s) in the listing, and this object will be accessible through the Inventory API
*   An Offer object will be created for the listing, and this object will be accessible through the Inventory API
*   An Inventory Location object will be created and associated with the Offer object, as an Inventory Location must be associated with a published Offer

The response payload of the Bulk Migrate Listings call will show the results of each listing migration. These results include an HTTP status code to indicate the success or failure of each listing migration, the SKU value associated with each item, and if the migration is successful, an Offer ID value. The SKU value will be used in the Inventory API to manage the Inventory Item object, and the Offer ID value will be used in the Inventory API to manage the Offer object. Errors and/or warnings containers will be returned for each listing where an error and/or warning occurred with the attempted migration.  
  
If a multiple-variation listing is successfully migrated, along with the Offer and Inventory Location objects, an Inventory Item object will be created for each product variation within the listing, and an Inventory Item Group object will also be created, grouping those variations together in the Inventory API platform. For a motor vehicle part or accessory listing that has a specified list of compatible vehicles, in addition to the Inventory Item, Inventory Location, and Offer objects that are created, a Product Compatibility object will also be created in the Inventory API platform.
**Parameters:**
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### createOrReplaceSkuLocationMapping

#### PUT /listing/{listingId}/sku/{sku}/locations
**Description:** This method allows sellers to map multiple fulfillment center locations to single-SKU listing, or to a single SKU within a multiple-variation listing. This allows eBay to leverage the location metadata associated with a seller's fulfillment centers to calculate more accurate estimated delivery dates on their listing.  
  
**Note:** While location mappings can be created for listings on any eBay marketplace, the improved delivery date estimate feature is currently only supported for US-based fulfillment centers shipping domestically within the US.  
The listing for which the locations will be mapped is specified through the **listingId** and **sku** values associated with the item. Note that only a single SKU value can be identified; if the seller wishes to map locations to multiple/all SKU values in a multiple-variation listing, this method must be called for each of those SKUs within the listing.  
  
**Note:** Sellers should keep track of **listingId**/**sku** pairs that have been used for location mapping, as there is no programmatic way to retrieve or delete these pairs at this time.  
In the case of replacing/updating existing location mappings, this method will do a complete replacement of the location mappings associated with a SKU. This means that each existing location mappings that the seller wants to continue to associate with the SKU are required in the update call, regardless of if they are affected by the update.  
  
This method is only supported for inventory locations that have `FULFILLMENT_CENTER` as one of their **locationTypes**. For more information on fulfillment center locations, see [Create a fulfillment center location](/api-docs/sell/static/inventory/multi-warehouse-program.html#create-location).  
  
For more information on location mapping features, see [Multi-warehouse program](/api-docs/sell/static/inventory/multi-warehouse-program.html) in the Selling Integration Guide.  
  
**Note:** Only listings with SKU values are supported. Sellers using listings creating through the Trading API can add a SKU value to their single variation listing through the [Item.SKU](/Devzone/XML/docs/Reference/eBay/AddFixedPriceItem.html#Request.Item.SKU) field during listing creation or by using the **ReviseItem** family of calls.
**Parameters:**
- **listingId** (string) *required*
  - This path parameter specifies the unique identifier of the listing for which multiple fulfillment center locations will be mapped to a SKU within that listing.  
  
Use the [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) method of the Inventory API or the [GetMyEbaySelling](/devzone/xml/docs/reference/ebay/getmyebayselling.html) method of the Trading API to retrieve all listing IDs for all active listings.
- **sku** (string) *required*
  - This path parameter specifies the seller-defined SKU value of the item/variation for which multiple fulfillment center locations will be mapped. This SKU value must be defined in the listing specified in **listingId** parameter.  
  
Use the [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) method of the Inventory API or the [GetMyEbaySelling](/devzone/xml/docs/reference/ebay/getmyebayselling.html) method of the Trading API to retrieve all listing IDs for all active listings.  
  
**Note:** SKU values can be updated by a seller at any time. If a seller updates a SKU value that is being used for location mapping, this change will not be reflected until the mapping is updated through the **createOrReplaceSkuLocationMapping** method.
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### deleteSkuLocationMapping

#### DELETE /listing/{listingId}/sku/{sku}/locations
**Description:** This method allows sellers to remove all location mappings associated with a specific SKU within a listing.  
  
The **listingId** and **sku** of the listing are passed in as path parameters.  
  

**Important!** To remove all location mappings from a multiple-variation listing, this method must be used for each individual SKU in the listing.
**Parameters:**
- **listingId** (string) *required*
  - This path parameter specifies the unique identifier of the listing that the SKU belongs to for which all mapped locations will be removed.  
  
Use the [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) method of the **Inventory API** or the [GetMyEbaySelling](/devzone/xml/docs/reference/ebay/getmyebayselling.html) method of the **Trading API** to retrieve all listing IDs for all active listings.
- **sku** (string) *required*
  - This path parameter specifies the seller-defined SKU value of the item/variation for which location mappings will be removed. This SKU value must be defined in the listing specified in **listingId** parameter  
  
Use the [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) method of the **Inventory API** or the [GetMyEbaySelling](/devzone/xml/docs/reference/ebay/getmyebayselling.html) method of the **Trading API** to retrieve all SKUs for all active listings.

### getSkuLocationMapping

#### GET /listing/{listingId}/sku/{sku}/locations
**Description:** This method allows sellers to retrieve the locations mapped to a specific SKU within a listing.  
  
The **listingId** and **sku** of the listing are passed in as path parameters. This method only retrieves location mappings for a single SKU value; if a seller wishes to retrieve the location mappings for all items in a multiple-variation listing, this method must be called for each variation in the listing.  
  
If there are fulfillment center locations mapped to the SKU, they will be returned in the **locations** array. If no locations are mapped to the SKU, status code **404 Not Found** will be returned.
**Parameters:**
- **listingId** (string) *required*
  - This path parameter specifies the unique identifier of the listing that the SKU belongs to for which all mapped locations will be retrieved.  
  
Use the [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) method of the **Inventory API** or the [GetMyEbaySelling](/devzone/xml/docs/reference/ebay/getmyebayselling.html) method of the **Trading API** to retrieve all listing IDs for all active listings.
- **sku** (string) *required*
  - This path parameter specifies the seller-defined SKU value of the item/variation for which location mappings will be retrieved. This SKU value must be defined in the listing specified in **listingId** parameter  
  
Use the [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) method of the **Inventory API** or the [GetMyEbaySelling](/devzone/xml/docs/reference/ebay/getmyebayselling.html) method of the **Trading API** to retrieve all SKUs for all active listings.

### bulkCreateOffer

#### POST /bulk_create_offer
**Description:** This call creates multiple offers (up to 25) for specific inventory items on a specific eBay marketplace. Although it is not a requirement for the seller to create complete offers (with all necessary details) right from the start, eBay recommends that the seller provide all necessary details with this call since there is currently no bulk operation available to update multiple offers with one call. The following fields are always required in the request payload: [sku](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkcreateoffer.ebayofferdetailswithkeys.sku), [marketplaceId](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkcreateoffer.ebayofferdetailswithkeys.marketplaceid), and (listing) [format](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkcreateoffer.ebayofferdetailswithkeys.format).  
  

**Important!**Publish offer note: Fields may be optional or conditionally required when calling this method, but become required when publishing the offer to create an active listing. For this method, see [Offer fields](/api-docs/sell/static/inventory/publishing-offers.html#offer) for a list of fields required to publish an offer.

  
Other information that will be required before a offer can be published are highlighted below:

*   Inventory location
*   Offer price
*   Available quantity
*   eBay listing category
*   Referenced listing policy profiles to set payment, return, and fulfillment values/settings

**Note:** Though the [includeCatalogProductDetails](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkcreateoffer.ebayofferdetailswithkeys.includecatalogproductdetails) parameter is not required to be submitted in the request, the parameter defaults to `true` if omitted.  
**Note:** In addition to the `authorization` header, which is required for all Inventory API calls, this call also requires the `Content-Type` and `Content-Language` headers.

If the call is successful, unique [offerId](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkcreateoffer.offerskuresponse.offerid) values are returned in the response for each successfully created offer. The **offerId** value will be required for many other offer-related calls. Note that this call only stages an offer for publishing. The seller must run either the [publishOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-publishoffer), [bulkPublishOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkpublishoffer), or [publishOfferByInventoryItemGroup](/develop/api/sell/inventory_api#sell-inventory_api-offer-publishofferbyinventoryitemgroup) call to convert offer(s) into an active single- or multiple-variation listing.

For those who prefer to create a single offer per call, the [createOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-createoffer) method can be used instead.
**Parameters:**
- **Content-Language** (string) *required*
  - This header sets the natural language that will be used in the field values of the request payload. For example, the value passed in this header should be `en-US` for English or `de-DE` for German.
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### bulkPublishOffer

#### POST /bulk_publish_offer
**Description:** **Note:** Each listing can be revised up to 250 times in one calendar day. If this revision threshold is reached, the seller will be blocked from revising the item until the next calendar day.  
This call is used to convert unpublished offers (up to 25) into published offers, or live eBay listings. The unique identifier ([offerId](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkpublishoffer.offerkeywithid.offerid)) of each offer to publish is passed into the request payload. It is possible that some unpublished offers will be successfully created into eBay listings, but others may fail. The response payload will show the results for each **offerId** value that is passed into the request payload. The [errors](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkpublishoffer.offerresponsewithlistingid.errors) and [warnings](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkpublishoffer.offerresponsewithlistingid.warnings) containers will be returned for an offer that had one or more issues being published.  
  

**Important!**Publish offer note: Fields may be optional or conditionally required when calling the create or update methods, but become required when publishing the offer to create active listings. For this method, see [Offer fields](/api-docs/sell/static/inventory/publishing-offers.html#offer) for a list of fields required to publish an offer.

  
For those who prefer to publish one offer per call, the [publishOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-publishoffer) method can be used instead. In the case of a multiple-variation listing, the [publishOfferByInventoryItemGroup](/develop/api/sell/inventory_api#sell-inventory_api-offer-publishofferbyinventoryitemgroup) call should be used instead, as this call will convert all unpublished offers associated with an inventory item group into a multiple-variation listing.
**Parameters:**
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### createOffer

#### POST /offer
**Description:** This call creates an offer for a specific inventory item on a specific eBay marketplace. It is up to the sellers whether they want to create a complete offer (with all necessary details) right from the start, or sellers can provide only some information with the initial **createOffer** call, and then make one or more subsequent [updateOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-updateoffer) calls to complete the offer and prepare to publish the offer. Upon first creating an offer, the following fields are required in the request payload: [sku](/develop/api/sell/inventory_api#sell-inventory_api-offer-createoffer.ebayofferdetailswithkeys.sku), [marketplaceId](/develop/api/sell/inventory_api#sell-inventory_api-offer-createoffer.ebayofferdetailswithkeys.marketplaceid), and (listing) [format](/develop/api/sell/inventory_api#sell-inventory_api-offer-createoffer.ebayofferdetailswithkeys.format).  
  

**Important!**Publish offer note: Fields may be optional or conditionally required when calling this method, but become required when publishing the offer to create an active listing. For this method, see [Offer fields](/api-docs/sell/static/inventory/publishing-offers.html#offer) for a list of fields required to publish an offer.

  
Other information that will be required before an offer can be published are highlighted below. These settings are either set with **createOffer**, or they can be set with a subsequent **updateOffer** call:

*   Inventory location
*   Offer price
*   Available quantity
*   eBay listing category
*   Referenced listing policy profiles to set payment, return, and fulfillment values/settings

**Note:** Though the [includeCatalogProductDetails](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkcreateoffer.ebayofferdetailswithkeys.includecatalogproductdetails) parameter is not required to be submitted in the request, the parameter defaults to `true` if omitted.

**Note:** In addition to the `authorization` header, which is required for all Inventory API calls, this call also requires the `Content-Type` and `Content-Language` headers.

If the call is successful, a unique [offerId](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkcreateoffer.offerskuresponse.offerid) value is returned in the response. This value will be required for many other offer-related calls. Note that this call only stages an offer for publishing. The seller must run the [publishOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-publishoffer) call to convert the offer to an active eBay listing.

For those who prefer to create multiple offers (up to 25 at a time) with one call, the [bulkCreateOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkcreateoffer) method can be used.
**Parameters:**
- **Content-Language** (string) *required*
  - This header sets the natural language that will be used in the field values of the request payload. For example, the value passed in this header should be `en-US` for English or `de-DE` for German.
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### deleteOffer

#### DELETE /offer/{offerId}
**Description:** If used against an unpublished offer, this call will permanently delete that offer. In the case of a published offer (or live eBay listing), a successful call will either end the single-variation listing associated with the offer, or it will remove that product variation from the eBay listing and also automatically remove that product variation from the inventory item group. In the case of a multiple-variation listing, the **deleteOffer** will not remove the product variation from the listing if that variation has one or more sales. If that product variation has one or more sales, the seller can alternately just set the available quantity of that product variation to `0`, so it is not available in the eBay search or View Item page, and then the seller can remove that product variation from the inventory item group at a later time.
**Parameters:**
- **offerId** (string) *required*
  - This path parameter specifies the unique identifier of the offer being deleted.  
  
Use the [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) method to retrieve offer IDs.

### getListingFees

#### POST /offer/get_listing_fees
**Description:** This call is used to retrieve the expected listing fees for up to 250 unpublished offers. An array of one or more [\>offerId](/develop/api/sell/inventory_api#sell-inventory_api-offer-getlistingfees.offerkeywithid.offerid) values are passed in under the [offers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getlistingfees.offerkeyswithid.offers) container.  
  
In the response payload, all listing fees are grouped by eBay marketplace, and listing fees per offer are not shown. A [fees](/develop/api/sell/inventory_api#sell-inventory_api-offer-getlistingfees.feesummary.fees) container will be returned for each eBay marketplace where the seller is selling the products associated with the specified offers.  
  
Errors will occur if the seller passes in **offerIds** that represent published offers, so this call should be made before the seller publishes offers with the [publishOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-publishoffer).
**Parameters:**
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### getOffer

#### GET /offer/{offerId}
**Description:** This call retrieves a specific published or unpublished offer. The unique identifier of the offer (**offerId**) is passed in at the end of the call URI.

The `authorization` header is the only required HTTP header for this call. See the **HTTP request headers** section for more information.
**Parameters:**
- **offerId** (string) *required*
  - This path parameter specifies the unique identifier of the offer that is to be retrieved.  
  
Use the [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) method to retrieve offer IDs.

### getOffers

#### GET /offer
**Description:** This call retrieves all existing offers for the specified SKU value. The seller has the option of limiting the offers that are retrieved to a specific eBay marketplace, or to a listing format.  
  
**Note:** At this time, the same SKU value can not be offered across multiple eBay marketplaces, so the **marketplace\_id** query parameter currently does not have any practical use for this call.  
**Note:** The same SKU can be offered through an auction and a fixed-price listing concurrently. If this is the case, **getOffers** will return two offers. Otherwise, only one offer will be returned.  
The `authorization` header is the only required HTTP header for this call. See the **HTTP request headers** section for more information.
**Parameters:**
- **format** (string)
  - This enumeration value sets the listing format for the offers being retrieved. This query parameter will be passed in if the seller only wants to see offers in a specified listing format, such as `FIXED_PRICE`.
- **limit** (string)
  - The value passed in this query parameter sets the maximum number of records to return per page of data. Although this field is a string, the value passed in this field should be a positive integer value. If this query parameter is not set, up to 100 records will be returned on each page of results.
- **marketplace_id** (string)
  - The unique identifier of the eBay marketplace. This query parameter will be passed in if the seller only wants to see the product's offers on a specific eBay marketplace.  
  
**Note:** At this time, the same SKU value can not be offered across multiple eBay marketplaces, so the **marketplace\_id** query parameter currently does not have any practical use for this call.
- **offset** (string)
  - The value passed in this query parameter sets the page number to retrieve. Although this field is a string, the value passed in this field should be a integer value equal to or greater than `0`. The first page of records has a value of `0`, the second page of records has a value of `1`, and so on. If this query parameter is not set, its value defaults to `0`, and the first page of records is returned.
- **sku** (string)
  - The seller-defined SKU value is passed in as a query parameter. All offers associated with this product are returned in the response.  
  
**Note:** The same SKU can be offered through an auction and a fixed-price listing concurrently. If this is the case, **getOffers** will return two offers. Otherwise, only one offer will be returned.  
Use the [getInventoryItems](/develop/api/sell/inventory_api#sell-inventory_api-inventory_item-getinventoryitems) method to retrieve SKU values.  
  
**Maximum length**: 50.

### publishOffer

#### POST /offer/{offerId}/publish
**Description:** **Note:** Each listing can be revised up to 250 times in one calendar day. If this revision threshold is reached, the seller will be blocked from revising the item until the next calendar day.  
This call is used to convert an unpublished offer into a published offer, or live eBay listing. The unique identifier of the offer (**offerId**) is passed in at the end of the call URI.  
  

**Important!**Publish offer note: Fields may be optional or conditionally required when calling the create or update methods, but become required when publishing the offer to create active listings. For this method, see [Offer fields](/api-docs/sell/static/inventory/publishing-offers.html#offer) for a list of fields required to publish an offer.

  
For those who prefer to publish multiple offers (up to 25 at a time) with one call, the [bulkPublishOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-bulkpublishoffer) method can be used. In the case of a multiple-variation listing, the [publishOfferByInventoryItemGroup](/develop/api/sell/inventory_api#sell-inventory_api-offer-publishofferbyinventoryitemgroup) call should be used instead, as this call will convert all unpublished offers associated with an inventory item group into a multiple-variation listing.
**Parameters:**
- **offerId** (string) *required*
  - This path parameter specifies the unique identifier of the offer that is to be published.  
  
Use the [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) method to retrieve offer IDs.

### publishOfferByInventoryItemGroup

#### POST /offer/publish_by_inventory_item_group
**Description:** **Note:** Please note that any eBay listing created using the Inventory API cannot be revised or relisted using the Trading API calls.  
**Note:** Each listing can be revised up to 250 times in one calendar day. If this revision threshold is reached, the seller will be blocked from revising the item until the next calendar day.  
This call is used to convert all unpublished offers associated with an inventory item group into an active, multiple-variation listing.  
  

**Important!**Publish offer note: Fields may be optional or conditionally required when calling the create or update methods, but become required when publishing the offer to create active listings. For this method, see [Offer fields](/api-docs/sell/static/inventory/publishing-offers.html#offer) for a list of fields required to publish an offer.

  
The unique identifier of the inventory item group ([inventoryItemGroupKey](/develop/api/sell/inventory_api#sell-inventory_api-offer-publishofferbyinventoryitemgroup.publishbyinventoryitemgrouprequest.inventoryitemgroupkey)) is passed in the request payload. All inventory items and their corresponding offers in the inventory item group must be valid (meet all requirements) for the **publishOfferByInventoryItemGroup** call to be completely successful. For any inventory items in the group that are missing required data or have no corresponding offers, the **publishOfferByInventoryItemGroup** will create a new multiple-variation listing, but any inventory items with missing required data/offers will not be in the newly-created listing. If any inventory items in the group to be published have invalid data, or one or more of the inventory items have conflicting data with one another, the **publishOfferByInventoryItemGroup** call will fail. Be sure to check for any error or warning messages in the call response for any applicable information about one or more inventory items/offers having issues.
**Parameters:**
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### updateOffer

#### PUT /offer/{offerId}
**Description:** This call updates an existing offer. An existing offer may be in published state (active eBay listing), or in an unpublished state and yet to be published with the [publishOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-publishoffer) call. The unique identifier (**offerId**) for the offer to update is passed in at the end of the call URI.  
  
The **updateOffer** call does a complete replacement of the existing offer object, so all fields that make up the current offer object are required, regardless of whether their values changed.  
  

**Important!**Publish offer note: Fields may be optional or conditionally required when calling this method, but become required when publishing the offer to create an active listing. For this method, see [Offer fields](/api-docs/sell/static/inventory/publishing-offers.html#offer) for a list of fields required to publish an offer.

  
Other information that is required before an unpublished offer can be published or before a published offer can be revised include:

*   Inventory location
*   Offer price
*   Available quantity
*   eBay listing category
*   Referenced listing policy profiles to set payment, return, and fulfillment values/settings

**Note:** Though the **includeCatalogProductDetails** parameter is not required to be submitted in the request, the parameter defaults to `true` if omitted from both the **updateOffer** and the **createOffer** calls. If a value is specified in the **updateOffer** call, this value will be used.  
**Note:** In addition to the `authorization` header, which is required for all Inventory API calls, this call also requires the `Content-Type` and `Content-Language` headers.  
**Note:** Each listing can be revised up to 250 times in one calendar day. If this revision threshold is reached, the seller will be blocked from revising the item until the next calendar day.

For published offers, the **listingDescription** field is also required to update the offer/eBay listing. For unpublished offers, this field is not necessarily required unless it is already set for the unpublished offer.
**Parameters:**
- **Content-Language** (string) *required*
  - This header sets the natural language that will be used in the field values of the request payload. For example, the value passed in this header should be `en-US` for English or `de-DE` for German.
- **offerId** (string) *required*
  - This path parameter specifies the unique identifier of the offer being updated.  
  
Use the [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) method to retrieve offer IDs.
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### withdrawOffer

#### POST /offer/{offerId}/withdraw
**Description:** This call is used to end a single-variation listing that is associated with the specified offer. This call is used in place of the [deleteOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-deleteoffer) call if the seller only wants to end the listing associated with the offer but does not want to delete the offer object. With this call, the offer object remains, but it goes into the unpublished state, and will require a [publishOffer](/develop/api/sell/inventory_api#sell-inventory_api-offer-publishoffer) call to relist the offer.  
  
To end a multiple-variation listing that is associated with an inventory item group, the [withdrawOfferByInventoryItemGroup](/develop/api/sell/inventory_api#sell-inventory_api-offer-withdrawofferbyinventoryitemgroup) method can be used. This call only ends the multiple-variation listing associated with an inventory item group but does not delete the inventory item group object, nor does it delete any of the offers associated with the inventory item group, but instead all of these offers go into the unpublished state.
**Parameters:**
- **offerId** (string) *required*
  - This path parameter specifies the unique identifier of the offer that is to be withdrawn.  
  
Use the [getOffers](/develop/api/sell/inventory_api#sell-inventory_api-offer-getoffers) method to retrieve offer IDs.

### withdrawOfferByInventoryItemGroup

#### POST /offer/withdraw_by_inventory_item_group
**Description:** This call is used to end a multiple-variation eBay listing that is associated with the specified inventory item group. This call only ends multiple-variation eBay listing associated with the inventory item group but does not delete the inventory item group object. Similarly, this call also does not delete any of the offers associated with the inventory item group, but instead all of these offers go into the unpublished state. If the seller wanted to relist the multiple-variation eBay listing, they could use the [publishOfferByInventoryItemGroup](/develop/api/sell/inventory_api#sell-inventory_api-offer-publishofferbyinventoryitemgroup) method.
**Parameters:**
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### createInventoryLocation

#### POST /location/{merchantLocationKey}
**Description:** Use this call to create a new inventory location. In order to create and publish an offer (and create an eBay listing), a seller must have at least one location, as every offer must be associated with at least one location.  
  

**Important!**Publish offer note: Fields may be optional or conditionally required when calling this method, but become required when publishing the offer to create an active listing. For this method, see [Location fields](</api-docs/sell/static/inventory/publishing-offers.html#location >) for a list of fields required to publish an offer.

  
Upon first creating an inventory location, only a seller-defined location identifier and a physical location is required, and once set, these values can not be changed. The unique identifier value ([merchantLocationKey](/develop/api/sell/inventory_api#sell-inventory_api-location-getinventorylocations.inventorylocationresponse.merchantlocationkey)) is passed in at the end of the call URI. This **merchantLocationKey** value will be used in other Inventory Location calls to identify the location to perform an action against.  
  
When creating an inventory location, the [locationTypes](/develop/api/sell/inventory_api#sell-inventory_api-location-createinventorylocation.inventorylocationfull.locationtypes) can be specified to define the function of a location. At this time, the following **locationTypes** are supported:

*   **Fulfillment center** locations are used by sellers selling products through the Multi-warehouse program to get improved estimated delivery dates on their listings. A full address is required when creating a fulfillment center location, as well as the **fulfillmentCenterSpecifications** of the location. For more information on using the fulfillment center location type to get improved delivery dates, see [Multi-warehouse program](/api-docs/sell/static/inventory/multi-warehouse-program.html).
*   **Warehouse** locations are used for traditional shipping. A full street address is not needed, but the **postalCode** and **country** OR **city**, **stateOrProvince**, and **country** of the location must be provided.
*   **Store** locations are generally used by merchants selling product through the In-Store Pickup program. A full address is required when creating a store location.

  
Note that all inventory locations are "enabled" by default when they are created, and you must specifically disable them (by passing in a value of `DISABLED` in the **merchantLocationStatus** field) if you want them to be set to the disabled state. The seller's inventory cannot be loaded to inventory locations in the disabled state.  
  
Unless one or more errors and/or warnings occur with the call, there is no response payload for this call. A successful call will return an HTTP status value of `204 No Content`.
**Parameters:**
- **merchantLocationKey** (string) *required*
  - This path parameter specifies the unique merchant-defined key (ID) for the inventory location that is to be deleted.  
  
Use the [getInventoryLocations](/develop/api/sell/inventory_api#sell-inventory_api-location-getinventorylocations) method to retrieve merchant location keys.  
  
**Maximum length**: 36
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

### deleteInventoryLocation

#### DELETE /location/{merchantLocationKey}
**Description:** This call deletes the inventory location that is specified in the **merchantLocationKey** path parameter. Note that deleting a location will not affect any active eBay listings associated with the deleted location, but the seller will not be able modify the offers associated with the location once it is deleted.

**Note:** Deletion is not currently supported for fulfillment center locations, as location mappings will still be retained despite the location being deleted. Instead, fulfillment center locations should be disabled using the [disableInventoryLocation](/develop/api/sell/inventory_api#sell-inventory_api-location-disableinventorylocation) method.  
Unless one or more errors and/or warnings occur with the call, there is no response payload for this call. A successful call will return an HTTP status value of `200 OK`.
**Parameters:**
- **merchantLocationKey** (string) *required*
  - This path parameter specifies the unique merchant-defined key (ID) for the inventory location that is to be deleted.  
  
Use the [getInventoryLocations](/develop/api/sell/inventory_api#sell-inventory_api-location-getinventorylocations) method to retrieve merchant location keys.  
  
**Maximum length**: 36

### disableInventoryLocation

#### POST /location/{merchantLocationKey}/disable
**Description:** This call disables the inventory location that is specified in the **merchantLocationKey** path parameter. Sellers can not load/modify inventory to disabled locations. Note that disabling a location will not affect any active eBay listings associated with the disabled location, but the seller will not be able modify the offers associated with a disabled location.

A successful call will return an HTTP status value of `200 OK`.
**Parameters:**
- **merchantLocationKey** (string) *required*
  - This path parameter specifies the unique merchant-defined key (ID) for an inventory location that is to be disabled.  
  
Use the [getInventoryLocations](/develop/api/sell/inventory_api#sell-inventory_api-location-getinventorylocations) method to retrieve merchant location keys.  
  
**Maximum length**: 36

### enableInventoryLocation

#### POST /location/{merchantLocationKey}/enable
**Description:** This call enables a disabled inventory location that is specified in the **merchantLocationKey** path parameter. Once a disabled location is enabled, sellers can start loading/modifying inventory to that location.  
  
A successful call will return an HTTP status value of `200 OK`.
**Parameters:**
- **merchantLocationKey** (string) *required*
  - This path parameter specifies unique merchant-defined key (ID) for a `disabled` inventory location that is to be enabled.  
  
Use the [getInventoryLocations](/develop/api/sell/inventory_api#sell-inventory_api-location-getinventorylocations) method to retrieve merchant location keys.  
  
**Maximum length**: 36

### getInventoryLocation

#### GET /location/{merchantLocationKey}
**Description:** This call retrieves all defined details of the inventory location that is specified by the **merchantLocationKey** path parameter.  
  
A successful call will return an HTTP status value of `200 OK`.
**Parameters:**
- **merchantLocationKey** (string) *required*
  - This path parameter specifies the unique merchant-defined key (ID) for an inventory location that is being retrieved.  
  
Use the [getInventoryLocations](/develop/api/sell/inventory_api#sell-inventory_api-location-getinventorylocations) method to retrieve merchant location keys.  
  
**Maximum length**: 36

### getInventoryLocations

#### GET /location
**Description:** This call retrieves all defined details for every inventory location associated with the seller's account. There are no required parameters for this call and no request payload. However, there are two optional query parameters, **limit** and **offset**. The **limit** query parameter sets the maximum number of locations returned on one page of data, and the **offset** query parameter specifies the page of data to return. These query parameters are discussed more in the **URI parameters** table below.

The `authorization` HTTP header is the only required request header for this call.  
  
A successful call will return an HTTP status value of `200 OK`.
**Parameters:**
- **limit** (string)
  - The value passed in this query parameter sets the maximum number of records to return per page of data. Although this field is a string, the value passed in this field should be a positive integer value. If this query parameter is not set, up to 100 records will be returned on each page of results.  
  
**Min**: 1
- **offset** (string)
  - Specifies the number of locations to skip in the result set before returning the first location in the paginated response.

Combine **offset** with the **limit** query parameter to control the items returned in the response. For example, if you supply an **offset** of `0` and a **limit** of `10`, the first page of the response contains the first 10 items from the complete list of items retrieved by the call. If **offset** is `10` and **limit** is `20`, the first page of the response contains items 11-30 from the complete result set.

**Default:** 0

### updateInventoryLocation

#### POST /location/{merchantLocationKey}/update_location_details
**Description:** Use this call to update location details for an existing inventory location. Specify the inventory location you want to update using the **merchantLocationKey** path parameter.

You can update the following text-based fields: **name**, **phone**, **timeZoneId**, **geoCoordinates**, **fulfillmentCenterSpecifications**, **locationTypes**, **locationWebUrl**, **locationInstructions** and **locationAdditionalInformation** any number of times for any location type.

For warehouse and store inventory locations, address fields can be updated any number of times. Address fields **cannot** be updated for fulfillment center locations. However, if any address fields were omitted during the **createInventoryLocation** call, they can be added through this method.  
**Note:** When updating a warehouse location to a fulfillment center, sellers can update any of the address fields a single time during the same call used to make this update. After this, they can no longer be updated.

For store locations, the operating hours and/or the special hours can also be updated.

Whatever text is passed in for these fields in an **updateInventoryLocation** call will replace the current text strings defined for these fields.

Unless one or more errors and/or warnings occurs with the call, there is no response payload for this call. A successful call will return an HTTP status value of `204 No Content`.
**Parameters:**
- **merchantLocationKey** (string) *required*
  - This path parameter specifies the unique merchant-defined key (ID) for an inventory location that is to be updated.  
  
Use the [getInventoryLocations](/develop/api/sell/inventory_api#sell-inventory_api-location-getinventorylocations) method to retrieve merchant location keys.  
  
**Maximum length**: 36
- **Content-Type** (string) *required*
  - This header indicates the format of the request body provided by the client. Its value should be set to **application/json**.

## Error Codes

The following error codes may be returned by this API:

### REQUEST Errors

#### 25002 - API_INVENTORY
**Description:** Any User error. {additionalInfo}

#### 25003 - API_INVENTORY
**Description:** Invalid price. {additionalInfo}

#### 25004 - API_INVENTORY
**Description:** Invalid quantity. {additionalInfo}

#### 25005 - API_INVENTORY
**Description:** Invalid category. {additionalInfo}

#### 25006 - API_INVENTORY
**Description:** Invalid listing option. {additionalInfo}

#### 25007 - API_INVENTORY
**Description:** Invalid Shipping policy information. {additionalInfo}

#### 25008 - API_INVENTORY
**Description:** Invalid Payment policy information. {additionalInfo}

#### 25009 - API_INVENTORY
**Description:** Invalid Return policy information. {additionalInfo}

#### 25011 - API_INVENTORY
**Description:** Invalid tax information. {additionalInfo}

#### 25012 - API_INVENTORY
**Description:** Invalid location. {additionalInfo}

#### 25013 - API_INVENTORY
**Description:** This error code is associated with multiple possible errors. See [25013 Invalid data in the Inventory Item Group](</api-docs/sell/static/inventory/inventory-error-details.html#25013 >) for the full list of messages returned and any available troubleshooting information.

#### 25014 - API_INVENTORY
**Description:** Invalid pictures. {additionalInfo}

#### 25015 - API_INVENTORY
**Description:** Invalid picture URL. {additionalInfo}

#### 25016 - API_INVENTORY
**Description:** Invalid {fieldName}. {additionalInfo}

#### 25017 - API_INVENTORY
**Description:** This error code is associated with multiple possible errors. See [25017 Missing information in fields](</api-docs/sell/static/inventory/inventory-error-details.html#25017 >) for the full list of messages returned and any available troubleshooting information.

#### 25018 - API_INVENTORY
**Description:** This error code is associated with multiple possible errors. See [25018 Incomplete account information](</api-docs/sell/static/inventory/inventory-error-details.html#25018 >) for the full list of messages returned and any available troubleshooting information.

#### 25019 - API_INVENTORY
**Description:** This error code is associated with multiple possible errors. See [25019 Cannot revise the listing](</api-docs/sell/static/inventory/inventory-error-details.html#25019 >) for the full list of messages returned and any available troubleshooting information.

#### 25020 - API_INVENTORY
**Description:** Invalid package details. {additionalInfo}

#### 25021 - API_INVENTORY
**Description:** Invalid condition information. {additionalInfo}

#### 25022 - API_INVENTORY
**Description:** Invalid attribute. {fieldName}

#### 25023 - API_INVENTORY
**Description:** Invalid compatibility information. {additionalInfo}

#### 25026 - API_INVENTORY
**Description:** Selling limits exceeded. {additionalInfo}

#### 25097 - API_INVENTORY
**Description:** This listing is on hold due to a policy violation, and revisions are not possible. Please check your email for more information.

#### 25098 - API_INVENTORY
**Description:** {replaceable\_value} transaction is not possible as the parent listing is on-hold. Please check your email for further information.

#### 25123 - API_INVENTORY
**Description:** This P&A listing has a non-compliant domestic return policy. Please update the return window to 30-days (or more) and/or update return shipping cost payer to Seller, and then make another call. Sellers using business policies must make the same changes to their return business policy and then make another call. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy.

#### 25501 - API_INVENTORY
**Description:** Invalid picture. {additionalInfo}

#### 25502 - API_INVENTORY
**Description:** Invalid attribute information. {additionalInfo}

#### 25503 - API_INVENTORY
**Description:** Invalid product information. {additionalInfo}

#### 25601 - API_INVENTORY
**Description:** Invalid attribute. {fieldName}

#### 25604 - API_INVENTORY
**Description:** Input error. {additionalInfo}

#### 25701 - API_INVENTORY
**Description:** These SKU(s) are not in the system

#### 25702 - API_INVENTORY
**Description:** SKU {additionalInfo} is not available in the system

#### 25707 - API_INVENTORY
**Description:** Invalid sku. sku has to be alphanumeric with upto 50 characters in length

#### 25708 - API_INVENTORY
**Description:** Invalid sku

#### 25709 - API_INVENTORY
**Description:** Invalid request. Invalid value for field {additionalInfo}

#### 25710 - API_INVENTORY
**Description:** We didn't find the resource/entity you are requesting. Please verify the request

#### 25713 - API_INVENTORY
**Description:** This Offer is not available : {additionalInfo}.

#### 25715 - API_INVENTORY
**Description:** Invalid Dimension and Weight

#### 25727 - API_INVENTORY
**Description:** The number of InventoryItems in the request cannot exceed {additionalInfo}.

#### 25728 - API_INVENTORY
**Description:** InventoryItems should be unique in the request.

#### 25733 - API_INVENTORY
**Description:** Valid SKU and locale information are required for all the InventoryItems in the request.

#### 25759 - API_INVENTORY
**Description:** shipToLocationAvailability quantity value should be greater than or equal to auction allocation. Please provide valid quantity or unpublish auction offers of the sku.

#### 25734 - API_INVENTORY
**Description:** SKU should be unique in the request.

#### 25029 - API_INVENTORY
**Description:** {field} is required for this category.

#### 25031 - API_INVENTORY
**Description:** {field} is not valid and needs to be a number between {min} and {max}

#### 25034 - API_INVENTORY
**Description:** Only {max value} policies can be specified

#### 25035 - API_INVENTORY
**Description:** The specified policy is not found for the market place

#### 25036 - API_INVENTORY
**Description:** The policy(ies) {PolicyId} is not of type {PolicyEnum}

#### 25038 - API_INVENTORY
**Description:** {ItemId} cannot be revised if the item has a bid or a best offer or is ending within 12 hours

#### 25039 - API_INVENTORY
**Description:** {ItemId} cannot be revised if the item has a bid or a best offer and is ending within 12 hours

#### 25040 - API_INVENTORY
**Description:** {ItemId} cannot be revised if the item has a bid or a best offer and is ending within 12 hours

#### 25041 - API_INVENTORY
**Description:** When listing an item with Refurbished condition, maximum handling time must be {replaceable\_value} business day(s).

#### 25042 - API_INVENTORY
**Description:** When listing an item with Refurbished condition, free shipping must be provided.

#### 25043 - API_INVENTORY
**Description:** When listing an item with Refurbished condition, returns must be accepted.

#### 25044 - API_INVENTORY
**Description:** When listing an item with Refurbished condition, refund must be provided as Money Back.

#### 25045 - API_INVENTORY
**Description:** When listing an item with Refurbished condition, the minimum time you'll accept returns must be {replaceable\_value} days.

#### 25046 - API_INVENTORY
**Description:** When listing an item with Refurbished condition, seller must pay the cost for return shipping.

#### 25047 - API_INVENTORY
**Description:** Seller is not eligible to use Refurbished Item Condition

#### 25048 - API_INVENTORY
**Description:** Seller is not eligible to use Refurbished Item Condition in this Category

#### 25049 - API_INVENTORY
**Description:** Seller is not eligible to use Refurbished Item Condition for the selected Brand

#### 25050 - API_INVENTORY
**Description:** When listing an item with Refurbished condition, {replaceable\_value} cannot be used in the Title.

#### 25051 - API_INVENTORY
**Description:** When listing an item with Refurbished condition, {replaceable\_value} cannot be used in the Subtitle

#### 25052 - API_INVENTORY
**Description:** When listing an item with Refurbished condition, at least {replaceable\_value} images must be provided

#### 25076 - API_INVENTORY
**Description:** {replaceable\_value} ID(s) {replaceable\_value} not found. Please use valid ID(s).

#### 25077 - API_INVENTORY
**Description:** Duplicate Regulatory ID(s) {replaceable\_value} sent in the request. Duplicate ID(s) have been ignored.

#### 25078 - API_INVENTORY
**Description:** Hazmat structure incorrect for {replaceable\_value}.

#### 25079 - API_INVENTORY
**Description:** Repair score invalid. Repair score must be in the range from {replaceable\_value} to {replaceable\_value} with one decimal place.

#### 25080 - API_INVENTORY
**Description:** The value of the {0} field is invalid. Field must not exceed {replaceable\_value} characters.

#### 25081 - API_INVENTORY
**Description:** Hazardous material information incomplete. Your listing must include hazardous statements.

#### 25083 - API_INVENTORY
**Description:** Energy efficiency image is missing. Image is required with image description.

#### 25084 - API_INVENTORY
**Description:** The listing must have both an energy efficiency label and a product information sheet.

#### 25086 - API_INVENTORY
**Description:** The URL provided must be an eBay Picture Service URL.

#### 25088 - API_INVENTORY
**Description:** The email address provided is formatted incorrectly.

#### 25089 - API_INVENTORY
**Description:** No more than {replaceable\_value} global compliance policies allowed. Excess policies ignored.

#### 25090 - API_INVENTORY
**Description:** No more than {replaceable\_value} compliance policies per region allowed. Excess policies ignored.

#### 25091 - API_INVENTORY
**Description:** No more than a total of {replaceable\_value} compliance policies allowed. Excess policies ignored.

#### 25092 - API_INVENTORY
**Description:** No more than {replaceable\_value} global takeback policy allowed.

#### 25093 - API_INVENTORY
**Description:** No more than {replaceable\_value} takeback policy per region allowed. Excess policies ignored.

#### 25094 - API_INVENTORY
**Description:** No more than a total of {replaceable\_value} takeback policies allowed.

#### 25095 - API_INVENTORY
**Description:** Region invalid for regional custom policy. Regions allowed are {replaceable\_value}.

#### 25104 - API_INVENTORY
**Description:** Regulatory document ID(s) {replaceable\_value} not found. Please use valid ID(s).

#### 25106 - API_INVENTORY
**Description:** Regulatory document structure incorrect. Max allowed number of entries is {replaceable\_value}.

#### 25107 - API_INVENTORY
**Description:** Invalid document state for ID(s) {replaceable\_value}. Documents must be in the SUBMITTED or ACCEPTED state.

#### 25108 - API_INVENTORY
**Description:** Product Safety structure incorrect for {replaceable\_value}. Max allowed number of entries is {replaceable\_value}.

#### 25109 - API_INVENTORY
**Description:** Product safety information incomplete. Your listing must include pictograms or safety statements.

#### 25110 - API_INVENTORY
**Description:** Manufacturer address information is incomplete. When providing the address, please provide the street, city, postal code and country

#### 25111 - API_INVENTORY
**Description:** Manufacturer information is incomplete. Please provide the company name.

#### 25112 - API_INVENTORY
**Description:** Responsible Person structure incorrect for {replaceable\_value}. Max allowed number of entries is {replaceable\_value}.

#### 25113 - API_INVENTORY
**Description:** Responsible Person address information is incomplete. When providing the address, please provide the street, city, postal code and country

#### 25114 - API_INVENTORY
**Description:** Responsible Person information is incomplete. Please provide the company name.

#### 25115 - API_INVENTORY
**Description:** Either the Manufacturer or at least one of the Responsible Persons must be located in the EU.

#### 25116 - API_INVENTORY
**Description:** Please provide a minimum of {replaceable\_value} and a maximum of {replaceable\_value} types for a Responsible Person.

#### 25118 - API_INVENTORY
**Description:** Seller must provide at least one form of contact info for Manufacturer - either address, email, contact URL or phone.

#### 25119 - API_INVENTORY
**Description:** Seller must provide at least one form of contact info for Responsible Person - either address, email, contact URL or phone.

#### 25120 - API_INVENTORY
**Description:** When listing in {categoryName}, key information such as {fieldName} comes from eBay's catalog and should be left blank.

#### 25121 - API_INVENTORY
**Description:** When listing in {categoryName}, sellers are required to adopt eBay's catalog data which will provide all the necessary details for the product.

#### 25122 - API_INVENTORY
**Description:** The contact URL is incorrectly formatted. Please update the formatting.

#### 25752 - API_INVENTORY
**Description:** listingStartDate provided is invalid.

#### 25760 - API_INVENTORY
**Description:** shipToLocationAvailability quantity insufficient to create auction listings.

#### 25766 - API_INVENTORY
**Description:** The takeBackPolicyId field must be a long value type. Please correct the error.

#### 25767 - API_INVENTORY
**Description:** The productCompliancePolicyId field must be a long value type. Please correct the error.

#### 25706 - API_INVENTORY
**Description:** You have provided invalid pagination values. {additionalInfo}.

#### 25739 - API_INVENTORY
**Description:** User input error. The number of compatibilityProperties in the request cannot exceed {additionalInfo}.

#### 25740 - API_INVENTORY
**Description:** User input error. Invalid name for compatibilityProperties. The length should be between 1 and {additionalInfo} characters.

#### 25741 - API_INVENTORY
**Description:** User input error. Invalid value for compatibilityProperties. The length should be between 1 and {additionalInfo} characters.

#### 25742 - API_INVENTORY
**Description:** User input error. productFamilyProperties and compatibilityProperties cannot be used together. Please use compatibilityProperties.

#### 25024 - API_INVENTORY
**Description:** Invalid Best Offer information. {additionalInfo}

#### 25703 - API_INVENTORY
**Description:** The following SKU is already a member of another group. SKU : {skuValue} groupId : {inventoryItemGroupKey}

#### 25704 - API_INVENTORY
**Description:** The following SKU is already listed as a single SKU listing. SKU : {skuValue} Listing ID : {listingId}

#### 25705 - API_INVENTORY
**Description:** The Inventory Item Group named {inventoryItemGroupKey} could not be found or is not available in the system.

#### 25756 - API_INVENTORY
**Description:** Auction format is not permitted with a SKU that is part of an InventoryItemGroup.

#### 25718 - API_INVENTORY
**Description:** Cannot migrate listing. {additionalInfo}

#### 25900 - API_INVENTORY
**Description:** One or more inventory locations could not be found for the seller.

#### 25901 - API_INVENTORY
**Description:** Missing a location. Please specify one or more inventory locations.

#### 25902 - API_INVENTORY
**Description:** One or more duplicate inventory locations were specified. Unique inventory locations must be used.

#### 25904 - API_INVENTORY
**Description:** Invalid listing ID or the listing does not belong to the seller.

#### 25905 - API_INVENTORY
**Description:** Invalid SKU value or the SKU value is not defined in the listing.

#### 25906 - API_INVENTORY
**Description:** The provided inventory location must be a Fulfillment Center. Please use a Fulfillment Center location or use updateInventoryLocation to change location type to FULFILLMENT\_CENTER.

#### 25729 - API_INVENTORY
**Description:** The combination of SKU, marketplaceId and format should be unique.

#### 25730 - API_INVENTORY
**Description:** The number of offers in the request cannot exceed {additionalInfo}

#### 25735 - API_INVENTORY
**Description:** Invalid SKU, marketplaceId or format.

#### 25755 - API_INVENTORY
**Description:** listingDuration is required for auction offer.

#### 25757 - API_INVENTORY
**Description:** auctionStartPrice is required for auction offer.

#### 25758 - API_INVENTORY
**Description:** auctionStartPrice and auctionReservePrice are not supported for fixed price offer.

#### 25761 - API_INVENTORY
**Description:** Discount pricing is not applicable for auction offer.

#### 25762 - API_INVENTORY
**Description:** availableQuantity is not applicable for auction offer.

#### 25763 - API_INVENTORY
**Description:** quantityLimitPerBuyer is not applicable for auction offer.

#### 25764 - API_INVENTORY
**Description:** eBayPlusIfEligible is not applicable for auction offer.

#### 25032 - API_INVENTORY
**Description:** {field} is not valid

#### 25731 - API_INVENTORY
**Description:** OfferId should be unique in the request.

#### 25732 - API_INVENTORY
**Description:** Offers associated with SKUs that are part of a variation group cannot be published using this endpoint.

#### 25754 - API_INVENTORY
**Description:** One or more provided offerId(s) are invalid. All offerId(s) in the request should belong to an inventoryItem or inventoryItemGroup for a specific marketplaceId and format.

#### 25725 - API_INVENTORY
**Description:** No offer found

#### 25800 - API_INVENTORY
**Description:** Invalid {fieldName}.

#### 25801 - API_INVENTORY
**Description:** Missing field {fieldName}.

#### 25802 - API_INVENTORY
**Description:** Input error. {additionalInfo}

#### 25803 - API_INVENTORY
**Description:** {fieldName} already exists.

#### 25804 - API_INVENTORY
**Description:** Input error. {additionalInfo}

#### 25805 - API_INVENTORY
**Description:** {fieldName} Not Found.

#### 25806 - API_INVENTORY
**Description:** Deletion is not allowed when the location type of an inventory location has been set to fulfillment center. However, you may disable it.

### APPLICATION Errors

#### 25001 - API_INVENTORY
**Description:** Any System error. {additionalInfo}

#### 25025 - API_INVENTORY
**Description:** Concurrent access of Inventory or InventoryItemGroup. Please try again later

## Rate Limits

See [API Call Limits](https://developer.ebay.com/develop/get-started/api-call-limits) on the eBay Developer Program.

## Resources

### Documentation

- [eBay Developer Program](https://developer.ebay.com/)
- [API Documentation](https://developer.ebay.com/develop/api/)
- [SDKs and Widgets](https://developer.ebay.com/develop/sdks-and-widgets)
- [Developer Community Forum](https://community.ebay.com/t5/Developer-Groups/ct-p/developergroup)

### Tools

- [API Explorer](https://developer.ebay.com/my/api_test_tool)
- [GraphQL Explorer](https://developer.ebay.com/my/graphql_explorer)

### Support

- [Developer Support](https://developer.ebay.com/support/)
- [API Status](https://developer.ebay.com/support/api-status)
- [Release Notes](https://developer.ebay.com/develop/api/release_notes/)

---
*Generated on 2026-07-08T04:19:42.442Z*