Orders and shop operations
Shop teams follow drafts, fulfilment, returns and refunds with stock, prices and collections.
Shop teams follow drafts, fulfilment, returns and refunds with stock, prices and collections.
Where to find it
Web: open Shop. Desktop: Business → Shop, using the same record paths. Disabled modules or missing read permission remove the navigation entry.
| Screen / tab | Web path | Usage | Desktop |
|---|---|---|---|
| Shop | /shop | List, view or tab | Native screen |
| Orders | /shop/orders | List, view or tab | Native screen |
| Stock | /shop/stock | List, view or tab | Native screen |
| Prices | /shop/prices | List, view or tab | Native screen |
| Collections | /shop/collections | List, view or tab | Native screen |
| Record details | /shop/orders/[id] | Record or editor | Native screen |
Record tabs and panels
These contributions appear when their modules are enabled and permitted, alongside the record’s own tabs. Check module/permission state if missing.
| Area | Kind | Owning module |
|---|---|---|
| Tasks | Panel | ai |
| Shipping & e-invoice | Panel | integrations |
Start working
Step 1
Draft with customer/channel/lines.
Step 2
Check delivery, vouchers, staff discount and payment.
Step 3
Place and confirm when needed.
Step 4
Create/approve fulfilment and tracking.
Step 5
Use cancellation, product return or money refund flows.

