---
title: "Fired when an eSIM order is successfully created and provisioned."
method: POST
path: "esim.created"
---

# Fired when an eSIM order is successfully created and provisioned.

`POST esim.created` (webhook)

## Payload

- EsimEvent
  - `id` string, required: Unique delivery id. Use for deduping on your side.
  - `type` '*' | 'verification.created' | 'verification.code_received' | 'verification.cancelled' | 'verification.completed' | 'verification.expired' | 'verification.failed' | 'rental.created' | 'rental.message_received' | 'rental.code_received' | 'rental.renewed' | 'rental.expired' | 'rental.cancelled' | 'rental.auto_renew_disabled' | 'proxy.ready' | 'proxy.provisioning_failed' | 'proxy.expired' | 'proxy.traffic_low' | 'proxy.traffic_exhausted' | 'proxy.renewed' | 'proxy_pool.low' | 'proxy_pool.expiring' | 'proxy_pool.extended' | 'esim.created' | 'esim.provisioning_failed' | 'esim.topup_added' | 'esim.expired' | 'esim.cancelled' | 'esim.refunded', required
  - `created_at` string, date-time, required
  - `data` object, required
    - `esim` EsimResource, required
      - `id` string, required: Public eSIM order identifier (prefixed `esim_`).
      - `status` 'processing' | 'completed' | 'cancelled' | 'refunded' | 'expired', required: Current lifecycle state of the eSIM order.
      - `product_id` string, nullable, required: Public product id this order was placed for (prefixed `prod_`). Null for legacy orders.
      - `is_topup` boolean, required: Whether this order is a data topup on an existing eSIM.
      - `parent_order_id` string, nullable, required: Public id of the parent eSIM order when `is_topup` is true. Null for primary orders.
      - `iccid` string, nullable, required: ICCID (SIM card identifier). Present on primary completed orders; null for topups and processing orders.
      - `activation_code` string, nullable, required: SM-DP+ matching ID used by the device to install the profile. Combine with `smdp_address` to form the full LPA URI: `LPA:1$<smdp_address>$<activation_code>`. The PNG returned from `qr_code_url` already encodes the full URI for direct scanning. Null for topups and processing orders.
      - `qr_code_url` string, nullable, required: URL to a PNG image of the activation QR code. Null for topups and orders that have not completed. Cache aggressively - this URL is stable for the lifetime of the eSIM.
      - `smdp_address` string, nullable, required: SM-DP+ server hostname. Combine with `activation_code` to build the LPA URI for manual activation. Null for topups and processing orders.
      - `data_limit_gb` number, nullable, required: Data allowance in GB. Null when `data_unlimited` is true.
      - `data_unlimited` boolean, required: Whether this plan includes unlimited data.
      - `validity_days` integer, required: Plan validity in days from activation.
      - `countries` string[], required: ISO-3166-1 alpha-2 country codes (uppercase) where the plan is usable.
      - `routing_location` string, nullable, required: Network routing hint for this eSIM (e.g. country where its data egresses). Informational only.
      - `charged_price_cents` integer, required: Amount deducted from the wallet for this order in USD cents.
      - `currency` 'USD', required
      - `created_at` string, date-time, required: ISO 8601 timestamp when the order was placed.
      - `completed_at` string, date-time, nullable, required: ISO 8601 timestamp when the eSIM was fully provisioned. Null until status is `completed`.
      - `expires_at` string, date-time, nullable, required: ISO 8601 timestamp when the eSIM plan expires. Null until the eSIM is activated.

## Acknowledgement `2XX`

Acknowledged. Any 2xx is accepted; body is ignored.

---

[API](https://skmtc.dev/voidmob/apis/voidmob-public-api.md) · [All operations](https://skmtc.dev/voidmob/apis/voidmob-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/voidmob/apis/voidmob-public-api/revisions/066023313ebe?raw)
