What is custom Linphone and PJSIP development?

Custom Linphone development means building a branded, white-label VoIP dialer app using the liblinphone SDK — fully customised with your logo, colours, features, ZRTP encryption, push notifications, and CRM integrations for iOS and Android. PJSIP customization means building a custom SIP dialer from scratch on the PJSIP/PJSUA2 library for maximum control over call routing, codec selection, and business logic. CelloIP Technologies has delivered 25+ production Linphone and PJSIP mobile dialers.

Linphone vs PJSIP comparison

Linphone is better for white-label products (faster development, ZRTP native, Flutter support). PJSIP is better for enterprise apps requiring custom business logic, embedded devices, or unusual SIP behaviours. Both support iOS, Android, TLS, SRTP, push notifications, and all major SIP servers.

LinphonePJSIPWhite LabelMobile VoIPSIP DialeriOSAndroid

Custom Linphone & PJSIP Development:
The Complete Guide to White-Label VoIP Dialer Apps

Everything you need to know about custom Linphone app development, PJSIP mobile dialer customization, liblinphone SDK integration, ZRTP/SRTP encryption, push notifications, CRM integration, and building production white-label SIP softphones for iOS and Android — from a team that has delivered 25+ apps.

Kaushik Parmar

Founder & VoIP Architect

18 min readApril 10, 20263,500+ words

25+

Apps Delivered

15+

Countries

8 wks

Typical Delivery

100%

Source Code Yours

What Are Linphone and PJSIP?

Linphone and PJSIP are the two most widely used open-source SIP stacks for building custom mobile VoIP dialers. Both are production-proven, run on iOS and Android, and support enterprise-grade security — but they serve different development needs.

Linphone / liblinphone

By Belledonne Communications · GPLv3

A complete SIP softphone + high-level SDK. Provides a ready-to-customise app for Android, iOS, Windows, macOS, and Linux. The liblinphone API handles all SIP signalling, media, encryption, push notifications, and conferencing — so your team focuses on UI and business logic.

  • Maven (Android) / SPM (iOS) integration
  • ZRTP + post-quantum CRYSTALS-KYBER
  • Native video conferencing via Flexisip
  • MSRP instant messaging built-in
  • Flutter dart wrapper available

Best for

White-label products · Healthcare · Enterprise UCaaS · SaaS embed

PJSIP / PJSUA2

By Teluu Inc. · GPLv2

A low-level, highly portable SIP and media library. No default UI — your team builds everything. Provides granular control over SIP RFC behaviour, codec selection, ICE/NAT traversal, and media routing. The preferred foundation for complex enterprise apps, embedded devices, and custom call-flow logic.

  • Full codec set including hardware H.265
  • Runs on RTOS / embedded platforms
  • Fine-grained SRTP & ICE control
  • AEC, AGC, noise suppression built-in
  • React Native module available

Best for

Complex call logic · Call centres · Embedded VoIP · Custom SIP behaviour

liblinphone SDK Architecture

liblinphone is structured in layers — your app sits on top of a complete real-time communications stack. Understanding the layers helps when deciding which features require custom integration work.

Your Application

Custom UI · Brand identity · Business logic

liblinphone API

Java/Kotlin · Swift · C# · Python · Dart wrappers

SIP Signalling (belle-sip)

REGISTER · INVITE · BYE · REFER · NOTIFY · SUBSCRIBE

Media (mediastreamer2)

Audio/Video codecs · Jitter buffer · AEC · AGC · Transcoding

Encryption

ZRTP · SRTP-DTLS · SDES · TLS 1.3 · CRYSTALS-KYBER

NAT / Transport

ICE · STUN · TURN · UDP · TCP · TLS · WebSocket

Android

Maven AAR

iOS

Swift Package Manager

Flutter

Dart wrapper

Windows

NuGet package

PJSIP / PJSUA2: Architecture & Integration

PJSIP gives developers granular control at every layer. Unlike liblinphone's high-level API, PJSUA2 exposes the full SIP/media stack — codec routing, ICE behaviour, SRTP policy, call-flow hooks — making it the foundation of choice for enterprise call centres, embedded VoIP devices, and apps with non-standard SIP requirements.

PJSUA2 Stack Layers

Your Application (Kotlin/Swift/JS)

Custom UI · Business logic · CRM hooks

PJSUA2 High-Level API

Account · Call · Buddy · Media classes

PJSIP Core (SIP stack)

RFC 3261 · INVITE · REFER · SUBSCRIBE

PJMEDIA (Media Engine)

AEC · AGC · Jitter buffer · Codecs

PJNATH (NAT Traversal)

