Webhook is not being delivered
Troubleshooting
Webhook
Delivery
Symptom
An event should be occurring, but the Webhook is not reaching the receiving endpoint.
An event should be occurring, but the Webhook is not reaching the receiving endpoint.
Isolation steps
Step 1: Look at the delivery history in the developer portal
Developer portal → App → Webhook → the relevant endpoint → "Delivery history"
| Delivery history state | Cause |
|---|---|
| No record at all | Not delivered (a configuration problem) |
Record exists but 5xx | Server error on the receiving side |
Record exists but 4xx | Rejected on the receiving side (no resend) |
| Timeout | No response within 10 seconds |
| Connection failure | DNS / TLS / network problem |
Step 2: Checks when there is "no record at all"
- ☐ Is the endpoint "enabled"? (nothing is delivered while it is disabled)
- ☐ Are you subscribed to the relevant event?
- ☐ Are you excluded by the target-store filter?
- ☐ Did the event actually occur? (Is there no delay showing on the status page?)
- ☐ Has the app itself not been suspended / revoked?
Step 3: When it is a "timeout" or "connection failure"
- ☐ Is the receiving URL reachable from outside? (try hitting it from a browser)
- ☐ Is it not behind an internal VPN?
- ☐ Is the TLS certificate valid? (self-signed is not allowed)
- ☐ Does the firewall allow ReceiptRoller's source IPs?
- ☐ Does the receiving handler return 2xx within 10 seconds?
Step 4: When it is "rejected with 4xx"
- ☐ Is signature verification not failing? (returning 401)
- ☐ Is the URL not 404 due to a routing mistake?
- ☐ Is there no implementation-related error in the response body?
Verify with a test delivery
Using the "Test delivery" button in the developer portal, you can send a sample event and verify the receiving side.
- The relevant endpoint → "Test delivery"
- Select the event type
- "Send"
- Check the receiving side's logs and response code
Redelivering dead letters
After you fix the receiving side, you can manually redeliver from the "Dead letter" filter of the delivery history. It is valid for up to 30 days after the delivery.
Related guides
Published: 2026-04-27
Updated: 2026-07-05
Category
Tags
API (22)
OAuth (15)
Android (10)
iOS (9)
Webhook (6)
Troubleshooting (5)
api (5)
App registration (4)
POS Integration (4)
Reference (4)
Related articles
-
403/401 is returned (permissions and scopes)How to isolate the cause when an API call returns 401 or 403. Explains the typical cases: invalid token, insufficient scope, no store access permission, and User-scope review not passed.
-
The developer portal is not shown while on the Free planWhat to check when the ReceiptRoller developer portal is not shown. Explains what to do when your plan is Free, switching business accounts, and the timing of when the display updates.
-
app_not_approved is returned for User-scope callsWhat to check when using a User-scope results in an app_not_approved error. Explains development with a sandbox slot, applying for review, and the flow from sandbox to production.
-
Cannot obtain a token (authentication error)How to isolate the cause when you cannot obtain an access token. Explains the representative errors — invalid_client, invalid_grant, redirect_uri_mismatch — and what to do about them.