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

# Price batches

> Group price changes into batches, review and approve them, and publish on an effective date.

A price batch groups related price changes so they can be reviewed, approved,
and published together on a chosen effective date. Batches give you a review gate
before prices go live and a single unit to schedule and track. This page covers
the batch workflow for merchandisers and reviewers. For the underlying records,
see [Price records](/pricing/price-records).

## Why batches

Publishing prices one record at a time offers no review step and no way to make a
set of changes go live at the same moment. A batch solves both: it collects the
records, requires an approval before anything publishes, and carries a single
**effective date** so every price in it takes effect together.

Most price creation flows put records into a batch automatically. Mass-create and
bulk-set operations find or create an open batch keyed on the effective date, so
changes sharing a date coalesce into one batch. You can also create a batch
explicitly and add records to it.

## The review lifecycle

A batch moves through a fixed set of states. You cannot approve a draft directly —
it must first be submitted for review, mirroring a two-person workflow where the
author submits and a separate reviewer approves.

| Status             | What it means                                            |
| ------------------ | -------------------------------------------------------- |
| `draft`            | Being assembled. Freely editable; add or remove records. |
| `pending_approval` | Submitted for review. Awaiting a reviewer.               |
| `approved`         | Approved and scheduled to publish on its effective date. |
| `cancelled`        | Withdrawn before publishing.                             |

<Steps>
  <Step title="Assemble a draft">
    Create the batch (or let mass-create make one for you) and add price records.
    Set a name and the **effective date** the prices should go live.
  </Step>

  <Step title="Submit for review">
    Move the draft to `pending_approval`. MerchantOps records who submitted it
    and when.
  </Step>

  <Step title="Approve or reject">
    A reviewer with approval permission approves the batch (moving it to
    `approved`) or rejects it. Approval requires the batch to be in
    `pending_approval` — not `draft`.
  </Step>

  <Step title="Publish on the effective date">
    Once approved, the batch publishes automatically when its effective date
    arrives. No further action is needed.
  </Step>
</Steps>

<Note>
  Rejecting a batch discards its draft prices. Cancelling withdraws a batch that
  has not started publishing. A batch that is already publishing or has published
  cannot be cancelled or deleted.
</Note>

## Required effective date

Every batch carries an effective date, entered as a calendar date and interpreted
as local midnight in your organization's publishing time zone. This date is both
the schedule (when the prices go live) and the grouping key that auto-batching
uses to coalesce same-day changes.

## What you can edit, and when

Edit rules tighten as a batch advances, so a reviewer can trust that an approved
batch will not silently change:

| Status             | Editable                                                               |
| ------------------ | ---------------------------------------------------------------------- |
| `draft`            | Name, description, effective date, assignee, publishing target, notes. |
| `pending_approval` | Effective date and notes only.                                         |
| `approved`         | Locked.                                                                |

Trying to edit a field that is not allowed in the current status returns an
error, so the interface can explain why the change did not stick.

## Scheduled publishing

An approved batch publishes on its own when its effective date arrives — you do
not have to trigger it. You can watch progress on the batch's publish-status view,
which reports how many prices have published, failed, or been skipped, broken down
by publishing target.

If you need a batch to go out immediately — for testing or an emergency reprice —
a **Publish Now** action lets an approver publish an approved batch without waiting
for the effective date. Publish Now is not available for a batch whose effective
date is in the future; create a batch dated for today instead.

Where prices are published (the connector, target, and environment) is covered in
the Publishing section.

<CardGroup cols={2}>
  <Card title="Publishing overview" icon="paper-plane" href="/publishing/overview">
    How batches are delivered to external systems.
  </Card>

  <Card title="Comparison & proposals" icon="code-compare" href="/pricing/comparison-proposals">
    Generate batches from reviewed price-change proposals.
  </Card>
</CardGroup>
