Cancelling a paid order without its scheduled kitchen ticket printing — is there a supported way?

We’re using the Orders API for restaurant table bookings and I’d like to know whether there’s a cleaner way to handle cancellations than what we’ve landed on. A booking is a $0 “Table Booking” line item on a PICKUP fulfillment (Square-Version 2026-05-21): pickup_at is the booking time, prep_time_duration is the kitchen lead time, no schedule_type, then PayOrder with an empty payment_ids array. That part works exactly as we want — the ticket auto-prints at pickup_at − prep_time_duration. Our staff work off the printer rather than a screen, so as far as the kitchen is concerned the docket is the booking.

The trouble is cancelling. Because PayOrder has run, UpdateOrder with state: "CANCELED" is rejected — “Orders cannot be canceled after payments have been processed” — so the most we can do is set the fulfillment to CANCELED, and the ticket still prints at the prep moment as if the table were live. Setting the order to COMPLETED is accepted, but it flushes the ticket to the printer immediately rather than suppressing it (confirmed against a control order left untouched, which printed normally at its own prep moment). Moving pickup_at further out is rejected once the fulfillment is cancelled — “Field pickup_at cannot be modified in fulfillment state CANCELED” — and doing it before cancelling doesn’t stop the print either. What we’ve settled on is to complete the order on cancellation, so the ticket at least prints at a predictable moment rather than turning up hours later, and to immediately create a second $0 “CANCELLED BOOKING” order so staff get the ticket and its explanation together and know to bin both.

That works, but it means every cancellation puts two pieces of paper on the rail for a table that isn’t coming. Is there a supported way to stop a paid, scheduled order printing at all — a state transition we’ve missed, a field that takes it out of the Active-tab transition, or a recommended pattern for cancelling $0 orders that were completed via PayOrder with no payments attached? Happy to share order IDs.
Daniel

Hi @DanielN - thanks for the detailed writeup! Unfortunately, we don’t have a better solution for this (there’s no way to suppress the scheduled print once a paid fulfillment is cancelled), so your solution is genuinely the best approach available today.

thanks for the reply Jseok.
appreciate the confirmation.

Daniel