Skip to main content
Stock requests allow users to request products to be moved to specific locations. This guide covers creating individual stock requests and bulk stock request orders.

Creating Individual Stock Requests

1

Navigate to Stock Requests

Go to Inventory > Operations > Stock Requests in the main menu.
2

Create New Request

Click the Create button to open a new stock request form.
3

Configure Request Details

Fill in the required fields:
  • Product: Select the product you need
  • Quantity: Enter the requested quantity
  • Unit of Measure: Select the UOM (defaults to product’s UOM)
  • Expected Date: When you expect to receive the goods
  • Warehouse: The warehouse for the request (if multi-location is enabled)
  • Location: The destination location for the products
  • Route: The procurement route to use (optional)
4

Set Shipping Policy

Choose your shipping policy:
  • Receive each product when available: Products are delivered as they become available
  • Receive all products at once: Wait until all products are available before delivery
5

Save as Draft

Click Save to create the request in draft status.
6

Confirm the Request

Click the Confirm button to transition the request to “In progress” state and trigger procurement.
The stock request is automatically assigned a unique reference number (e.g., SR00001) when created.

Stock Request Form Fields

Basic Information

FieldDescriptionRequiredEditable
NameAuto-generated reference numberYesNo (read-only)
ProductThe product being requestedYesDraft only
QuantityRequested quantityYesDraft only
Product UOMUnit of measureYesDraft only
Expected DateExpected delivery dateYesDraft only
Shipping PolicyDelivery policyYesDraft only

Location & Routing

FieldDescriptionRequiredVisibility
WarehouseSource warehouseNoMulti-locations group
LocationDestination locationNoMulti-locations group
RouteProcurement routeNoMulti-locations group
Procurement GroupGrouping for movesNoAdvanced locations group

Quantities (After Confirmation)

  • Quantity In Progress: Products currently being processed
  • Quantity Done: Products already received
  • Quantity Cancelled: Cancelled quantity

Stock Request States

Stock requests progress through several states:
1

Draft

Initial state. Request is editable and has not triggered any operations.Available Actions: Edit, Confirm, Delete
2

In Progress

Request is confirmed and procurement has been triggered. Stock moves are being processed.Available Actions: Cancel, Done
3

Done

Request is fully completed. All requested quantities have been received.Available Actions: None (final state)
4

Cancelled

Request was cancelled. Associated stock moves are cancelled.Available Actions: Set to Draft
If the Stock Request Submit module is installed, an additional Submitted state is available between Draft and In Progress.

Creating Stock Request Orders

Stock Request Orders allow you to group multiple product requests into a single order with shared settings.
1

Navigate to Orders

Go to Inventory > Operations > Stock Request Orders.
This menu is only visible if the Enable Orders setting is activated in Inventory > Configuration > Settings.
2

Create New Order

Click Create to open a new stock request order form.
3

Configure Order Header

Set the order-level settings:
  • Expected Date: Applies to all line items
  • Shipping Policy: Applies to all line items
  • Warehouse: Applies to all line items
  • Location: Applies to all line items
  • Route: Optionally set a default route for all items
  • Procurement Group: Optionally group all order moves
4

Add Request Items

In the Items tab, click Add a line and enter:
  • Product: Product to request
  • Quantity: Requested quantity
  • Unit of Measure: UOM for the product
  • Route: Override the order route if needed
Add as many lines as needed.
5

Save and Confirm

Click Save, then click Confirm to process all request items.
Changing order-level fields (warehouse, location, expected date, etc.) automatically updates all line items to maintain consistency.

Creating Requests from Products

You can create stock request orders directly from the product catalog:
1

Navigate to Products

Go to Inventory > Products > Products.
2

Select Products

Select one or more products using the checkbox in the list view.
3

Open Actions Menu

Click the Actions menu at the top of the list.
4

Create Stock Request Order

Select Create Stock Request Order from the actions menu.
5

Review Generated Order

A new stock request order is created with one line per selected product, each with a default quantity of 1.0.Edit quantities and settings as needed, then confirm.

Advanced Request Configuration

Procurement Groups

Procurement groups help organize related stock moves:
# All moves from the same group will be grouped into one picking
procurement_group_id = self.env['procurement.group'].create({
    'name': 'Project Alpha Materials'
})
When you set a procurement group on a stock request, all generated stock moves and pickings will reference this group, making it easier to track related operations.

Routes and Rules

Routes determine how products are procured:

Transfer Routes

Move products from one location to another within the warehouse

Purchase Routes

Trigger purchase orders when stock is not available

Manufacturing Routes

Create manufacturing orders to produce the product

Custom Routes

