Import a BYO (tenant-supplied) physical eSIM activation code
Registers a bring-your-own (BYO) eSIM activation code as owned inventory. Provide either { smdpAddress, matchingId?, confirmationCode? } or { lpaCode } — supplying both, or neither, returns 400. An optional name sets a display label on the created eSIM (up to 15 characters).
Subject to per-owner and daily import limits, and disabled entirely unless BYO imports are enabled for this deployment (409 byo_disabled). Idempotent via idempotencyKey: replaying the same key with an identical request returns the original response; the same key with a different request returns 409 idempotency_conflict.
When rent-first billing is off (default), the import is free — 201 with the eSIM. Setting autoInstall: true additionally dispatches an install immediately after import (deviceId may only be set together with autoInstall): this returns 202 with {esim, operationId, statusUrl} when the install claim succeeds (poll GET /esims/{id}/install-status), or 201 with the eSIM plus installDispatch: {ok: false, reason} when the install could not be dispatched — the import itself still succeeds either way.
When rent-first billing is on, import additionally requires available device capacity (409 device_pool_empty) and is subject to a per-owner awaiting-payment cap (409 byo_awaiting_payment_cap). On success the eSIM is created awaiting_payment and a checkout is started: 201 with {esim, rentStatus, checkoutUrl} when the checkout URL is ready immediately, or 202 with checkoutUrl: null otherwise — poll GET /esims/{id} until it's populated. Once payment is confirmed, install is triggered automatically.
Request body
Example request
{
"smdpAddress": "smdp.example.com",
"lpaCode": "LPA:1$smdp.example.com$QR-MATCH-1",
"msisdn": "+33612345678",
"name": "Mom's phone",
"deviceId": "physedge-dev-8f3a2c"
}Response
eSIM imported — plain eSIM, an inline-resolved rent checkout, or an eSIM with a failed autoInstall dispatch