Published on:
June 10, 2026
Tags:
API
eSIM
Telecom
API integration can get tricky: poor documentation, limited security, and general performance issues can compound, drastically increasing dev time, pushing up costs, and slowing progress. This can make it or break it for any ongoing sprint or project, especially when dealing with white-label eSIM platforms.
The only solution? Good knowledge sources that cover the basics and digest the complex. That’s why, using our experience at esimba.ai, we’ll discuss API integration, examine all associated costs and best practices, and provide a general process overview.

If you’ve already worked with APIs, then the model is the same. An eSIM API sits between your app and your carrier’s provisioning infrastructure. You call it, it handles all the telecom complexity, and you get back a data plan, an activation code, or a status update.
All eSIMs currently operate on the GSMA SGP.22 standard. It defines and regulates how eSIM profiles get securely delivered to the embedded chip. You won’t have to apply it in practice, as it’s your carrier’s responsibility. It should be more than enough to memorize the underlying principle: after scanning a QR code or activating the eSIM, the profile is downloaded from the carrier’s server and moves through their infrastructure to the device's eUICC (the chip).
Additionally, to prevent server overload and malicious bot attacks, eSIM APIs have a rate limit. Any developer tasked with implementation should keep this in mind and try to use caching to avoid issues. For reference, at esimba.ai, we keep ours at 60 requests.

Most eSIM APIs are REST-based and have a similar set of capabilities. The most noteworthy ones include:
Depending on what you’re building, the integration process and capability utilization may look different. Here are a few examples:
However, each case is unique to the business or team, and we encourage you to look through our API documentation to get a thorough understanding of what you need for implementation.

This cost depends on the situation. For example, at esimba.ai, we only charge for developer time if you actually need our team for implementation, and the cost is variable. If you’re planning to do the integration yourself, you don’t have to pay anything extra beyond fulfilling our initial minimal balance requirements.
But if we look more granularly, associated costs can be broken down into more than several groups.
Vendor and data costs come first. You have to account for:
The next logical group is the development and integration costs. Hiring a mid-level developer in the US will cost $60–$120 per hour. eSIM REST API integration can take anywhere from 2-5 days, provided the documentation is in order. Subtract a day if the provider offers an SDK, and add two or three if the docs are sparse. You’re looking at roughly $960–$4,800.
Altogether, at the maximum range, the costs could amount to $5,300, excluding the bundle price.
If there are no webhooks, this means polling, which involves more API calls against your rate limit and an activation UX that’s harder to build well. And if there are undocumented error codes, you’ll have to debug or, more precisely, reverse-engineer behavior that should’ve been specified.
The solution involves additional engineering time, and if you’re unlucky enough to run into these two issues, you’re looking at anywhere from $720 to $3,840.
Because the potential for additional costs is high, it’s best to build defensively. Let’s take our API as an example and look through the top four best integration practices.
Many providers use keys, which is not optimal for security because they can serve as static access points for cybercriminals. However, you can protect your business from hacking attempts. For that purpose, esimba.ai uses a dual-credential system, where an API key paired with an accessToken is required on each entry HTTPS request. We also use webhook signature verification via HMAC-SHA256 for additional security.
The most common developer mistake is forgetting about asynchronous eSIM profile activation. It usually takes seconds, but, depending on the provider-side situation, it can get up to 15 minutes.
A good solution is to build a proper state machine from the beginning. esimba.ai surfaces three line states out of the box: Registered, Activated, and Deactivated. The changes are pushed through simcard.status.changed webhook event in real time. That means you don't need to poll for activation confirmation; you subscribe to the event and let the platform push the transition to you. For providers that don't support webhooks, polling with exponential backoff is your only option.
We use standard HTTP status codes throughout (200, 401, 403, 404, etc.), which allows for a cleaner error taxonomy. Even so, your application shouldn't be surfacing raw vendor responses to users or to your monitoring systems. Map vendor codes to your own internal error taxonomy early in the build. This insulates your application from vendor-side changes and makes debugging significantly faster.
eSIM bundle catalogues aren’t static: carrier agreements change, and so does the list of available operators. We planned for this at esimba.ai, and bundle.added and bundle.removed webhook events notify you in real time when plans are added to or removed from the platform. Other providers are doing the same, but just in case, set a TTL on your catalog cache and treat webhook events as authoritative signals.
If you plan to partner with esimba.ai, the last tip is to use /line/{iccid}/available_refills rather than deriving refill options from the bundle catalog directly. It's faster and specific to the line in question.
Integrating without testing is suboptimal, to say the least. eSIMs have real costs, and you pay for profiles, sometimes even activation charges, and leave end-users without connectivity.
Not all eSIM API providers have a dedicated testing environment. If that’s the case, it’s not a big issue, and you can treat a small pool of lines as your sandbox. Purchase a handful of the cheapest available bundles specifically for testing, document which ICCIDs are reserved for that purpose, and account for their cost upfront in your integration budget.
For webhook testing, use a tool like ngrok or Webhook.site during development to expose a local endpoint and capture real webhook payloads.
Another good practice is to do your testing in three layers:
/line/create) and async (/line/create_async) paths.All this allows for independent testing and catching breaking API changes before users do.
A few failure modes worth mocking explicitly:
bundle.removed event against a plan your test user is actively on. Verify the catalog UI degrades gracefully rather than displaying something that can no longer be purchased.If you’re already planning an API integration and partnering with a provider, consider your approach. You can follow these steps:
We’ve referenced our API throughout the blog, and for a reason. Measured against the evaluation criteria that actually matter for a developer building on top of an eSIM API, it holds up well across the board.
The API is clean REST, thoroughly documented, and covers the full integration surface: bundle catalog, line creation, activation status, refills, auto-refill, and webhook events for every meaningful state change. For resellers and app developers, the minimum top-up balance requirement to access the API is a low barrier relative to what comparable platforms demand, and it goes directly toward usable inventory rather than a platform fee.
If a partnership sounds interesting to you, you can reach out to us today for pricing and coverage. Our sales team will outline the integration process and help you start your journey to high-quality connectivity.