Skip to content

Error codes

When the module refuses a request, it answers HTTP 400 with a body of three fields: a code, params and a message.

{
  "code": "STOCKS.OPERATION.SOURCE_REQUIRED",
  "params": {},
  "message": "Vous devez renseigner l'emplacement source !"
}

The code and the params form the stable contract: that is what a program reacts on, never the text. The message repeats the reason in the language of the caller — French for a machine call — so that a client reading only the message keeps working. That contract is additive: new codes may appear, the existing ones do not change meaning. A response without a code is a legacy refusal, not migrated yet; treat it as a generic error.

Params before text

The values quoted in a message — an item, a batch, a quantity — are also present in params. Extract them from there rather than reading them in the sentence: the sentence may be rephrased, the key may not.

The messages listed below are the English wordings the interface displays. A machine call receives the French wording of the same code.

Operations

Code Params Message
STOCKS.OPERATION.NOT_FOUND — The operation was not found
STOCKS.OPERATION.NOT_DRAFT — The document must be in draft mode to be edited
STOCKS.OPERATION.NOT_DRAFT_TO_VALIDATE — The operation must be in draft mode to be validated
STOCKS.OPERATION.NOT_VALIDATED — The operation must be validated to be executed
STOCKS.OPERATION.EXECUTED_UNDELETABLE — You cannot delete an executed operation
STOCKS.OPERATION.CANCEL_REQUIRES_EXECUTED operation Operation operation must be executed to be canceled
STOCKS.OPERATION.RETURN_TYPE_REQUIRED operation A return type must be defined to cancel operation operation
STOCKS.OPERATION.ALREADY_CANCELLED operation A cancellation operation already exists for operation operation
STOCKS.OPERATION.SOURCE_REQUIRED — You must provide the source location
STOCKS.OPERATION.DESTINATION_REQUIRED — You must provide the destination location
STOCKS.OPERATION.SOURCE_EQUALS_DESTINATION — The source location must differ from the destination location
STOCKS.OPERATION.SOURCE_MUST_BE_VIRTUAL — You must pick a virtual location as the source location
STOCKS.OPERATION.SOURCE_MUST_BE_INTERNAL — You must pick an internal location as the source location
STOCKS.OPERATION.DESTINATION_MUST_BE_VIRTUAL — You must pick a virtual location as the destination location
STOCKS.OPERATION.DESTINATION_MUST_BE_INTERNAL — You must pick an internal location as the destination location
STOCKS.OPERATION.PARENT_LOCATION_AS_SOURCE — A parent location cannot serve as the source of an operation
STOCKS.OPERATION.PARENT_LOCATION_AS_DESTINATION — A parent location cannot serve as the destination of an operation
STOCKS.OPERATION.INTERNAL_LOCATION_REQUIRED — You must select at least one internal location
STOCKS.OPERATION.SEQUENCE_EMPTY — The sequence is empty
STOCKS.OPERATION.REFERENCE_TAKEN — This reference is already taken
STOCKS.OPERATION.CATEGORY_UNSUPPORTED — The operation category is not supported
STOCKS.OPERATION.MUST_BE_INBOUND — The operation must be an entry operation
STOCKS.OPERATION.MUST_BE_OUTBOUND — The operation must be an exit operation
STOCKS.OPERATION.MUST_BE_INTERNAL — The operation must be an internal operation

Operation lines

Code Params Message
STOCKS.OPERATION_LINE.NOT_FOUND — The operation movement was not found
STOCKS.OPERATION_LINE.QUANTITY_NOT_POSITIVE — The quantity must be greater than 0
STOCKS.OPERATION_LINE.QUANTITY_INVALID — Invalid quantity: it cannot be lower than or equal to 0
STOCKS.OPERATION_LINE.COST_NEGATIVE — The item cost cannot be negative
STOCKS.OPERATION_LINE.AMOUNT_NOT_POSITIVE — You must enter a positive amount
STOCKS.OPERATION_LINE.MOVEMENT_ALREADY_EXECUTED — The movement has already been executed
STOCKS.OPERATION_LINE.PARENT_LOCATION_AS_DESTINATION — You cannot use a parent location as the destination location
STOCKS.OPERATION_LINE.STOCK_INSUFFICIENT article, available, requested The stock of item article is exhausted. In stock: available / To withdraw: requested
STOCKS.OPERATION_LINE.BATCH_NOT_IN_LOCATION location, batch Location location does not hold batch batch
STOCKS.OPERATION_LINE.BATCH_INSUFFICIENT batch, article, location Batch batch does not hold enough article in location location

