---
title: "Submit an eSIMply order"
method: POST
path: "/esimply/orders/submit"
tags: ["eSIMply orders"]
---

# Submit an eSIMply order

`POST /esimply/orders/submit`

## Request

- Base URL: `https://api.liteapi.travel/v3.0`
- URL: `https://api.liteapi.travel/v3.0/esimply/orders/submit`
- Auth: API key in header `X-API-Key`

## Overview

Finalize a cart and provision the eSIM. On success you receive the order ID, ICCID, QR / LPA install payload, and purchase details. Successful orders are persisted for the partner account.

## When to Use

- **Complete purchase** - After collecting traveler contact details
- **Provision eSIM** - Generate installable QR / activation data for the traveler
- **Partner reconciliation** - Attach your `clientReference` for support and reporting
- **Safe retries** - Resubmit the same `cartKey` after timeouts; liteAPI returns the stored order without buying again

## What You Get

- **Order ID** - Provider order identifier
- **Purchases** - ICCID, QR code, SM-DP address, activation code, package and pricing
- **Traveler-ready install data** - Everything needed to install the eSIM on a device

## Key Features

- **Idempotent by cartKey**: Retrying submit with an already-completed `cartKey` returns the persisted order
- **Currency conversion**: Optional `Currency` header converts priced fields via liteAPI FX
- **End-user details required**: Email, phone, first and last name
- **Persistent records**: Successful submits are stored in liteAPI (`esimply_orders` / `esimply_purchases`)

## Headers

- `Currency` string

## Request body

- OrderSubmitRequest
  - `cartKey` string, required
  - `endUserEmail` string, email, required
  - `endUserPhone` string, required
  - `endUserFirstName` string, required
  - `endUserLastName` string, required
  - `clientReference` string: Your internal reference for reconciliation

## Response `200`

Order submitted and eSIM provisioned

- object
  - `data` OrderSubmitResponse, required
    - `orderId` string: Public eSIMply order identifier. orders use the provider format (e.g. ord_ plus 16 hex chars). Historical rows may be numeric strings.
    - `purchases` OrderRecord[]
      - `esimId` integer
      - `packageName` string
      - `dataSizeMb` integer
      - `remainingData` integer
      - `destinationCode` string
      - `destinationName` string
      - `price` number
      - `b2bPrice` number
      - `currency` string
      - `iccid` string
      - `qrCode` string: LPA QR string for eSIM installation
      - `smdpAddress` string
      - `activationCode` string
      - `esimProviderId` integer
      - `externalPackageId` string
      - `validityDays` integer
      - `flag` string
      - `createdAt` string, date-time
      - `startDate` string, date-time
      - `endDate` string, date-time
      - `packageId` integer
      - `status` 'active' | 'expired': eSIM plan status: expired when remaining data is 0 or the end date has passed, otherwise active. Returned on order history (`GET /esimply/orders` and `GET /esimply/orders/{iccid}`); omitted from submit and top-up purchase records.

## Other responses

- `400`: Validation error
- `401`: Authentication required
- `403`: eSIMply access not enabled for this account

---

[API](https://skmtc.dev/liteapi/apis/api-esimply.md) - [All operations](https://skmtc.dev/liteapi/apis/api-esimply/llms.txt) - [OpenAPI document](https://skmtc.dev/liteapi/apis/api-esimply/revisions/b0fb431f4daf?raw)
