Technical manual
Set up SIP, Premium CLI and DIDs from first principles.
Concrete SIP examples, endpoint addresses, sample dialplans and a full API reference — twelve sections, written by the engineers who run the network.
Getting started
- 1. Create an account at telprivo.com/auth. Standard accounts are prepaid and self-service.
- 2. Top up in crypto — go to Portal → Funds and generate a payment. We support BTC, USDT-TRC20 and ETH. Balance credits automatically after 1 confirmation (BTC) or instant for TRC20.
- 3. Create a SIP trunk from Portal → SIP Trunks. Choose IP auth (paste your PBX public IP) or user/password.
- 4. Point your PBX at
sip.telprivo.com:5060, present a valid E.164 caller ID and start calling. - 5. Optional — order a DID from Portal → Numbers if you also need inbound, and enable auto-topup so the balance never runs dry mid-campaign.
What you need
A PBX or softphone, a public IP (or nothing at all if you use user/password auth) and a caller ID you are entitled to present.
How long it takes
Account to first call is typically under 10 minutes, including the crypto confirmation. Nothing is queued for manual approval.
What it costs upfront
Nothing. No setup fee, no monthly minimum, no contract — you only need a prepaid balance, from $10.
SIP trunk setup
Endpoints
| SIP host | sip.telprivo.com |
| SIP port (UDP/TCP) | 5060 |
| SIP port (TLS) | 5061 |
| RTP range | 10000-20000/UDP |
| Registrar | sip.telprivo.com |
Number format
Always dial in E.164 without the leading +.
- 4930901820 → Germany, Berlin
- 12125551234 → USA, NYC
- 18005551234 → USA Toll-Free
Sample Asterisk (pjsip.conf)
[telprivo] type=endpoint transport=transport-udp context=from-telprivo disallow=all allow=alaw,ulaw,g729 outbound_auth=telprivo-auth aors=telprivo-aor from_user=YOUR_SIP_USER from_domain=sip.telprivo.com direct_media=no [telprivo-auth] type=auth auth_type=userpass username=YOUR_SIP_USER password=YOUR_SIP_PASSWORD [telprivo-aor] type=aor contact=sip:sip.telprivo.com:5060
FreePBX / 3CX quick settings
| Trunk type | SIP (chan_pjsip) |
| Registration | none (IP auth) / send |
| Outbound proxy | sip.telprivo.com |
| DTMF | RFC 2833 |
| Dial pattern | strip +, prepend nothing |
PhonerLite (testing)
The fastest way to place a first test call. In the account settings:
- Proxy / Registrar: sip.telprivo.com
- Username: your SIP trunk user
- Authentication name: the same SIP trunk user
- Caller number: the E.164 CLI you want to present — not your name
If the destination sees no caller ID, this last field is almost always the reason.
Authentication modes
IP whitelist (recommended)
Best for carriers, PBXes and dedicated SBCs with a static public IP. No registration needed — we authenticate calls by source IP.
You can whitelist up to 10 IPs per trunk, individually or as CIDR blocks (for example 203.0.113.10/32). Changes apply within seconds, no restart on our side.
Username / password
Good for softphones, dev environments or PBXes behind NAT with dynamic IPs. Uses SIP digest auth with a registration expiry of 3600s.
Credentials stay visible in Portal → SIP Trunks, and you can rotate the password at any time with the "Reset password" button — the old one stops working immediately.
Caller ID & Premium CLI
We never overwrite your caller ID. Whatever you present in the SIP header is what we pass to the terminating carrier — which also means that if you send nothing, or send a name instead of a number, the call arrives without CLI or gets rejected.
Where the CLI must be
Put the number in the From header user part, and ideally repeat it in P-Asserted-Identity. Use E.164 digits only — no display name, no spaces, no + is required.
From: <sip:493090182000@sip.telprivo.com>;tag=a1b2 P-Asserted-Identity: <sip:493090182000@sip.telprivo.com> To: <sip:4915112345678@sip.telprivo.com>
In softphones, set the "Auth user" and the "Caller ID / outbound number" fields separately — PhonerLite handles this cleanly and is what we recommend for testing.
Selecting a Premium CLI route
Premium routes are reached with a tech prefix in front of the destination. Same trunk, same credentials — only the dialled string changes.
| Germany Premium CLI | 1112 + 49… |
| Netherlands Premium CLI | 111 + 31… |
| Standard route | no prefix |
Example: to call 4930901820 over the German Premium route, dial 11124930901820. The rate deck in your portal lists every premium prefix explicitly.
CLI policy
You must be entitled to use the number you present, and it must be reachable for callbacks. Random, sequential or spoofed CLI triggers automatic suspension of the trunk and, on repeat, of the account — no refund for the traffic involved. This is what keeps our Premium routes premium.
Codecs & media
Supported codecs, in preference order: G.711 A-law, G.711 µ-law, G.729, Opus. DTMF is negotiated as RFC 2833 (out-of-band) by default; SIP INFO available on request.
SRTP over TLS is available on port 5061 for privacy-sensitive deployments. Media is anchored on our SBC; direct media is disabled.
DID numbers
Inbound numbers are ordered self-service from Portal → Numbers. The catalogue covers Germany, the United States, France, Austria, Switzerland, the UK, the Netherlands, Belgium, Italy, Spain, Poland and Canada, in local, national, mobile and toll-free flavours.
Ordering & delivery
- Pick a country and number type in the portal.
- The one-off activation fee plus the first month are debited from your prepaid balance instantly.
- Delivery takes 4-12 hours in most countries; if a range is temporarily out of stock we tell you in the order ticket.
- Once live, the number appears in Portal → Numbers with its routing target.
Billing & routing
Prices shown are per number, per month, plus a one-time activation fee. Renewals are debited automatically from your balance on the monthly anniversary — keep funds available or enable auto-topup.
Inbound calls are delivered to your SIP trunk over the same SBC as outbound, or forwarded to a PSTN number of your choice. Change the target any time from the portal.
Cancel before the renewal date to avoid the next month. Activation fees are non-refundable once the number is allocated by the underlying carrier.
No documents are required to order any number in our catalogue — no ID, no address proof, no company registration. You fund your balance and order; we provision.
Billing & top-up
Prepaid, per-second billing with no rounding penalty (1s minimum, 1s increment). Every call generates a CDR available in Portal → CDRs and via API.
Top up in Bitcoin, USDT (TRC20) or Ethereum. Payments are processed by Plisio; funds are credited to your MBilling balance automatically once the transaction confirms on-chain.
Auto-topup can be enabled from Portal → Funds → Auto-topup — we generate a fresh crypto invoice whenever your balance falls below the threshold you set.
Rate deck
Rates are quoted in USD per minute and use longest-prefix matching. Routes are classified as either Standard or Premium CLI — the latter guarantees caller ID delivery contractually.
How longest-prefix matching works
We always bill the most specific prefix that matches the dialled number. If your rate deck contains 49 (Germany, $0.0120) and 4915 (Germany mobile, $0.0480), a call to 4915112345678 is billed at the mobile rate, because 4915 is longer and still matches.
Premium routes live behind their own prefixes (for example 111249), so they never collide with the standard deck and you always know which route class you bought.
Rate changes are notified 7 days in advance for decreases and 14 days in advance for increases. Historical rate decks are available on request, and the live deck for your account is always visible in Portal → Rates with a CSV export.
Quality & monitoring
Every route is probed continuously and scored on three numbers. Knowing what each one means saves hours of guesswork when a campaign underperforms.
Answered ÷ attempted calls. Healthy retail-style traffic on Premium CLI sits at 35-55%. A sudden drop of 10+ points on one destination is worth a ticket.
If ACD collapses below ~20s while ASR stays high, suspect false answer supervision. Send us five Call-IDs and we re-route you.
Under 3s on direct European routes, up to 6s on long-haul. Consistently higher means extra hops — we can move you to a shorter path.
Traffic is monitored 24/7 for loops, short-duration spikes and fraud patterns. If we detect an anomaly we open a ticket on your account rather than silently blocking traffic — except for confirmed fraud, where the trunk is suspended immediately.
REST API
Generate a scoped API key from Portal → API Keys. Requests are authenticated via Authorization: Bearer <prefix>.<secret> against https://telprivo.com/api/public/v1.
Endpoints
- GET /balance
- GET /sms/quote · POST /sms/send · GET /sms/messages
- GET /numbers · POST /numbers/order · GET /cdrs
- POST /funds/topup (crypto invoice) · GET /funds/deposits
Scopes, rate limits, idempotency and error codes are documented in the REST API docs. Questions: office@telprivo.com.
Troubleshooting
Source IP not whitelisted on the trunk, or userpass credentials wrong.
Number not in E.164 (leading + or missing country code).
Insufficient balance. Top up in Portal → Funds.
All routes to that destination are temporarily degraded. Retry or open a ticket.
Called party is busy — pass-through from the destination carrier.
Caller hung up before the call was answered.
Before you open a ticket
- Note the exact Call-ID and timestamp (UTC) of a failing call — it lets our NOC pull the SIP trace in seconds.
- Capture a sngrep or pcap of the INVITE and the response, if you can.
- Confirm the destination in E.164, whether you sent a tech prefix, and which CLI you presented.
- Check Portal → CDRs first: a call that never reached us will not appear there, which usually points to firewall or routing on your side.
Still stuck? Open a ticket at Portal → Support or email office@telprivo.com. NOC is 24/7, and live chat is on every page of this site.
FAQ & glossary
No. There is no monthly minimum, no setup fee for termination and no contract. You pay for the seconds you use, from a prepaid balance.
Termination trunks are provisioned automatically the moment you create them — typically under 60 seconds. DID numbers are delivered in 4-12 hours in most countries.
Fund the smallest amount you are comfortable with (from $10 in crypto) and run test calls. We do not offer free test credit, because it is the single most abused feature in wholesale.
Crypto (BTC, USDT-TRC20, ETH) is instant and self-service. Bank transfer in EUR/USD is available for accounts spending above $2,000/month — ask in a ticket.
Yes, on Premium CLI routes with a valid, reachable CLI you are entitled to use. Spoofed, random or invalid CLI leads to immediate suspension.
Active calls are cut when the balance is exhausted. Set an auto-topup threshold so a fresh invoice is generated before that happens.
Answer-Seizure Ratio — answered calls divided by attempted calls, in percent. The headline indicator of route quality for a given traffic profile.
Average Call Duration. Short ACD alongside high ASR usually signals false answer supervision (FAS) somewhere in the chain.
Post-Dial Delay — time between your INVITE and ringback. Long PDD normally means extra hops between us and the terminating carrier.
Calling Line Identification — the caller ID you present. A Premium CLI route contractually guarantees it is delivered untouched to the called party.
Digits prepended to the destination number that select a specific route class instead of the default one, e.g. 1112 for Premium CLI Germany.
Call Detail Record — one row per call with timestamps, destination, duration, rate and cost. Downloadable as CSV from the portal.