eSIM API Integration: A Practical Guide for Product Teams

Navy card titled eSIM API Integration, with the figure 4 to 12 weeks for a typical eSIM API integration into an existing product.

Integrating eSIM into an existing product is a modest piece of engineering with an unusual failure profile. The API surface is small, the flows are simple, and almost all the difficulty sits outside the API in the period between a customer paying and their phone being connected in another country.

This is a practical guide to what the integration involves: the operations you actually need, how to model orders and profile state, the mistakes that cost real money, and what to build beyond the happy path.

What you are actually building

  • Four operations cover most integrations: check compatibility, order a profile, deliver it, report usage.
  • The hard part is not the API. It is the twenty minutes after purchase.
  • Order creation must be idempotent, because a duplicate order is a real profile you have paid for.
  • Webhooks matter more than polling for usage and expiry.
  • Test on real iOS and Android devices before you ship. Simulators do not install eSIM profiles.

Why integrate rather than link out

The commercial case is straightforward. Kaleido Intelligence found 89% of travellers would rather buy connectivity from a provider they already have a relationship with, against 60% from an unfamiliar specialist, and GSMA research found 51% of eSIM users first tried the technology while travelling. If your product already serves travellers, issuing the eSIM inside your own flow captures both advantages. Linking out to a partner hands them away.

Typical time from decision to first sale

White-label storeAPI integrationFull MVNO 2-6 weeks4-12 weeks9-24 months Bars drawn to scale in weeks

Typical project durations with an established wholesale partner. API work is longer than a storefront and a fraction of an MVNO build.

4-12weeks for a typical eSIM API integration into an existing product
89%of travellers would rather buy connectivity from a brand they already use
51%of eSIM users first tried the technology while travelling abroad

Sources: Kaleido Intelligence, 2026; GSMA consumer research.

The trade-off is time. A white-label storefront can be live in two to six weeks with no engineering. An API integration typically runs four to twelve weeks depending on how much of the activation experience you build yourself. Both are a fraction of an MVNO build, and the API route is the one that produces durable economics.

The operations you actually need

Most providers expose more than this. Most integrations use these.

OperationWhat it doesWhen you call itWatch for
Catalogue / packagesLists available plans by country or regionCache it; do not call per page viewPrices and availability change; refresh on a schedule
Device eligibilityChecks whether a device can take an eSIMBefore payment, not afterNot all providers expose this; you may need your own list
Create orderReserves and generates a profileAfter successful payment authorisationMust be idempotent; a retry should not create a second profile
Retrieve profileReturns the activation code and QRImmediately after order, and on demand laterCustomers lose emails; make this re-retrievable in-product
UsageConsumption and remaining allowanceOn demand, plus webhook thresholdsAsk whether it is real-time or batched
Top-upAdds data to an installed profileAt a usage threshold or on requestMust not require reinstallation
WebhooksPushes installation, threshold and expiry eventsConfigure once, verify signaturesHandle retries and out-of-order delivery

Endpoint names differ by provider. These are the capabilities to confirm exist before you scope the work.

Idempotency is the one thing to get right immediately. Unlike most API integrations, a duplicate request here creates a real profile that you have been billed for and a customer has not asked for. Send your own unique reference with every order creation, and confirm with your provider that repeating it returns the original order rather than making a new one.

Device eligibility is the row most often skipped and most often regretted. Not every provider exposes a compatibility endpoint, and where they do not you will need to maintain your own device list. Either way the check belongs before the payment sheet, because selling a profile to a handset that cannot install one produces a guaranteed refund and a support conversation with someone who is probably already abroad.

Modelling profile state

A profile moves through a defined lifecycle, and your product should reflect where the customer actually is rather than treating everything after purchase as one state.

StateWhat it meansWhat your UI should show
OrderedProfile generated, not yet downloadedThe QR code and install instructions
DownloadedProfile is on the device, not yet in useReminder to enable it and set it as the data line
Installed and enabledActive on the deviceRemaining allowance and validity end date
In useConsuming dataLive usage, plus a top-up route
DepletedAllowance exhaustedTop-up prompt, ideally before this point
ExpiredValidity window has endedClear explanation and a repurchase path

Exact state names vary by provider. What matters is that every one of these is visible to your support team.

The gap between downloaded and enabled causes more support volume than anything else. A customer can install a profile correctly, leave their home line as the data line, and conclude the product does not work. If you can detect the installed-but-not-enabled state, prompting at that point removes a whole class of tickets.

Mistakes and what to build instead

Integration mistakes that cost money

  • Non-idempotent order creation, so retries buy duplicate profiles
  • Ordering before payment settles
  • Only delivering the QR by email
  • Polling usage on a tight loop instead of using webhooks
  • No compatibility check before checkout
  • Storing activation codes without treating them as secrets

