Latest posts Visit blog

From the outside, click and collect looks like a checkbox in the cart. In operation it is the opposite: the service connects two systems that run at different speeds, the online shop with its order status and the store with its till, its shelf and its staff. Store pickup has long been widespread; it is rarely built cleanly. This article describes the pickup process for what it technically is - a state machine with deadlines, clear responsibilities and a notification chain, at the end of which somebody stands at the counter holding an order number.

How widespread store pickup really is

The second online shop report by EHI examined the 500 highest-grossing B2C online shops in Germany in 2024. According to it, 33.8 percent of the shops surveyed offer click and collect (EHI Retail Institute). Broken down by payment timing, 28 percent use online payment and 17.8 percent payment in the store (EHI Retail Institute) - so both variants occur side by side, and some shops run them in parallel. The two figures add up to more than the overall figure because shops offering both payment routes are counted twice. For technical planning this is the first important fork: the payment timing decides where the contract is concluded, which documents are created and what a cancellation looks like. Anyone offering both routes builds two processes, not one with a switch.

The prerequisite for the service is a physical store, and 56.2 percent of the online shops surveyed have one (EHI Retail Institute). Arithmetically, then, only a portion of those who could use the store as a pickup point actually do so. The gap becomes even clearer at a second point: only 22.2 percent of online shops state whether a product no longer available online can still be obtained in the store (EHI Retail Institute). Yet that piece of information is the precursor to pickup. Without reliable store availability in the front end, click and collect remains a promise the store has to keep without having been asked first. Connecting the upstream systems is therefore not an afterthought but the starting point.

Two views of the same number

From the shops' perspective click and collect is a minority feature; from the perspective of physical retail it is standard. A Bitkom survey of retail companies in 2023 found 73 percent of physical retailers offering the service, with a further 10 percent discussing or planning it (Bitkom 2023). In the same year, 85 percent of German retail companies sold both online and in stores (Bitkom 2023). The difference comes from the population surveyed: one study looks at large online shops, the other at retail companies with a store. Anyone quoting adoption figures should therefore say what the percentages are taken from. More on how the channels interact is in our article on omnichannel strategy.

The reservation window: who owns the item, and for how long

The first design mistake happens before the first line of code: the reservation is conceived as a flag instead of a deadline. As soon as somebody triggers a pickup online, one piece of store inventory is taken out of sellable stock. While that piece is reserved, it must not be sold a second time, neither online nor at the till. Anyone who fails to model this does not have a pickup problem but an inventory problem - and notices it only when two people want the same item off the shelf. How quickly a missing deduction turns into an oversell is something we described using the example of real-time inventory synchronisation.

  1. Request: The order reaches the shop, the desired item is nominally present in the target store.
  2. Soft hold: The shop books a soft reservation with a short lifetime, typically 15 to 60 minutes.
  3. Confirmation: The store confirms the item on the shelf, and the soft reservation becomes a hard one.
  4. Preparation: The item leaves the sales floor and waits at the pickup point with the order number.
  5. Completion: The goods are handed over or the deadline passes and the stock returns to sale.

The intermediate step between soft and hard reservation is the one most implementations leave out. It costs staff time but prevents the most unpleasant situation the service can produce: confirming to the customer even though the item is damaged, lent out or long since sold. Click and collect is used broadly: a Bitkom survey of internet users in 2019 found that 26 percent of online buyers had already used the service (Bitkom 2019), while a further 18 percent said they would like to use it in future (Bitkom 2019). The figures are older but still serve as an order of magnitude for how many people take seriously the commitment the shop makes at checkout.

Pickup deadline and automatic cancellation

A reservation without an expiry date is an announced inventory leak. Every prepared item nobody collects blocks space at the pickup point and stock in the system. The pickup deadline is therefore not a service detail but the dial the whole process hangs on: it determines how often the store has to tidy up, how much stock sits in limbo and how many reminders the notification chain sends. In practice four models have become established, differing in duration, reminder rhythm and type of cancellation.

