> For the complete documentation index, see [llms.txt](https://docs.fulfillmenttools.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fulfillmenttools.com/documentation/by-pillar/store-operations/picking/pick-job-target-time.md).

# Pick job target time

The target time is when a carrier should pick up an order, or the earliest time a consumer is expected to pick up the fulfilled order.​

So, you can specify a date and time for each order. This information comes from a connected shop system, or fulfillmenttools can calculate the target time based on multiple factors you can set.

{% hint style="warning" %}
You can't manually change the target time after it's been calculated.
{% endhint %}

## Target time calculation factors

### Cutoff times

The cutoff time defines when a carrier usually picks up parcels at a facility. This time point can vary by weekday and on public holidays. It affects same-day delivery eligibility and must align with the facility's fulfillment schedule.

You can define different cutoff times with fulfillmenttools:

* A ship-from-store cutoff time for a specific facility-carrier connection
* A tenant-wide default cutoff time
* A tenant-wide cutoff time for click-and-collect orders

These cutoff times allow to predict whether an incoming order can be fulfilled in time to ship via a certain carrier.

You can set cutoff times in the [facility-carrier connection](/documentation/by-pillar/advanced-order-routing/complex-routing-with-combinatorics/network-model/facility-connection.md) or in [Backoffice](/documentation/backoffice/network-view/facilities.md#carrier).

### Average fulfillment duration

The average fulfillment duration (also known as the fulfillment buffer) is the time an employee needs to fulfill an order. This time span represents the average time it takes to complete the fulfillment process, including picking, packing, and handover. The buffer is only considered within a facility's defined fulfillment times.

{% hint style="info" %}
Add the [service job execution time](#service-job-execution-time) separately. Only include it in the average fulfillment duration if it's not included in the custom service.
{% endhint %}

Users with the Administrator or Supervisor role can define the average fulfillment duration at the facility level via [API](/documentation/apis/api-reference/facilities-core.md) and in [Backoffice](/documentation/backoffice/network-view/facilities.md#average-fulfillment-duration). An admin can also define a tenant-wide default fallback via [API](/documentation/apis/api-reference/picking-configuration-operations.md#put-api-configurations-fulfillmentprocessbuffer), which is initially set to 240 minutes.

### Fulfillment times and capacities

When adding fulfillment times, you can set maximum capacities for each time slot. You can add both via [API](/documentation/apis/api-reference/facilities-core.md) or in [Backoffice](/documentation/backoffice/network-view/facilities.md#fulfillment-times-and-capacity).

Setting maximum capacities per day and per fulfillment slot can affect the calculated target time of a pick job. If no fulfillment capacity remains before the carrier pickup time on the same day the order is placed, the target time is adjusted to the next available capacity slot and its corresponding pickup time.

However, if the target time is defined within the order (hard target time), the target time is passed on.

To consider capacities, fulfillmenttools checks the next pickup time for the selected carrier that is reachable when the order is picked within the planned fulfillment slot. Only if the pickup time is reachable, including free capacity, is it selected as the new target time.

In addition to checking the capacity, fulfillmenttools also considers whether the task can be picked before the target time. In case the time at which the order was created plus the average picking duration exceeds the target time, the next upcoming slot is selected. If the order includes a target time, the order might not be routable and will be set to [unroutable](/documentation/by-pillar/advanced-order-routing/unroutable-orders.md).

### Timeframe for future capacity planning

The timeframe for future capacity planning setting ensures that capacities too far in the future aren't used. You can set a limit that defines how many days in the future capacities can be used and booked. This serves as the base for the [capacity fence](/documentation/by-pillar/advanced-order-routing/fences.md#facility-capacity).

The value always includes a calendar day's capacity. You can set the value as a tenant-wide default via [API](/documentation/apis/api-reference/routing-plans-configuration-doms.md#put-api-configurations-capacityplanningtimeframe) or [Backoffice](/documentation/backoffice/network-view/settings.md#timeframe-for-future-capacity-planning), as well as for a specific facility via [API](/documentation/apis/api-reference/facilities-core.md). If the default value changes, only the facilities using the default value change. Facilities with their own value aren't changed, even if it matches the default.

For example, if the timeframe for future capacity planning is set to 3 days and today is Monday, the capacities until Thursday can be used for planning.

{% hint style="info" %}
Capacities have their own collection within the database where you can find the already planned capacity for a slot. The collection is called `ocff-{YOUR_PROJECT_ID}-git/pre/prd.routing-v1-reservation-slot`.
{% endhint %}

### Fences and ratings

Fences and ratings within the routing strategy can also affect the target time calculation for ship-from-store orders.

{% hint style="info" %}
See the [next free capacity rating section](/documentation/by-pillar/advanced-order-routing/ratings.md#ratings-nextfreecapacity-2) and the [time-triggered reroute section](/documentation/by-pillar/advanced-order-routing/reroute.md#rerouting-rerouteincaseofinactivity-time-triggeredreroute) for more information.
{% endhint %}

### Service job execution time

The service job execution time is the time it takes to complete a service job. It shouldn't count any other part of the fulfillment process.

Add the execution time to the [custom service](/documentation/by-pillar/store-operations/services/custom-services.md) as `executionTimeInMin`.&#x20;

## Calculating order target time

### Click-and-collect

If no target time is supplied in the order, fulfillmenttools calculates the target time based on the fulfillment times, capacities, and average fulfillment duration (buffer).

#### Example 1

An order is placed at 16:00 on Monday for click-and-collect at our Nerd Herd Clothing facility. Below are the settings for that facility:

| **Order type**                            | Click-and-collect                           |
| ----------------------------------------- | ------------------------------------------- |
| **Fulfillment times**                     | Monday-Friday 09:00-18:00                   |
| **Non-fulfillment days**                  | None                                        |
| **Average fulfillment duration (buffer)** | 4 hours                                     |
| **Time frame for capacity planning**      | 10 days                                     |
| **Cutoff time**                           | Not applicable for click-and-collect orders |

In this case, the target time would be on 11:00 Tuesday.

* The average fulfillment duration can only be counted within the fulfillment times.
* A 2-hour buffer is taken on Monday, which equals 18:00. Then 2 hours is added to 09:00 on Tuesday, which equals 11:00 on Tuesday.

#### Example 2

An order is placed at 08:00 on Monday for click-and-collect at our Nerd Herd Clothing facility. Below are the settings for that facility:

| **Order type**                            | Click-and-collect                           |
| ----------------------------------------- | ------------------------------------------- |
| **Fulfillment times**                     | Monday-Friday 09:00-18:00                   |
| **Non-fulfillment days**                  | None                                        |
| **Average fulfillment duration (buffer)** | 4 hours                                     |
| **Time frame for capacity planning**      | 10 days                                     |
| **Cutoff time**                           | Not applicable for click-and-collect orders |

In this case, the target time would be 13:00 on Monday.

* The average fulfillment duration can't start until 09:00 to fit the fulfillment times.
* 09:00 plus 4 hours equals a target time of 13:00 the same day.

### Ship-from-store

If no target time was supplied in the order, [cutoff times](#cutoff-times) of carriers at the facility are checked. Then, fulfillmenttools checks whether it can fulfill the order using the fulfillment times, capacities, and average fulfillment duration (buffer) before the selected carrier arrives that day. If so, the target time equals the selected carrier's cutoff time for that day.

If it's not possible to fulfill the order before that day's cutoff time for the selected carrier, the target time is the next upcoming cutoff time for this carrier for which fulfillment can be guaranteed beforehand.

#### Example 1

An order is placed at 13:30 on Monday for delivery. Routing decides the best option is the Nerd Herd Clothing warehouse facility, and DHL should be the carrier. Below are the settings for that facility and carrier:

| **Order type**                            | Ship-from-store           |
| ----------------------------------------- | ------------------------- |
| **Fulfillment times**                     | Monday-Friday 09:00-18:00 |
| **Non-fulfillment days**                  | None                      |
| **Average fulfillment duration (buffer)** | 2 hours                   |
| **Time frame for capacity planning**      | 10 days                   |
| **Cutoff time**                           | 16:00 Monday-Friday       |

In this case, the target time would be 16:00 Monday.

* 13:30 plus the 2-hour average fulfillment duration equals 15:30, which is before the cutoff time. So the target time is 16:00 the same day, as the target time is always the carrier pickup time.

If another order were placed for the same facility and carrier at 14:30 on Monday, the target time would be 16:00 on Tuesday.

* 14:30 plus the 2-hour average fulfillment duration equals 16:30, which is after the cutoff time. So the target time is 16:00 the next day, as the target time is always the carrier pickup time.

#### Example 2

An order is placed at 08:00 on Monday for delivery. Routing decides the best option is the Nerd Herd Clothing warehouse facility, and DHL should be the carrier. Below are the settings for that facility and carrier:

| **Order type**                            | Ship-from-store           |
| ----------------------------------------- | ------------------------- |
| **Fulfillment times**                     | Monday-Friday 08:30-17:00 |
| **Non-fulfillment days**                  | None                      |
| **Average fulfillment duration (buffer)** | 2 hours                   |
| **Time frame for capacity planning**      | 10 days                   |
| **Cutoff time**                           | 11:00 Monday-Friday       |

In this case, the target time would be on 11:00 Monday.

* 08:30 plus the 2-hour average fulfillment duration equals 10:30, which is before the cutoff time. So the target time is 11:00 the same day.

If another order were placed for the same facility and carrier at 14:30 on Monday, the target time would be 11:00 on Tuesday.

* 14:30 plus the 2-hour average fulfillment duration equals 16:30, which is after the cutoff time. So the target time is 11:00 the next day, since that's always the carrier's pickup time.

#### Example 3

An order is placed at 14:00 on Monday for delivery. Routing decides the best option is the Nerd Herd Clothing warehouse facility, and DHL should be the carrier. Below are the settings for that facility and carrier:

| **Order type**                            | Ship-from-store           |
| ----------------------------------------- | ------------------------- |
| **Fulfillment times**                     | Monday-Friday 08:30-17:00 |
| **Non-fulfillment days**                  | None                      |
| **Average fulfillment duration (buffer)** | 30 minutes                |
| **Time frame for capacity planning**      | 10 days                   |
| **Cutoff time**                           | 16:00 Monday-Friday       |

Depending on the routing strategy (settings, fences, ratings, and so on), the target time will be altered:

* The [next free capacity rating](/documentation/by-pillar/advanced-order-routing/ratings.md#ratings-nextfreecapacity-2) or fence is inactive: The target time equals 16:00 Monday.
  * 14:00 plus the 30-minute average fulfillment duration equals 14:30, which is before the cutoff time. So the target time is 16:00 the same day, as the target time is always the carrier pickup time.
* The [next free capacity rating](/documentation/by-pillar/advanced-order-routing/ratings.md#ratings-nextfreecapacity-2) or fence is active, and the next available slot is 15:00 on Monday: The target time equals 16:00 on Monday.
  * 15:00 (the future capacity slot) plus the 30-minute average fulfillment duration equals 15:30, which is before the cutoff time. So the target time is 16:00 the same day, as the target time is always the carrier pickup time.
* The [next free capacity rating](/documentation/by-pillar/advanced-order-routing/ratings.md#ratings-nextfreecapacity-2) or fence is active, and the next available slot is 15:00 on Wednesday: The target time equals 16:00 on Wednesday.
  * 15:00 (the future capacity slot) plus the 30-minute average fulfillment duration equals 15:30, which is before the cutoff time. So the target time is 16:00 on Wednesday, as the target time is always the carrier pickup time.
* [Time-triggered reroute](/documentation/by-pillar/advanced-order-routing/reroute.md#rerouting-rerouteincaseofinactivity-time-triggeredreroute) rules are active (set to 24 hours): The target time equals 16:00 Monday.
  * 14:00 plus the 30-minute average fulfillment duration equals 14:30, which is before the cutoff time and before the reroute trigger. So the target time is 16:00 the same day, as the target time is always the carrier pickup time.
* [Time-triggered reroute](/documentation/by-pillar/advanced-order-routing/reroute.md#rerouting-rerouteincaseofinactivity-time-triggeredreroute) rules are active (set to 24 hours), the [next free capacity rating](/documentation/by-pillar/advanced-order-routing/ratings.md#ratings-nextfreecapacity-2) or fence is active, and the next available slot is 15:00 on Wednesday: The order will be rerouted to a different facility.
  * 15:00 (the future capacity slot) plus the 30-minute average fulfillment duration equals 15:30, which is before the cutoff time. However, that's more than 24 hours after the pick job was created, so the order is rerouted.

### Service jobs

If the order is connected to a service job or multiple [service jobs](/documentation/by-pillar/store-operations/services/service-jobs.md), the service job(s) execution time will be included in the target time calculation by adding it to the order time.

#### Example

An order is placed at 16:00 on Monday for click-and-collect at our Nerd Herd Clothing facility. Below are the settings for that facility:

<table data-header-hidden data-search="false"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Order type</strong></td><td>Click-and-collect</td></tr><tr><td><strong>Fulfillment times</strong></td><td>Monday-Friday 09:00-18:00</td></tr><tr><td><strong>Non-fulfillment days</strong></td><td>None</td></tr><tr><td><strong>Average fulfillment duration (buffer)</strong></td><td>4 hours</td></tr><tr><td><strong>Time frame for capacity planning</strong></td><td>10 days</td></tr><tr><td><strong>Cutoff time</strong></td><td>Not applicable for click-and-collect orders</td></tr><tr><td><strong>Service job execution time</strong></td><td>90 minutes</td></tr></tbody></table>

In this case, the target time would be 11:30 on Tuesday.

* Add the service job execution time to the order time (17:30 Monday).
* The average fulfillment duration can only be counted within the fulfillment times.
* We take a 30-minute buffer on Monday, which equals 18:00. Then add a 2.5-hour buffer to 09:00 Tuesday, which equals 11:30 on Tuesday.

### No target time

When a target time can't be determined, the target time is set to undefined in the pick job. This typically occurs when certain constraints prevent the calculation of a feasible fulfillment time. For example, when a manual facility assignment is triggered, but the newly assigned facility has no available fulfillment slot.

If no target time is present, it can be added to each module in the fulfillment process individually via API.

Each process entity (`pickJob`, `packJob`, `handoverJob`, `serviceJob`, `Shipment`) has its own `targetTime` field and its own `ADD_TARGET_TIME` action. These are completely independent of each other. You can set a different `targetTime` on `pickJob`, `packJob`, and `handoverJob` independently, using each entity's own action. We don't validate that these times make chronological sense relative to each other. It's possible set a `packJob` target time earlier than a `pickJob`, even though packing happens after picking in the real process and the API will accept it without any error.

You can add a target time only if none has been set yet. If a target time is already present, the request returns an error.

You can also set a target time for all modules of the fulfillment process at once. This is only available if none of the modules already have a target time. If at least one already has a target time, the request fails, and the response indicates which one is affected.

{% hint style="info" %}
For detailed endpoint information, refer to the [pick jobs](/documentation/apis/api-reference/picking-operations.md#post-api-pickjobs), [pack jobs](/documentation/apis/api-reference/packing-operations.md#post-api-packjobs), [service jobs](/documentation/apis/api-reference/services-operations.md#post-api-servicejobs), [handover jobs](/documentation/apis/api-reference/handovers-operations.md#post-api-handoverjobs), and [operative process](/documentation/apis/api-reference/operative-process-operations.md#get-api-operativeprocesses) API references.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.fulfillmenttools.com/documentation/by-pillar/store-operations/picking/pick-job-target-time.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
