Troubleshoot Webhooks

Learn about common issues developers encounter when implementing Square webhooks.

Link to section

Overview

If you're encountering issues with webhooks, review the following for the most likely causes and solutions.

Link to section

I didn't receive my webhook notification

Link to section

Likely cause

Square webhook notifications are typically sent within 60 seconds of the associated event. Applications must respond as soon as possible with an HTTP 2xx status code to acknowledge the successful delivery. Unsuccessful deliveries are retried for up to 48 hours. After 48 hours, the notification is discarded and not sent again.

Link to section

Solution

Verify that your application is responding to notification deliveries in a timely manner with an HTTP 2xx status code.

Link to section

Likely cause

Square webhook notifications require specific OAuth permissions. For example, you can only receive payment.created notifications if the seller grants the PAYMENTS_READ permission scope to your application.

Link to section

Solution

Make sure that your application has the appropriate OAuth authorization for each seller. For more information, see OAuth API.

Did you know?

Webhook logs and the Events API can be useful for troubleshooting missed event notifications.

Link to section

I cannot validate a webhook notification against my webhook subscription

Link to section

Likely cause

You've defined more than one webhook subscription for the client ID that identifies your application. You might have configured one V1 webhook subscription and one V2 webhook subscription or configured two V2 webhook subscriptions to be sent to a common webhook listener address. If so, you're matching the notification signature for one webhook event with the subscription signature of a different webhook.

Link to section

Solution

Define a unique webhook listener for each subscription and then update each webhook subscription with the notification URL intended to handle events on that subscription. You shouldn't define a V2 webhook subscription that emits events for the same API that you're already handling with a V1 webhook subscription. Instead, deprecate your V1 webhook subscription and replace it with a V2 subscription.

Link to section

See also