Deadline modelDurationReminderCancellation
Same-day window24 hoursnoneautomatic after expiry
Working-day window3 working daysafter 2 daysautomatic, with advance notice
Week window7 daysafter 3 and after 6 daysmanual by the store
Paid reservation10 daysafter 5 and after 9 dayscancellation with refund run

The fourth model deserves its own look because money is involved. If payment was made online, the purchase contract exists before anyone enters the store. The automatic cancellation after the deadline is then not a silent system event but the dissolution of a contract with a refund - technically, in the accounts and in the communication. This has to be kept apart from the right of withdrawal: under section 355 paragraph 2 of the German Civil Code, the withdrawal period is 14 days (gesetze-im-internet.de). The pickup deadline and the withdrawal period run independently of each other, and they rarely end on the same day. Writing both clocks into the same field produces questions nobody can resolve over the phone.

A cancellation is an event, not a status change

The automatic cancellation should create a record of its own: timestamp, trigger, affected line items, refund amount, executing system. Anyone who merely overwrites the order status loses exactly the information needed afterwards - for instance when the store handed the goods over after all and the cancellation ran anyway.

The notification chain

Between order and handover there are several moments in which customers expect a message, and several in which they want none. The chain is manageable; it just has to be complete and defined in a single place. Spread across shop, merchandise management and store software, it produces duplicate messages and gaps - and both damage trust in the service faster than a late preparation does. Anyone reworking order communication anyway will find the wider frame in the article on post-purchase experience.

  • Receipt: Order accepted, store named, deadline not yet started.
  • Confirmation or refusal: The store has confirmed the item or it has not - this message must not be missing.
  • Ready for pickup: Goods are waiting, the deadline starts, opening hours and pickup point are in the message.
  • Reminder: One or two notices before the deadline, with the concrete date rather than a remaining time.
  • Handover: Confirmation with line items, payment status and receipt, also as evidence for later questions.
  • Cancellation: Notice of the expiry, the refund route and the option to order again.
pickup.json
{
  "order_number": "10023481",
  "store": "HI-01",
  "state": "ready",
  "transitions": [
    { "from": null, "to": "reserved", "at": "2026-09-05T09:12:04Z", "source": "shop" },
    { "from": "reserved", "to": "prepared", "at": "2026-09-05T10:47:11Z", "source": "store" },
    { "from": "prepared", "to": "ready", "at": "2026-09-05T10:47:12Z", "source": "shop" }
  ],
  "deadline": "2026-09-10T18:00:00Z",
  "payment": { "timing": "online", "status": "paid" },
  "lines": [
    { "sku": "SW-1042", "qty_ordered": 2, "qty_prepared": 2, "qty_handed_over": 0 },
    { "sku": "SW-2210", "qty_ordered": 1, "qty_prepared": 0, "qty_handed_over": 0 }
  ]
}

The example shows three decisions that are hard to retrofit later. First, the state does not stand alone but comes with its history; every transition carries a timestamp and the triggering system. Second, the deadline belongs to the pickup and not to the order, because one order can have several pickups in different stores. Third, every line item carries three quantities: ordered, prepared, handed over. Without that split, partial pickup cannot be modelled. Building models like this belongs in shop development and not in a free-text field added afterwards.

Till integration and payment timing

The payment timing determines how the transaction is classified in law. If the order and the payment happen online, the contract is concluded as a distance contract. Section 312c paragraph 1 of the German Civil Code defines distance contracts as contracts in which only means of distance communication are used for the negotiation and the conclusion (gesetze-im-internet.de). If the item is merely reserved and paid for at the till, the contract comes into being in the store. Technically, the second route requires a till that knows the transaction: it has to resolve the order number, load the reserved line items and report the completion back to the shop. Around half of physical retailers used tablet- or smartphone-based till systems in 2023, 52 percent to be precise (Bitkom 2023) - so the technical basis for such an integration exists in many stores.

For the route paid online, the duties of electronic commerce apply unchanged. Section 312j paragraph 3 of the German Civil Code requires the order button to be labelled legibly with nothing other than the words order with obligation to pay or a correspondingly unambiguous formulation (gesetze-im-internet.de). A button reading reserve in store is therefore delicate as soon as payment happens at the same point. Anyone offering both routes needs two checkout flows with different labelling, different mandatory information and different documents. How strongly the checkout affects the abandonment rate is shown in the article on checkout optimisation.

