Robokassa callback timeout: provider POST not visible in HTTP Logs
grarsen
PROOP

3 months ago

Hello.

We have a production service on Railway:

https://lingerie-ai-bot-production.up.railway.app

Endpoint:

POST /api/payments/robokassa/result

Our payment provider Robokassa reports that their ResultURL callback for a real payment timed out while waiting for HTTP response. They did not receive any HTTP status code.

Robokassa RF callback IP ranges:

185.59.216.65

185.59.217.65

Incident:

InvId: 173

Endpoint:

https://lingerie-ai-bot-production.up.railway.app/api/payments/robokassa/result

Approximate time:

2026-07-05 16:33–16:37 GMT+3

What we observe:

  • Manual GET to /api/payments/robokassa/result reached Railway and returned HTTP 400 in ~26 ms.
  • Manual POST to /api/payments/robokassa/result reached Railway and returned HTTP 400 in ~32 ms.
  • The backend logged the test requests correctly.
  • However, the real Robokassa POST callback for InvId=173 is not visible in Railway HTTP Logs.
  • Robokassa says their timeout occurred while waiting for HTTP response, with no HTTP status received.

Could you please check whether incoming HTTPS POST requests from Robokassa IPs 185.59.216.65 / 185.59.217.65 were blocked, filtered, timed out, or failed at Railway edge/proxy level around that time?

We need to know whether the request reached Railway edge, whether it was forwarded to the service, and whether there were TCP/TLS/backend response timeout issues.

$10 Bounty

3 Replies

Railway
BOT

3 months ago

This thread has been opened as a bounty so the community can help solve it.

Status changed to Open Railway • 3 months ago


grarsen
PROOP

3 months ago

Update: the issue reproduced with a new real payment.

InvId=175

Amount: 350 RUB

Method: SBP

Payment was actually paid, fiscal receipt was issued.

Robokassa notification log shows 4 POST attempts to:

https://lingerie-ai-bot-production.up.railway.app/api/payments/robokassa/result

Times:

Jul 6 08:09 GMT+3

Jul 6 08:10 GMT+3

Jul 6 08:11 GMT+3

Jul 6 08:12 GMT+3

All attempts failed with:

"The operation has timed out"

Our app created the payment successfully:

Robokassa payment created: user=8093793456, package=rub_350, method=sbp, inv_id=175

But our backend logs do not show:

robokassa_result_received: inv_id=175

Manual POST tests to the same endpoint reach the backend quickly and return the expected bad signature response.

Could you please check whether incoming HTTPS POST requests from Robokassa reach Railway edge/proxy at all, and whether they are blocked, timed out, or not forwarded to the container?

Robokassa IP ranges:

185.59.216.65

185.59.217.65


grarsen

Update: the issue reproduced with a new real payment. InvId=175 Amount: 350 RUB Method: SBP Payment was actually paid, fiscal receipt was issued. Robokassa notification log shows 4 POST attempts to: https://lingerie-ai-bot-production.up.railway.app/api/payments/robokassa/result Times: Jul 6 08:09 GMT+3 Jul 6 08:10 GMT+3 Jul 6 08:11 GMT+3 Jul 6 08:12 GMT+3 All attempts failed with: "The operation has timed out" Our app created the payment successfully: Robokassa payment created: user=8093793456, package=rub_350, method=sbp, inv_id=175 But our backend logs do not show: robokassa_result_received: inv_id=175 Manual POST tests to the same endpoint reach the backend quickly and return the expected bad signature response. Could you please check whether incoming HTTPS POST requests from Robokassa reach Railway edge/proxy at all, and whether they are blocked, timed out, or not forwarded to the container? Robokassa IP ranges: 185.59.216.65 185.59.217.65

grarsen
PROOP

3 months ago

Hi Railway team,

Could you please confirm whether this request can be checked by Railway staff, not only by the community?

We need Railway-side ingress/proxy verification for Robokassa ResultURL POST callbacks. The payment provider reports timeout without receiving any HTTP status, while the requests do not appear in our application HTTP logs.

We need to know whether incoming HTTPS POST requests from Robokassa IP ranges 185.59.216.65 and 185.59.217.65 reached Railway edge/proxy, were blocked, timed out, or were not forwarded to the container.

This is payment infrastructure, so community answers cannot verify Railway ingress logs. Could you please check this internally or tell us where to open a private support request for Railway staff?

Thank you.


spjoes
HOBBY

3 months ago

Hey! This is a community forum and I dont believe the Hobby plan gets direct railway support. However, I can take a stab at it.

You say it times out, never shows in HTTP Logs, but your manual requests to the same URL log fine and the payment still processes. This means the callback dies before it reaches your app.

Most likely cause: Expect: 100-continue. Robokassa sends the POST headers, waits for a 100 Continue before sending the body, never gets one, and times out without sending the body so nothing would log. Your manual tests pass because they send the body immediately.

Worth noting I'm inferring the Expect: 100-continue part from your symptoms since I can't see your infrastructure. Step 1 below will confirm whether that's actually what's happening.

Heres a few things to try. Any one of these can surface the cause or fix it:

  1. I would point ResultURL at a webhook testing site (something like webhook.site or Hookdeck), run one real payment, and check the exact request (that would be the HTTP version, Expect header, Content-Type, and whether a body is present).
  2. Switch ResultURL to a custom domain instead of *.up.railway.app. The generated domain has extra edge handling that can interfere with server-to-server POSTs; a custom domain routes more directly I believe.
  3. Log raw headers at your first middleware, before body parsing, so a partial request still shows up.

Welcome!

Sign in to your Railway account to join the conversation.

Loading...