Issue subscriber credentials at activation, reuse KYC across carrier partners, and build loyalty tiers that reduce churn — without storing subscriber PII.
Use this file to discover all available pages before exploring further.
Carriers run identity verification for every new subscriber, but that verified status stays locked inside each operator’s silo. A prepaid user who passes KYC at one carrier starts from zero at a roaming partner. AIR Kit lets you issue a subscriber credential at activation — so your KYC investment travels with the user across carriers, MVNOs, and partner services.
Subscriber credentials — Issue a verified subscriber attestation the moment a user activates; roaming and partner carriers accept it without re-running identity checks
Plan tier credentials — Issue a “Premium” or “Business” tier badge that unlocks partner benefits automatically, with no bilateral API required
Device ownership proofs — Issue a verified device credential (IMEI-bound) for device insurance, warranty, and repair partner integrations
Churn intervention — Trigger a “Loyalty Reward” credential when a subscriber hits a retention milestone; partner services can verify and honour the benefit
Roaming partner verification — Let partner carriers verify a subscriber’s KYC status via ZK proof; no PII crosses operator boundaries
Age-gated service access — Gate adult content, gambling, or age-restricted add-ons behind an age credential without storing birthdates
Never include MSISDN (phone number), IMSI, full name, or address in credentialSubject. Store only attestations and derived facts — isOver18, kycLevel, planType. ZK proofs let partner services confirm subscriber attributes without receiving any underlying data.
Step 3 — Verify subscriber KYC at a roaming partner
The roaming partner integrates AIR Kit as a verifier. They call one SDK method — they never receive subscriber PII, only a COMPLIANT/NON_COMPLIANT result plus the KYC level.
// roaming-partner.js (frontend — partner carrier's app)import { AirService } from '@mocanetwork/airkit';import { AirService, BUILD_ENV } from "@mocanetwork/airkit";const airService = new AirService({ partnerId: process.env.ROAMING_PARTNER_ID });await airService.init({ buildEnv: BUILD_ENV.PRODUCTION });async function verifyRoamingSubscriber() { const result = await airService.verifyCredential({ programId: process.env.ROAMING_VERIFY_PROGRAM_ID, // Verifier program rule: kycLevel === "enhanced" OR "full" // The verifier sees only: COMPLIANT / NON_COMPLIANT // No MSISDN, no name, no raw subscriber data }); if (result.status !== 'COMPLIANT') { throw new Error('SUBSCRIBER_KYC_REQUIRED'); } return result;}
The roaming partner or MVNO receives only a boolean result from the ZK proof. No MSISDN, no IMSI, no subscriber identity document data crosses operator boundaries.
The repo uses fintech and loyalty app names (KYC provider, lending platform, airline, hotel). The same code adapts to telco (carrier, roaming partner) via schema and branding — see each example’s schema.json and the README’s “Adapting to Your Vertical” section.
KYC Passport — Issuer
KYC provider app: issues credentials once; user carries the proof to other platforms.
KYC Passport — Verifier
Lending platform app: verifies the credential and accepts the proof without re-running KYC.
VIP Status Portability — Issuer
Airline loyalty app: issues tier credential; user carries status to partner brands.
VIP Status Portability — Verifier
Hotel chain app: verifies tier and grants equivalent perks (e.g. room upgrade, lounge).