The ClutchCall gateway can add to every outbound SIP INVITE the regulatory headers that US/EU PSTN carriers require. The SDK does not expose these headers as options. You configure them on the trunk (AddTrunk). The gateway then applies them automatically to calls on that trunk.

STIR/SHAKEN

The gateway signs outbound calls with a PASSporT JWT (RFC 8224 / 8225) and attaches it as an Identity header. A typical signed INVITE looks like:
The PASSporT attest value is the trunk’s configured attestation level: Set the per-trunk default through AddTrunk extras. For tenants on shared infrastructure, set it in the gateway’s deployment config. The gateway reads the signing certificate (x5u URL) from cert_path. Rotate it via ReloadCertificates. The gateway validates inbound SIP INVITEs symmetrically. It checks the Identity header against the published x5u cert. The result shows in the CallEvent.status string (STIR_VERIFIED, STIR_FAILED, STIR_MISSING).

P-Asserted-Identity (PANI)

For carrier interconnects that prefer PANI over STIR, the gateway also sends an RFC 3325 P-Asserted-Identity header that carries the verified caller-id:
PANI is mutually exclusive with Privacy: id. The gateway switches automatically if the SDK’s OriginateRequest flags the call as caller-id-restricted.

PIDF-LO geolocation

For E911-style emergency routing, the gateway can attach a Presence Information Data Format — Location Object (RFC 4119, RFC 5491). It attaches the object as a SIP body part. Configure it on the trunk:
The resulting multipart/mixed INVITE body:
A SIP Geolocation header points at the cid: of the PIDF-LO part. The gateway also adds Geolocation-Routing: yes for emergency-routing carriers.

Per-call overrides

The standard OriginateRequest does not carry any of these fields. This is deliberate: SDK callers must not set regulated metadata ad hoc. Sometimes you must override the trunk default for a single call (for example, a softphone that roams to a different civic address). In that case, use ExecuteDialplan with action ANSWER. Supply the override via app_args as a JSON blob:
The gateway applies the override before the INVITE leaves the wire.

Disabling

In lab / development environments, regulatory headers can cause noise in test SBCs. There, set regulatory.enabled: false in the gateway config. Do not disable this in production. Most carriers silently degrade calls without a valid Identity header. The call gets lower attestation and shows as “Spam Likely” on receiving handsets.