---
search:
  tags:
    - sales
    - POST
seo:
  description: >-
    Marks the sale as CANCELLED, releases its inventory and frees the
    associated… Reference for the POST /sales/{id}/cancel endpoint in the
    FreeTicket B2B API.
sidebar:
  label: >-
    Cancel a sale (blocked if someone already checked in or the payment is still
    open)
  badge: POST
title: >-
  Cancel a sale (blocked if someone already checked in or the payment is still
  open)
type: openapi-operation
---
Marks the sale as CANCELLED, releases its inventory and frees the associated numbered seats. IMPORTANT: a sale with tickets already used at the door is NOT cancelled: it responds 409 SALE_ALREADY_CHECKED_IN, because returning that inventory would put it back on sale with the person already inside. If the money must be returned, use POST /sales/&#123;id&#125;/refund. IMPORTANT: a PENDING sale charged through Bold has a payment link that may still be live — the Bold API never marks its links as expired —, so cancelling it could leave the buyer charged without a ticket. Before cancelling, the actual payment status is re-read: if Bold reports it approved, it responds 409 SALE_PAID_AT_GATEWAY and the sale is NOT cancelled under any circumstances (that sale gets confirmed or refunded). If the payment is still open or its status cannot be read, it responds 409 OPEN_PAYMENT_CONFIRMATION_REQUIRED: check the Bold dashboard and repeat the call with &#123;"acknowledge_open_payment": true&#125; to explicitly accept the risk. Sales from other gateways and sales with no payment started are cancelled without that step.

`POST /sales/{id}/cancel`
