Refund requests, webhook event field
- New: Request a refund —
POST /v1/api_partner/esims/{topup_id}/refundopens a refund request and answers202. Get a refund request reads it back. Both share a limit of 30 requests per minute. - New: refund decisions arrive on your webhook URL as
refund.approvedorrefund.rejected, only for requests you open through the API. See Refund events. - Every webhook body now starts with an
eventfield —esim.issuedfor eSIM deliveries, ahead of their existing fields, which are unchanged. TheX-Esim-Story-Eventheader repeats it. Branch on the body field: the signature covers the body, not the headers. See Webhooks.
Product list endpoint
New: List products —
GET /v1/api_partner/products returns every product you can order, with its
option_id, specification and your wholesale price. Filter by country (ISO
code), location_type or location. Limited to 10 requests per minute;
fetch it daily and cache it.Unlimited plans report data_mb as 5120, the full-speed part of each day.QR images on our own domain
qrcode_img_url now points to assets.esimstory.com. The URL is opaque:
don’t parse it or depend on its host. download_link is the durable value,
and you can render your own QR from it. See
Payload.eSIM status, order size limit, webhook payload
- New: Get eSIM status —
GET /v1/api_partner/esims/{topup_id}/statusreports installation, data used and expiry. Limited to 60 requests per minute. - One order now carries at most 100 eSIMs in total.
- Webhook payloads now carry a fixed, documented set of fields. See Payload.
- In sandbox, the test eSIM now arrives later through the webhook, the same way as in production.
Signed bodies and signed, retried webhooks
- Breaking: the request signature now covers a SHA-256 hash of the body, so the signed string has five lines. See Authentication.
- Webhooks are signed. Verify each delivery before processing it — see Verifying the signature.
- Failed webhook deliveries are retried up to 10 times over about four and a
half hours. The same
topup_idcan arrive more than once.
Validation errors
A malformed order payload returns
422 with an errors array.