Define custom multi-step procurement workflows
The route must have a rule with a destination location that matches or is a parent of the stock request’s location.

Using Available Stock First

Enable the Check available stock first setting to automatically consume available stock before triggering procurement:
1

Open Settings

Navigate to Inventory > Configuration > Settings.
2

Enable the Feature

Scroll to the Stock Request section and enable Check available stock first.
3

Save Settings

Click Save.
When this option is enabled, the system checks if the requested quantity is available in the destination location. If available, it creates and completes a stock move immediately. If not available, it falls back to the configured route.

Request Validation Rules

The system enforces several validation rules:

Quantity Validations

# Draft requests must have positive quantities
if state == 'draft' and product_qty <= 0:
    raise ValidationError(
        "Stock Request product quantity has to be strictly positive."
    )

# Confirmed requests cannot have negative quantities  
if state != 'draft' and product_qty < 0:
    raise ValidationError(
        "Stock Request product quantity cannot be negative."
    )

Order Consistency Validations

When a stock request belongs to an order, these fields must match the order:
  • Requested By
  • Warehouse
  • Location
  • Expected Date
  • Shipping Policy
  • Procurement Group
  • Company
Attempting to modify these fields on a request that belongs to an order will raise a validation error. Modify the order instead, and changes will cascade to all line items.

Tracking Request Progress

After confirming a request, you can monitor its progress:

Smart Buttons

The stock request form includes smart buttons showing:
  • Transfers: Number of associated stock pickings (click to view)
  • Purchase Orders: Related purchase orders (if purchase integration is enabled)
  • Manufacturing Orders: Related production orders (if MRP integration is enabled)

Quantity Fields

  • Qty In Progress: Sum of open allocations (moves not yet done)
  • Qty Done: Sum of completed allocations
  • Qty Cancelled: Quantity that was cancelled
The request automatically transitions to Done when the quantity done equals or exceeds the requested quantity.

Practical Examples

Example 1: Simple Internal Transfer Request

# Request 50 units of product to be transferred to Shop Floor
stock_request = env['stock.request'].create({
    'product_id': product.id,
    'product_uom_qty': 50.0,
    'product_uom_id': product.uom_id.id,
    'warehouse_id': warehouse.id,
    'location_id': shop_floor_location.id,
    'expected_date': '2026-03-10 08:00:00',
    'route_id': transfer_route.id,
})
stock_request.action_confirm()

Example 2: Multi-Product Order

# Create an order with multiple products
order = env['stock.request.order'].create({
    'warehouse_id': warehouse.id,
    'location_id': production_location.id,
    'expected_date': '2026-03-15 09:00:00',
    'stock_request_ids': [
        (0, 0, {
            'product_id': screws.id,
            'product_uom_qty': 1000.0,
            'product_uom_id': screws.uom_id.id,
        }),
        (0, 0, {
            'product_id': brackets.id,
            'product_uom_qty': 200.0,
            'product_uom_id': brackets.uom_id.id,
        }),
    ],
})
order.action_confirm()

Example 3: Request with Purchase Integration

# Request a product that will trigger a purchase order
stock_request = env['stock.request'].create({
    'product_id': purchased_product.id,
    'product_uom_qty': 100.0,
    'product_uom_id': purchased_product.uom_id.id,
    'location_id': warehouse.lot_stock_id.id,
    'route_id': buy_route.id,  # Route configured to trigger purchases
})
stock_request.action_confirm()
# System creates a purchase order automatically

Common Issues and Solutions

Cause: The product type is set to “Service” or the product is not storable.Solution: Only consumable (consu) and storable (product) products can be requested. Change the product type in the product form.
Cause: No route is configured, or the route rules don’t match the request location.Solution: Select a route with rules that have a destination matching your request location. Check route configuration in Inventory > Configuration > Routes.
Cause: Only draft requests can be deleted.Solution: Cancel the request first using the Cancel button, then Set to Draft, and finally delete it.
Cause: Stock allocations may not be properly linked to moves.Solution: Check the Stock Moves smart button to verify allocations exist. Ensure pickings are validated in the Inventory module.

Best Practices

Use Stock Request Orders for recurring needs: If you regularly request the same set of products, create template orders or use the product multi-select feature.
  • Set realistic expected dates to help warehouse staff prioritize
  • Use procurement groups to organize related requests for projects
  • Choose appropriate routes to ensure correct procurement behavior
  • Use the “Receive all at once” policy for interdependent products
  • Review and confirm draft requests promptly to avoid backlog
  • Monitor in-progress requests regularly to identify bottlenecks
  • Use the follower feature to keep stakeholders informed

Build docs developers (and LLMs) love