Microsoft Teams Phone Error Code 412 usually appears when an inbound Direct Routing call reaches Teams with a target number that cannot be parsed into a valid callee MRI (Messaging Resource Identifier). In Microsoft’s own mapping, this pattern is tied to Microsoft response code 510412 together with SIP 412, so the fastest repair path is to inspect the called number, its format, and the translation applied before the call lands in Teams. [✅Source-1]
Focus first on the called number Not the Teams cache
- Look for Final SIP code 412.
- Match it with the Final Microsoft subcode.
- If the pair is 510412 + 412, the failure is usually in number parsing for the inbound destination.
Contents on This Page
What Error Code 412 Means in Teams Phone
For Direct Routing work, the plain SIP phrase by itself is not enough. Engineers often compare cases like this with other documented Microsoft Teams Direct Routing error codes to understand whether the failure belongs to number parsing, routing logic, or signaling behavior. Microsoft’s troubleshooting guidance says to read the Microsoft response code together with the SIP code because that pairing tells you far more about the actual failure path. When the pair is 510412 + 412, Microsoft labels it as wrong callee MRI, which points the investigation toward the inbound destination number rather than toward a random media problem. [✅Source-2]
What the Admin View Usually Shows
- Final SIP code: the call ended with 412.
- Final Microsoft subcode: the more precise Teams-side clue.
- Final SIP phrase: the readable label shown with the call record.
These fields are available in the Direct Routing area of the PSTN usage report, and they are the fastest place to confirm that you are looking at a number-format failure, not a generic voice issue. [✅Source-3]
Why This Error Appears
Wrong number in, failed call out. That is usually the story here. Teams expects a destination string it can route cleanly. If the inbound callee number arrives in a carrier-local pattern, keeps a trunk prefix that should have been removed, carries an unexpected URI-style prefix, or reaches Teams without the translation rule that your SBC plan assumed, the call can fail before normal routing finishes.
- The PSTN or SBC sends the called number in a local format while Teams expects a routable canonical format.
- An inbound number translation rule is missing, skipped, or built for the wrong pattern.
- The number includes a domestic or international access prefix that should not survive into the Teams-facing target string.
- An extension-based destination is written in a format that Teams does not treat as the assigned number.
Microsoft’s number-translation documentation is explicit here: translation rules can be used for inbound calls as well as outbound ones, and they exist to keep number formats synchronized between the tenant and the SBC side. If your carrier or gateway sends a destination string that does not match what Teams expects, this is often the section of the configuration that needs attention. [✅Source-4]
Format consistency matters more than many admins think. Microsoft’s number-format reference notes that the E.164 format allows a maximum of 15 digits, uses the plus sign to represent the international call prefix, and often drops domestic trunk prefixes when the call is represented in international form. Tiny differences, large effect. [✅Source-5]
Examples Worth Checking
| Observed Target | Why It Can Break Routing | Safer Form to Validate |
|---|---|---|
| 02079460123 | Local format may not match the Teams-side destination. | +442079460123 |
| 00442079460123 | International access prefix remains in the number string. | +442079460123 |
| tel:+14255551234 | Teams phone number assignment does not accept the tel: prefix. | +14255551234 |
| +14255551000 ext 1234 | Free-text extension format may not match the Teams assignment format. | +14255551000;ext=1234 |
These examples are illustrative. The exact target format must match your carrier, SBC rules, and the assigned Teams destination.
A related Microsoft troubleshooting article on inbound Direct Routing calls shows how even a simple mismatch around a leading plus sign can cause inbound call handling logic to miss its match. Different symptom, same lesson: keep the number pattern consistent across every hop. [✅Source-6]
Where to Check the Failed Call
Sometimes the SIP ladder says it plainly. Do not guess. Open the failed call and read the record end to end.
- Go to Analytics & reports in the Teams admin center.
- Open Usage reports and run the PSTN Usage report.
- Switch to the Direct Routing tab.
- Select the affected call and inspect the Final SIP code, Final Microsoft subcode, and Final SIP phrase.
- Open SIP Call Flow and inspect the message sequence around the inbound invite and the called number.
Microsoft’s SIP Call Flow view in the Teams admin center shows the chronological exchange between your SBC and Microsoft’s SIP Proxy. It is built for this exact sort of fault isolation. Microsoft also notes two timing limits that matter during investigations: call data can take up to 30 minutes to appear, and records older than 30 days are not available in SIP Call Flow. [✅Source-7]
What to Capture Before You Change Anything
- The exact called number as received from the carrier or SBC.
- The translated number after any inbound rule is applied.
- The user or resource account assignment in Teams.
- The Final SIP code and Final Microsoft subcode.
- The specific SIP message where the target number first appears in the wrong form.
How to Fix the Number Path
Normalize the Called Number Before It Reaches Teams
The repair usually starts on the inbound destination string. Make the target number that leaves the SBC and reaches Teams match the number that Teams is expected to route. If your carrier sends national format, convert it. If a trunk prefix survives into the Teams-facing leg, strip it. If one route uses E.164 and another uses a local pattern, pick one standard and keep it across the whole path. Translation rules exist for exactly this synchronization job. [✅Source-8]
- Match the inbound target to the assigned Teams number or resource account number.
- Prefer one stable representation of the number across the tenant, the SBC, and the carrier handoff.
- Remove access prefixes that should not be present in the Teams-facing destination.
- Keep country code handling consistent. Mixed habits here produce mixed results.
PowerShell and Assignment Checks
Once the number path looks clean, verify the receiving account. Microsoft’s Direct Routing setup steps say the user must be homed online, and if an old on-premises line setting still exists, you may need to clear it before managing the number online. Microsoft also documents the exact checks for RegistrarPool, OnPremLineUri, and LineUri. [✅Source-9]
Get-CsOnlineUser -Identity "user@contoso.com" | fl RegistrarPool,OnPremLineUri,LineUri
Set-CsPhoneNumberAssignment -Identity "user@contoso.com" -PhoneNumber "+14255551234" -PhoneNumberType DirectRoutingFor extension-based assignments, Microsoft supports formats such as +1206555000;ext=1234. The same documentation also states that the assigned phone number cannot include the tel: prefix. Those two details save a lot of wasted testing. [✅Source-10]
Set-CsPhoneNumberAssignment -Identity "user@contoso.com" -PhoneNumber "+14255551000;ext=1234" -PhoneNumberType DirectRoutingRun the Built-In Direct Routing Diagnostic
Use Microsoft’s own Run Tests diagnostic before and after you edit routing or numbering rules. The Direct Routing diagnostic in the Microsoft 365 admin center checks whether the user is configured correctly and points to tenant, user, or policy gaps when it finds one. It is fast, useful, and easy to overlook. [✅Source-11]
When the Issue Points Beyond Number Parsing
If the call record shows 510412 + 412, stay on the numbering path first. Still, it is wise to glance at broader SBC health signals in parallel. Microsoft’s Direct Routing monitoring article says SIP options are normally sent every minute, and the service treats an SBC as healthy when options were seen during the last three minutes. If those health signals are missing, fix them too, even if they are not the first cause of this exact 412 mapping. [✅Source-12]
Health Dashboard adds another useful layer. Microsoft says the dashboard warns when an SBC certificate is due to expire within 30 days. It also notes that the average duration of a 1:1 PSTN call is usually around four to five minutes, while very short averages such as 15 seconds can suggest broader calling reliability trouble. The same page gives the NER formula as 100 × (Answered calls + User Busy + Ring no Answer + Terminal Reject Seizures) / Total Calls. These numbers help separate a narrow number parsing fault from a wider service health problem. [✅Source-13]
Signals That Help Separate the Issue
| Signal | What It Usually Points To | Where to Look Next |
|---|---|---|
| 510412 + 412 | Wrong callee MRI or number parsing failure | Inbound target number, translation rule, assigned destination |
| Average call duration near 15 seconds | Wider call reliability trouble | Health Dashboard, media path, SBC health |
| No SIP options warning | SBC monitoring or trunk health issue | SBC configuration and SIP options flow |
| Certificate expiry warning | Pending TLS disruption | Certificate renewal and TLS connectivity |
If you also see outbound routing oddities around the same number range, review the effective dial plan as well. Microsoft’s dial-plan documentation explains that Teams uses normalization rules to translate user-entered numbers into a standardized format, typically E.164, before routing. That will not be the first fix for an inbound 510412 case, but it is often relevant when numbering problems appear on both directions of the same route family. [✅Source-14]
FAQ
Is Microsoft Teams Phone Error Code 412 usually a client cache issue?
Usually no. In Teams Phone Direct Routing, Error Code 412 is far more often tied to how the inbound destination number is parsed and matched than to a desktop cache issue.
What is the most useful code pair to confirm this issue?
The most useful pair is Final SIP code 412 together with Final Microsoft subcode 510412. That combination points you toward a wrong callee MRI or number parsing problem.
Should the destination number be in E.164 format?
In many environments, yes. E.164 keeps routing predictable because it uses a standard international format with a leading plus sign and a maximum of 15 digits.
Can Direct Routing numbers with extensions work in Teams?
Yes. Teams supports Direct Routing assignments with extensions in formats such as +1206555000;ext=1234, as long as the rest of the configuration matches that destination pattern.
Where can I inspect the exact failed call?
Use the Teams admin center, open the PSTN Usage report, switch to the Direct Routing tab, then inspect the Final SIP code and the SIP Call Flow for the affected call.
What should I fix first when I see Error Code 412?
Start with the called number that reaches Teams: its format, any inbound translation rule, and the assigned number on the target user or resource account. That is usually the shortest path to a repair.