FreemiumProBusinessEnterprise

Webhook Not Received: Troubleshooting

Problem Symptoms

An attendee reports that they paid for the ticket, but:

  • The registration status is "Awaiting payment"
  • The ticket email has not arrived
  • In the attendee list, the payment status is pending

Most often, the cause is that the webhook from the payment gateway was not delivered or was not processed by tikento.

Step 1. Check the Webhook Delivery Log

tikento maintains a log of all incoming webhook requests:

  1. Open Settings → Payments.
  2. Select the gateway (YooKassa or Tochka).
  3. Go to the "Webhook log" tab.

The log displays:

  • Request date and time
  • Event type (payment.succeeded, payment.canceled, refund.succeeded)
  • tikento's HTTP response code
  • Request body (for diagnostics)
  • Processing status (success / error)

Possible Results

SituationWhat It MeansWhat to Do
Webhook not in the logGateway did not send or could not deliverGo to Step 2
Webhook present, code 200Processed successfullyVerify that the payment_id matches the problematic payment
Webhook present, code 4xxValidation error (invalid signature, unknown format)Go to Step 4
Webhook present, code 5xxtikento internal errorGo to Step 5

Step 2. Check Webhook Settings in the Gateway

Log in to the payment gateway's dashboard and verify:

YooKassa

  1. Open "Settings""HTTP notifications".
  2. Make sure the webhook URL matches:
    https://app.tikento.com/webhooks/yookassa/{shopId}
    
  3. Check that all required events are selected:
    • payment.succeeded
    • payment.canceled
    • refund.succeeded

Tochka

  1. Open "Integration""Notifications".
  2. Make sure the webhook URL matches:
    https://app.tikento.com/webhooks/tochka/{merchantId}
    
  3. Check the event filters.

Common URL Errors

  • Missing https:// (using http:// — gateways require HTTPS)
  • Trailing slash at the end of the URL
  • Incorrect shopId or merchantId in the path
  • URL from an old connection (if you reconnected the gateway)

Step 3. Check Webhook Endpoint Accessibility

If the URL is correct but the webhook is not being delivered, possible causes:

  • Firewall or CDN is blocking incoming POST requests from the gateway
  • Timeout: tikento did not respond within the allotted time (gateways typically wait 10-30 seconds)
  • DNS issues: the domain does not resolve on the gateway's side

To verify, use a test webhook from the gateway's dashboard (if available) or request a resend.

Step 4. Validation Error (4xx)

If the webhook arrived but tikento returned a 4xx error:

CodeCauseSolution
400Invalid request bodyCheck the notification format in the gateway. Make sure JSON format is selected, not XML
401Invalid request signatureMake sure the secretKey in tikento is current. If you regenerated the key in the gateway, update it in tikento too
404Incorrect webhook URL pathCheck the URL — the shopId / merchantId may be incorrect
409Duplicate webhook (already processed)This is normal behavior — idempotency protection triggered. The payment has already been processed

Step 5. Internal Error (5xx)

If the webhook was received but tikento returned 5xx — this is a temporary error on tikento's side. In most cases:

  1. The gateway will automatically retry delivery (see retry policy below).
  2. The issue is usually resolved on the retry.
  3. If the error persists — contact tikento support.

Retry Delivery Policy

GatewayNumber of AttemptsIntervals
YooKassaup to 10Exponential backoff: 1s, 5s, 30s, 2min, 10min, 30min, 1h, 3h, 6h, 12h
Tochkaup to 5Fixed interval: every 5 minutes

If all attempts are exhausted, use manual retry.

Manual Retry and Confirmation

Manual Webhook Retry

In the webhook log, click "Retry" next to the failed entry. tikento will reprocess the webhook request body.

Manual Payment Confirmation

If the webhook cannot be restored, but you can see a successful payment in the gateway's dashboard:

  1. Open the event → "Attendees".
  2. Find the record with the stuck status.
  3. Click "Actions""Confirm payment manually".
  4. Specify a reason (for audit).

Manual confirmation updates the registration status and sends the attendee an email with the ticket.

Testing Webhooks

To ensure the webhook is working correctly, before or after setup:

Test Payment

  1. Create a test event with a paid ticket.
  2. Connect the gateway in test mode.
  3. Pay with a test card (4111 1111 1111 1111).
  4. Check the webhook log — an entry with code 200 should appear.
  5. Verify that the registration status updated to "Paid".

Test Webhook from the Gateway

Some gateways allow sending a test webhook manually:

  • YooKassa: in the "HTTP notifications" section, click "Send test notification"
  • Tochka: contact Tochka support to send a test notification

Prevention

To avoid webhook issues:

  • When changing API keys in the gateway, immediately update them in tikento
  • Do not delete or change the webhook URL unnecessarily
  • Periodically check the webhook log for errors
  • When reconnecting a gateway, always run a test payment

Frequently asked questions

The payment is stuck in Pending status — what should I do?
Check the webhook delivery log in tikento (Settings → Payments → Webhook log). If no webhook was received, check the URL and event settings in the gateway's dashboard. If the webhook arrived with an error, review the response code in the log.
How many times does the gateway retry sending a webhook?
YooKassa — up to 10 attempts with exponential backoff (from seconds to hours). Tochka — up to 5 attempts at 5-minute intervals. If all attempts are exhausted, use manual retry.
Can I manually confirm a payment without a webhook?
Yes. Open the attendee's record, click 'Actions' → 'Confirm payment manually'. This updates the registration status but does not create a payment record in the gateway.
How do I check if the webhook URL is correct?
In tikento, open Settings → Payments → select the gateway. Copy the displayed webhook URL and compare it with the URL specified in the gateway's dashboard. They must match exactly, including the protocol (https://).