# Configure prices, inventory, and tax Give an existing variant a price and stock in the context your store will use. This guide separates price records from inventory records so each can be maintained by the appropriate business system. ## Before you begin You need the variant ID, its SKU, and the store's price and supply-channel IDs. Use the variant from [Create and publish a product](/guides/catalog/create-product). Choose the currency, country, and tax convention for your test. The example below uses EUR, DK, and an inclusive price; it does not configure a tax rate. ## 1. Create the price Admin API ```graphql mutation PriceLamp($input: ProductVariantPricesBulkCreateInput!) { productVariantPricesBulkCreate(input: $input) { price { id value { centAmount currencyCode } } errors { __typename ... on UserError { message } } } } ``` Variables ```json { "input": { "prices": [ { "productVariantId": "", "channelId": "", "countryCode": "DK", "taxBehavior": "INCLUSIVE", "value": { "centAmount": 12900, "currencyCode": "EUR" } } ] } } ``` `12900` represents EUR 129.00. This price is scoped to the specified channel and country. If the variant already has a price in that context, inspect and update the intended record rather than creating a conflicting schedule. See [Prices and price selection](/concepts/pricing/prices). ## 2. Create stock for the SKU Admin API ```graphql mutation StockLamp($input: InventoryEntryBulkCreateInput!) { inventoryEntryBulkCreate(input: $input) { entries { id sku quantity quantityAllocated } errors { __typename ... on UserError { message } } } } ``` Variables ```json { "input": { "entries": [ { "sku": "LAMP-BLACK", "supplyChannelId": "", "quantity": 10, "allocationStrategy": "TRACK_AND_ALLOCATE" } ] } } ``` Use your variant's actual SKU. This example enables tracked order allocation. If an entry already exists, use its supported update operation instead of interpreting the count as another ten units to create. Check existing allocation before reducing stock. ## 3. Verify tax context The price's `taxBehavior` describes whether the amount includes tax. It does not determine the applicable rate by itself. Confirm the project's [tax setup](/concepts/pricing/tax) and the store's rounding defaults, then supply the address context your checkout requires. Use returned taxed totals when verifying the result. ## 4. Verify in the buying flow After product and variant publication, query Storefront with the same store, price channel, EUR currency, and DK country. Confirm the price and availability, then create a cart with matching values. The cart's returned amount is authoritative. | Unexpected result | Check | | --- | --- | | No price | Variant ID, currency, channel, country, and validity window | | No stock available | SKU mapping, supply channel, policy, and allocation | | Different cart amount | Cart context, customer, discounts, shipping, and tax | Return to [Create and publish a product](/guides/catalog/create-product) if publication is not complete.