ICE · STUN · TURN · DTLS-SRTP

PJSIP Customization Includes

PJSUA2 Account Config

SIP domain, credentials, transport (TLS/UDP), STUN server, re-registration interval

Audio Device Manager

Earpiece / speaker / BT headset routing, echo cancellation tuning, AGC levels

SRTP Policy

DTLS-SRTP or SDES key exchange, AES-128/256 cipher selection, mandatory vs optional

ICE / NAT Traversal

STUN binding, TURN relay, ICE candidate gathering — works through CGNAT & firewalls

CallKit / ConnectionService

Native OS calling UI on iOS (CallKit) and Android (Telecom API) — no custom call screen needed

Custom Call Event Hooks

on_incoming_call, on_call_state, on_call_media_state — insert CRM lookup, recording, logging

PJSIP Android — Kotlin Account Registration

Kotlin
// PJSUA2 Kotlin — Configure SIP Account with TLS + SRTP
val accountConfig = AccountConfig().apply {
    idUri = "sip:[email protected]"
    regConfig.registrarUri = "sip:yourdomain.com"
    regConfig.registerOnAdd = true

    // TLS transport for encrypted signalling
    sipConfig.proxies.add("<sip:yourdomain.com;transport=TLS;lr>")

    // SRTP: mandatory DTLS-SRTP (WebRTC-compatible)
    mediaConfig.srtpUse = pjmedia_srtp_use.PJMEDIA_SRTP_MANDATORY
    mediaConfig.srtpSecureSignaling = 0 // DTLS-SRTP (no SDP key exchange)

    // NAT traversal via ICE + STUN
    natConfig.iceEnabled = true
    natConfig.stunServer.add("stun.yourdomain.com")
}

// Register inbound call handler
object : Account() {
    override fun onIncomingCall(prm: OnIncomingCallParam) {
        val call = MyCall(this, prm.callId)
        // CRM lookup before answering
        lookupCRM(call.remoteUri) { contact ->
            showIncomingCallUI(contact, call)
        }
    }
}

Android

JNI / PJSUA2 Java

iOS / Swift

Objective-C wrapper

React Native

react-native-pjsip

Windows / Linux

C++ / Python bindings

Custom Softphone vs Off-the-Shelf: Why Not Zoiper or Bria?

Many businesses consider commercial softphones like Zoiper, Grandstream Wave, Bria, or Microsip before commissioning a custom build. Here's the honest comparison — and why 95% of SaaS, MVNO, and enterprise clients ultimately choose custom.

CapabilityZoiper / Grandstream / BriaCustom Linphone / PJSIP App
Your brand on App Store / Play❌ Published under vendor name✅ 100% your brand, your listing
White-label branding❌ Vendor logo always visible✅ Logo, colours, fonts, icons — all yours
CRM screen-pop on inbound❌ Not available✅ Salesforce, HubSpot, Zoho, custom API
Prepaid balance & top-up❌ Not available✅ Real-time billing integration
Remote provisioning via URL⚠️ Limited (Zoiper only)✅ Full XML/JSON config, QR code activation
Custom call routing logic❌ Fixed behaviour✅ Any logic — CRM lookup, balance check, IVR
ZRTP end-to-end encryption⚠️ Zoiper Pro only ($)✅ Native liblinphone — included
Post-quantum CRYSTALS-KYBER❌ None✅ liblinphone 5.2+ — first in industry
Subscription cost (per user)💰 $1–5/user/month ongoing✅ One-time build cost, no per-user fee
Source code ownership❌ Closed source✅ Full source handover on delivery
Custom features (recording etc.)❌ Fixed feature set✅ Any feature you can spec
Google Play / App Store control❌ Vendor controls listing✅ Your developer account, your control

$0

Per-user monthly fees

vs $1–5/user/month for Zoiper/Bria at scale

100%

Brand ownership

Your name on the App Store listing, forever

Feature extensibility

Add any feature after launch with no vendor approval

Linphone vs PJSIP: Full Technical Comparison

12 criteria compared across both stacks — based on real project experience, not spec sheets.

