Configure location-level collection and return stock-aware collection options at checkout.
Quiver can return store-collection options alongside delivery options. Collection is configured per fulfilment location, so customers only see stores that are enabled and can fulfil the complete basket.
How collection availability works
Collection is stock-only in v1:
- A location must have Collection enabled.
- The location must have current stock for every product and quantity in the basket.
- Quiver does not arrange an inventory transfer to make a collection available.
- If no location meets these conditions, the quote will not contain a usable collection option. Depending on the integration, the response may contain a
QUIV_COLrate with anerrorexplaining why it is unavailable.
When several locations are eligible, Quiver returns a collection option for each one. Do not rely on the order of rates in checkout: Shopify and other platforms may reorder shipping methods for display.
Shopify setup
- Open the merchant's Locations settings in Quiver.
- Enable Collection on every store that should be available for collection.
- In Settings → Delivery, enable the merchant-level Collect from Store option.
The merchant-level checkout option is only available when at least one fulfilment location has collection enabled. A location can still be used for delivery without being collection-enabled.
For a Shopify merchant, keep the location's external identifier (for example, the Shopify location ID) in merchantLocationId / externalLocationId. This is the stable mapping used when a customer selects a particular store.
Non-Shopify/API setup
The same location and quote behavior is available to API merchants. There is no Shopify checkout toggle: enable collection on the relevant fulfilment locations, then use the quote and task APIs described below. This is also the setup used by non-Shopify integrations such as Acre Pharmacy.
Enable collection on a location
Use the Fulfilment Location API to create a location with collection enabled, or update an existing location:
curl -X PATCH \
'https://api.quiver.london/fulfilment/fulfilment-locations/{fulfilmentLocationId}' \
-H 'x-api-key: <api-key>' \
-H 'Content-Type: application/json' \
-d '{
"collectionEnabled": true
}'
Use GET /fulfilment-locations to verify the location. The response includes:
collectionEnabled— whether the store can be returned for collection.externalLocationId— the merchant's location identifier used to map the store back to Shopify or another commerce platform.address— the address shown to customers in the collection description.operatingHours— the store hours used for collection readiness messaging.
Get collection options with a quote
Call POST /quotes with the basket and customer details you would use to book the task. Inspect the returned rates array:
{
"rates": [
{
"rateCode": "QUIV_COL",
"name": "Collect from Store — Soho",
"description": "Collect your order from our store at 1 Soho Road.",
"price": 0
}
]
}
Each eligible location is represented by a collection rate. The name and description identify the store and its address. Use a fresh quote when the customer changes the basket or address; quote results and availability can change as inventory changes.
Book the selected store
When the customer selects collection, create the task with:
rateCode: "QUIV_COL".- A
collectionpart containing the selected store'smerchantLocationId. - The same customer and order details used for the quote.
The location identifier should come from the fulfilment-location response, not from a display name. This prevents two stores with similar names from being mapped to the wrong fulfilment location.
Cutoff and readiness messaging
The collection rate is not removed when a store reaches its collection cutoff. Instead, the description changes to the next available collection opening in the store's local timezone. For example:
Collect from 1 Soho Road. Ready for collection tomorrow from 10:30.
Quiver uses the merchant's configured collection cutoff (45 minutes before closing is the standard configuration). A location-specific cutoff or after-cutoff description can override the merchant default.
Troubleshooting
No collection option appears
Check that at least one location has collectionEnabled: true, the location is ecommerce-enabled for collection, and every item in the basket has current stock there.
The merchant-level Shopify toggle cannot be enabled
Enable collection on at least one fulfilment location first, then return to Settings → Delivery.
The wrong store is booked
Re-query fulfilment locations and compare the selected store's externalLocationId with the collection.merchantLocationId sent when creating the task. Do not use a store name as the identifier.
Delivery options disappear when collection is available
Collection and delivery are independent rates. Check that the merchant's delivery-enabled fulfilment location and delivery configuration are still active; a collection rate does not intentionally suppress delivery rates.