Payment timingContract concludedStrengthEffort if not collected
Paid onlinein the shopbinding reservation, plannable preparationcancellation with refund run
Paid in the storein the storeno payment before the goods are seenreturn stock, no money movement
Deposit onlinein the shopreduces no-shows on expensive itemspartial refund, separate document
The document belongs to the payment route, not to the pickup

With online payment the invoice is created in the shop, with payment at the till it is created in the till system. If both run in parallel, two document circuits with their own number ranges exist - and accounting needs a rule for which circuit applies when. Leave that open and the error surfaces only in the annual accounts. How to record requirements of this kind up front is described in the article on the requirements specification for shop projects.

Partial pickup and partial cancellation

As soon as an order has more than one line item, the pickup becomes divisible. Of three articles two are waiting at the pickup point, the third arrived damaged. The customer is at the counter and wants to take the two. What happens now is decided by a data model many implementations do not have: the pickup has to carry the state per line item and not per order. Given that, partial pickup, partial cancellation and later delivery are just variants of the same mechanism. Without it, the store is left choosing between an incomplete handover that the system does not reflect and a refusal nobody understands.

  • Partial handover: Only the prepared line items move to the handed-over state, the rest stays open.
  • Remaining deadline: For the open line items the deadline continues or restarts - that is a decision, not a side issue.
  • Partial cancellation: Unavailable line items are cancelled, the refund covers the line value plus a proportionate share of costs.
  • Later delivery: The open line item is supplied from another store or from the central warehouse.
  • Conversion: The pickup becomes a shipment, which changes the document route and the shipping process.

Conversion into a shipment is the case that triggers the most follow-up errors. It changes the place of performance, often the cost and in many cases the document structure as well. If the shop offers it, it should be a transaction of its own with its own confirmation rather than a silent adjustment in the order header. In practice it has proven useful to allow conversion only from the open state and to block it for line items already handed over - otherwise orders arise whose history can no longer be told afterwards.

What goes wrong with store inventory

Store inventory is rarely as accurate as warehouse inventory, for reasons no software clears away: goods wander into fitting rooms, get scanned incorrectly at the till, end up in the stocktaking difference. The online channel makes that inaccuracy visible because it derives a commitment from it. The return route behaves similarly: only 16.2 percent of the online shops surveyed allow returns to be handed in directly in the store (EHI Retail Institute) - so in many companies the channel the goods come back through is not the same one they go out through. If the database slows down during the availability query, the article on the slow query log helps narrow it down.

  • Delayed sync: Store inventory is transferred overnight, so the commitment in the shop can be up to a day old.
  • Missing reservation layer: Reserved items stay in sellable stock and get sold a second time.
  • Safety buffer without a rule: A flat deduction of one item per store hides real availability instead of preventing errors.
  • Serial numbers and batches: For batch-managed articles the quantity is not enough, the specific item counts.
  • Returns from shipping: Returns arriving in the store increase stock there without a system booking.
  • Transfers: Goods moving between two stores are visible in both stocks or in neither.
availability.sql
-- Collectable quantity per store and article
SELECT s.store_id,
       s.article_id,
       s.qty_booked
         - COALESCE(r.qty_reserved, 0)
         - COALESCE(t.qty_in_transit, 0)
         - st.buffer AS qty_collectable
FROM store_stock s
LEFT JOIN (SELECT store_id, article_id, SUM(qty) AS qty_reserved
             FROM reservation
             WHERE state IN ('reserved', 'prepared', 'ready')
               AND deadline > NOW()
             GROUP BY store_id, article_id) r
       ON r.store_id = s.store_id AND r.article_id = s.article_id
LEFT JOIN (SELECT target_store_id AS store_id, article_id, SUM(qty) AS qty_in_transit
             FROM transfer
             WHERE status = 'in_transit'
             GROUP BY target_store_id, article_id) t
       ON t.store_id = s.store_id AND t.article_id = s.article_id
JOIN store st ON st.id = s.store_id
WHERE s.article_id = :article;

