Do "update cart" and "complete cart" as one action
There's a few moving parts here but Commerce 3.3, which was recently released, just introduced support for partial or deferred payments which should help get this done easily.
I'm not sure what your checkout looks like but one way to handle it would be to post via ajax. Basically anything that updates on-the-fly (addresses, line items, etc.) needs to to get pushed to update-cart first.  You don't really need to write a plugin for this.
Then when you ready to complete the order, you could also make one final push to update cart. Then when a user wants to finalize, they then hit the commerce/cart/complete endpoint.
You could also have a separate &quot;confirm your order&quot; screen which could give the user time to check over their catering before it gets sent.
Either way, you want to have the new allowCheckoutWithoutPayment setting set to true.
It's also possible to grab a partial payment (say if your client wants to do a deposit).