Skip to content
FreeTicketDocs
Esc
↑↓navigate↵open⌘Jpreview

Cancel a sale (blocked if someone already checked in or the payment is still open)

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/{id}/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 {“acknowledge_open_payment”: true} to explicitly accept the risk. Sales from other gateways and sales with no payment started are cancelled without that step.

POST/sales/{id}/cancel
Authorization
AuthorizationAPI key · headerrequired

API key prefixed with Bearer . Alternative: the x-api-key header with the raw key. Available scopes: read and write (see /.well-known/oauth-protected-resource).

or
x-api-keyAPI key · headerrequired

Raw API key (without Bearer ), alternative to Authorization.

Path parameters
idstringrequired
Header parameters
X-Workspace-Idstring

Active workspace to operate on. Optional: when omitted, the default workspace of the user who owns the key is used (pickActiveOrg).

Request body
requiredapplication/json
acknowledge_open_paymentboolean
Responses
200

OK

dataSalerequired
Show properties
idstringrequired
referencestringrequired
statusstringrequired
Allowed:PENDINGCONFIRMEDABANDONEDCANCELLEDREFUNDED
channelstringrequired
subtotalnumberrequired
discountAmountnumberrequired
serviceFeenumberrequired
ivanumberrequired
totalnumberrequired
currencystringrequired
buyerNamestringrequired
buyerEmailstringrequired
buyerPhonestring | nullrequired
Show properties
Any of:
string
string
null
null
buyerDocumentTypestring | nullrequired
Show properties
Any of:
string
string
null
null
buyerDocumentNumberstring | nullrequired
Show properties
Any of:
string
string
null
null
organizationIdstring | nullrequired
Show properties
Any of:
string
string
null
null
paymentProviderstring | nullrequired
Show properties
Any of:
string
string
null
null
paymentRefstring | nullrequired
Show properties
Any of:
string
string
null
null
confirmedAtstring | nullrequired
Show properties
Any of:
string
string
null
null
createdAtstringrequired
failureReasonstring | nullrequired
Show properties
Any of:
string
string
null
null
paymentStatusstring | nullrequired

Status of the latest payment event. Usually the payment gateway's RAW status in its own vocabulary. Values prefixed with FT_ come from FreeTicket, not the gateway: currently FT_SALE_APPROVED_POST_CONFIRM, which marks that the gateway re-notified an already-confirmed charge — this is how Bold reports its refunds. A CONFIRMED sale with this status may have money refunded that is not yet recorded.

Show properties
Any of:
string
string
null
null
declineCodestring | nullrequired
Show properties
Any of:
string
string
null
null
401

Missing or invalid credential.

errorobjectrequired
Show properties
codestringrequired
messagestringrequired
retryablebooleanrequired
detailsany
403

Insufficient role or resource not accessible.

errorobjectrequired
Show properties
codestringrequired
messagestringrequired
retryablebooleanrequired
detailsany
404

Resource does not exist or is out of scope.

errorobjectrequired
Show properties
codestringrequired
messagestringrequired
retryablebooleanrequired
detailsany
409

Conflict: the resource does not allow this operation in its current state.

errorobjectrequired
Show properties
codestringrequired
messagestringrequired
retryablebooleanrequired
detailsany
422

Request body/parameter validation failed.

errorobjectrequired
Show properties
codestringrequired
messagestringrequired
retryablebooleanrequired
detailsany
Try it
Server
Authorization
Parameters
Bodyapplication/json
Request
curl -X POST 'https://admin.appfreeticket.com/api/v1/sales/string/cancel' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "acknowledge_open_payment": true
}'
Response
{
  "data": {
    "id": "string",
    "reference": "string",
    "status": "PENDING",
    "channel": "string",
    "subtotal": 0,
    "discountAmount": 0,
    "serviceFee": 0,
    "iva": 0,
    "total": 0,
    "currency": "string",
    "buyerName": "string",
    "buyerEmail": "string",
    "buyerPhone": "string",
    "buyerDocumentType": "string",
    "buyerDocumentNumber": "string",
    "organizationId": "string",
    "paymentProvider": "string",
    "paymentRef": "string",
    "confirmedAt": "string",
    "createdAt": "string",
    "failureReason": "string",
    "paymentStatus": "string",
    "declineCode": "string"
  }
}