CriteriaLinphone / liblinphonePJSIP / PJSUA2Winner
Setup SpeedMaven / CocoaPods / SPMJNI bindings / Obj-C wrappersLinphone
Default UIFull app (fully customisable)None — build from scratchLinphone
API LevelHigh-level (simpler)Low-level (more control)
ZRTP E2E encryptionNative ✓Via ZRTP4PJ add-onLinphone
Post-Quantum (KYBER)Yes (v5.2+) ✓Not availableLinphone
Video ConferencingYes via Flexisip ✓Custom bridging requiredLinphone
Instant MessagingMSRP + SIP MESSAGE ✓SIP MESSAGE onlyLinphone
Custom Business LogicLimited (high-level API)Full control ✓PJSIP
Codec FlexibilityOpus, G.711, G.722, H.264Full set + hardware H.265 ✓PJSIP
Embedded / IoT supportLimitedYes — runs on RTOS ✓PJSIP
Flutter supportYes (dart wrapper) ✓Via community dart-sip-uaLinphone
Development time8–10 weeks typical10–14 weeks typicalLinphone

What Custom Linphone Development Includes

A production-grade custom Linphone app is far more than a logo change. Every layer — UI, features, security, integrations, push notifications — is built to your exact specification.

White-Label UI

Full rebrand — logo, colours, fonts, icons, app name, Play/App Store listing

ZRTP End-to-End Encryption

True E2E audio encryption — server cannot decrypt calls

Background Push Calls

APNs VoIP + CallKit (iOS) · FCM + ConnectionService (Android)

Remote Provisioning

Zero-touch SIP config via URL — no manual setup for end users

HD Voice & Video

Opus wideband, H.264 hardware, VP8 — crystal-clear audio/video

CRM Integration

Screen-pop from Salesforce, HubSpot, Zoho on inbound calls

Conference Calling

Multi-party audio/video via Flexisip or Asterisk conference bridge

Multi-Account SIP

Register multiple SIP accounts, switch identities mid-session

Call Recording

Server-side or client-side recording with pause/resume controls

Multi-Language

Localisation in 20+ languages including RTL (Arabic, Hebrew)

Post-Quantum Encryption

CRYSTALS-KYBER in liblinphone 5.2+ — quantum-safe calls

NAT Traversal

ICE, STUN, TURN — calls through firewalls, CGNAT, enterprise proxies

Audio & Video Codec Support

Codec selection directly affects call quality, bandwidth usage, and compatibility with your SIP server. CelloIP configures the optimal codec priority list for your specific use case — HD voice for enterprise, low-bandwidth for mobile data networks, hardware H.264 for video.

Audio Codecs

CodecBitrateUse Case
Opus6–510 kbpsBest overall — HD voice, adaptive bitrate
G.71164 kbpsPSTN compatibility, call centres
G.72264 kbpsWideband HD voice, enterprise PBX
G.7298 kbpsLow bandwidth (licence required)
iLBC15 kbpsPacket-loss resilient, mobile networks
Speex2–44 kbpsOpen-source narrowband/wideband

Video Codecs

CodecResolutionNotes
H.264Up to 1080pHardware accel iOS + Android
H.265Up to 4KPJSIP only — ultra-efficient
VP8Up to 720pWebRTC compatible, royalty-free
VP9Up to 4KBetter compression than VP8
AV1Up to 4KNext-gen, limited mobile support

CelloIP Recommended Configuration

Mobile Data (3G/4G/5G)

Opus 12–32 kbps → G.711 fallback

Enterprise Wi-Fi / LAN

Opus 64 kbps → G.722 → G.711

Video Calling

H.264 (HW) → VP8, Opus audio

4-Layer Security Stack

Enterprise Linphone deployments use a layered encryption model. Each layer adds a protection dimension — from SIP credential encryption to quantum-safe media keys.

Layer 4 — Post-Quantum

CRYSTALS-KYBER (Linphone 5.2+)

Active

Future-proof key exchange resistant to quantum computer attacks

Layer 3 — ZRTP

ECDH X25519/X448 + AES-256

Active

End-to-end media encryption. Even your SIP server cannot decrypt calls

Layer 2 — SRTP

AES-128/256 · DTLS-SRTP · SDES

Active

RTP media packets encrypted. Stops packet-capture audio interception

Layer 1 — TLS 1.3

SIP signalling over TLS

Active

Encrypts REGISTER, INVITE, credentials. Prevents SIP credential theft

Industry First: Post-Quantum VoIP Encryption

liblinphone 5.2+ is the world's first open-source VoIP library to implement CRYSTALS-KYBER (NIST PQC standard) — protecting call audio against future quantum computer decryption attacks. Mandatory for government, defence, and healthcare deployments handling sensitive communications.

Platform & Framework Support

CelloIP delivers custom Linphone and PJSIP dialers for every major platform and cross-platform framework.

Android

Kotlin / Java

SDK:Maven AAR
Push:FCM + ConnectionService

iOS

Swift

SDK:Swift Package Manager
Push:APNs VoIP + CallKit

Flutter

Dart

SDK:dart wrapper (Linphone)
Push:Via native channel

