Reader sdk and void/cancel

The docs say that the transaction sdk void call has been retired. Is there ANY way now to delayCapture from SQRDCheckoutController and then capture OR void/cancel later. I know capture is not yet retired. But we need the option to void/cancel as well.

:wave: Currently v2 Transactions are deprecated not retired. They will continue to work until they are retired. :slightly_smiling_face:

Thanks for responding, but according to your docs here: POST /v2/locations/{location_id}/transactions/{transaction_id}/void - Square API Reference, void was retired at the beginning of September. Experimentation seems to support the documentation. I cannot void a delayed purchase with

The link you provided says that the endpoint is deprecated as of August 15, 2019. It isn’t yet retired because the Transactions API retirement is TBD. Do you have an example payment that you called void on but it failed? :slightly_smiling_face:

Note the retirement date in the red box.

And here’s a couple of accesses from moments ago. Neither the tender id nor the transaction id are found. But you can see them both in the first entry in the transactions list.

[12:11:58 ~/]$ curl \

-H ‘Square-Version: 2021-10-20’
-H ‘Content-Type: application/json’
{“errors”:[{“category”:“INVALID_REQUEST_ERROR”,“code”:“NOT_FOUND”,“detail”:“Location 6JG98G71PA1ZE does not have a transaction with ID qSSpaH1hwb1pzu6shqoS1dkeV.”,“field”:“transaction_id”}]}[12:12:01 ~/]$
[12:12:03 ~/]$
[12:12:03 ~/]$ curl
-H ‘Square-Version: 2021-10-20’
-H ‘Content-Type: application/json’
{“errors”:[{“category”:“INVALID_REQUEST_ERROR”,“code”:“NOT_FOUND”,“detail”:“Location 6JG98G71PA1ZE does not have a transaction with ID XZHk2OnvwrS631k7D8tABerTvaB.”,“field”:“transaction_id”}]}[12:12:24 ~/]$

“transactions”: [
“client_id”: “085583DD-8073-4413-8DB9-55AAE36B7695”,
“created_at”: “2021-10-28T17:00:34Z”,
“id”: “qSSpaH1hwb1pzu6shqoS1dkeV”,
“location_id”: “6JG98G71PA1ZE”,
“product”: “REGISTER”,
“tenders”: [
“amount_money”: {
“amount”: 353,
“currency”: “USD”
“card_details”: {
“card”: {
“card_brand”: “MASTERCARD”,
“fingerprint”: “sq-1-ZqUARqyyihEOa4vbAUSNy6AWisGsdOgns4_ccdy-JvZXh2PtJKGd_yBHh5mOvoiFbQ”,
“last_4”: “7225”
“entry_method”: “EMV”,
“status”: “AUTHORIZED”
“created_at”: “2021-10-28T17:00:30Z”,
“id”: “XZHk2OnvwrS631k7D8tABerTvaB”,
“location_id”: “6JG98G71PA1ZE”,
“processing_fee_money”: {
“amount”: 0,
“currency”: “USD”
“transaction_id”: “qSSpaH1hwb1pzu6shqoS1dkeV”,
“type”: “CARD”

Also note that the capture retirement date is TBD and still works. — I just tried it.

Thanks for brining this to our attention. Also the transaction qSSpaH1hwb1pzu6shqoS1dkeV is captured and not available to be voided. Although if that’s the error we are returning it doesn’t seem like the correct error to return.

Just to be clear. I tried to void the transaction first and that failed saying it could not be found. Then used the very same transaction but with capture (instead of void) and it worked. So the CAPTURED status is correct now.

So the transaction api could not find that transaction to void it, but could find that transaction to capture it.

So the question now is will square ‘un-retire’ the void transaction? I can’t imagine we’re the only square client that would like to do split auth/capture. And having a working capture without a void is not really useful.

Also, longer term, those with square hardware, using the square reader api, need some processing path when/if the transactions api as a whole gets retired.