admin@kovitel.com

eSIM middleware · Viettel M2M

One API for the entire IoT eSIM lifecycle .

Connect your devices to the Viettel M2M network. Manage data pools, activate, suspend and release eSIMs through a REST API, a visual dashboard and realtime webhooks.

Free sandboxPartner approval within 24hAPI keys never reach the browser
KOVITEL / Fleet console
Live

Data pool

500 GB

24% used389 GB left

eSIM active

128

+12 trong 7 ngày

RECENT SIMSVIEW ALL

8984 0480 …0001

meter-hn-014

ACTIVE

8984 0480 …0002

camera-hcm-07

ACTIVE

8984 0480 …0003

tracker-dn-21

SUSPENDED

Webhook

SIM_STATUS_CHANGED · 200 OK

REST API

x-api-key

Queue

BullMQ · Redis

Webhook

HMAC-SHA256

Telco

Viettel M2M

Operate eSIMs, not spreadsheets

IoT SIM management should not be an Excel file.

As fleets grow, manual telco portal work becomes a bottleneck. KOVITEL puts the entire eSIM lifecycle into one controlled, stateful, auditable flow.

The old way

Portals, email and scattered spreadsheets

  • Manual work in the Viettel portal for every SIM
  • Excel, email and chat scattered across teams
  • No audit trail when suspending or releasing SIMs
  • No visibility into which jobs ran or got stuck

With KOVITEL

One middleware layer for engineering and operations

  • One REST API for allocate, activate, suspend, resume and release
  • A shared dashboard for operations, engineering and commercial teams
  • Every action has a jobId, status and audit log
  • Realtime webhooks on status changes and 90% data thresholds
API · Dashboard · Webhook · Audit

Platform capabilities

One middleware layer. Six operational capabilities.

No need to build queues, retries, telco sessions or webhook signing yourself. Focus on devices and customers.

01 / pool

Shared data pool

Track total, used and remaining quota per pool. Expiry alerts, SIM allocation and centralised capacity control.

Demo 500GB pool24%
122.9 GB used389 GB remaining
02 / lifecycle

Controlled eSIM lifecycle

Activate, suspend, resume and release through one endpoint. SIM state, jobs and action history stay in sync.

AVAILABLEACTIVESUSPENDEDRELEASED

Batch up to 500 ICCIDs

Send one request for an entire device batch. The system fans out individual jobs and aggregates progress.

8984…0001DONE
8984…0002DONE
8984…0003PROCESSING

Telemetry & usage

Near-realtime usage lookups, pool-level usage aggregation and alerts when a SIM crosses 90%.

Signed webhooks

Every event carries an HMAC-SHA256 signature, delivery ID and retries. No constant polling required.

SIM_STATUS_CHANGED200
SIM_DATA_THRESHOLD200

Processing flow

The API returns a jobId immediately.
The worker handles the rest.

Telco responses are not always instant. KOVITEL separates the request from telco execution so the API stays fast, the worker controls retries and you do not hold connections open.

01

Partner calls the API

Allocate an eSIM or request a status change. The API authenticates, records a job and returns 202 with a jobId immediately.

02

Worker picks up the job

BullMQ enforces rate limits, retries network failures and protects the Viettel portal from overload.

03

Telco executes

The reverse API calls Viettel M2M; if the portal is unstable, Playwright RPA can take over.

04

Webhook & audit

The result is stored, signed with HMAC and delivered to your system as a webhook.

Status change request
http
PUT /api/v1/sim/8984048000000000001/status
x-api-key: kov_live_…

{ "action": "SUSPEND" }

HTTP/1.1 202 Accepted
{
  "jobId": "8f3c2d1a-9b04-4b6c-…",
  "status": "PENDING",
  "action": "SUSPEND"
}
Job result
json
{
  "jobId": "8f3c2d1a-…",
  "type": "SIM_SUSPEND",
  "status": "COMPLETED",
  "result": {
    "iccid": "8984048000000000001",
    "status": "SUSPENDED",
    "channel": "REVERSE"
  }
}

Three retries with exponential backoff. If the job falls back to RPA, its state and audit trail remain the same.

Use cases

One data pool. Many device models.

From remote meters to surveillance cameras, one eSIM management layer reduces manual work and keeps data costs under control.

01

Smart metering

Electricity & water meters

Manage a fleet of remote meters, suspend SIMs for unpaid bills and monitor pool-level quotas.

02

Video surveillance

Cameras & surveillance

Activate SIMs at installation, track data per camera and release them when devices are retired.

03

Fleet tracking

Logistics & telematics

