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

# Order fulfillment in warehouses and stores

> Take an order from release to handover: picking and packing, printing labels and documents, splitting and consolidating orders, delivery choices and exceptions.

> [!NOTE]
>
> **Where to find it:** Main → Shipping → Shipments — [Open in OTO ↗](https://app.tryoto.com/shipments)

Fulfillment is where an order stops being a record and becomes a physical thing someone has to pick, pack, label and hand over. It is the largest function in the module — nineteen features — because it covers everything from a store assistant scanning a barcode to consolidating a day's orders onto one truck.

## What this function covers

| Group | What it deals with |
| - | - |
| **Working an order** | The app your staff use, multi-brand operations, serial numbers and special instructions. |
| **Printing** | Picking lists, packing lists, labels, invoices — and knowing what has already been printed. |
| **Splitting and consolidating** | Breaking one order into several, or combining many into one movement. |
| **Delivery choices** | Slots, scheduling, same-day from store, and collection in person. |
| **Exceptions** | Holds and cancellations, and telling the sales channel about them. |

![The Orders menu on the Shipments page](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/ordersync-7-orders-menu.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=ee5c0c54d29238831ed321fc642198e2)

Fig. 1 — Most of this page lives in one menu: Split Order, Update Orders (Bulk), Inter Depot Transfer, Ready for Click & Collect, Collected By Customer and Cancel Order. The greyed-out entries activate only for orders that qualify.

## Working an order

### Store fulfillment app for iOS and Android

Stores fulfilling orders do not need a desk. The mobile app carries the store-side fulfillment flow — scanning and packing included — so a shop assistant can work an order from the floor with a phone.

This is what makes ship-from-store realistic rather than theoretical: if fulfilling an online order means walking to a back-office PC, stores quietly stop doing it.

### Multi-brand and multi-seller fulfillment

One OTO account can run several brands. A brand is created at **Settings → Account → Brands** with a **Brand Name**, an optional **Logo**, a **Default Warehouse**, and the sales channels it sells through.

That association does real work downstream: it gives routing a default location per brand, it lets [Order routing](https://docs.tryoto.com/modules/omnichannel-oms/order-routing.md) filter on *If order and location Brand are the same*, and it drives which logo appears on customer-facing documents and pages.

A brand also carries its own customer-facing surfaces. The **Shipping Portal** section holds a **Portal URL** under `portal.tryoto.com/shipping` and a **Return Policy URL**, so each brand can present its own portal and its own policy rather than sharing one. **Use as Default Brand** nominates which brand applies to orders that arrive without one.

![Creating a brand](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/fulfill-1-brands.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=85bc43b84ea9b2ad31aaa4ce0a024bc3)

Fig. 2 — Brand Name and Logo are both required — the logo is not optional, because it appears on documents and portals. Default Warehouse gives routing a fallback location, and the Shipping Portal block gives the brand its own portal and return policy addresses.

### Use brand name as sender on AWBs

By default an air waybill shows the warehouse or branch as sender. The **Use Brand Name as Sender on AWBs** toggle, under **Settings → Advanced → Autocorrector**, replaces that with the brand.

For a multi-brand operation shipping from shared warehouses, this is the difference between a customer receiving a parcel from a company they have heard of and one from a logistics site they have not.

### Serial number capture

Serial numbers can be recorded against items as they are fulfilled, tying a specific physical unit to a specific order. For electronics, appliances and anything with a warranty, that record is what makes a later warranty claim or a counterfeit dispute resolvable.

### Gift notes and special instructions

Gift notes and any other special requirement travel with the order and appear on the packing screens, so whoever packs the box sees them at the moment they matter rather than in a field nobody opens.

### Bulk order updates

**Update Orders (Bulk)** applies the same change across a selection of orders at once — the alternative to opening thirty orders to make the same edit thirty times. Useful after a channel import lands with a wrong field, or when a batch needs reassigning.

## Printing

### Picking, packing and document printing

Picking lists, packing lists, order details and custom documents can all be printed from the Shipments list, for a single order or in bulk. The **Print** menu holds the document types; selection drives what gets printed.

### Bulk label printing in one PDF

Select many orders across several carriers and OTO returns *one* PDF containing every air waybill. This sounds mundane and is not: the alternative is printing carrier by carrier, and a packing bench that has to collate labels from four separate print jobs makes mistakes.

### Custom invoice templates

Print templates are configured at **Settings → Management → Printing Templates**. There are three kinds — **Invoice print template**, **Label print template** and **Shipping label template** — and each can be adjusted for page size, font size and weight, language, which parameters appear, and barcode dimensions.

**Change template** previews and selects, **Edit Settings** opens the options, **Reset settings** reverts. Changes apply to existing and new orders alike.

![The Printing Templates screen](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/fulfill-2-printing-templates.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=6cce1175206314314127ed32951e00c3)

Fig. 3 — Three template types, each with the currently Selected design shown as a thumbnail: Invoice Print Template, Label Print Template and Shipping Label (AWB) Print Template. Change Template swaps the design; Edit Settings tunes the one in use.

**Edit Settings** opens a live preview beside the controls, so a change to font size or barcode scale is visible before it is saved rather than after a hundred labels have printed.

![Editing the invoice template](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/fulfill-3-edit-invoice-template.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=7b424a3b04d61a781880673373276f07)

Fig. 4 — The controls set Title and Title in Arabic, page size, font size and weight, barcode size and language. The preview shows the result: a bilingual invoice with the order barcode, sender and receiver details, and an items table carrying SKU, quantity, tax, discount and per-line currency.

> [!TIP]
>
> **Bilingual by construction**
>
> Invoice titles take separate English and Arabic values, and the template renders both side by side. For merchants shipping across the Gulf and Türkiye that is not a nicety — a customs officer or a customer who reads only one of them still gets a complete document.

> [!WARNING]
>
> **Carrier support varies**
>
> Custom templates work only with shipping partners that use OTO's own template system. Carriers that return their own label format will not show the option.

### Print status tracking

OTO records whether an order's air waybill and details have been printed. On a busy bench that answer prevents the two failure modes that cost the most: a parcel that ships without a label, and a label printed twice and stuck on two boxes.

## Splitting and consolidating

### Repeat order splitting

Select an order on **Shipments → Pending Orders**, then **Orders → Split Order**. Each split produces two orders, suffixed `-1` and `-2` from the original. Enter how many of each line move to the new order in the **New Order Qty** column; quantities and totals for both orders recalculate automatically unless you override them. An order can be split again afterwards, so more than two parts is a matter of repeating the operation.

Split when stock sits in different places, when part of an order is ready now and the rest next week, or when one line needs a different carrier from the others.

![The Order Split dialog](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/fulfill-4-order-split.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=e3910a8028d37236f7ae078c2ddc0cc3)

Fig. 5 — Per line: unit price, current quantity, and the quantity to move. Subtotal, tax and VAT-inclusive totals update as you type, and New Order Grand Total can be set directly when the arithmetic needs to land on a specific figure.

### Automatic routing of split orders

Each part created by a split is routed independently. It passes back through the rules in [Order OTOmation](https://docs.tryoto.com/modules/omnichannel-oms/order-routing.md) and is assigned a location on its own merits, so a split driven by stock availability resolves itself — each part is sent from wherever its items are held.

### Merging split orders

A split cannot currently be undone. Once saved, it creates new orders that are not merged back automatically. If an order is split in error, cancel both parts and create a replacement order.

> [!WARNING]
>
> **Check before you save**
>
> Because the operation is one-way, confirm the quantities in the dialog before saving. The preview totals are there precisely so the split can be checked while it is still reversible — which is to say, before it exists.

### Bulk transfer to a hub

**Inter Depot Transfer** consolidates many orders into a single movement to another hub, carried either by a shipping partner or by your own fleet. Instead of fifty individual shipments crossing the same distance, one does.

This is the economics of hub-and-spoke: the long leg is paid for once, and the expensive short legs happen at the far end where they are short.

![The Inter Depot Transfer dialog](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/fulfill-5-inter-depot-transfer.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=4c74d03e95bcb86d6b85546934e1b150)

Fig. 6 — Choose the destination warehouse or branch and OTO builds a transfer order, numbered with an IDT- prefix over the source order. The destination's address and coordinates are filled from its record, and the table at the foot lists every order travelling in the consignment with its box count and receiver.

### Automatic de-consolidation at the hub

When the consolidated shipment arrives, OTO breaks it back into its constituent orders automatically and ships each one to its own customer. Nobody re-keys fifty orders at the receiving hub — the bulk movement dissolves back into individual deliveries on arrival.

Together with the transfer above, this is the whole point: consolidation is only worth doing if de-consolidation is free.

## Delivery choices

### Delivery slot configuration

Slots are configured per shipping partner, at **Integrations → Shipping Partners → Connected → ⋯ → Delivery Slot Configuration**, with **Add Delivery Slot**. A slot definition takes the warehouse or branch it applies to, **Pickup Days of Week** or a specific **Date**, start and end times, **Duration of Slots (mins)**, a **Cut-Off Time** in minutes before the slot starts, and a **Capacity**.

| Behavior | Detail |
| - | - |
| **Date beats weekday** | A date-specific configuration overrides the recurring weekly one. |
| **No overlaps** | Slots cannot overlap within the same warehouse or branch. |
| **Capacity zero blocks a day** | Setting capacity to 0 is how you mark a non-working day without deleting the slot. |
| **Cut-off closes ordering** | A 15-minute cut-off on a 9:00 slot stops orders at 8:45. |

![Adding a delivery slot, with the generated preview](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/fulfill-6-delivery-slot.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=f925a910ee42cd7ccb63bbddec52699f)

Fig. 7 — You describe the window once — 09:00 to 20:00, Monday to Friday, 60-minute slots, 15-minute cut-off, capacity 100 — and the Preview expands it into the individual slots a customer will see, each with its own cut-off time. Checking the expansion before saving is the point: an hour out on the cut-off is invisible in the form and obvious in the preview.

### Scheduled carrier assignment

Orders can be assigned to a carrier according to the scheduled time rather than on arrival — so a shipment is created when it makes operational sense, not the instant the order lands. This pairs with the **Schedule shipment creation** toggle in the routing rule builder.

### Ship from store with Bullet delivery

Ship-from-store turns branches into fulfillment points, cutting both distance and time to the customer. **Bullet** refers to on-demand delivery — within a few hours rather than next day. OTO does not carry the parcel; it selects and books the service, whether that is a Bullet offering from an integrated carrier or your own drivers through [OTO FLEX](https://docs.tryoto.com/modules/oto-flex/overview.md).

The combination is what makes it work commercially. On-demand economics depend on the parcel starting close to the customer, and a store network is the cheapest way to be close. Routing's *If origin city and destination city is same* filter is how you keep those orders local.

### Click and collect with a confirmation code

The customer chooses **Pickup from Store** at checkout and the order is assigned to that store automatically. Staff mark it **Ready for Click & Collect**; the order's status becomes **Ready For Collection** and an SMS goes to the customer carrying the branch location and a one-time code.

At handover, staff choose **Collected By Customer** from the Orders menu. The form asks for three things:

| Field | What it is |
| - | - |
| **Status** | Set to **Delivered** — collection is a delivery, and ends the order the same way. |
| **Order Number** | Read-only, so the wrong order cannot be closed by accident. |
| **Delivery Date** `required` | Defaults to today; editable for a collection being recorded after the fact. |
| **Delivery Confirmation Code** `required` | The code the customer presents. This is the one-time code from the SMS. |
| **Comments** | Free text — who collected, what identification was shown, anything unusual. |

![The Collected By Customer form](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/fulfill-7-collected-by-customer.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=76fda99d08d3ddb182d5524ef583a481)

Fig. 8 — The product calls it a Delivery Confirmation Code. It is required, so the form will not save without it.

> [!TIP]
>
> **The code is the signature**
>
> It is required, not optional — which is the design decision that matters. A collection closed without a code is a collection nobody can prove, and click-and-collect disputes are otherwise unresolvable: there is no carrier record, no driver, and no proof of delivery photo to fall back on.

> [!NOTE]
>
> **Terminology**
>
> This kind of code is usually called an OTP. The product’s own label is **Delivery Confirmation Code**, and these docs follow the product so that what you read here matches the field in front of you.

> [!NOTE]
>
> **Fixed at checkout**
>
> The pickup location cannot be changed after the order is placed. The SMS template is configured under [Customer Notification → SMS](https://docs.tryoto.com/modules/customer-notification/sms.md) as the **Click and Collect** type.

## Exceptions

### Custom hold reasons

Reasons are your own vocabulary, not a fixed list. At **Settings → Advanced → Reason Settings**, **Add Reason Config** takes a **Reason Type** — on hold, cancel, not available, undelivered attempt — a **Language**, and the reason text itself.

Because reasons are structured and multilingual, the same taxonomy drives the hold queue in [Pre-fulfillment checks](https://docs.tryoto.com/modules/omnichannel-oms/prefulfillment.md), cancellation records, and failed-delivery reporting — in whichever language the reader needs. Only admin or manager-level users can change them.

### Cancellation with channel refund

**Cancel Order** ends the order in OTO and reports it back to the sales channel, with a full or partial refund. The refund flows to the platform the customer bought on, which is the only place they will look for it.

A cancellation that stops at OTO's boundary leaves the storefront showing an order that no longer exists — and a customer who has not been refunded.

## Limits and prerequisites

| Requirement | Detail |
| - | - |
| **Pending orders only** | Splitting and most order actions require the order to still be in Pending Orders. |
| **Splits are one-way** | A split cannot be reversed. Cancel both parts and re-create if it was made in error. |
| **Splits are not notified** | Customers are not told when an order is split. |
| **Template support** | Custom print templates require a carrier using OTO's template system. |
| **Slots don't overlap** | Within one warehouse or branch, slot times must not collide. |
| **Click and collect needs SMS** | The OTP message requires the Click and Collect SMS template configured. |
| **Pickup store is fixed** | A click-and-collect pickup location cannot be changed after checkout. |
| **Reason settings are restricted** | Admin or manager access only. |
| **Brands take one default warehouse** | A brand has a single default location, not several. |

## Related

* [Order routing](https://docs.tryoto.com/modules/omnichannel-oms/order-routing.md) — decides the location, and re-routes every split part.
* [Pre-fulfillment checks](https://docs.tryoto.com/modules/omnichannel-oms/prefulfillment.md) — the holds and tags an order arrives here carrying.
* [Warehouse Management](https://docs.tryoto.com/modules/warehouse-management/overview.md) — the picking and packing operation behind these screens.
* [Carrier integration](https://docs.tryoto.com/modules/shipping-management/carrier-integration.md) — where delivery slots and carrier accounts are configured.
* [Customer Notification](https://docs.tryoto.com/modules/customer-notification/sms.md) — the click-and-collect OTP and other messages.
* [Hubs Management](https://docs.tryoto.com/modules/hubs-management/overview.md) — consolidation between hubs in depth.


## Related topics

- [Order routing across warehouses and stores](https://docs.tryoto.com/modules/omnichannel-oms/order-routing.md)
- [Add and configure warehouses and branches](https://docs.tryoto.com/modules/hubs-management/hubs-management.md)
- [Hubs Management](https://docs.tryoto.com/modules/hubs-management/overview.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.