LiveKit Cloud edge returns SIP/2.0 404 Does not match Trunks or Dispatch Rules on every
inbound Telnyx call, despite the SIP INVITE’s To: header and the registered numbers /
inboundNumbers being byte-identical.
Project + setup
- Project:
p_1zxsb3c4qot(1zxsb3c4qot.sip.livekit.cloud) - Edge region:
ofrankfurt1b - SIP provider: Telnyx (EU), Inbound
Destination number format = +E.164,Origination number format = +E.164, transport TCP
LiveKit config (verified via lk sip inbound list --json + `lk sip dispatch list
--json`)
Trunk ST_xMKUQrTnrSkE (stagee):
{ "numbers": ["+351220600529", "+351920526106"], "allowed_addresses": [], "allowed_numbers":
[] }
Dispatch rule SDR_R53pPt5GqMTK:
{ "inboundNumbers": ["+351220600529"], "trunkIds": ["ST_xMKUQrTnrSkE"], "rule":
{"dispatchRuleIndividual": {"roomPrefix": "restaurant-grottu-"}}, "roomConfig": {"agents":
[{"agentName": "voice-agent"}]} }
PCAP from a failing call (SCL_kGmHa4AeWoDH)
INVITE sip:+351220600529@1zxsb3c4qot.sip.livekit.cloud:5060 SIP/2.0
Via: SIP/2.0/TCP 161.115.161.162:5060;branch=z9hG4bK...
From: "+351920192034" <sip:+351920192034@sip.telnyx.eu>;tag=NKatBHQ329Hgr
To: <sip:+351220600529@1zxsb3c4qot.sip.livekit.cloud:5060>
Call-ID: d4e73fe6-c1a8-4177-b97b-03d8fe602e7d
SIP/2.0 100 Processing
SIP/2.0 180 Ringing
SIP/2.0 404 Does not match Trunks or Dispatch Rules
toUri.user in the dashboard event: "+351220600529".
Trunk numbers[0]: "+351220600529" (raw bytes 2b333531323230363030353239).
Rule inboundNumbers[0]: "+351220600529" (same bytes).
Three identical strings; edge says no match.
What I've tried
1. Confirmed Telnyx Inbound Destination Number Format = +E.164 (saved + reloaded).
2. Confirmed trunk + rule registered as +E.164 only — no duplicate bare-E.164 entries (the
known mixed-format pitfall
(https://community.livekit.io/t/troubleshooting-inbound-sip-calls-not-reaching-agent/226)).
3. SIP URI in To: is @<project>.sip.livekit.cloud, not @IP (the most-common-cause from that
thread).
4. allowed_addresses empty — no IP filter.
5. Tried bare-form inboundNumbers while Telnyx was sending +E.164: 404 (expected —
mismatch).
6. Recreated rules from scratch after delete; same 404.
7. Same trunk/rule was working historically (Apr 26 calls succeeded, durations 27–60s) —
broke after the dispatch-rule-without-inboundNumbers catch-all cleanup on May 13.
Question
What does LiveKit's edge actually compare toUri.user against? Is there normalisation or a
separate number registry beyond trunk.numbers + rule.inboundNumbers that I'm missing on
Cloud? Or is this a known issue with the EU Frankfurt edge?
PCAP and a second failing call ID available on request.
