Depending on the relationship it honestly feels as though they may be leaking information that is supposed to be withheld, as the call is seemingly supposed to be anonymous. The information being in the Contact header (which isn’t supposed to be used for callerid) would be a coincidence. Coincidence is probably the wrong word. More like the SIP server is likely putting the callerid into the Contact header and disregarding any presentation information (that it is anonymous/withheld).
Your VoIP provider is broken. You should report this issue to them. If they try to sell you caller ID service, they suck. Find another provider. No one charges for numeric caller ID.
Here in NANP land, years ago I recall reading something about those with toll free DIDs being entitled to CID (even on anonymous calls) since they are the party footing the bill for the call. But I have never actually seen it in practice.
My TF numbers with Vitelity and Alcazar deliver blocked CIDs with no issue.
But I did have a problem once with Vitelity. A few years ago, blocked numbers suddenly stopped coming in. I opened a ticket and they explained that they had raised the rate (for small potatoes like me) to $0.024 and to grandfather me at $0.019 they moved me to another carrier that didn’t deliver blocked numbers. I was offered three choices:
Agree to the new rate and they would return to the old carrier (XO).
Get the old rate with XO by limiting coverage to US48.
Do nothing and blocked numbers won’t be delivered.
I chose option 2.
A couple of years later, Vitelity switched to a new scheme where there are different rates for US48, HI, AK, Canada, etc. Users can enable each of these on the portal.
I don’t believe that the ANI column displays by default. If you have customized the columns, either remove ANI from the list, or populate CALLERID(ani) with something useful.
I suppose you could write it from the Contact header (same as you are doing for num and name), but that would just clutter the report with redundant information.