Settings
Option-by-option configuration and screen paths: Settings guide.
- General ·
/settings/shop - Channels ·
/settings/shop/channels - Warehouses ·
/settings/shop/warehouses - Shipping zones ·
/settings/shop/shipping - Translations ·
/settings/shop/translations
Permissions and limits
Before you start
Returns and refunds differ. Available stock is on-hand minus allocated. New channels start closed. Unpaid-order/overselling settings alter behaviour.
Role capabilities: Read (read), Write (write), Delete/archive (delete), Manage (manage), Approve (approve), Handle automated delivery/jobs (handle), Export (export), Comment (comment).
Own-record restrictions apply equally to lists, records and Era. Record state or missing data can refuse an otherwise permitted action.
Ask Era
Show payment and stock gaps on orders awaiting fulfilment.
Select relevant records for Era context. Era respects modules/roles; external or confirmation-sensitive work can stop for approval. Use era tools in the terminal to inspect currently available tools.
Automation and events
These declared events are available to module-event triggers. Subscribing does not configure the next operation; choose recipients, conditions and actions separately.
Operation details
The inventory includes record, configuration, visitor and background flows. IDs support Era/automation; not every row is a menu button. Asterisks mark required inputs. Unmapped rows do not imply a visible control.
| Operation and ID | Inputs | Permission | Screen or flow |
|---|---|---|---|
Flag abandoned baskets · retail.raise_abandoned_checkouts | — | Handle automated delivery/jobs | Background routine |
Save a sales channel · retail.save_channel | Channel, Name *, Address, Currency, Default country | Manage | /settings/shop/channels |
Open the shop · retail.open_shop | Name, Currency, Default country | Manage | Record/API/visitor flow; no separate screen button mapped |
Open or close a channel · retail.set_channel_active | Channel *, Open * | Manage | /settings/shop/channels |
Choose a channel’s warehouses · retail.set_channel_warehouses | Channel *, Warehouses * | Manage | /settings/shop/channels |
List something in a channel · retail.set_item_listing | Item *, Channel, Published, Show in listings, On sale from | Write | /shop, /shop/prices |
Price a variant in a channel · retail.set_variant_price | Variant *, Channel *, Price (minor units), Cost (minor units), Was (minor units) | Write | /shop, /shop/prices |
Save a collection · retail.save_collection | Collection, Name *, Address, Description, SEO title, SEO description, Banner image, Banner description | Write | /shop/collections |
Choose what a collection holds · retail.set_collection_items | Collection *, Items * | Write | /shop/collections |
Delete a collection · retail.delete_collection | Collection * | Delete/archive | /shop/collections |
Open a warehouse · retail.create_warehouse | Name *, Address, Existing address, Street, Street (second line), District, City, Region, Postal code, Country, Phone, Email, Collection, Hidden from customers | Manage | /settings/shop/warehouses |
Edit a warehouse · retail.update_warehouse | Warehouse *, Name, Address, Street, Street (second line), District, City, Region, Postal code, Country, Phone, Email, Collection, Hidden from customers | Manage | /settings/shop/warehouses |
Close a warehouse · retail.delete_warehouse | Warehouse * | Delete/archive | /settings/shop/warehouses |
Choose which zones a warehouse serves · retail.set_warehouse_zones | Warehouse *, Shipping zones * | Manage | /settings/shop/warehouses |
Count stock · retail.set_stock | Warehouse *, Variant *, Quantity *, Note | Write | /catalog/[id], /shop, /shop/stock |
Adjust stock · retail.adjust_stock | Warehouse *, Variant *, Change *, Reason *, Note | Write | /shop/stock |
Reprice in bulk · retail.bulk_update_prices | Channel *, Variants *, Change *, Value *, Which figure | Write | /shop/prices |
Save a shipping zone · retail.save_shipping_zone | Zone, Name *, Description, Countries, Everywhere else, Channels | Manage | /settings/shop/shipping |
Delete a shipping zone · retail.delete_shipping_zone | Zone * | Delete/archive | /settings/shop/shipping |
Save a delivery rate · retail.save_shipping_method | Rate, Zone *, Name *, Priced by, Description, From (grams), To (grams), Fastest (days), Slowest (days), Tax class | Manage | /settings/shop/shipping |
Delete a delivery rate · retail.delete_shipping_method | Rate * | Delete/archive | /settings/shop/shipping |
Price a delivery rate in a channel · retail.set_shipping_price | Rate *, Channel *, Price (minor units) *, From order value, To order value | Manage | /settings/shop/shipping |
Set postal-code rules · retail.set_postal_code_rules | Rate *, Rules * | Manage | /settings/shop/shipping |
Open a basket · retail.create_checkout | Channel *, Customer, Email, Lines | Write | Record/API/visitor flow; no separate screen button mapped |
Change a basket · retail.set_checkout_lines | Basket *, Lines * | Write | Record/API/visitor flow; no separate screen button mapped |
Hold checkout stock · retail.renew_checkout_reservation | Basket * | Write | Record/API/visitor flow; no separate screen button mapped |
Release expired checkout stock · retail.expire_stock_reservations | — | Handle automated delivery/jobs | Record/API/visitor flow; no separate screen button mapped |
Choose delivery · retail.set_checkout_delivery | Basket *, Delivery address, Billing address, Delivery rate, Collect from | Write | Record/API/visitor flow; no separate screen button mapped |
Place the order · retail.complete_checkout | Basket * | Write | Record/API/visitor flow; no separate screen button mapped |
Start a draft order · retail.create_draft_order | Channel *, Customer, Email, Note, Billing address, Delivery address, Delivery | Write | /shop/orders |
Discard a draft order · retail.delete_draft_order | Order * | Delete/archive | /shop/orders/[id] |
Change an order’s lines · retail.set_order_lines | Order *, Lines * | Write | /shop/orders/[id] |
Place a draft order · retail.complete_draft_order | Order * | Write | /shop/orders/[id] |
Confirm an order · retail.confirm_order | Order * | Approve | /shop/orders/[id] |
Edit an order · retail.update_order | Order *, Customer, Note, Email, Billing address, Delivery address, Delivery rate, Delivery | Write | /shop/orders/[id] |
Edit order metadata · retail.update_order_metadata | Order *, Metadata, Private metadata | Write | /shop/orders/[id] |
Cancel an order · retail.cancel_order | Order *, Reason | Manage | /shop/orders/[id] |
Despatch an order · retail.fulfil_order | Order *, Lines *, Tracking number, Carrier, Tracking link, Tell the customer | Handle automated delivery/jobs | /shop/orders/[id] |
Approve a despatch · retail.approve_fulfilment | Despatch * | Approve | /shop/orders/[id] |
Set a tracking number · retail.set_tracking | Despatch *, Tracking number *, Carrier, Tracking link, Tell the customer | Handle automated delivery/jobs | /shop/orders/[id] |
Cancel a despatch · retail.cancel_fulfilment | Despatch * | Handle automated delivery/jobs | /shop/orders/[id] |
Record a return · retail.return_products | Order *, Lines * | Handle automated delivery/jobs | /shop/orders/[id] |
Apply a coupon · retail.set_order_voucher | Order *, Coupon code | Write | /shop/orders/[id] |
Pay with a gift card · retail.attach_gift_card | Order *, Gift card code, Gift card (already redeemed), Redemption, Last four, Amount *, Idempotency key | Write | /shop/orders/[id] |
Take a gift card off · retail.detach_gift_card | Gift card on the order *, Why the card was refused (compensation) | Write | /shop/orders/[id] |
Confirm a gift card redemption · retail.confirm_gift_card | Gift card on the order *, Gift card *, Redemption | Write | Background routine |
Update what an order has been paid · retail.sync_charge_status | Order * | Write | Background routine |
Open a return · retail.request_return | Order *, Lines *, Reason, Note | Handle automated delivery/jobs | /shop/orders/[id] |
Receive a return · retail.receive_return | Return *, Lines | Handle automated delivery/jobs | /shop/orders/[id] |
Inspect a return · retail.inspect_return | Return *, Lines * | Handle automated delivery/jobs | /shop/orders/[id] |
Close a return · retail.close_return | Return * | Handle automated delivery/jobs | /shop/orders/[id] |
Refuse a return · retail.reject_return | Return *, Reason | Handle automated delivery/jobs | /shop/orders/[id] |
Grant a refund · retail.grant_refund | Order *, Amount, Lines, Include delivery, Reason, Return | Manage | /shop/orders/[id] |
Move stock between warehouses · retail.transfer_stock | From *, To *, Variant *, Quantity *, Note | Write | /shop/stock |
Hold back safety stock · retail.set_stock_policy | Warehouse *, Variant *, Safety stock * | Manage | /shop/stock |
Sell on preorder · retail.set_preorder | Variant *, On preorder *, Ends, Limit, all channels, Limits per channel | Manage | /shop/stock |
End a preorder · retail.end_preorder | Variant * | Manage | /shop, /shop/stock |
Expire an unconfirmed order · retail.expire_order | Order * | Handle automated delivery/jobs | Record/API/visitor flow; no separate screen button mapped |
Discard drafts · retail.delete_draft_orders | Drafts * | Delete/archive | /shop/orders |
Fill a collection from a rule · retail.set_collection_rule | Collection *, Rule | Write | /shop/collections |
Refresh a smart collection · retail.refresh_collection | Collection * | Write | /shop/collections |
Give a staff discount · retail.set_order_discount | Order *, Off by *, Value (percent, or minor units) *, Reason | Write | /shop/orders/[id] |
Remove the staff discount · retail.remove_order_discount | Order * | Write | /shop/orders/[id] |
Order again · retail.duplicate_order | Order * | Write | /shop/orders/[id] |
Exclude products from a delivery rate · retail.set_shipping_excluded_items | Rate *, Products * | Manage | /settings/shop/shipping |
Delete a channel · retail.delete_channel | Channel * | Delete/archive | /settings/shop/channels |
Use a coupon (site) · retail.site_checkout_voucher | Basket *, Coupon code | Write | Record/API/visitor flow; no separate screen button mapped |
Add to basket (site) · retail.site_cart_add | Basket, Variant *, Quantity | Write | Record/API/visitor flow; no separate screen button mapped |
Change a basket line (site) · retail.site_cart_set | Basket *, Variant *, Quantity * | Write | Record/API/visitor flow; no separate screen button mapped |
Keep my basket after signing in · retail.site_cart_claim | Basket * | Write | Record/API/visitor flow; no separate screen button mapped |
Give checkout details (site) · retail.site_checkout_details | Basket *, Email *, Customer *, Delivery address, Note | Write | Record/API/visitor flow; no separate screen button mapped |
Choose delivery (site) · retail.site_checkout_delivery | Basket *, Delivery rate, Collect from | Write | Record/API/visitor flow; no separate screen button mapped |
Place an order (site) · retail.site_place_order | Basket *, Payment method | Write | Record/API/visitor flow; no separate screen button mapped |
Import a marketplace order · retail.import_channel_order | Channel *, Integration account, Provider *, Warehouse, Customer, Order * | Handle automated delivery/jobs | Record/API/visitor flow; no separate screen button mapped |
Related guides
Stock and warehouse transfers
Steps, actions and related settings.
Channel prices and collections
Steps, actions and related settings.
Returns and refunds
Steps, actions and related settings.
Settings
Options, screen paths and defaults.
Workflows
Operations managers connect triggered blocks on a canvas with conditions, loops and approval waits.
Shop
Shop — modules and detailed settings
Technical sources
packages/os-kernel/src/modules/retail.ts, packages/os-kernel/src/modules/index.ts, apps/studio/lib/os/navigation.ts, apps/studio/lib/os/settings-groups.ts, apps/era-station/apps/web/src/era/business/screens.ts.