How to VOID a whole Ticket and also view them in a Report?

Frequently, there is a need to void a complete ticket when a customer left without paying.

So far, I can only Void Order item by item and build rules and such for Reopen Closed Ticket. I do not seem to see a build-in action for the creating a VOID TICKET button.

I am thinking of adding Ticket State called TicketVoided and find a way to loop through all order items and void them all at once. Is this the right direct to pursue or there is something building to do just that?

Here’s a tutorial with a database import file for an abort transaction button that will cancel your whole ticket and change the ticket type to abort, which you should then be able to report on

1 Like

Its the same process as voiding one by one, so long as all orders are submitted you could select all orders one by one then void in one go.
There is an action for select orders so the automation would just be tweeked to select all orders before changing states etc for void process which will void all orders on a ticket in one go…

So what you suggested is manually multi-select the items and click the Void button. This will Void all items but will not automatically change the ticket state nor refund the customer, therefore I should build another button say Void-Ticket and tweet around using those facilities. I will work on that a little bit and report back.

Hmm, I would explore the idea using Ticket Type also.


After trying the Abort button using Ticket Type I found that Emre’s recommendation fits my case more

"You also don’t need to zero prices or quantities. It might be a good idea to keep them for records. Setting Calculate Price to false (same as zeroing price) and Decrease Inventory to false (same as zeroing quantity) will be enough. They’ll just get ignored. That will work like voiding all orders.

Also creating a separate ticket type might not be needed. Just changing ticket state to Aborted might be enough too…"

So I will use Kendash’ automation part while keeping my Ticket State idea like Emre’s advice. I think the Void-Ticket can be done by tonight. LOL

No it wouldnt but it wouldnt be treated as a refund either way as its not the void thats the ‘refunding’ action its the cancel payment.
Its not refunding is canceling the payment. There is a difference.
You could create a refund closed ticket rule which duplicates the ticket, updates all orders to negative qty (how i do my refunds by update order qty with [=TN(’{QUANTITY}’)*-1].
That would give you a cloned ticketed matching the already paid one in a refund state ready for payment screen to select refund method.

1 Like

Here is my implementation and hope someone finds it useful.
I used part of Kendesh’s Abort

Modify with my idea of using the Ticket State and using the advice of Emre in keeping the voided record, here is the following highlights. Kendash’s method use the Ticket Type can be seen easily in a Ticket Lister or Ticker Explorer while using the Ticket State will signify the Ticket State more logically for other processes such when using some of the default Rules from the demo. Keeping the records of items and price in a Void/Aborted ticket has its advantages as well. I also used Ticket Tags base on another thread to record whether there money changing hands. The most important part in my whole implementation is noting the default

The standard version of Abort will allow you to see the Aborted Tickets in Ticket Explorer and Ticket Lister

I added the Ticket State and use that as a filter to create a more visual version for the scenario “when the boss barges in and want to check why this and that ticket with a whole Salmon is Aborted”

Assume the scenario that the customer left without paying but food has already been submitted, the waiter/cashier can just Abort/Voided the whole ticket. Kendash prefers not to use the Abort on submitted orders but my case needs it to here as well.

In yet the final scenario, when a ticket is actually paid but the waiter/cashier decided to Abort/Void purposely or not, the Ticket Tags Kept a record of money changing hands.

**Note: This Reopen Ticket Process is not fully thought thru. there is scenario where we need to Reopen Ticket but necessarily refunding the ticket. Currently it default to alter the Ticket State to Unpaid when pressed. I will spend some time to see whether an Unlock make better sense and add a Refund Process separately. Of course, a lot more tagging and Balance adjustment need to make it the whole process really correct.

The default(that comes in the standard download demo)Payment Check rule in Before Closing Ticket event will alter the Ticket State to “Paid” upon balance being zero using Kendash standard Abort method, so I added this rule in Before Closing Ticket event to alter the Ticket State to Aborted.

The Abort Order action with Emre’s advice

The Ticket Tags used to keep track of money changing hands by QMcKay

I have not checked the accounting of my implementation, so you should check whether the numbers make sense before using the above method(s).

Improvement needed in who Aborted/Voided the Ticket, especially the Paid ones - any suggestion how to implement that?

I also realize there is a need to implement a Refund process along with this Abort because they serve different purposes and thus the tagging should be even more extensive to indicate what actually has happened during the flip-flopping. Expect to see an update to this.


I made this tutorial for cc types but in report it shows only credit card it is not getting separate in report like visa separate master separate amex separate its not showing only i can see credit card total

Isn’t this topic about voiding a ticket not payment types?
Easiest method is to create additional payment types and name as needed so you have a payment type for cash, visa, MasterCard and amex.