DID failures

I’m having trouble and have wasted 3 days trying to figure this out and also trying to get help from my voip vendor.
I have a sip trunk with 8 DID’s passing through it. I’ve set these up several times before with no issues, but this time I believe my voip vendor is doing something differently but won’t tell me what (I know, time for a new voip vendor).

I have inbound routes set up for each DID to either ring to an extension, ring group, or auto attendant.

When you call inbound to one of the DID’s the call goes to the default “any DID” route, or fails altogether if you turn off the “any DID” route.

I’m running a SIP Debug. Here’s the first invite:

Via: SIP/2.0/UDP;branch=z9hG4bKopdb2710egh0mk9a4kd0.1;received=;rport=5060
From: "INBOUND CID CALLER"sip:[email protected];user=phone;tag=145757903-1457720178592-
To: "trunkcustomername"sip:[email protected];tag=as1496d3e9
Call-ID: [email protected]
CSeq: 863132625 INVITE
Server: FPBX-13.0.70(13.6.0)
Supported: replaces, timer
Contact: sip:[email protected]:5061
Content-Type: application/sdp
Content-Length: 351

What’s broken when the Contact becomes sip:s@ipaddress:port?

YES i’ve attempted adding /0987654321 (did number) to the end of the register string. This will work, BUT the pbx then puts that DID in the contact field (sip:0987654321@ipaddress:port) and assumes all calls inbound on that trunk are destined for that DID (instead of the DID that was dialed. Adding the trunk pilot DID makes freepbx think all calls are going to the pilot DID regardless of the DID dialed as well.

I have another fpbx box with a SIP trunk and DID’s from the same vendor. Using the same settings they should work identical, but they don’t. I can register the working box with the same trunk/DID (by just replacing the account/password/did’s of my working account with this account) and have the same issue, so to me that rules out network settings, routers, natting, etc.

Any help I can get would be appreciated.

Registration string is:
0987654321:[email protected]

again, I’ve atttempted adding /0987654321 at the end of the string, but does not produce the desired results.