Skip to main content

eSIM

The eSIM DPApp provides global eSIM data plan services, allowing users to browse, purchase, and manage eSIM data plans for international travel — all within your host app. Supports destination search, multi-eSIM management, and per-eSIM detail views with ICCID tracking.

User flow

The eSIM journey is shown from left to right.

Landing
eSIM flow step 1
Destination search
eSIM flow step 2
Data plan
eSIM flow step 3
Checkout
eSIM flow step 4
Order result
eSIM flow step 5

Routes & Parameters

Pages are opened by the host app via DPSDK.open(appId: "esim", ...) (iOS) or DPSDK.getDPApp("esim").open(...) (Android), or navigated internally. Only the pages below can be opened via the SDK — other pages (e.g. Install guidance, Order summary, Pay result) are internal flow pages reached from within the app.

PAGE NAMEPATHQuery parametersDescription
LandinglandingEntry page introducing eSIM data plans
Destination searchdest-searchSearch eSIM plans by destination
Data plandata-plancodeData plan details & purchase
eSIM detailesim-detailiccideSIM detail view with ICCID tracking
Order detailorder-detailorder_noOrder details & management
My eSIMmy-esimManage purchased eSIMs — view, top up, archive and install eSIMs

Parameters

System parameters

These parameters are required and must always be included when opening the eSIM DPApp.

ParameterTypeRequiredDescriptionExample
languagestringtrueUI language of the app; supported values: en-US (English, United States) (default: en-US)en-US
tenant_codestringtrueTenant code used for tenant isolation and validating the tenant configuration on the DP Platform0494
action_typestringtrueAccess mode of the session; supported value: operateoperate
channelstringfalseDistribution channel identifier of the host app, used for channel-level configuration and analytics, e.g. standard, eBridge (default: standard)standard
verify_purchase_pro_codestringtrueProduct code for purchase verificationISC0494000003
modulestringtrueBusiness module identifier used for module-level routing and configuration (12 for eSIM)12

ℹ️ Parameter naming varies by category: this app uses verify_purchase_pro_code for the product code (not pro_code). See System parameters for the full list.

Page parameters

These parameters are only needed when the corresponding page is opened directly.

Data plan (data-plan)

ParameterTypeRequiredDescriptionExample
codestringtrueResource code of the data plan, required to load the plan details when the page is opened directlyGR0005860

eSIM detail (esim-detail)

ParameterTypeRequiredDescriptionExample
iccidstringtrueICCID of the eSIM, required to load the eSIM detail when the page is opened directly89860012345678901234 (example value — use a real ICCID)

Order detail (order-detail)

ParameterTypeRequiredDescriptionExample
order_nostringtrueOrder number of the eSIM order, required to load the order details when the page is opened directlyISC20260813BMBGNL3

Prerequisites

  • A registered clientId from the DP Platform — contact us to get one
  • The esim appId configured under your client
  • DP Hybrid SDK integrated into your host app

iOS

Open the eSIM DPApp from any UIViewController:

Swift
// From any UIViewController
DPSDK.open(appId: "esim", from: self)

To open a specific page directly (e.g. landing or order detail), pass the page path and its query parameters in the params dictionary:

Swift
// Open the landing page (default)
DPSDK.open(appId: "esim", from: self)

// Open the landing page directly
DPSDK.open(
appId: "esim",
params: [
"path": "landing",
"tenant_code": "0494",
"action_type": "operate",
"module": "12",
"language": "en-US",
"verify_purchase_pro_code": "ISC0494000003",
],
from: self
)

// Open the order detail page directly
DPSDK.open(
appId: "esim",
params: [
"path": "order-detail",
"tenant_code": "0494",
"action_type": "operate",
"module": "12",
"language": "en-US",
"verify_purchase_pro_code": "ISC0494000003",
"order_no": "ISC20260813BMBGNL3",
],
from: self
)

Note: the system parameters above are required whenever a page is opened directly. Page-specific parameters (e.g. order_no, code, resource_id) are appended only for the pages that need them (see Page parameters).

Android

Open the eSIM DPApp from any Activity or Fragment:

Kotlin
// From any Activity or Fragment
DPSDK.getDPApp("esim").open(this)

To open a specific page directly (e.g. landing or order detail), pass the page path to open() and set the query parameters via setExtraUrlParams:

Kotlin
// Open the landing page (default)
DPSDK.getDPApp("esim").open(this)

// Open the landing page directly
val dpApp = DPSDK.getDPApp("esim")
dpApp.setDPAppConfig(
DPAppConfig.Builder()
.setExtraUrlParams(
hashMapOf(
"tenant_code" to "0494",
"action_type" to "operate",
"module" to "12",
"language" to "en-US",
"verify_purchase_pro_code" to "ISC0494000003",
)
)
.build()
).open(this, "landing")

// Open the order detail page directly
val orderDpApp = DPSDK.getDPApp("esim")
orderDpApp.setDPAppConfig(
DPAppConfig.Builder()
.setExtraUrlParams(
hashMapOf(
"tenant_code" to "0494",
"action_type" to "operate",
"module" to "12",
"language" to "en-US",
"verify_purchase_pro_code" to "ISC0494000003",
"order_no" to "ISC20260813BMBGNL3",
)
)
.build()
).open(this, "order-detail")

Note: the system parameters above are required whenever a page is opened directly. Page-specific parameters (e.g. order_no, code, resource_id) are appended only for the pages that need them (see Page parameters).

Handling order results

When a booking is placed or an order detail is opened, the host app can listen for URL changes to react to the result (e.g. refresh its own order list after a successful booking). See DPApp URL Listener for the full API.

Swift
// iOS
DPApp.delegate = self

extension ViewController: DPAppCustomDelegate {
func didDPAppChangeUrlEvent(DPApp: DPApp, url: URL) {
// url.path contains the DPApp page path, e.g. "order-detail"
}
}
Kotlin
// Android
val dpApp = DPSDK.getDPApp("esim")
dpApp.setUrlChangeListener { activity, url ->
// url?.path contains the DPApp page path, e.g. "order-detail"
}.open(this)

Reference