Inventories

Code Params Message
STOCKS.INVENTORY.NOT_FOUND — The inventory was not found
STOCKS.INVENTORY.INTERNAL_LOCATION_REQUIRED — You must select at least one internal location
STOCKS.INVENTORY.LOCATION_MUST_BE_INTERNAL — The location must be internal
STOCKS.INVENTORY.LOCATION_WAREHOUSE_MISMATCH — The location does not belong to the selected warehouse
STOCKS.INVENTORY.LOCATION_NOT_OF_INVENTORY_WAREHOUSE — The location does not belong to the inventory warehouse
STOCKS.INVENTORY.LOCATION_NOT_OF_GIVEN_WAREHOUSE — The location does not belong to the given warehouse
STOCKS.INVENTORY.ADJUSTMENT_LOCATION_MUST_BE_INTERNAL — The location must be internal for inventory adjustments
STOCKS.INVENTORY.PERIOD_AND_TYPE_REQUIRED — The period and type information are required
STOCKS.INVENTORY.COUNTED_QUANTITY_NEGATIVE — The counted quantity must be greater than or equal to 0
STOCKS.INVENTORY.TREATED_LINE_REQUIRED — The inventory must hold at least one processed line
STOCKS.INVENTORY.CLOSED_NOT_VALIDATABLE — A closed inventory cannot be validated
STOCKS.INVENTORY.CLOSED_NOT_EXECUTABLE — A closed inventory cannot be executed
STOCKS.INVENTORY.CLOSED_NOT_EDITABLE inventory A closed inventory cannot be edited
STOCKS.INVENTORY.CLOSED_NOT_REOPENABLE — A closed inventory cannot be reopened
STOCKS.INVENTORY.ALREADY_CLOSED — The inventory has already been closed
STOCKS.INVENTORY.ADJUSTMENTS_REQUIRED — You must apply the adjustments before finalizing
STOCKS.INVENTORY.ADJUSTMENT_TYPES_MISSING inventory Adjustment operation types not found for inventory inventory
STOCKS.INVENTORY.LINES_TREAT_AFTER_VALIDATION — Lines cannot be processed after validation
STOCKS.INVENTORY.LINES_UNTREAT_AFTER_VALIDATION — Lines cannot be unprocessed after validation
STOCKS.INVENTORY.VALIDATED_UNDELETABLE — You cannot delete a validated or closed inventory
STOCKS.INVENTORY.NOT_CANCELABLE — The inventory cannot be canceled in its current status
STOCKS.INVENTORY.NOT_CANCELED — The inventory is not canceled
STOCKS.INVENTORY.IMPORT_FILE_INVALID line, column Invalid inventory file at line line for column column

Inventory lines

Code Params Message
STOCKS.INVENTORY_LINE.NOT_FOUND — The inventory line was not found
STOCKS.INVENTORY_LINE.REAL_QUANTITY_ON_STOCKOUT — The real quantity cannot be > 0 when the state is Out of stock
STOCKS.INVENTORY_LINE.TREAT_AFTER_VALIDATION — A line cannot be processed or unprocessed after validation
STOCKS.INVENTORY_LINE.SPLIT_QUANTITY_INVALID — The split quantity must be > 0 and < the theoretical quantity
STOCKS.INVENTORY_LINE.LOCATION_MUST_BE_INTERNAL location The location must be internal, id location
STOCKS.INVENTORY_LINE.LOCATION_WAREHOUSE_MISMATCH warehouse The location does not belong to warehouse warehouse
STOCKS.INVENTORY_LINE.LOCATION_NOT_OF_INVENTORY inventory The location is not attached to inventory inventory
STOCKS.INVENTORY_LINE.ARTICLE_ALREADY_LISTED inventory The item is already listed in inventory inventory

Items

