Game Server is UPnP enabled. works perfectly.
Client has no UPnP protocols on their router so it requires manual port settings.

currently i have:

Server starts, contacts master server via HTTP request and informs it "This is my port/ip/name/etc..."

Client
loads and makes an HTTP request to the master server and gets the serverlist, including our target server.

Server Listens on: <Server Customized>
Server Sends To: 45,000

Client Listens On: 45,000
Client Sends To: <Server customized>

Client does HTTP request to a master server to get the target server's IP and <ServerCustomized>port (working)

The client sends UDP request to the server join the server targeting <ServerCustomized> port. (working)

Server
hears the client request (working)
and replies to client listening port 45000 "yes you may join" (NOT working)

as far as i can tell, the server is sending it, but the client doesn't hear it.

to hole punch, do i just need to have the client send the initial join request on both
<ServerCustomized> port and the 45000 port to punch a hole?

Q: OMG! Why are you doing hole punching?
A:Because i've already found 2/3 testers that DONT have upnp routers (eg: WANPPPConnection:1 and WANIPConnection:1).