Skip to main content

In-store pickup allows large merchants to sell products through eBay fixed-price listings, and have buyers pick up their items in physical stores. Some retailers may refer to in-store pickup as Buy Online, Pick Up in Store (BOPIS). This allows merchants and buyers to save on shipping costs and enables buyers to get their items a lot faster than other fulfillment options. Using the REST-based Inventory API, large retail sellers that have been registered to offer in-store pickup, can associate physical stores with their account, add product inventory to their stores, and then offer the in-store pickup option to buyers on eBay. This feature display's the Available for In-Store Pickup option on in-stock listings within a reasonable distance between a prospective buyer and a seller's store. Also displayed is information about the closest store with the item.

Important! Make sure you're registered to offer in-store pickup. Otherwise, you will not be able to publish an offer. This returns a publish error: 25006 "The eBay listing associated with the inventory item, or the unpublished offer has an invalid listing option. You're not registered to offer pickup in store. Contact eBay for assistance.

In-store pickup flow

Note: Single-variation and single-sku refer to a single product, where as multi-variation and multiple-sku listings refer to variations of a product, such as different colors and sizes of the same t-shirt.

The flow for a single-sku item with in-store pickup is similar to the regular inventory flow (see From inventory item to eBay marketplace offer), but has a few specific requirements. The multi-sku item flow is also similar, but adds createOrReplaceInventoryItemGroup to create the group, and publishOfferByInventoryItemGroup to publish the offer. The following figure illustrates both of these flows keyed to specific additional requirements (1-4) for adding in-store pickup items (see the procedure that follows the figure).

Requirements for a single-sku item