Code Params Message
STOCKS.ARTICLE.NOT_FOUND — The item was not found
STOCKS.ARTICLE.LABEL_REQUIRED — You must provide the label
STOCKS.ARTICLE.LABEL_MISSING — You must provide a label
STOCKS.ARTICLE.REFERENCE_MISSING — You must provide a reference
STOCKS.ARTICLE.INTERNAL_REFERENCE_REQUIRED — You must provide the internal reference
STOCKS.ARTICLE.PACKAGING_REQUIRED — You must provide the item packaging
STOCKS.ARTICLE.INTERNAL_REFERENCE_TAKEN — This internal reference is already taken
STOCKS.ARTICLE.REFERENCE_TAKEN — This reference is already in use
STOCKS.ARTICLE.NOT_STORABLE — This item is not storable
STOCKS.ARTICLE.HAS_MOVEMENTS — Stock movements have already been recorded on this item
STOCKS.ARTICLE.DELIVERY_TYPE_MISSING — No delivery operation is configured
STOCKS.ARTICLE.RECEPTION_TYPE_MISSING — No reception operation is configured
STOCKS.ARTICLE.CONVERSION_STOCK_INSUFFICIENT article, available, requested There is not enough article. Current stock: available / Quantity to withdraw: requested
STOCKS.ARTICLE.CONVERSION_NOT_MULTIPLE quantity, rule quantity is not a multiple of rule
STOCKS.ARTICLE.CONVERSION_QUANTITY_NOT_MULTIPLE quantity, target The quantity to convert (quantity) is not a multiple of the target item quantity (target)
STOCKS.ARTICLE.CONVERSION_TARGET_NOT_STORABLE source, target, article The conversion of source into target failed: item article is not a storable item
STOCKS.ARTICLE.CONVERSION_FAILED sourceQuantity, source, targetQuantity, target The conversion of sourceQuantity source into targetQuantity target failed
STOCKS.ARTICLE.CONVERSION_FAILED_DETAILED source, sourceQuantity, target, targetQuantity The conversion of source (quantity=sourceQuantity) into target (quantity=targetQuantity) failed

Families and subfamilies

Code Params Message
STOCKS.ARTICLE_FAMILY.NOT_FOUND — The item family was not found
STOCKS.ARTICLE_FAMILY.LABEL_REQUIRED — You must provide the label
STOCKS.ARTICLE_FAMILY.NAME_REQUIRED — The name cannot be empty
STOCKS.ARTICLE_FAMILY.UNDELETABLE — You cannot delete this family
STOCKS.ARTICLE_SUB_FAMILY.NOT_FOUND — The item subfamily was not found
STOCKS.ARTICLE_SUB_FAMILY.CODE_NOT_FOUND code The subfamily with code code was not found
STOCKS.ARTICLE_SUB_FAMILY.CODE_REQUIRED — You must provide a code
STOCKS.ARTICLE_SUB_FAMILY.LABEL_REQUIRED — You must provide a label
STOCKS.ARTICLE_SUB_FAMILY.NAME_REQUIRED — The name cannot be empty

Plannings

Code Params Message
STOCKS.ARTICLE_PLANNING.NOT_FOUND — The planning data was not found
STOCKS.ARTICLE_PLANNING.LOCATION_NOT_OF_WAREHOUSE — The location does not belong to this warehouse
STOCKS.ARTICLE_PLANNING.MAXIMUM_NEGATIVE — The maximum stock cannot be negative
STOCKS.ARTICLE_PLANNING.SAFETY_NEGATIVE — The safety stock cannot be negative
STOCKS.ARTICLE_PLANNING.MINIMUM_NEGATIVE — The minimum stock cannot be negative

Locations

Code Params Message
STOCKS.LOCATION.NOT_FOUND — The location was not found
STOCKS.LOCATION.DELETE_TARGET_NOT_FOUND — The location to delete was not found
STOCKS.LOCATION.HAS_OPERATIONS — Operations have already been recorded on this location
STOCKS.LOCATION.LABEL_REQUIRED — You must provide the label
STOCKS.LOCATION.LABEL_MISSING — You must provide a label
STOCKS.LOCATION.SHORT_NAME_REQUIRED — You must provide the short name
STOCKS.LOCATION.SHORT_NAME_MISSING — You must provide a short name
STOCKS.LOCATION.OWN_PARENT — A location cannot be its own parent
STOCKS.LOCATION.PARENT_ON_NON_INTERNAL — Only internal locations can have a parent
STOCKS.LOCATION.PARENT_MUST_BE_INTERNAL — The parent must be an internal location
STOCKS.LOCATION.PARENT_HOLDS_STOCK — The parent holds available stock
STOCKS.LOCATION.NOT_VIRTUAL type Location type is not a virtual location

Warehouses

Code Params Message
STOCKS.WAREHOUSE.NOT_FOUND — The warehouse was not found
STOCKS.WAREHOUSE.HAS_MOVEMENTS — Stock movements have already been recorded on this warehouse
STOCKS.WAREHOUSE.NAME_REQUIRED — The name cannot be empty
STOCKS.WAREHOUSE.LABEL_MISSING — You must provide a label
STOCKS.WAREHOUSE.SHORT_NAME_EMPTY — The short name cannot be empty
STOCKS.WAREHOUSE.SHORT_NAME_MISSING — You must provide a short name

