> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kibocommerce.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Buy Online Pickup In Store

Buy Online Pickup In Store (BOPIS) shipments follow a slightly different process than Ship to Home (STH).

<CardGroup cols={2}>
  <Card title="Watch: Transfer Shipments" icon="circle-play" href="/video/fulfiller-transfer-shipments" horizontal data-rec="video">
    Learn how transfer shipments work to fulfill orders from alternative locations
  </Card>

  <Card title="Watch: BOPIS Fulfillment" icon="circle-play" href="/video/buy-online-pickup-in-store-bopis-fulfillment" horizontal data-rec="video">
    See how to fulfill buy online pickup in store orders
  </Card>
</CardGroup>

Where STH shipments usually print a pack sheet *after* stock validation, pickup shipments instead print a pick sheet *before* validating stock. Then, the shipment is provided for the customer to pick up instead of preparing for carrier shipment.

## Begin Fulfillment

To get started:

1. Go to **Main** > **Fulfiller**.
2. Locate the shipment you want to fulfill, whether through the search bar or the widgets on the Fulfiller homepage.
3. Click **Finish** **Fulfilling Shipment** at the bottom of the shipment details.
   * If you accessed this shipment's details page directly, such as by clicking a link from the Order Admin, then this button will not be displayed. Instead, the page will already show you the current shipment step. <img src="https://mintcdn.com/kibocommerce-59e68a4a/lNdWuidiFHcqMZvX/img/finish-fulfilling-shipment-callout.png?fit=max&auto=format&n=lNdWuidiFHcqMZvX&q=85&s=9fa4d8c2b2fda83e149902bf6260216e" alt="The shipment details with a close-up of the Finish Fulfilling Shipment button" width="773" height="418" data-path="img/finish-fulfilling-shipment-callout.png" />

### Cancel Fulfillment

At any point in this process, the shipment can be cancelled by clicking **Cancel Shipment** from the dropdown actions menu in the top right. If an order has multiple shipments, then canceling one of its shipments does NOT cancel the other shipments nor the order itself. The order will only be canceled in one of two ways: automatically by the system when all of its shipments are canceled first, or manually by an admin or customer service representative through the Admin UI. See the [Order Admin UI documentation](/pages/cancel-orders-and-shipments) for more information about cancellation at the order level.

<img src="https://mintcdn.com/kibocommerce-59e68a4a/11fMEclnoleINoq4/img/ffui-cancel-shipment.png?fit=max&auto=format&n=11fMEclnoleINoq4&q=85&s=e33d3e6a46da9e1a117f1dce2b1654b1" alt="The Action menu of the shipment details with an arrow pointing to Cancel Shipment" width="705" height="205" data-path="img/ffui-cancel-shipment.png" />

Before you begin, note that you can also click **View Workflow** from the above action menu at any point to view the BPM for that fulfillment method.

## Accept Shipment

The first step in the BOPIS fulfillment process is Accept Shipment, where you acknowledge the shipment and indicate that it is ready to start fulfillment.

1. Review the shipment details.
2. Click **Yes**.

<img src="https://mintcdn.com/kibocommerce-59e68a4a/Qcx3IIpxeL0zyroM/img/bopis-accept-shipment.png?fit=max&auto=format&n=Qcx3IIpxeL0zyroM&q=85&s=7c66acb777c30c933cab9b8f624c9a3b" alt="The Accept Shipment step with a callout for the Yes and No buttons" width="1127" height="501" data-path="img/bopis-accept-shipment.png" />

## Print Pick Sheet

You must print a pick sheet before you can validate the item availability at your fulfillment location.

1. Click **Print Pick Sheet** to print the sheet.
2. Click **Proceed to Validate Stock**.
3. Alternatively, click **Reject Shipment** if you cannot fulfill this shipment.<img src="https://mintcdn.com/kibocommerce-59e68a4a/Qcx3IIpxeL0zyroM/img/bopis-print-pick-sheet.png?fit=max&auto=format&n=Qcx3IIpxeL0zyroM&q=85&s=0846ecaf05b4bb9b19ca9973db8ab491" alt="Close-up of the Print Pick Sheet step and Proceed button" width="1570" height="1048" data-path="img/bopis-print-pick-sheet.png" />

## Validate Stock

Stock validation indicates how many of each product you can fulfill.