React Native

JavaScript

SDK:react-native-pjsip
Push:Via native module

Windows

C# / C++

SDK:NuGet / CMake
Push:WNS (optional)

macOS / Linux

Swift / C++

SDK:CMake build
Push:Native notifications

Push Notification Call Flow

Without push, users miss calls when the app is backgrounded. CelloIP implements production-grade wake-up for both platforms so calls always ring — even on a locked screen.

iOS — APNs VoIP + CallKit

1

Caller dials your extension

Asterisk / FreeSWITCH

2

Server sends APNs VoIP push

Apple Push Server

3

PushKit wakes app (same run loop)

iOS OS

4

App posts CallKit incoming call

Your Linphone App

5

Native lock-screen call UI appears

CallKit

6

User accepts → SIP re-registers → call connects

liblinphone

Android — FCM + ConnectionService

1

Caller dials your extension

Asterisk / FreeSWITCH

2

Server sends FCM high-priority data message

Firebase Cloud Messaging

3

FCM wakes app headless isolate

Android OS

4

Foreground service started immediately

Your Linphone App

5

ConnectionService shows system call screen

Android Telecom API

6

User accepts → SIP registers → call bridges

liblinphone

Remote Provisioning: Zero-Touch Deployment

Eliminate manual SIP setup. Users activate the app by scanning a QR code or clicking a magic link — the server delivers all configuration automatically.

User installs app

From App Store / Google Play under your brand

Scans QR / magic link

One-time activation token issued by your admin portal

App fetches config

SIP domain, credentials, codecs, TURN, push tokens — all delivered

Config delivered via remote provisioning URL

SIP proxy & domain
Transport (TLS/UDP/TCP)
STUN / TURN server
Codec priority list
ZRTP preference
Push notification config
Video call on/off
UI theme parameters

Integration Ecosystem

A custom Linphone or PJSIP dialer connects to your entire business stack — not just a SIP server.

SIP Server Compatibility

  • Asterisk 20/21 (PJSIP endpoint)
  • FreeSWITCH 1.10.x (Sofia-SIP)
  • OpenSIPS 3.x / Kamailio 5.x
  • FusionPBX · FreePBX · 3CX
  • Hosted SIP: Twilio, Vonage, Plivo

CRM & Business Apps

  • Salesforce — screen-pop + call log
  • HubSpot — contact lookup on dial
  • Zoho CRM — activity logging
  • Freshdesk — ticket creation
  • Custom REST API (any system)

Billing & Prepaid

  • Balance display before/during call
  • Real-time CDR-based deduction
  • Low-balance warning + top-up
  • A2Billing · CGRateS · custom engine
  • Payment gateway integration

Directory & Identity

  • LDAP / Active Directory sync
  • Device address book integration
  • Corporate extension directory
  • BLF presence subscription
  • SSO via SAML / OAuth2

Who Needs Custom Linphone Development?

Custom Linphone and PJSIP dialers serve every industry that needs secure, branded mobile voice communication.

Healthcare

Secure patient-provider calls with E2E encryption and full HIPAA compliance.

HIPAA-compliantZRTP encryptionTelemedicine

Enterprise UCaaS

Branded softphone integrating with corporate PBX, CRM, and AD.

CRM integrationDirectory syncBLF presence

MVNO / ITSP

Subscriber-facing white-label dialer with billing integration.

Prepaid balanceMulti-languageTop-up flow

Call Centres

Agent softphone with real-time queue monitoring and disposition logging.

CRM screen-popCall recordingQueue status

SaaS / CPaaS

Embed voice calling into your SaaS product via liblinphone SDK.

SDK embedREST APIWebRTC bridge

Government / Defence

CRYSTALS-KYBER quantum-safe communications for high-security deployments.

Post-quantumCert pinningObfuscated SIP

Our 6-Step Delivery Process

From brief to App Store in 8–11 weeks. Every milestone is fixed-price with source code handover on completion.

01

Discovery Call

Week 1

Technical brief, SIP server audit, feature scope, NDA signed Day 1.

02

UI/UX Design

Weeks 2–3

Full-fidelity Figma mockups for every screen in your brand identity.

03

SDK Integration

Week 4

liblinphone or PJSIP integrated, SIP registration verified with your server.

04

Core Development

Weeks 5–8

All features, push notifications, CRM APIs, remote provisioning built.

05

QA & Device Testing

Weeks 9–10

20+ device models, 3G/4G/5G/Wi-Fi, security pen-test, edge cases.

06

App Store Submission

Week 11

Google Play + Apple App Store submission. Full source handover.

