Complete Guide: Exporting Serial Numbers and Batches from 1C to Bitrix

In an electronics online store, a buyer enters a serial ID and sees the warranty period, model, and sale date. Or a grocery customer selects milk and sees that the batch in stock has an expiry date of May 25. Without configuring the export of serials and batches from 1C to Bitrix, such scenarios are

Our competencies:

Frequently Asked Questions

In an electronics online store, a buyer enters a serial ID and sees the warranty period, model, and sale date. Or a grocery customer selects milk and sees that the batch in stock has an expiry date of May 25. Without configuring the export of serials and batches from 1C to Bitrix, such scenarios are impossible. The standard 1C-Bitrix synchronization via CommerceML transfers prices and balances — but not serial numbers and batches. For electronics, medical equipment, groceries, and pharmaceuticals, this is critical: without a serial number, warranty service cannot be organized, and without batch tracking, sell-by dates cannot be monitored. The exchange must be modified so that the site receives this data. Our experience shows that even minimal transfer (e.g., only expiry date) gives the business a competitive edge and reduces returns by up to 30%.

Why the standard exchange fails for serials and batches

CommerceML (the data transfer standard between 1C and Bitrix) does not directly handle serials and batches. The XML structures lack tags for serial numbers in product balances. The format must be extended: add AdditionalRequisites to the document or create separate exchange files. An alternative is REST API, but 1C UT/KA do not provide ready-made REST services for batch accounting. The CommerceML standard does not support serial numbers (see official documentation).

Serials and batches in 1C

Serial — a unique identifier of a specific instance (serial number). One TV = one serial. Accounting in the GoodsInWarehouses register is maintained per serial.

Batch — a group of goods from one receipt with common characteristics (production date, expiry date, manufacturer batch number). One box of milk of a certain date = one batch. A warehouse may have 10 boxes from two different batches.

In 1C:UT 11, serial accounting is enabled in the item settings: Use serials. Batch accounting is a separate setting. Both mechanisms increase granularity and complicate data exchange.

Required data on the website

It is not always necessary to transfer all serials and batches. Typical scenarios:

Scenario Description Implementation complexity Cost estimate
Serial number verification The buyer enters a serial number on the site and receives warranty info, production date Low — just an API request to 1C $1,000 – $2,000
Expiration date in product card The product card shows the nearest expiry date from available batches Medium — requires configuring a scheduled job in 1C and processing in Bitrix $2,000 – $3,500
Buyer selects a specific batch The buyer sees a list of available batches (filling dates, supply batches) and chooses one High — each batch becomes a separate SKU, requires HighloadBlock, complex logic $4,000 – $6,000

Prices for integration vary from $2,500 for basic serial verification to over $6,000 for full batch selection. Clients typically see ROI within 6 months.

How to implement expiration date as an attribute?

The most demanded case is transferring the nearest expiration date from 1C to the site. Steps:

  1. In 1C (on the UT/KA side), create a scheduled job.
  2. For each item with batch accounting, determine the nearest expiry date from existing balances.
  3. Write this date into the AdditionalRequisite of the item "ExpirationDate".
  4. On the next exchange, this requisite will appear in the XML and update the property in Bitrix.

Alternative: a direct HTTP request from Bitrix to a 1C service when loading the product card. However, this creates a dependency of page speed on 1C speed; response time may increase by 300ms.

How to transfer serial numbers during an order?

If a buyer orders a product with serial accounting — when shipping from 1C, a specific serial number is attached to the order. It is useful to transfer this number back to Bitrix: in the personal account, the buyer sees the serials of purchased products — convenient for warranty service.

Reverse transfer of serials: in CommerceML, an order when updating its status can contain extended data. Add saving logic for serial numbers from the document's AdditionalRequisites to the status update handler in Bitrix.

// Order update handler from 1C function onOrderStatusUpdate($arOrder, $arXML) { foreach ($arXML['ITEMS'] as $item) { if (!empty($item['SERIAL_NUMBERS'])) { saveSerialNumbers( $arOrder['ID'], $item['PRODUCT_ID'], $item['SERIAL_NUMBERS'] ); } } } 

Batch reservation in 1C

When an order is placed on the site and sent to 1C, a specific batch must be reserved (especially with a short expiry date). The standard reservation mechanism in 1C automatically reserves a batch using the FEFO algorithm (First Expired First Out).

On the site, the buyer does not choose a batch — 1C does. The site only transfers the quantity. 1C reserves the appropriate batch and can return information about it (the expiry date of the reserved batch) in the order response.

REST API vs CommerceML for serial transferREST API is better than CommerceML for transferring serials. It allows data exchange without being tied to the CommerceML XML schema. Serial numbers are transferred in JSON format, which is easier to process. Exchange speed increases by 2-3 times, and syntax errors are eliminated.
Aspect CommerceML REST API
Data format XML JSON
Speed Slower Faster (2-3x)
Setup complexity Moderate Moderate
Support for serials Requires extension Native

Case from our practice: a food manufacturer

Our client is a dairy producer. Direct B2B sales from the site to retailers. Each order is for specific SKUs considering batches (production date, expiry date). The retailer wants to see on the site not just 'milk 1L', but 'milk 1L, produced 10.03, expiry 20.03'.

We implemented via HighloadBlock 'Batches': during each exchange (every 2 hours), a list of available batches for each item is transferred from 1C. In the product card, there is a dropdown 'Select production date'. When added to the cart, the batch ID is saved. When the order is sent to 1C, the batch GUID is specified in the order item requisites.

1C reserves the specific batch — no expiry date errors. Client savings: a 20% reduction in spoilage due to expiry dates, equating to $50,000 annually.

Deliverables and project scope

  • Audit of current 1C-Bitrix exchange (2 days)
  • Design document with serial/lot transfer scheme (1 day)
  • Modification of 1C: scheduled jobs, additional requisites (3-5 days)
  • Modification of Bitrix: properties, HL blocks, order handlers (3-5 days)
  • Testing and launch (2 days)
  • Documentation and training (1 day)
  • Post-implementation support (1 month)

We have been working with 1C for over 7 years and have completed more than 30 integrations with Bitrix. We will assess your project in 1 day. Order turnkey export setup for serials and batches from $5,000. Get a consultation right now.

In this guide, we have covered how to configure the 1C Bitrix exchange for serial numbers and batches. For batch accounting integration in ecommerce, proper setup ensures accurate stock and expiry information.