> ## Documentation Index
> Fetch the complete documentation index at: https://docs.satyakod.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Products and batches

> Keep your product catalogue, then create, sign, print and revoke batches of signed codes.

## Products

**Batches → Products** lists what you print codes for. Admins, supply chain and packaging
engineers can add, edit, archive and restore products; everyone else can read them.

* **GTIN**: needed for GS1 codes. It is checked against the GS1 check digit and stored as
  GTIN-14. Serial-only codes don't need one.
* **MRP**, **expiry required**, and what customers see after a genuine scan (a note, a product
  page and a warranty link; see [What customers see](https://docs.satyakod.com/guides/consumer-scan-page.md)).
* **Import CSV** with the columns `name`, `sku`, `gtin`, `mrp`, `currency`, `expiry_required`,
  `consumer_note`, `info_url` and `warranty_url`. Only `name` and `sku` are required. Rows update
  products with the same SKU. Every row is checked first: if any is wrong, nothing is saved and
  each bad row is listed.

Archived products can't get new batches.

![Products: search, add, import and archive](https://docs.satyakod.com/images/screenshot-placeholder.svg)

Products: search, add, import and archive

## Batches

![New batch, step 1: product, code family and where codes are checked](https://docs.satyakod.com/images/screenshot-placeholder.svg)

New batch, step 1: product, code family and where codes are checked

A batch is one print run of signed codes for one product. **Batches → New batch** has four steps:

1. **Product and family**: the product, the code family (GS1 Signed or Private Code) and
   [where the codes are checked](https://docs.satyakod.com/concepts/verification-modes.md).
2. **Data**: quantity, symbology, lot, production and expiry dates, and the authorised sale
   regions. Scans outside those regions are marked Suspicious.
3. **Print output**: the print line ([set up in Settings → Print lines](https://docs.satyakod.com/integrations/zebra-printers.md))
   and the label size.
4. **Review and sign**: signing gives every code its serial and can't be undone.

![A batch: its codes, signing, printing and files](https://docs.satyakod.com/images/screenshot-placeholder.svg)

A batch: its codes, signing, printing and files

### Statuses

Draft → Signing → At printer → Printed, or Revoked.

### Files

From a signed batch:

| File | Contains |
| - | - |
| **Printer job** (ZPL) | One label per code for Zebra printers |
| **Serial list** (CSV) | Every serial with its index, GS1 element string and verify link (empty for serial-only codes) and whether it is revoked |
| **Proof sheet** (PDF) | The batch details and the first labels, for the line supervisor's sign-off |
| **Verification key** (JSON) | Offline batches only, for admins: see [Offline verification](https://docs.satyakod.com/integrations/offline-verification.md) |

Files are generated as they download, and each download is in the audit log.

### Revoking

**Revoke…** on a batch withdraws the whole batch or a range of serials (type the batch id to
confirm). Revoked codes come back Counterfeit from then on, and a `batch.revoked`
[webhook](https://docs.satyakod.com/integrations/webhooks.md) is sent.

When people have scanned those codes in the Satyakod app with recall and counterfeit alerts on,
the dialog offers to tell them that copies were found. They get a notification on their phone;
you see only how many phones, never who.

### Recalls

A printed batch's detail shows **Phones that scanned it**: how many phones scanned its codes in
the Satyakod app with alerts on. **Send a recall…** sends them a notice (up to 300 characters:
what people who bought it should do), with your brand and the product name. Recalls are service
messages, so they reach people whatever their marketing choices. Every notice sent, recall or
copied codes, is listed on the batch with the number of phones it went to. Admin and Brand
protection can send them. Notices go out as push notifications, set up for your workspace at
onboarding: see [Notifications](https://docs.satyakod.com/concepts/notifications.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.