The following steps outline the requirements to create a single-sku listing with in-store pickup for an in-stock item at a store.

  1. Set up an inventory location for the seller using the createInventoryLocation method.

  2. Note: Locations that were previously set up can be used if they adhere to the below requirements.


    Tip: You can use the updateInventoryLocation method to add or modify the hours of the location. The merchant location key, the physical location of the store, and its geo-location coordinates can not be updated by calling the updateInventoryLocation method.

    Inventory location example request payload:

    {
      "location": {
        "address": {
          "addressLine1": "2********e",
          "addressLine2": "B********3",
          "city": "S*****e",
          "stateOrProvince": "**",
          "postalCode": "9***5",
          "country": "US"
        },
        "geoCoordinates": {
          "latitude": "37.7587",
          "longitude": "-122.433"
        }
      },
      "locationTypes": [
        "STORE"
      ],
      "merchantLocationStatus": "ENABLED",
      "operatingHours": [
        {
          "dayOfWeekEnum": "SUNDAY",
          "intervals": [
            {
              "close": "18:00:00",
              "open": "09:00:00"
            }
          ]
        },
        {
          "dayOfWeekEnum": "MONDAY",
          "intervals": [
            {
              "close": "20:00:00",
              "open": "09:00:00"
            }
          ]
        },
        {
          "dayOfWeekEnum": "TUESDAY",
          "intervals": [
            {
              "close": "20:00:00",
              "open": "09:00:00"
            }
          ]
        },
        {
          "dayOfWeekEnum": "WEDNESDAY",
          "intervals": [
            {
              "close": "20:00:00",
              "open": "09:00:00"
            }
          ]
        },
        {
          "dayOfWeekEnum": "THURSDAY",
          "intervals": [
            {
              "close": "20:00:00",
              "open": "09:00:00"
            }
          ]
        },
        {
          "dayOfWeekEnum": "FRIDAY",
          "intervals": [
            {
              "close": "20:00:00",
              "open": "09:00:00"
            }
          ]
        },
        {
          "dayOfWeekEnum": "SATURDAY",
          "intervals": [
            {
              "close": "21:00:00",
              "open": "10:00:00"
            }
          ]
        }
      ],
      "phone": "2**-***-***4"
    }

    Note: See location for additional information on inventory location fields required to publish an offer.


    Tip: You can use the updateInventoryLocation method to add or modify the hours of the location. The merchant location key, the physical location of the store, and its geo-location coordinates can not be updated by calling the updateInventoryLocation method.

  3. Create the inventory item record for the product's sku using the createOrReplaceInventoryItem method. When creating the record, make sure to set the following specifics for pickupAtLocationAvailability for each of the merchant's physical store locations where the inventory item is available for in-store pickup orders:

    • quantity Set this integer to be greater than 0 (if set to 0, an out of stock inventory item is created)

    • availabilityType Set to IN_STOCK

    • fulfillmentTime Set time units and values indicating how soon an in-store pickup order will be available for pickup. Typically, set fulfillmentTime.unit to HOUR, with a typical time (fulfillmentTime.value) of 2 or 3 hours.

    • merchantLocationKey Set to an inventory location configured for in-store pickup. See 1 (above) for specifics

      Tip: Use the getInventoryLocations method to return the merchantLocationKey for each of your set up inventory locations.

    In addition, make sure to set the following fields:

    • condition Set the condition of the item

    • product (including title, description, aspects, and imageUrls)


    Tip: The bulkCreateOrReplaceInventoryItem method can also create inventory item records, but can create up to 25 records at a time. The payload similar but it can add up to 25 records with the SKUs specified in the request.

    Inventory item record example request payload:

    {
      "availability": {
        "pickupAtLocationAvailability": [
          {
            "availabilityType": "IN_STOCK",
            "fulfillmentTime": {
              "unit": "HOUR",
              "value": 3
            },
            "merchantLocationKey": "in-store-pickup-03",
            "quantity": 20
          }
        ]
      },
      "condition": "NEW",
      "product": {
        "title": "GoPro Hero4 Helmet Cam",
        "description": "New GoPro Hero4 Helmet Cam. Unopened box.",
        "aspects": {
          "Brand": [
            "GoPro"
          ],
          "Type": [
            "Helmet/Action"
          ],
          "Storage Type": [
            "Removable"
          ],
          "Recording Definition": [
            "High Definition"
          ],
          "Media Format": [
            "Flash Drive (SSD)"
          ],
          "Optical Zoom": [
            "10x"
          ]
        },
        "brand": "GoPro",
        "mpn": "CHDHX-401",
        "imageUrls": [
          "https://mysamplepicture.com/3.jpg"
        ]
      }
    }

    Note: You can optionally set the available quantity of the inventory item at one or more warehouse locations by specifying a shipToLocationAvailability.availabilityDistributions.quantity in the same call.

    Note: See Inventory item fields for additional information on inventory item fields required to publish an offer.

  4. Create an offer for the product using the createOffer method. Add details of the listing, including price, eBay marketplace, eBay category, quantity, and listing polices (payment, fulfillment, and return policy).
    • Fields required to create an offer are the same as creating an in-store pickup offer. See Required fields for publishing an offer for additional information on all fields required to publish an offer.

    Tip: The bulkCreateOffer method can also create inventory item records, but can create up to 25 offers at a time. The payload similar but it can add up to 25 offers with the SKUs specified in the request.

    Offer example request payload:

    {
      "sku": "3***********5",
      "marketplaceId": "EBAY_US",
      "format": "FIXED_PRICE",
      "availableQuantity": 50,
      "categoryId": "31388",
      "listingDescription": "New GoPro Hero4 Helmet Cam. Unopened box.",
      "listingPolicies": {
        "fulfillmentPolicyId": "3*********0",
        "paymentPolicyId": "3*********0",
        "returnPolicyId": "3*********0"
      },
      "pricingSummary": {
        "price": {
          "currency": "USD",
          "value": "100.00"
        }
      }
    }

    Note: The offerID is returned in the response of a successful createOffer call and is required to publish the offer. If unknown, use the getOffers method to return all offers and their respective offerID.


  5. Publish the offer. Activate the offer on the eBay marketplace using the publishOffer method.
    • offerID This parameter is returned in the response of a successful createOffer call and is required to publish the offer. The offer ID is passed in as a path parameter in the publishOffer method. If unknown, use the getOffers method to return all offers.

    Tip: The bulkPublishOffer method can also create inventory item records, but can create up to 25 offers at a time. The payload similar but it can add up to 25 offers with the SKUs specified in the request.

    Publish offer example response payload:

    {
        "listingId": "2*********1"
    }

    Note: See Required fields for publishing an offer for additional information on all fields required to publish an offer.


Requirements for a multi-sku item

To create multi-sku listings with in-store pickup for an in-stock item at a store, use the same process as when creating a single-sku listing with the following differences:

  • Create an inventory item record for each sku using the createOrReplaceInventoryItem method (reference 2). Also see Tip below.

  • Link the SKUs into a group using the createInventoryItemGroup method.

  • Create an offer for each sku using the createOffer method (reference 3 above). Also see Tip below.

  • Publish the multiple-sku offer using the publishOfferByInventoryItemGroup method (reference 4 above).

Tip: You can use the bulkCreateOrReplaceInventoryItem method and the bulkCreateOffer method to up to create up to 25 inventory item records and offers at a time. The payload is similar, but these calls can add up to 25 items with the SKUs specified in the request. See the specific method for details.

Notifications

The Inbound Notifications API allows merchants to post in-store pickup event messages to the eBay system. These notifications are pushed out through a REST-based API call. Once the eBay system receives an event message through the Inbound Notifications API, eBay will make all necessary updates, including updating in-store pickup order status, resolving open business activities, and pushing out additional notifications to the merchant and buyer. These notifications include:

  • READY_FOR_PICKUP

  • PICKEDUP

  • PICKUP_CANCELED

  • RETURNED

See Inbound Notifications API for details.