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.





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 NAME | PATH | Query parameters | Description |
|---|---|---|---|
| Landing | landing | — | Entry page introducing eSIM data plans |
| Destination search | dest-search | — | Search eSIM plans by destination |
| Data plan | data-plan | code | Data plan details & purchase |
| eSIM detail | esim-detail | iccid | eSIM detail view with ICCID tracking |
| Order detail | order-detail | order_no | Order details & management |
| My eSIM | my-esim | — | Manage 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.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
language | string | true | UI language of the app; supported values: en-US (English, United States) (default: en-US) | en-US |
tenant_code | string | true | Tenant code used for tenant isolation and validating the tenant configuration on the DP Platform | 0494 |
action_type | string | true | Access mode of the session; supported value: operate | operate |
channel | string | false | Distribution channel identifier of the host app, used for channel-level configuration and analytics, e.g. standard, eBridge (default: standard) | standard |
verify_purchase_pro_code | string | true | Product code for purchase verification | ISC0494000003 |
module | string | true | Business module identifier used for module-level routing and configuration (12 for eSIM) | 12 |
ℹ️ Parameter naming varies by category: this app uses
verify_purchase_pro_codefor the product code (notpro_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)
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
code | string | true | Resource code of the data plan, required to load the plan details when the page is opened directly | GR0005860 |
eSIM detail (esim-detail)
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
iccid | string | true | ICCID of the eSIM, required to load the eSIM detail when the page is opened directly | 89860012345678901234 (example value — use a real ICCID) |
Order detail (order-detail)
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
order_no | string | true | Order number of the eSIM order, required to load the order details when the page is opened directly | ISC20260813BMBGNL3 |
Prerequisites
- A registered
clientIdfrom the DP Platform — contact us to get one - The
esimappId configured under your client - DP Hybrid SDK integrated into your host app
iOS
Open the eSIM DPApp from any UIViewController:
// 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:
// 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:
// 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:
// 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.
// iOS
DPApp.delegate = self
extension ViewController: DPAppCustomDelegate {
func didDPAppChangeUrlEvent(DPApp: DPApp, url: URL) {
// url.path contains the DPApp page path, e.g. "order-detail"
}
}
// Android
val dpApp = DPSDK.getDPApp("esim")
dpApp.setUrlChangeListener { activity, url ->
// url?.path contains the DPApp page path, e.g. "order-detail"
}.open(this)
Reference
- Getting Started — SDK installation & initialization
- Connect — SSO setup
- Custom Events System — Handle DPApp events
- Error Codes — Error code reference