What to build beyond the happy path

  • Re-retrieve the QR from inside your own product
  • A support view showing live profile state
  • Reissue without escalating to your provider
  • Threshold alerts before the allowance runs out
  • Clear expiry messaging with a repurchase path
  • Reconciliation between your orders and provider billing
Simulators will not help you here. eSIM profile installation is a device and carrier-level operation that cannot be exercised in an emulator. Budget for physical test devices on both iOS and Android, including at least one that is not a current flagship, and test the full journey from purchase to enabled profile before you ship anything.

Email-only delivery is the most common design shortcut and it fails predictably. A traveller looking for their QR code is usually in an airport, on unreliable wifi, searching an inbox for a message they received weeks earlier. Making the activation code retrievable from inside your own app or account area removes that failure entirely, and it is a small amount of work.

A sequence that works

  1. Get sandbox access before you scope

    Issue a test profile end to end and install it on a real handset. You will learn more in an afternoon about what the integration actually requires than from any amount of documentation review, and it surfaces platform limitations while you can still change provider.

  2. Model the order as a payment-linked transaction

    A profile is a real purchase against your wholesale account the moment it is created. Order after payment authorisation, make creation idempotent with your own reference key, and reconcile daily against provider records.

  3. Put compatibility before the payment sheet

    Selling to a device that cannot install a profile guarantees a refund and a support ticket. Check eligibility earlier than feels necessary, and handle the negative case with an explanation rather than a dead end.

  4. Own the delivery, not just the email

    Customers lose emails, especially while travelling. The activation code needs to be retrievable from inside your product, with installation instructions for the platform the customer is actually using.

  5. Wire webhooks before launch, not after

    Installation, usage thresholds and expiry are the events that let you prompt at the right moment. Verify signatures, handle retries, and assume events can arrive out of order or more than once.

  6. Build the support view first, not last

    Whoever answers your customers needs to see profile state without logging into your provider. Building it early also forces you to model the states properly in your own system.

Step six is worth doing out of order deliberately. Building the internal support view early forces you to model profile state properly in your own database rather than treating the provider as the source of truth, and it means the people answering customers on launch day can actually see what is happening.

Frequently asked questions

Typically four to twelve weeks depending on depth. A minimal integration that orders a profile and displays a QR code sits at the shorter end. Building compatibility checking, in-product retrieval, usage display, top-ups, webhook handling and a support view takes longer. The API surface is small; the surrounding experience is where the time goes.
In practice: a package catalogue, device eligibility checking, order creation, profile retrieval returning the activation code, usage reporting, top-ups on an installed profile, and webhooks for installation, usage thresholds and expiry. Endpoint names differ by provider, but confirm all of these capabilities exist before scoping the work.
Because a duplicate order creates a real profile that you have been billed for and no customer requested. Unlike most API retries, this one costs money every time. Send your own unique reference with each order creation and confirm that repeating it returns the original order rather than generating a new profile.
Before payment, always. Selling a profile to a device that cannot install one guarantees a refund, a support ticket and usually a poor review, all of which are preventable with a check that costs nothing. If your provider does not expose a compatibility endpoint you will need to maintain your own device list.
Webhooks for events, polling for on-demand display. Installation, usage thresholds and expiry are the events that let you prompt customers at the right moment, and pushing them is far more efficient than polling. Verify signatures, handle retries, and assume events can arrive more than once or out of order.
Not the part that matters. Profile installation is a device and carrier-level operation that emulators cannot exercise. You can test order creation and API responses in a sandbox, but the full journey from purchase to an enabled profile needs real handsets on both iOS and Android, including at least one older device.
By email and from inside your own product. Email alone fails predictably, because travellers search for a message received weeks earlier while on unreliable airport wifi. Making the QR code retrievable in your app or account area removes a whole category of support requests for a small amount of work.
Live profile state: whether a profile is ordered, downloaded, enabled, in use, depleted or expired, plus remaining allowance and validity. Without this, every problem becomes an escalation to your provider and a customer waiting abroad. The ability to reissue a profile without escalation matters just as much.
Usually the profile is installed but not set as the data line, or data roaming is switched off on it. Both are common and neither is a fault. Detect the installed-but-not-enabled state if your provider exposes it, and prompt with platform-specific instructions rather than generic guidance, since iOS and Android differ enough that generic steps fail.
Yes, daily. Every profile created is a charge against your wholesale account, and discrepancies between your order records and provider billing accumulate quietly. Build reconciliation into the integration rather than treating it as a finance task to solve later, because tracing a mismatch months afterwards is considerably harder.

Get sandbox access before you scope the work

eSIM Island provides API access with real-time usage, webhooks, profile diagnostics and self-service reissue, plus test credentials so you can build against it before committing. Tell us about your product and target markets and we will set you up.

Book a Free Demo

Or explore the Reseller Program, API Integration and Business Roaming.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>