No terminal.checkout.updated COMPLETED webhook event: international card inserted after first tap declined

Production, Terminal API with a paired Square Terminal, webhooks subscribed: device.code.paired, terminal.checkout.created, terminal.checkout.updated, refund.updated. API version 2023-03-15.

On 9/12/2026 around 8:03 PM Eastern a customer paid with an international card. The contactless tap was declined and the checkout was cancelled. Our POS created a new checkout, the customer inserted the same card, and it was approved. Square captured the payment, but no COMPLETED event was ever sent for the second checkout. The Developer Dashboard webhook log shows no attempt at all, not a failed delivery.

Checkout NADTUiCsxpXanVCE
20:03:24  terminal.checkout.created   PENDING
20:03:25  terminal.checkout.updated   IN_PROGRESS
20:03:35  terminal.checkout.updated   CANCELED, cancel_reason BUYER_CANCELED

Checkout jHHO6FYTwQA5JYCE
20:03:39  terminal.checkout.created   PENDING
20:03:40  terminal.checkout.updated   IN_PROGRESS
(nothing further)

Get Terminal Checkout on jHHO6FYTwQA5JYCE now returns status: COMPLETED with payment ID Populated. Other checkouts that day received their COMPLETED events normally, with 200 responses from our endpoint.

Could you check why no update was published for this COMPLETED transition, and whether this is a known condition, for example with a checkout created right after a cancelled one on the same device, or with international cards? We want to know if this is a one-off.

Merchant id available on request.

Thanks for the detailed report. I confirmed that the second checkout completed successfully and that its payment was captured. I also confirmed that this was not a failed webhook delivery on your end as no delivery attempt was created for the checkout’s final COMPLETED transition. I am looking into it a bit more before internal escalation, if you do see it again please create a new topic (feel free to link this one) as reproduction steps will be vital for resolution. I don’t have evidence that the international card or card-insertion method caused the issue.

We generally recommend as a best practice to reconcile Terminal checkout/payment status (and any other webhook integration) through the API for any transaction that does not receive its expected final webhook, rather than relying exclusively on the webhook for final state.

Hi

Thank you for your response.

Please continue investigating and let me know if you find a definitive cause.

I will look into Reconciling through the API

Regards,
Yanis

Hi any progress on this?

I do not have an update that I can share, did you run into the issue again?

Regardless of resolution on our end, please do reconcile through the API via polling or another mechanism.