I have already filled out the
https://goo.gl/forms/xIWnym9wwdZhiEYw1 document (twice), yet when I ask a new question the response always starts with "did you fill out the Semi-Integration questionnaire?". One would assume it would be possible to search and find my answers and my filled out google form(s) based on my forum username...
In any case, since I cannot call Void on a Sale through the API, I am using preAuth and then calling capturePreAuth when the Point of Sale application closes it's transaction that contains the preAuth'd Payments... Works great since those PreAuths are not part of the CloseOut batch so never actually get captured, which is how it should work traditionally anyway.
My question is: over time, each of those preAuths that never got captured will simply always be pending. I know the Auth will eventually expire on the bank side. But how can I "void, close, cancel" whatever you want to call it, those preAuths in Clover so that we know they'll never get a capturePreAuth request sent to them?
Side note, not sure how common this is, but we are both the merchant and the developer, so not a third party. I realize that Clover is more opinionated and conservative by disallowing Voids and Refunds through the API, but it's a real hindrance to those who want to utilize those features and can trust themselves to handle them properly and responsibly, yet simply cannot. It would be great if there were a way for Merchants to control these settings (grant or deny these calls per app, similar to how when you download an Android app and it requests permission to things like use your camera or GPS location, you can control it as the end consumer, but at the Merchant level)...
The issue I'm dealing with is not actually directly related to the subject of the question. But the issue started here so I'm replying here.
Void always returns Success.
https://community.clover.com/questions/2384/why-on... This is bad because, although the Void call says it allows you to void by PaymentId and/or OrderId, it does not actually void the payment if you do not explicitly pass in the correct corresponding OrderId. From my experience and testing, the only way to make the Clover actually Void the payment is to pass both PaymentId and OrderId. Yet, if you pass PaymentId only, you get a Success response but the Payment is not actually voided on the device or in the system. Knowing this, I can now go back to using Sale rather than PreAuth. Even if you pass in an invalid OrderId, you still get a Success response.
And finally, the answer to the question regarding lingering PreAuths.. Once you do a Closeout on the terminal, any PreAuths that have not been captured basically "go away" meaning they do not calculate into the "Total Sales" amount displayed right above the Closeout button on the device.
We are still in the process of consolidating our developer information across our team, so thank you for your patience, I see your form response now.
From the response you are using remote-pay-windows, have you tried using CloverConnector.voidPayment()? That will either void the payment or refund the payment (if outside of void time limit), and close it. CloverConnector has refundPayment() as well.