In the simplest case, the match pattern field should be what the user actually dials and the Route Password field should be the PIN.
However, various situations may make it more complicated.
Please explain what your existing four routes do, and post screenshots of the Dial Patterns tabs.
Are you requiring a PIN on specific numbers, or classes of numbers such as premium numbers or numbers in certain countries?
Also, what dialing formats are accepted? For example, older systems typically required dialing 0 or 9 before the number to get an outside line. This is not recommended, but your system might have been set up that way for compatibility with what it replaced. Do you allow local calls without the area code? Do you allow an initial + for international calls?
Emergency Calls (999 and 111) (one of the Trunks we use supports this)
Freephone Calls (One of the Trunks we use charges us for these numbers, so I made a separate route so they wouldn’t be used.
Outgoing calls (the route normal outgoing to landline and mobile calls use)
084/7 Calls (A different Trunk to the Outgoing calls is cheaper for these numbers)
Your system is straightforward enough (Outbound Routes are not modifying numbers, no prefix 9, etc.) so I don’t see why it’s not working. One thing slightly unusual is that because you allow both 44+areacode+number and 0+areacode+number, your PIN route must also match both formats.
For example, if you wanted a PIN to be required when calling 3456 7890 in London and for calling any 09 numbers, you could use these match patterns:
02034567890
442034567890
09.
449.
IMO, the emergency route should come first (so mistakes in other routes won’t block an emergency call) and it should include 112.
Put your PIN route as the next one down and test. If you still have trouble, paste the log for a call that should have required a PIN at https://pastebin.freepbx.org and post the link here.