Going live checklist
Work through this list in the sandbox before you switch to your live key. The test plan gives you a check for most of these.
Your integration
Section titled “Your integration”- The API is called from your server only. No key is inside a mobile app or a web page.
- Keys are kept in environment variables or a secrets manager.
- Every
POSTsends anIdempotency-Keytaken from your own booking or order number. - A timeout, a
429or a5xxresponse is retried with the same key. - Your HTTP client waits at least 30 seconds for
POST /v1/ordersbefore it gives up. - A
402response stops the sale cleanly and alerts your team. - An order that comes back as
processingis handled, by webhook or by fetching it again. - An order that ends as
failedorpartially_completedis handled. Onorder.completedyou readstatusand countesims. - A new attempt after a
failedorder or top-up uses a newIdempotency-Key. - A top-up response is checked for
statusfailedbefore the customer is told the data was added. - Your code uses the error
code, not themessage. - The catalogue is cached and refreshed at least once a day. A stored package id that answers
package_not_foundis handled. - You read
data_mbandvalidity_daysfrom the package, not from its name. - You stay under 120 requests a minute, and 30
POSTrequests a minute, for each key.
Delivery
Section titled “Delivery”- The customer gets the one-tap link from
install_linkson the phone and the QR code fromqr_code_urlelsewhere. - Manual entry details from
activationare available as a fallback. - Your confirmation email or screen tells the customer to install before travelling and to turn on data roaming.
- The customer can find the eSIM again later in your app or by email.
Webhooks
Section titled “Webhooks”- Your webhook address checks the
X-Esimify-Signatureheader against the raw body. - It rejects a request whose timestamp is more than 5 minutes old.
- It answers
2xxwithin 10 seconds and does slow work afterwards. - Repeated events are ignored using the event
id. - Events are put in order with
sequence, not by arrival time orcreated. - A scheduled job reads
GET /v1/eventsand catches anything you missed. - You keep at least one live endpoint enabled. Live eSIM events are produced only while you have one.
Operations
Section titled “Operations”- A low-balance threshold is set in the portal under Settings, and someone on your team is alerted on a
balance.lowevent. The sandbox sends it too, when a test order takes the virtual balance below the same threshold, so you can test your handler there. - Your support team can look up an order by your own reference, using
customer_ref. - You log the
X-Request-Idof every response. - Someone watches the delivery log and the request log in the portal during the first days.
Switching over
Section titled “Switching over”- Check in the Business portal, under Developers, that live keys are available for your account.
- Create your live key. You are asked for your portal password. Add your servers’ addresses to its IP allowlist.
- Add your live webhook address and put its signing secret into production. A test-mode address does not receive live events.
- Make sure your live balance covers your first orders. Add funds in the Business portal under Wallet.
- Replace the test key with the live key in production.
- Place one real order for yourself and install it on a phone.