The query makes visible what a safety buffer actually is: a deliberate understatement. It belongs somewhere it can be maintained per store, because a store with high stocktaking accuracy needs a different value from a location with heavy walk-in traffic. The deadline condition in the subquery matters too: expired reservations must not keep binding stock. Forget that filter and availability declines for weeks with no discernible cause. For Shopware projects the model can live in custom entities; our Shopware development works with a dedicated reservation table in such cases rather than with stock corrections.

One truth per item

Reservations live in their own table with deadline and state, not as a deduction in the stock field.

Events instead of overwrites

Every state change is logged, with timestamp and triggering system. That makes questions answerable.

Deadlines with a clock

A scheduled run ends expired reservations, releases stock and triggers refund and message.

Metrics that make the process visible

The German Retail Federation puts the online share of retail for the past year at 13.5 percent, after 13.4 percent the year before (HDE Online-Monitor 2026); online revenue accordingly stands at 92.3 billion euros net (HDE Online-Monitor 2026). For the individual store this order of magnitude is only the frame. It gets interesting when the pickup process gets metrics of its own: how often is a commitment withdrawn after the store check? How long does it take from order to the ready state? How many reservations expire? These three values say more about the quality of the service than any revenue figure, because they measure the break between commitment and shelf.

  • Time from order to the ready state, per store and weekday
  • Share of commitments withdrawn after the shelf check
  • Share of reservations that expire without a pickup
  • Share of partial pickups among all completed transactions
  • Average dwell time at the pickup point until handover
  • Number of conversions from pickup to shipment
  • Age of the store inventory at the moment availability is displayed

The frame keeps moving. According to provisional results from the Federal Statistical Office, retail in Germany generated 2.7 percent more revenue in real terms in 2025 than in the previous year (Destatis). In mail order and internet retail, revenue rose by 10.1 percent in real terms (Destatis), with the office itself pointing to a special effect from the restructuring of a larger company - so the figure works as a direction, not as a clean market value. For the pickup process one thing follows above all: the number of transactions is growing, and a process that works with paper slips at fifty pickups a week no longer does at five hundred.

Anyone introducing the service should start with one store and a tight deadline and widen the chain only afterwards. That approach keeps the number of open transactions small, surfaces errors early and gives the store time to fit the new steps into the working day. The expansion stages follow: several stores, partial pickup, conversion to shipment, returns in the store. Which stage pays off for a given company depends on the assortment, the store density and the staffing structure - consulting on the target picture before the first sprint saves more time here than it costs.

Sources and Studies

This article is based on data from EHI Retail Institute, Bitkom, HDE Online-Monitor 2026 and Destatis. The figures cited refer to the status at the time of the respective publication.

The effort depends less on the number of stores than on the quality of the store inventory. Even a single store justifies the process if stock is synchronised at least hourly and somebody owns the preparation. With many locations and unreliable stock, the first step is inventory management, not the pickup feature.

Three to seven days is common. Short deadlines keep the pickup point clear and the stock mobile, long deadlines reduce the number of cancellations. For orders paid online a longer deadline is usual because a cancellation triggers a refund there. What matters is that the deadline has the same value in the shop, in the message and in the till system.

For contracts concluded online, the right of withdrawal applies regardless of where the goods are handed over. Under the German Civil Code the withdrawal period is 14 days. If payment happens in the store and the contract is therefore concluded there, this rule typically does not apply - a voluntary return policy is unaffected by that.

Through a dedicated reservation layer: the item stays in the store inventory in the books but is deducted from sellable stock while the reservation runs. Till and shop read the same value. A flat safety buffer does not replace that layer, it only hides how often things get tight.

The transaction needs a state for exactly this case, with a message to the customer and a choice: another store, shipment or cancellation. What matters is the deadline for the feedback itself - a commitment left hanging for two days costs more trust than a quick refusal.

In its essentials yes: custom entities for reservation and pickup, a scheduled run for deadlines, events for the notification chain. What comes from outside is the store inventory from merchandise management and the completion from the till system. We are happy to work out the scope in a project discussion and connect the upstream systems for B2B and multi-store structures.