# Mass cancellations

Source: https://docs.settlemint.com/docs/console/asset-lifecycle/venues/mass-cancellations
Decide a proposed mass cancel as a second operator and download the orders each cancellation batch cancelled.

The **Mass cancellations** tab lists each operator action that cancelled at least one order on the venue's order book, and it is where a second venue operator decides a proposed mass cancel. A venue operator proposes the cancel from [Orders](https://docs.settlemint.com/docs/console/asset-lifecycle/venues/orders). Each batch keeps the reason and the orders it cancelled, so the venue can show a participant why their orders went for as long as it keeps the records, a period [venue retention](https://docs.settlemint.com/docs/concepts/issuing-and-markets/venue-retention) sets.

![The venue's Mass cancellations tab with Mass cancel approvals and Cancellation batches, both empty before any mass cancel](https://docs.settlemint.com/docs/screenshots/console-venue-mass-cancellations.light.en.webp)

[Screenshot] The "Mass cancel approvals" and "Cancellation batches" sections, both empty before any mass cancel.

"Mass cancel approvals" reads "No mass cancels proposed" and "A proposal appears here for a second operator to decide.", and "Cancellation batches" reads "No operator action has cancelled orders on this venue yet". Both offer "Cancel orders from the Orders tab". After the first cancellation, the batches table shows "When", "Action", "Applies to", "Reason", "Orders", "By" and "Cancelled orders", with a "Download" menu on each batch.

## Before you start [#before-you-start]

- **The Venue operator role on the venue.** Deciding a proposed cancel is a venue operator's task.
- **The Trading venues approval row.** Whether a second venue operator must approve a mass cancel follows the "Trading venues" row under "Approvals" on [General](https://docs.settlemint.com/docs/console/organisation-settings/general#approvals), and an exception there can turn it on or off for one venue. While the row is off, one operator proposes and runs the cancel alone.

## Steps [#steps]

### Decide a proposed cancel [#decide-a-proposed-cancel]

On a venue whose row is on, a second venue operator opens this tab, selects **Approve** or "Reject" on the proposed row and confirms with their wallet verification. The operator who proposed the cancel sees no buttons, because the same user cannot decide their own proposal. The row says another venue operator must decide.

A proposal stays open for 24 hours by default, and the "Expires" column and the row details show when it lapses. Once that time has passed, the proposal shows "Expired", offers no "Approve" or "Reject", and the server refuses a decision that arrives late. A cancel that is still needed is proposed again.

The approval applies the filter again when it is decided, so it cancels every open order that matches at that moment, including orders placed after the proposal. The count can differ from the one shown when the cancel was proposed.

The row shows how the cancel ended: waiting for a second operator, cancelling, cancelled with the number of orders out of those expected, rejected, stopped, or failed. Each approved cancel also leaves a batch in the **Cancellation batches** table.

## Download a cancellation batch [#download-a-cancellation-batch]

Select the **Download** menu on a batch and choose "Cancelled orders as CSV" or "Cancelled orders as XLSX". The file lists the batch's orders: order id, maker, instrument, side, price, quantity still open, validity, placed time, cancelled time and reason. An XLSX file holds at most 1,048,575 orders, so download a larger batch as CSV.

## Which actions record a batch [#which-actions-record-a-batch]

Suspending or delisting an instrument, blocking a participant and removing a wallet from a private instrument each cancel many orders at once, and so does an approved mass cancel. Cancelling all of a participant's orders is a mass cancel limited to that participant's wallet, and optionally to one instrument. It waits for a second operator while the venue's **Trading venues** row is on and runs at once while the row is off. Blocking a participant needs no second operator, even while the row is on. Each of these actions is recorded as one batch when it cancels at least one order. A mass cancel records one batch for each instrument it touched.

A reserved order is one that holds the participant's balance but has not reached the order book. A mass cancel also withdraws the matching reserved orders, and a withdrawn order is in no batch. A reserved order records its maker, its instrument and the token it holds, but not its order type or validity. So a side filter matches a reserved order by the token it holds, and a filter that names an order type or a validity withdraws no reserved order.

Every order the action cancelled carries the batch and the reason: your reason for a suspension, delisting, cancel-all, block or mass cancel, and "The wallet was removed from the private instrument" for a removal. The participant sees that reason on the order.

## You should see [#you-should-see]

- The batch appears in the table with its action, the instrument or wallet it applied to, the reason, the number of orders and who ran it.
- Download the batch and check that the orders match what you expected to cancel.

## Troubleshooting [#troubleshooting]

**I see no Approve or Reject on a proposal**

The operator who proposed a cancel sees no buttons, because the same user cannot decide their own proposal. The row
says another venue operator must decide. Ask a different venue operator to open this tab.

**A proposal shows Expired**

Nobody decided it before its **Expires** time. An expired proposal cannot be approved or rejected and cancels nothing.
Propose the cancel again for the orders that are still open.

**A mass cancel stopped**

A run still cancelling an hour after its approval shows as stopped, and a stopped run does not resume. Propose the
cancel again for the orders that are still open.

**The XLSX download is refused**

An XLSX file holds at most 1,048,575 orders. Download a larger batch as CSV.

## API routes [#api-routes]

Integrations receive one `trading-venue.cancellation-batch.completed` webhook per batch, as the [webhook event reference](https://docs.settlemint.com/docs/api-reference/webhooks/market-events#trading-venue) describes. The tab reads batches through the trading venue routes in the [v2 API reference](https://docs.settlemint.com/docs/api-reference/v2).
