Status and actor matrix

B2B Quote separates a fixed lifecycle state from the store-scoped status label shown in the admin and storefront. The transition table decides which actor may move a quote and whether a note or notification is required.

Lifecycle states

State Typical meaning Usual actor for entry
Draft Request is being prepared. Customer or admin
Submitted Customer sent the request for review. Customer
In review Merchant or customer is working on the offer. Admin or customer
Approved Merchant released an offer. Admin
Accepted Customer accepted the offer. Customer or permitted admin flow
Ordered An order was created. System
Rejected The current offer was declined. Admin or customer, when configured
Expired The expiry process closed the offer. System
Cancelled The request was cancelled. Actor allowed by the transition

Ordered, expired, and cancelled are terminal states in the base lifecycle. Custom statuses still map to one of these states and cannot create a separate state.

Operation matrix

The table describes the normal requirement. A store can narrow it with transitions, ACL, customer-group access, status restrictions, and workflow rules.

Operation Customer Admin System
Create draft Yes, for an eligible account Yes, with quote-save permission No
Add or edit items Editable customer quote Editable quote and ACL Through configured jobs or integrations
Submit Requires customer transition Can save, but submission is an actor-specific transition No
Offer or approve No Requires admin transition and ACL Workflow rules may trigger related actions
Counter-offer Only when enabled for the current state Can set the offered price No
Accept Requires customer transition or guest token permission Only where the admin action is exposed Conversion performs the system transition
Expire No No direct customer action Expiry job and system transition
Create order No direct order service call Admin conversion action where available Validates and writes the order

Guest access follows the customer column but uses the quote access token. A token does not bypass status, expiry, configuration, or order validation.

Store scope and defaults

Statuses and transitions can be global or scoped to a store view. The resolver uses the quote's store when it looks for a target status and actor permission. Keep one default status for every state used by the workflow. If a target is not explicitly configured, the state default is used; if neither exists, the action fails with an invalid-transition error.

Required notes and notifications

A transition can require a non-empty note. Customer and administrator notifications are independent settings on the transition. A successful status save dispatches side effects after the transaction commits, so a rolled-back change should not send a transition email.

Health check

When an action is missing, check these values in order:

  1. quote store view and current status;
  2. target status state and store scope;
  3. allowed actor on the transition;
  4. required note setting;
  5. customer-group and storefront access settings;
  6. administrator ACL and any status-disabled feature;
  7. workflow rule conditions and notification configuration.

Do not edit the status column directly. Correct the transition or status configuration and test the same action as the affected actor.