---
title: "Pricing actions, commands and pipelines"
slug: "pricing-actions-commands-and-pipelines"
abstract: ""
---
# Pricing actions, commands and pipelines

The following table describes the pricing actions, commands, and pipelines associated with the Price Book entity:

| **Action/Command/Pipeline** | **Description** |
| --- | --- |
| `AddPriceBook`<br><br>`AddPriceBookCommand`<br><br>`AddPriceBookPipeline` | Adds a price book. The price book name must be unique in the system. |
| `EditPriceBook`<br><br>`EditPriceBookCommand`<br><br>`EditPriceBookPipeline` | Edits a price book. |
| `AssociateCatalog`<br><br>`AssociateCatalogToBookCommand`<br><br>`AssociateCatalogToBookPipeline` | Associates a price book to a specific catalog. |
| `DisassociateCatalog`<br><br>`DisassociateCatalogFromBookCommand`<br><br>`DisassociateCatalogFromBookPipeline` | Disassociates a price book from a specific catalog. |

The following table describes the pricing actions, commands, and pipelines pertaining to the Price Card entity:

| **Action/Command/Pipeline** | **Description** |
| --- | --- |
| `AddPriceCard`<br><br>`AddPriceCardCommand`<br><br>`AddPriceCardPipeline` | Adds a price card to a price book. Requires a name and the parent’s price book name. The price card name must be unique within the price book parameters. |
| `EditPriceCard`<br><br>`EditPriceCardCommand`<br><br>`EditPriceCardPipeline` | Edits a price card. |
| `DeletePriceCard`<br><br>`DeletePriceCardCommand`<br><br>`DeletePriceCardPipeline` | Deletes a price card. A price card can only be deleted if it does not contain approved snapshots. |
| `DuplicatePriceCard`<br><br>`DuplicatePriceCardCommand`<br><br>`DuplicatePriceCardPipeline` | Duplicates a price card and its snapshots. |

The following table describes the pricing actions, commands, and pipelines pertaining to the Snapshot component:

| **Action/Command/Pipeline** | **Description** |
| --- | --- |
| `AddPriceSnapshot`<br><br>`AddPriceSnapshotCommand`<br><br>`AddPriceSnaphostPipeline` | Adds a snapshot to a price card. Requires the snapshot's start date, which must be equal to or earlier than the latest approved snapshot date within the price card. |
| `EditPriceSnapshot`<br><br>`EditPriceSnapshotCommand`<br><br>`EditPriceSnapshotPipeline` | Edits a snapshot. The snapshot’s approval status must be Draft. |
| `RequestSnapshotApproval`<br><br>`SetPriceSnapshotApprovalStatusCommand` | Changes a snapshot’s approval status from Draft to ReadyForApproval. |
| `ApproveSnapshot`<br><br>`SetPriceSnapshotApprovalStatusCommand` | Changes a snapshot's approval status from ReadyForApproval to Approve. |
| `RejectSnapshot`<br><br>`SetPriceSnapshotApprovalStatusCommand` | Changes a snapshot’s approval status from ReadyForApproval to Draft. |
| `RetractSnapshot`<br><br>`SetPriceSnapshotApprovalStatusCommand` | Changes a snapshot’s approval status from Approved back to Draft. Applicable only before the snapshot is made fully active. |
| `RemovePriceSnapshot`<br><br>`RemovePriceSnapshotCommand`<br><br>`RemovePriceSnapshotPipeline` | Removes a price snapshot from a price card. The Snapshot’s approval status must be Draft. |
| (internal - no action or command)<br><br>`ResolveActivePriceSnapshotByCardPipeline` | Resolves the active snapshot within a price card. The active snapshot is an approved snapshot that has a start date closest to the request's EffectiveDate. |
| (internal - no action or command)<br><br>`ResolveActivePriceSnapshotByTagsPipeline` | Resolves the active snapshot within a price book by tags. The active snapshot is the approved snapshot that has start date closest to the request's EffectiveDate and matches the highest number of tags. |

The following table describes the pricing actions, commands, and pipelines pertaining to the Tier component:

| **Action/Command/Pipeline** | **Description** |
| --- | --- |
| `AddCurrency`<br><br>`AddPriceTierCommand`<br><br>`AddPriceTierPipeline` | Adds a price tier for a specific currency to a snapshot. The combination of a tier's quantity and currency must be unique within a snapshot. The snapshot’s approval status must be set to Draft to add a tier. |
| `EditCurrency`<br><br>`EditPriceTierCommand`<br><br>`EditPriceTierPipeline` | Edits a snapshot’s price tier for a specific currency. The snapshot’s approval status must be set to Draft to edit a tier. |
| `RemoveCurrency`<br><br>`RemovePriceTierCommand`<br><br>`RemovePriceTierPipeline` | Removes a price tier from a snapshot for a specific currency. The snapshot’s approval status must be set to Draft to remove a tier. |
| `AddPriceTag`<br><br>`AddPriceSnapshotTagCommand`<br><br>`AddPriceSnapshotTagPipeline` | Adds a tag to a snapshot. A tag must be unique within a snapshot. The snapshot’s approval status must be set to draft to add a tag. |
| `RemovePriceTag`<br><br>`RemovePriceSnapshotTagCommand`<br><br>`RemovePriceSnapshotTagCommand` | Removes a tag from a snapshot. The snapshot’s approval status must be set to Draft to remove a tag. |

## Pricing approval workflow

The following figure illustrates the pricing approval process:

![0300000B.png](https://doc.sitecore.com/api/markdown-image/xp/en/developers/100/sitecore-experience-commerce/images/0300000B.png)