Operation types

Code Params Message
STOCKS.OPERATION_TYPE.NOT_FOUND — The operation type was not found
STOCKS.OPERATION_TYPE.DELETE_TARGET_NOT_FOUND — The operation type to delete was not found
STOCKS.OPERATION_TYPE.HAS_OPERATIONS — Operations have already been recorded with this operation type
STOCKS.OPERATION_TYPE.LAST_OF_CATEGORY category You cannot delete the last category operation type
STOCKS.OPERATION_TYPE.LABEL_REQUIRED — You must provide the label
STOCKS.OPERATION_TYPE.NAME_REQUIRED — The name cannot be empty
STOCKS.OPERATION_TYPE.CATEGORY_REQUIRED — The category cannot be empty
STOCKS.OPERATION_TYPE.SEQUENCE_REQUIRED — The sequence cannot be empty
STOCKS.OPERATION_TYPE.SOURCE_LOCATION_REQUIRED — The default source location cannot be empty
STOCKS.OPERATION_TYPE.DESTINATION_LOCATION_REQUIRED — The default destination location cannot be empty
STOCKS.OPERATION_TYPE.PREPARATION_SELF — Invalid picking type: it cannot equal the current type
STOCKS.OPERATION_TYPE.RETURN_SELF — Invalid return type: it cannot equal the current type

Batches

Code Params Message
STOCKS.BATCH.NOT_FOUND — The batch was not found
STOCKS.BATCH.NOT_AVAILABLE — The batch is not available
STOCKS.BATCH.NOT_EDITABLE — You cannot edit the batch
STOCKS.BATCH.AMOUNT_NOT_POSITIVE — You must enter a positive amount
STOCKS.BATCH.QUANTITY_NOT_POSITIVE — You must enter a positive quantity
STOCKS.BATCH.LIFO_UNSUPPORTED — LIFO is not supported
STOCKS.BATCH.NONE_LEFT_IN_LOCATION location, article No batch is left in location location for item article
STOCKS.BATCH.CANCEL_TARGET_NOT_FOUND batch Batch batch was not found
STOCKS.BATCH.ALREADY_CANCELED batch Batch batch has already been canceled
STOCKS.BATCH.CONSUMED batch Items have already been consumed on batch batch
STOCKS.BATCH.RECEPTION_NOT_EXECUTED batch The reception of batch batch must be executed to be canceled
STOCKS.BATCH.NOT_FROM_RECEPTION batch Batch batch does not come from a reception
STOCKS.BATCH.RETURN_TYPE_REQUIRED batch A return type must be defined to cancel batch batch
STOCKS.BATCH.NOT_OF_ORDER — This batch was not received for this purchase order

Receptions

Code Params Message
STOCKS.RECEPTION.ARTICLE_REQUIRED — You must specify at least one item to receive
STOCKS.RECEPTION.TYPE_REQUIRED — You must configure a reception operation
STOCKS.RECEPTION.ALREADY_CONFIRMED — The reception has already been confirmed for this purchase order
STOCKS.RECEPTION.NO_PENDING_OPERATION — No pending operation is linked to this purchase order
STOCKS.RECEPTION.NO_EXECUTED_RECEPTION — No executed reception is linked to this purchase order
STOCKS.RECEPTION.ALREADY_CANCELED — The reception has already been canceled for this purchase order
STOCKS.RECEPTION.BATCHES_CONSUMED — Items have already been consumed on the batches of this reception

Miscellaneous

Code Params Message
STOCKS.DELIVERY.ARTICLE_REQUIRED — You must specify at least one item to deliver
STOCKS.DELIVERY.TYPE_REQUIRED — You must configure a delivery operation
STOCKS.STOCK_MOVEMENT.NOT_FOUND — The stock movement was not found
STOCKS.MEASURE_UNIT.NOT_FOUND — The measure unit was not found
STOCKS.SETTINGS.COST_METHOD_REQUIRED — You must provide a stock costing method
STOCKS.PERIOD.INVALID — The period is invalid
STOCKS.INDICATOR.NOT_FOUND — The indicator was not found
STOCKS.MODULE.PRODUCTS_REQUIRED — The Products module must be installed before continuing
STOCKS.MODULE.ALREADY_INSTALLED — The Stocks module is already installed

Messages are not a contract

The wordings above reproduce the messages as the module returns them today. They may be rephrased without notice; the codes, for their part, do not change.

Changelog

  • 1.0 (August 18, 2026): document created.