Available balance
$0
USD credits available
Active eSIMs
—
currently in use
Total orders
—
all time
Last 30 days
—
spend
Recent eSIMs
Quick actions
Order an eSIM
Browse over 1,900 plans across 179 countries.
Configure webhooks
Receive real-time event notifications in your app.
Read the docs
Integrate the API into your application.
Available balance
$0
USD credits
Lifetime spend
—
total orders
Pending
—
in-flight orders
Avg order
—
last 30 days
How balance works
Balance is your prepaid credit pool.
Each eSIM order debits credits from your balance. Cancellations on unused eSIMs refund automatically. Topups to existing eSIMs also debit balance.
Self-serve credit top-up via Stripe is coming soon. For now, contact your YFi Net account manager to add credit.
Recent transactions
Destinations
Loading…
◐
Pick a destination
Choose a country or region to see available plans.
My eSIMs
Loading…
◇
Select an eSIM
Click any eSIM in the list to see full details and management options.
Lookup by ICCID
Find any eSIM directly
18–22 digit identifier. Found on the eSIM detail screen.
Checking system status…
Running diagnostic checks against all subsystems
Loading…
Endpoint reachability
Try each public endpoint with your API key
Click "Run checks" above to test all endpoints
Endpoint
Where we send events
Must be HTTPS. Public hostname — no localhost or private IPs.
When disabled, no events are sent. Useful for maintenance.
Signing secret
For HMAC verification
Rotating immediately invalidates the previous secret. The new secret is shown only once — save it.
Recent deliveries
Event types
order.fulfilled
eSIM allocated, ready to install
esim.installed
Customer activated on device
esim.in_use
eSIM is connected and using data
esim.data_threshold
50% / 80% / 90% data usage
esim.expiring_soon
Validity warning
esim.expired / cancelled
Lifecycle endings
Verifying signatures
// Each webhook POST includes:
// X-YFiNet-Signature: sha256=<hex_hmac>
// X-YFiNet-Timestamp: <unix_seconds>
// X-YFiNet-Event: order.fulfilled
// X-YFiNet-Delivery-Id: <uuid>
const crypto = require('crypto');
const expected = 'sha256=' + crypto
.createHmac('sha256', YOUR_WEBHOOK_SECRET)
.update(timestamp + '.' + rawBody)
.digest('hex');
if (signature !== expected) reject('invalid signature');
if (Math.abs(now - timestamp) > 300) reject('replay');
Active key
Loading…
Authentication
curl https://esimyfi.live/v1/balance \
-H "Authorization: Bearer yf_live_YOUR_KEY"
Best practices
- — Store keys in environment variables, never in source code
- — Don't share keys in chat, email, or screenshots
- — Rotate immediately if you suspect compromise (contact account manager)
- — Each request is logged with your key for audit
API documentation
Endpoint reference