Travixor GlobalDevelopers

Deliver the eSIM

A completed order holds one eSIM for each one you bought. Each has an activation code and install links your customer can use on their phone.

Reading the eSIMs

Read the order with GET /v1/orders/{id} (scope orders:read). The esims list is empty while the order is processing and complete once it is completed. To find an eSIM later, use GET /v1/esims, filtered by iccid if you want one (scope esims:read).

cURL
# A completed order carries its eSIMs
curl https://api.travixorglobal.com/v1/orders/ORDER_ID \
  -H "Authorization: Bearer $TRAVIXOR_API_KEY"

# Find one eSIM by its serial number (ICCID)
curl "https://api.travixorglobal.com/v1/esims?iccid=8901234567890123456" \
  -H "Authorization: Bearer $TRAVIXOR_API_KEY"
TypeScript
interface Esim {
  id: string
  iccid: string | null
  activation_code: string | null
  ios_install_link: string | null
  android_install_link: string | null
}

const res = await fetch('https://api.travixorglobal.com/v1/orders/ORDER_ID', {
  headers: { authorization: `Bearer ${process.env.TRAVIXOR_API_KEY}` },
})
const { order } = (await res.json()) as { order: { status: string; esims: Esim[] } }

if (order.status === 'completed') {
  for (const esim of order.esims) {
    // Put activation_code in a QR code, or show the install link that matches the customer's phone.
    console.log(esim.iccid, esim.activation_code, esim.ios_install_link, esim.android_install_link)
  }
}
Python
import os

import requests

res = requests.get(
    "https://api.travixorglobal.com/v1/orders/ORDER_ID",
    headers={"Authorization": f"Bearer {os.environ['TRAVIXOR_API_KEY']}"},
    timeout=30,
)
order = res.json()["order"]

if order["status"] == "completed":
    for esim in order["esims"]:
        # Put activation_code in a QR code, or show the install link that matches the customer's phone.
        print(esim["iccid"], esim["activation_code"], esim["ios_install_link"], esim["android_install_link"])
Example eSIM. The values are made up.
{
  "id": "9c26b0e4-1a7d-4e38-b5f2-d4803c7a19e6",
  "order_id": "e3a94d17-72c0-4b85-9f1e-6d08a2c5b7f1",
  "iccid": "8901234567890123456",
  "status": "ready",
  "activation_code": "LPA:1$smdp.example.invalid$AAAA-BBBB-CCCC-DDDD",
  "ios_install_link": "https://example.invalid/install/ios/AAAA-BBBB",
  "android_install_link": "https://example.invalid/install/android/AAAA-BBBB",
  "data_total_mb": null,
  "data_used_mb": null,
  "data_left_mb": null,
  "activated_at": null,
  "expires_at": null,
  "updated_at": "2026-11-02T09:30:07.000Z"
}

What to give your customer

FieldUse
activation_codeThe string that starts with LPA:1$. Put it in a QR code for the customer to scan with the phone camera or the phone's eSIM settings, or let them paste it.
ios_install_linkOpens the install screen on an iPhone. Good for an email or a button on a phone.
android_install_linkOpens the install screen on an Android phone.
iccidThe eSIM's serial number. Handy for support, and for finding the eSIM again.

Your customer scans the QR code or taps the link on the phone that will use the eSIM. For a QR code, any QR library will do; encode the activation_code exactly as you received it.

Handle the code with care

Data use

The data_total_mb, data_used_mb and data_left_mb fields, and activated_at and expires_at, are filled in when the information is available and can be null. Do not depend on them to cut off service or to bill your customer.