Use a Sautikit Number as a SIP Trunk for Your PBX
Give an office PBX a Kenyan number as a register-based SIP trunk. The settings any PBX needs, how calls and caller ID work, and what it costs.
A Sautikit number works as a SIP trunk for any PBX that supports register-based SIP trunks, the kind where the PBX signs in to the provider with a username and password. Claim a number (KES 116/month including VAT, no setup fee), add a device under its SIP & Devices tab, and enter the details in your PBX's trunk settings: server sip.sautikit.com, port 5080, transport UDP, and the generated username and password. Incoming calls to the number are free; outgoing calls cost KES 3.00 a minute, billed per second.
The PBX signs in to Sautikit the same way a desk phone does: one username, one password, one registration. Sautikit then sends calls for your number to the PBX, and the PBX sends outgoing calls to Sautikit. Your PBX keeps doing everything it already does: extensions, ring groups, menus, call transfer between staff.
A few things follow from that:
In the Sautikit console, open Numbers, pick the number, go to the SIP & Devices tab and click + Add device. Label it with the PBX's name. Copy the username and password straight away; if you lose them, click SIP setup on the device's row to see them again.
From the API, one call creates the credential. The response carries username, password, host, port, transport and realm:
curl -s -X POST "https://api.sautikit.com/v1/numbers/$NUMBER_ID/sip-credentials" \
-H "Authorization: Bearer $SAUTIKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"label": "Office PBX"}'The same call in JavaScript, printing what to type into the PBX:
const res = await fetch(
`https://api.sautikit.com/v1/numbers/${process.env.NUMBER_ID}/sip-credentials`,
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SAUTIKIT_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ label: "Office PBX" }),
},
);
const cred = await res.json();
console.log(`Server: ${cred.host}`);
console.log(`Port: ${cred.port}`);
console.log(`Transport: ${cred.transport}`);
console.log(`Username: ${cred.username}`);
console.log(`Password: ${cred.password}`);The full request and response are in the API reference.
Field names differ between PBX products. These are the values, with the names you are most likely to see:
| PBX field | Value |
|---|---|
| Trunk type | register trunk (registration with username and password) |
| Server, host, registrar, proxy or SIP server | sip.sautikit.com |
| Port | 5080 |
| Domain or realm | sip.sautikit.com |
| Transport | UDP |
| Username, user ID or account | your generated username |
| Authentication name or auth ID | your generated username (the same value) |
| Password or secret | your generated password |
| Outbound proxy | leave empty |
| Register | yes |
Port 5080 is the setting most often wrong. 5060 is the usual SIP default, and many PBXs fill it in for a new trunk. Sautikit listens on 5080, and a trunk left on 5060 never registers. If your PBX has no separate port field, write the server as sip.sautikit.com:5080.
0 or +254) out through this trunk, and allow the right extensions to use it.For worked examples with exact screens, see:
From an extension, dial your own mobile number through the outbound route. Your mobile should show your Sautikit number. Then call the Sautikit number from your mobile and confirm it reaches the destination in your inbound route.
The trunk never registers. Check the port is 5080 and the transport is UDP. Check the server and domain are sip.sautikit.com with no sip: prefix. Check the PBX can reach the internet and that a firewall is not blocking outgoing UDP.
Registration is refused. The password is wrong or has a stray space. Copy it again with SIP setup on the device's row. The username and the authentication name must both be the generated username, not the phone number.
Another device on the number dropped off. Each credential is for one device. Give the PBX its own credential and every other phone or app its own.
Adding a device fails. Each number has a device limit. The SIP & Devices tab, and the active_count and limit fields of the API's list response, show how many are in use. Revoke a device you no longer use to free a slot.
Outgoing calls fail with the trunk registered. Check the outbound route and dial pattern, and that your wallet has credit.
A trunk where your PBX signs in to the provider with a username and password, like a phone does, instead of the provider sending calls to a fixed IP address. Because the PBX starts the connection, it does not need a fixed IP address.
3CX sells the PBX software but not phone numbers or call minutes; its own headline is "Bring your Own Trunk & Numbers". Sautikit provides the number, using the register-trunk settings on this page, if your 3CX setup accepts a register-based trunk from a provider. See Sautikit vs 3CX for how costs compare.
There is no separate trunk fee. You pay for the number, KES 116 a month including VAT, with no setup fee. Incoming calls are free. Outgoing calls are KES 3.00 a minute, billed per second from when the call connects.
Not necessarily. A Sautikit number can forward calls to several phones at once or one after another, with voicemail if nobody answers, and desk phones and softphones can register to it directly.
No. Outgoing calls show the Sautikit number the trunk belongs to. To show a different number, claim that number on Sautikit and route those calls through its own trunk.
Staff who are not near the PBX can use SautiKit Phone, which needs no SIP setup: sign in and the number works. It runs on the web, Android and Windows, with iOS and macOS in beta on TestFlight.