Batch-activate new device shipments, receive webhooks when SIMs are blocked and query near-realtime usage.

04

Smart agriculture

Smart agriculture

Share a pool across seasonal sensor stations and avoid wasted data outside the growing season.

Developer experience

Integrate in an afternoon.

Plain REST, familiar JSON, OpenAPI docs and runnable examples. No proprietary SDK, no lock-in.

Per-partner API keys

Authenticate with the x-api-key header and rotate keys at any time.

Asynchronous jobs

Receive a jobId immediately, then poll or wait for a webhook — whichever fits your system.

OpenAPI 3.1

A complete contract for Postman, code generators and the API reference.

Signed webhooks

HMAC-SHA256, delivery logs, retries and a test button right in the dashboard.

Read the quickstart
Node.js · fetch
typescript
import { KOVITEL_API_URL, KOVITEL_API_KEY } from './config';

const res = await fetch(
  `${KOVITEL_API_URL}/sim/8984048000000000001/status`,
  {
    method: 'PUT',
    headers: {
      'x-api-key': KOVITEL_API_KEY,
      'content-type': 'application/json',
    },
    body: JSON.stringify({ action: 'SUSPEND' }),
  },
);

const { jobId, status } = await res.json();
// { jobId: "8f3c...", status: "PENDING" }

Base URL

/api/v1

Auth

x-api-key

Rate limit

5 req/s

Pricing

Start small. Scale with your fleet.

Platform pricing scales with pool size and active eSIMs. Viettel telecom charges are quoted separately under the M2M contract.

Sandbox

trial

Free

For engineering teams validating the integration before signing a contract.

  • 1 test data pool
  • 20 demo eSIMs
  • Full REST API & webhook tests
  • API docs + API reference
  • Email support
Create an account
Popular

Business

pool & eSIM volume

Usage-based

Production operations on Viettel M2M with SLA and operational support.

  • Production data pool
  • Unlimited background jobs
  • Webhooks + automatic retries
  • Batch up to 500 ICCIDs / request
  • 99.9% SLA under contract
  • 8x5 support · dedicated channel
Request a quote

Enterprise

custom deployment

Contact us

For companies that need a dedicated pool, deeper integration or private infrastructure.

  • Dedicated pool / quota
  • RPA fallback & private APN
  • SSO, RBAC, audit log
  • VPC / on-prem deployment
  • Internal system integration
  • 24/7 support
Discuss your project

Prices exclude VAT and telco charges. The sandbox does not send real commands to the core network. Production SLA and quota are confirmed in the contract.

FAQ

Before you start.

The questions engineering and operations teams ask most before putting IoT eSIMs into production.

Still have questions? Send a question

What is KOVITEL IoT?

A middleware layer that connects your device management platform to the Viettel M2M network. Instead of manual work in the Viettel portal, your teams use a REST API, dashboard and webhooks to manage data pools and activate, suspend or release eSIMs.

Do I need my own contract with Viettel?

Yes. KOVITEL provides the integration and operations layer, while data, numbers and tariffs follow the M2M contract between your company and Viettel. KOVITEL supports onboarding and integration.

How long does partner approval take?

New accounts start as PENDING and can log in immediately to view the dashboard and docs. KOVITEL verifies your requirements, contract and pool configuration before activating the API key — typically within one business day once information is complete.

Is there a sandbox?

Yes. The sandbox provides a test pool, demo eSIMs and all endpoints for allocation, status changes, batch jobs, job polling and webhooks. It does not send real commands to the core network.

Are operations synchronous or asynchronous?

Status changes go through BullMQ and run in the background. The API returns a jobId immediately; you then poll GET /jobs/{jobId} or receive a webhook when the job completes. This avoids timeouts and protects the Viettel portal.

Are webhooks secure?

Every delivery is signed with HMAC-SHA256 over the timestamp and raw body, with an x-kovitel-signature header. Deliveries retry with exponential backoff and are stored in a delivery log for reconciliation.

Are there request limits?

By default each worker is limited to 5 requests per second to Viettel to respect telco limits. The partner API has its own rate limit, configurable per contract. Batch requests support up to 500 ICCIDs.

Where is my data stored?

Operational metadata (clients, pools, SIMs, jobs, webhook deliveries) is stored in PostgreSQL; sessions and queues live in Redis. KOVITEL does not store device traffic content. Details are covered by the data processing agreement.

Start with a sandbox

Put IoT eSIMs into production without waiting for infrastructure.

Create a partner account, receive an API key and test the full flow in the sandbox. KOVITEL supports you from integration design to production pools.