1. In the **In Stock** column for each shipment, type in the quantity you have in stock.
   * Or, if you click inside the field then arrows will appear. Click these to increase or decrease the quantity by one.
   * The barcode(s) can also be scanned to be automatically populate this field instead. For more details and configurable scanning options, see [the UI overview](/pages/fulfiller-ui-overview#barcode-scanners).<img src="https://mintcdn.com/kibocommerce-59e68a4a/Qcx3IIpxeL0zyroM/img/bopis-validate-stock.png?fit=max&auto=format&n=Qcx3IIpxeL0zyroM&q=85&s=ba483b56c7ce998c5549dbe5a6a9a0e5" alt="Example of the Validate Stock step" width="1847" height="421" data-path="img/bopis-validate-stock.png" />
2. If any additional item identifiers are displayed, such as in the Identification Number column shown below, then enter the appropriate values. These are item-level attributes that denote important unique information such as a serial number, manufacturer number, number for a gift card item to load a value to, or other identifying data point.

   * Item identifiers are defined as the `fulfillmentFields` object in the [Create Order API](/api-reference/order/create-order). If any are flagged as required, then you will not be able to proceed until you have provided them.

   <img src="https://mintcdn.com/kibocommerce-59e68a4a/ByE7VB0BBLbMBpJV/img/sth-validate-stock-identifiers.png?fit=max&auto=format&n=ByE7VB0BBLbMBpJV&q=85&s=c27e6d9436dcf2a4a7e0c333ecb38518" alt="Example of the Validate Stock step" width="1294" height="388" data-path="img/sth-validate-stock-identifiers.png" />
3. If you have all of the required quantity in stock, click **Ready for Pickup**. If some quantity is not in stock, then your next action will depend on whether the [site setting](/pages/general-settings#site) for BOPIS Transfer at **System** > **Settings** > **General** in the Admin UI is enabled.
   * If transfers are enabled, click **Transfer Shipment** to create a transfer for another location to supply the the missing quantity.<img src="https://mintcdn.com/kibocommerce-59e68a4a/Qcx3IIpxeL0zyroM/img/bopis-transfer-shipment-button.png?fit=max&auto=format&n=Qcx3IIpxeL0zyroM&q=85&s=1a2ccc0e2699d7b268b6ecaba508d9e7" alt="Example of the Validate Stock step with 0 items in stock and the Transfer Shipment button" width="1668" height="338" data-path="img/bopis-transfer-shipment-button.png" />
   * If the site setting is disabled, then you will not be able to request a transfer for the missing quantity. Instead, clicking **Some Items Not Available** will reject the shipment. A pop-up will require the user to select a reason before confirming the rejection and sending the shipment to Customer Care.<img src="https://mintcdn.com/kibocommerce-59e68a4a/Qcx3IIpxeL0zyroM/img/bopis-rejection-reason.png?fit=max&auto=format&n=Qcx3IIpxeL0zyroM&q=85&s=3517ac3361495a058333e7e1d9e7a3e2" alt="Close-up of the rejection reason options" width="952" height="1055" data-path="img/bopis-rejection-reason.png" />

If your implementation is set up to allocate inventory from granular fields, then you will be able to adjust the quantities being fulfilled from each granular record during Validate Stock. See the [Granular Inventory Fields guide](/pages/granular-inventory-fields#fulfiller-ui "Granular Inventory Fields") for more details.

### Barcode Scanners

Scanning capability is available for the Validate Stock step, making it easier to input the quantity you have in stock for that shipment. Both USB plug-in laser and camera scanners are supported, though camera scanners are only available through the [mobile fulfiller application](/pages/fulfiller-ui-overview) and will use the camera of that mobile device.

By default, you can input your laser scan into the text field of the In Stock column in the Validate Stock table. However, you can also implement a "Scan UPC/SKU" text box (shown below) that displays above the table to input your scan results. This is a more straightforward method compared to the default interface, but requires a [custom theme change](/pages/fulfiller-theme-customization) to display the field. In your theme, simply activate the `isItemUPCScanAllowed` setting within the language file.

<img src="https://mintcdn.com/kibocommerce-59e68a4a/vX_cCc72BnHnRWN5/img/validate-stock-scan-field.png?fit=max&auto=format&n=vX_cCc72BnHnRWN5&q=85&s=54a2fc8b192ec681746cb6613405b3ca" alt="Validate Stock step with a callout for the alternate scanning text field" width="3532" height="880" data-path="img/validate-stock-scan-field.png" />

You may also want to reverse the way that the Validate Stock table displays counts when using laser scanning. By default, the In Stock field is populated with the expected count of the order and the fulfiller is expected to decrease this value for any quantity they are rejecting. However, you can instead start the In Stock count at 0 and scan items to increase the value. To enable this behavior, find your `ValidateStockQuantity` [theme settings](/pages/fulfiller-theme-customization) and set `defaultZeroQuantity` to "1" and set both `defaultShipmentQuantity` and `locationInventoryQuantity` to "0" as shown below.

```
"ValidateStockQuantity": {
    "defaultZeroQuantity": 1,
    "defaultShipmentQuantity": 0,
    "locationInventoryQuantity": 0
},
```

## Optional: Waiting for Transfer and Partial Pickup

If a transfer was initiated during Validate Stock, the BOPIS shipment will be placed into Waiting for Transfer. However, it may be possible for the customer to pick up any items that are on-hand before the transfer has arrived.

In this case, the on-hand items are displayed in their own section as shown below. Click **Pickup** to split those items into a new shipment that can be fulfilled while the transfer remains pending for this original shipment. The customer will receive a Partial Pickup Ready email and can come collect these items, then return to pick up the transferred items when they arrive.

<img src="https://mintcdn.com/kibocommerce-59e68a4a/wnwrN32AISYXOyk6/img/1706211901511.png?fit=max&auto=format&n=wnwrN32AISYXOyk6&q=85&s=f49c5ab8b67255d96fc016ec678ad1df" alt="Example of the Waiting for Transfer step with one item available for pickup and one item pending transfer" width="1840" height="771" data-path="img/1706211901511.png" />

## Provide to Customer

In the final step, you have the option to print the pick sheet if needed. Additionally, you may be able to [offer a partial pickup](/pages/transfer-shipments#partial-pickup) if the BOPIS shipment is waiting on a transfer but some items are available.

1. Once the customer arrives to pick up their order, you click either **Customer Accepts Entire Shipment** or **Customer Wants To Cancel** depending on the appropriate case.
2. If the shipment is accepted, then it will be completed and set to the Fulfilled status.<img src="https://mintcdn.com/kibocommerce-59e68a4a/Qcx3IIpxeL0zyroM/img/bopis-provide-to-customer.png?fit=max&auto=format&n=Qcx3IIpxeL0zyroM&q=85&s=d2f2f2cef54d77ec37e68ddd590c408d" alt="Example of the Provide to Customer step" width="1767" height="739" data-path="img/bopis-provide-to-customer.png" />

### Change Pickup Contact and Shipment Details

In cases where the customer designated an alternate pickup contact at checkout, the Fulfiller UI will display both the primary and alternate contact details above **Print Pick Sheet** in this step (as well as in the Customer Information tab in the shipment header). This information is not be editable in the Fulfiller UI and can only be changed from the order details page in [the Order Admin UI](/pages/edit-orders#edit-pickup-contacts) or the [Order API](/api-reference/order/addupdate-alternate-contact).

If the customer wants to change the quantity of an item or requires a price adjustment appeasement, you can edit those values within this step.

1. In this case, click the **Edit Shipment** option before accepting or canceling the entire shipment.
2. Click the quantity and/or unit price field and enter the new value.
3. Click **Save Changes**.
4. If changing the unit price, a pop-up will prompt you to select an appeasement reason. The possible reasons include the default options of Damaged or Defective Item, Price Match, Arrived Too Late, Customer Satisfaction, Lost In Transit, and Other (which will require the user to enter the reason information in a text box, with a limit of 255 characters). However, this list can be customized via the Refund Reasons .[before](/pages/refund-reasons-before) and .[after](/pages/refund-reasons-after) API Extension actions.<img src="https://mintcdn.com/kibocommerce-59e68a4a/Qcx3IIpxeL0zyroM/img/bopis-edit-shipment.png?fit=max&auto=format&n=Qcx3IIpxeL0zyroM&q=85&s=ed7e8fabe493780a454ef735f69172b8" alt="" width="1422" height="487" data-path="img/bopis-edit-shipment.png" />