Transparent Pricing

Fixed-price milestone contracts. No hourly billing surprises. Source code yours on final payment.

Starter

From $3,500

Typical delivery: 8 weeks

  • Custom branding & UI
  • HD Voice (Opus/G.711)
  • Single SIP account
  • Push notifications (iOS + Android)
  • Remote provisioning
  • App Store submission
  • 60-day warranty
Get Quote
Most Popular

Professional

From $7,500

Typical delivery: 10–12 weeks

  • Everything in Starter, plus:
  • Video calling (H.264)
  • ZRTP end-to-end encryption
  • Multi-account SIP
  • CRM screen-pop integration
  • Call recording
  • Conference calling
  • Admin portal API
Most Popular

Enterprise

From $12,000

Typical delivery: 12–16 weeks

  • Everything in Professional, plus:
  • Post-quantum CRYSTALS-KYBER
  • Prepaid billing integration
  • Custom call routing logic
  • LDAP / Active Directory
  • White-label desktop app
  • SLA maintenance contract
  • Dedicated Slack channel
Contact Us

Hire Linphone & PJSIP Developers

CelloIP's dedicated Linphone and PJSIP developers are available for fixed-price project builds, dedicated monthly engagements, or team augmentation. All developers have shipped production VoIP dialer apps on iOS and Android.

Fixed-Price Project

Full app from specification to App Store. Milestone-based payments, fixed scope, source code on delivery.

  • Discovery → Design → Build → QA → Launch
  • NDA signed on Day 1
  • 48-hr quote turnaround
Get Project Quote
Most Popular

Dedicated Developer

Hire a dedicated Linphone/PJSIP developer embedded in your team. Full-time or part-time, month-to-month.

  • From $25/hr · $4,000/month
  • Daily standups, direct Slack access
  • 30-day trial, cancel anytime
Hire VoIP Developer

Team Augmentation

Extend your existing mobile or backend team with VoIP-specialist engineers — iOS, Android, Flutter, or backend.

  • 2–8 developers available immediately
  • Match your existing tools & workflow
  • IP fully owned by your company
Discuss Your Team

Frequently Asked Questions

What is the difference between Linphone and PJSIP?

Linphone (liblinphone) is a full-featured VoIP SDK providing a high-level API for calls, video, messaging, ZRTP encryption, and push notifications out of the box. PJSIP is a lower-level SIP and media library with no default UI, giving developers maximum control over call logic and SIP behaviour. Linphone is faster to customise; PJSIP suits complex enterprise applications with custom routing logic.

Can I publish a custom Linphone app under my own brand on App Store and Google Play?

Yes. You need a commercial licence from Belledonne Communications for closed-source distribution of a Linphone-based app. CelloIP handles the licence negotiation and all App Store / Google Play submission requirements as part of the project.

Does the app receive calls when the phone is locked?

Yes, via push notifications. CelloIP implements APNs VoIP push + CallKit on iOS and FCM high-priority push + ConnectionService on Android, so incoming calls ring on locked devices with a native system calling UI — no persistent SIP socket required.

What SIP servers are compatible?

Both Linphone and PJSIP apps are fully SIP RFC 3261 compliant and work with Asterisk, FreeSWITCH, OpenSIPS, Kamailio, FusionPBX, 3CX, Cisco CUCM, and all major hosted SIP providers. CelloIP configures and tests server compatibility during development.

Is ZRTP encryption available?

Yes — ZRTP is native in liblinphone and provides true end-to-end encrypted calls where even your SIP server cannot decrypt the audio. Linphone is also the first open-source VoIP library with CRYSTALS-KYBER post-quantum encryption (v5.2+), protecting against future quantum computer attacks.

How long does development take and what does it cost?

A standard white-label Linphone dialer (custom branding, HD voice, push notifications, single SIP account) takes 8–10 weeks from USD 3,500. A full-featured enterprise app with video, CRM, ZRTP, multi-account, and admin portal ranges from USD 8,000–18,000. Fixed-price milestone contracts guaranteed.

Can the app integrate with our CRM system?

Yes. CelloIP builds CRM screen-pop (caller ID lookup on inbound), automatic call log creation after the call, and contact sync. Supported CRMs include Salesforce, HubSpot, Zoho, Freshdesk, and any system with a REST API.

Do you provide source code?

Yes. Full source code is handed over upon final payment. You own 100% of the IP. CelloIP retains no rights to client-specific deliverables.

Ready to Build Your Custom Linphone App?

CelloIP Technologies has delivered 25+ white-label VoIP dialers. Share your requirements and get a detailed quote within 48 hours.