---
title: "saveRecipesV2"
method: POST
path: "/recipe/v2/saveRecipesEnhanced"
tags: ["Recipe Enhanced Service"]
---

# saveRecipesV2

`POST /recipe/v2/saveRecipesEnhanced`

Create a new recipe. 
 Update a recipe.

## Headers

- `authenticationtoken` string, required
- `password` string, required
- `sitename` string, required
- `userid` string, required
- `X-B3-TraceId` string

## Request body

- RecipeEnhancedV2DetailsList — RecipeEnhancedV2DetailsList description
  - `locationCode` string, required — The Code that identifies the Location in Crunchtime.
  - `recipeEnhancedDetails` RecipeEnhancedDetailsv2[]
    - `recipeEnhancedAllergenAttributeDetails` RecipeEnhancedAllergenAttributeDetailDto[]
      - `activeFlag` 'N' | 'Y' — Product allergen active status.
      - `nutritionClass` string, required — Nutrition Class.
      - `value` string, required — Nutrition Class value.
    - `recipeEnhancedComponentDetails` RecipeEnhancedComponentDetailDto[]
      - `majorIngredient` 'N' | 'Y' — Indicates whether component is a main ingredient in the recipe.
      - `name` string — Name of the ingredient.
      - `number` string — Ingredient product number.
      - `preProduction` 'N' | 'Y' — "Pre-Production" flag for recipe component
      - `quantity` number, required — Quantity of the ingredient in the recipe.
      - `recipePackage` string — Component Product "Recipe Unit".
      - `scalingFactor` number, required — Component Product "Scale Factor". Must be ≥ 0.00 and ≤ 9.99 with at least 2 decimal places or less.
      - `sequence` number, required — Component Product "Sequence" from recipe.
      - `specialInstruction1` string — Component Product "Special Instruction 1" from recipe
      - `specialInstruction2` string — Component Product "Special Instruction 2" from recipe
    - `recipeEnhancedComponentSubstituteDetails` RecipeEnhancedComponentSubstituteDetailDto[]
      - `componentPackageType` string, required — Original Component "Recipe Unit" from recipe
      - `name` string, required — Original Component "Component Name" from recipe
      - `quantity` number, required — Original Component "Quantity" from recipe
      - `substituteName` string, required — Substitute Component "Component Name" from recipe
      - `substituteNumber` string, required — Substitute Component "Component Product #" from recipe
      - `substitutePackageType` string, required — Substitute Component "Recipe Unit" from recipe
      - `substituteQuantity` number, required — Substitute Component "Component Quantity" from recipe
      - `substituteScaleFactor` number, required — Substitute Component "Scale Factor" from recipe
    - `recipeEnhancedConceptDetails` RecipeEnhancedConceptDetailDto[]
      - `activeFlag` 'N' | 'Y' — Concept "Active" flag from recipe
      - `code` string, required — Concept "Code" from recipe
    - `recipeEnhancedHeaderDetails` RecipeEnhancedV2HeaderDto — RecipeEnhancedV2HeaderDto description
      - `activeFlag` 'N' | 'Y' — "Active" flag from recipe
      - `batchPackagePackageType` string, required — "Batch Size" Unit from recipe.
      - `batchQuantity` number, required — "Batch Size" Quantity from recipe.
      - `batchRoundingBasedOn` 'H' | 'Q' | 'W' — "Batch Rounding Based On" setting from recipe.
      - `calcAtCost` 'N' | 'Y' — Calculate Actual/Theoretical Cost for Recipe Item" flag from recipe.
      - `categoryName` string, required — "Category" name from recipe
      - `effectiveDate` string, required — "Effective Date" from recipe. Required if Expiration Date is populated in file.
      - `expirationDate` string, required — "Expiration Date" from recipe. Required if Effective Date is populated in file.
      - `haccpComplianceName` string — "HACCP Compliance" from recipe.
      - `idealCostPercentage` number — "Ideal Cost Percent" from recipe.
      - `inventoryUnitPackageType` string, required — "Portion Yield" Package Type from recipe.
      - `issueUnitOnePackageType` string, required — "Issue Unit 1" Package Type from recipe.
      - `issueUnitOneYield` number, required — "Issue Unit 1" Quantity from recipe.
      - `issueUnitTwoPackageType` string, required — "Issue Unit 2" Package Type from recipe. Required if issue Unit 2 Yield is populated. {Not used by Restaurants}
      - `issueUnitTwoYield` number, required — "Issue Unit 2" Quantity from recipe. Required if issue Unit 2 Package Type is populated. {Not used by Restaurants}
      - `lotTracking` 'N' | 'Y' — "Lot Tracking" flag from recipe.
      - `maxBatchRounding` 'D' | 'N' — "> Maximum Batch" Rounding setting from recipe.
      - `maximumBatch` number — "Maximum Batch" Quantity from recipe.
      - `microcategoryName` string, required — "Microcategory" name from recipe.. Required if Microcategories are in use (at least one Microcategory exists in database), then must not be null.
      - `minBatchRounding` 'D' | 'L' | 'N' | 'U' — "< Minimum Batch" Rounding setting from recipe.
      - `minMaxBatchRounding` 'D' | 'L' | 'N' | 'U' — "> Minimum Batch, < Maximum Batch" Rounding setting from recipe.
      - `minimumBatch` number — "Minimum Batch" Quantity from recipe.
      - `name` string, required — "Recipe Name" from recipe
      - `number` string, required — "Product Number" from recipe. Required for updates or if the preference to "Automatically Create Recipe Number" is not enabled.
      - `nutritionConversion` number — "Nutrition Value" from recipe.
      - `nutritionId` string — "Nutrition Fact" from recipe.
      - `nutritionPackageType` string — "Display Nutrition per" Unit from recipe.
      - `platingInstructions` string — "Plating Instructions" from recipe.
      - `pluNumber` integer — "PLU #" from recipe.
      - `portionAmount` number, required — "Portion Amount" from recipe.
      - `portionYield` number, required — "Portion Yield" Quantity from recipe.
      - `prepReportConsRounding` 'D' | 'N' | 'U' — "Prep Report Cons. Rounding" setting from recipe.
      - `prepReportFlag` 'N' | 'Y' — "Include in Prep Report" flag from recipe.
      - `prepReportShelfMaxRounding` 'D' | 'N' | 'U' — "Prep Report Shelf Life Rounding" setting from recipe.
      - `prepStationName` string, required — "Prep Station" from recipe.
      - `prepTimeDuration` number — "Prep Time" Duration from recipe.
      - `prepTimeType` 'D' | 'H' | 'M' — "Prep Time" (Days/Hours/Minutes) setting from recipe.
      - `preparationNotes` string — "Prep Instructions" from recipe.
      - `price` number — "Recipe Price" from recipe.
      - `productionType` 'O' | 'P' — "Production Type" setting from recipe.
      - `recipeClass` 'I' | 'S' — "Recipe Class" from recipe.
      - `recipeComplexity` string — "recipeComplexity" from recipe. {Obsolete field}
      - `recipeComplexityLong` integer — "recipeComplexityLong" from recipe. {Obsolete field}
      - `recipePosDecrement` 'C' | 'I' — "POS Decrement" setting from recipe.
      - `recipeProductGroupName` string — "Recipe Group" from recipe.
      - `recipeProductGroupSubname` string — "Recipe Sub-Group" from recipe.
      - `recipeRating` string — "recipeRating" from recipe. {Obsolete field}
      - `recipeRatingLong` integer — "recipeRatingLong" from recipe. {Obsolete field}
      - `recipeStatus` 'O' | 'P' — Recipe "Status" from recipe.
      - `recipeUnitFivePackageType` string — "Recipe Unit 5" Package Type from recipe.
      - `recipeUnitFiveYield` number — "Recipe Unit 5" Quantity from recipe.
      - `recipeUnitFourPackageType` string — "Recipe Unit 4" Package Type from recipe.
      - `recipeUnitFourYield` number — "Recipe Unit 4" Quantity from recipe.
      - `recipeUnitOnePackageType` string, required — "Recipe Unit 1" Package Type from recipe.
      - `recipeUnitOneYield` number, required — "Recipe Unit 1" Quantity from recipe.
      - `recipeUnitThreePackageType` string — "Recipe Unit 3" Package Type from recipe.
      - `recipeUnitThreeYield` number — "Recipe Unit 3" Quantity from recipe.
      - `recipeUnitTwoPackageType` string, required — "Recipe Unit 2" Package Type from recipe.
      - `recipeUnitTwoYield` number, required — "Recipe Unit 2" Quantity from recipe.
      - `shelfLifeDuration` number — "Shelf Life" Duration from recipe.
      - `shelfLifeType` 'D' | 'H' | 'M' — "Shelf Life" (Days/Hours/Minutes) setting from recipe.
      - `storageContainerPackage` string — "Default Storage Container" from recipe.
      - `subcategoryName` string, required — "Subcategory" name from recipe. Required if Subcategories are in use (at least one Subcategory exists in database).
      - `universalProductCode` string — "UPC" from recipe.
    - `recipeEnhancedShipLocationDetails` RecipeEnhancedShipLocationDetailDto[]
      - `activeFlag` 'N' | 'Y' — Ship Location "Active" flag from recipe
      - `locationName` string, required — "Ship Location" from recipe
    - `recipeEnhancedUpcDetails` RecipeEnhancedUpcDetailDto[]
      - `activeFlag` 'N' | 'Y' — Alt UPC "Active" flag from recipe
      - `code` string, required — "Alternate UPC" from recipe

## Response `200`

Success

- object

## Other responses

- `400` — Validation Error
- `401` — Authorization
- `429` — Too Many Requests
- `500` — Unexpected Error
- `503` — System under maintenance
- `504` — Timeout

---

[API](https://skmtc.net/crunchtime/apis/inventory-labor.md) · [All operations](https://skmtc.net/crunchtime/apis/inventory-labor/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/crunchtime/inventory-labor/revisions/0af8e380ff2c/schema)
