Bouw reis-eSIM's in je eigen product
Verkoop eSIM's vanuit je eigen app of website met één REST-API. Doorzoek de catalogus, plaats bestellingen en lever installeerbare eSIM's aan je klanten, onder je eigen merk.
De hele levenscyclus van een eSIM, in je eigen product
Van een bundel kiezen tot opwaarderen halverwege de reis: elke stap van je klant is een API-call die jij beheert.
Verkoop elke bundel uit je catalogus
Filter bundels op land, regio, data en looptijd en plaats met één call een bestelling voor een klant. Bij elke bundel krijg je de prijs die jij ervoor betaalt.
- Filter op land, regio, data en dagen
- Bestellingen betaal je met je prepaid tegoed
- Idempotentiesleutels maken nieuwe pogingen veilig
Lever de eSIM in je eigen flow
Zodra een bestelling is afgerond krijg je de ICCID, de LPA-activeringscode en een QR-code, via een webhook of door de bestelling op te vragen.
- Ondertekende order.fulfilled-webhook
- QR-code als PNG, klaar om te tonen of te mailen
- LPA-code voor installeren met één tik in je app
Houd reizigers ook na de verkoop verbonden
Bied data-opwaarderingen aan, zet een eSIM over naar een nieuwe telefoon, betaal geschikte bestellingen terug en download facturen, allemaal met dezelfde API.
- Opwaarderingen geprijsd voor jouw account
- Installeer een eSIM opnieuw op een ander toestel
- Terugbetalingen en pdf-facturen per bestelling
Alles wat je nodig hebt om met vertrouwen te lanceren
Gratis sandbox
Testsleutels doorlopen de hele flow, van bestelling tot eSIM en webhook, zonder een netwerk aan te roepen of tegoed te gebruiken.
Ondertekende requests
Elk request wordt ondertekend met HMAC-SHA256 en een tijdstempel, en herhalingen worden geweigerd. Sleutels kun je beperken tot de IP-adressen van je servers.
Webhooks die opnieuw proberen
Ondertekende events voor bestellingen, eSIM's, opwaarderingen en tegoed, meer dan een dag lang opnieuw geprobeerd, met een leveringslog die je opnieuw kunt versturen.
Veilig opnieuw proberen
Stuur een Idempotency-Key mee met bestellingen en opwaarderingen. Een herhaling binnen 24 uur geeft het eerste antwoord terug in plaats van twee keer af te schrijven.
OpenAPI 3.1-specificatie
Importeer de specificatie in Postman of genereer een getypte client, of begin met de voorbeelden in curl, Node en Python uit de documentatie.
Sleutels met rechten, duidelijke limieten
Geef elke sleutel lees-, bestel- of volledige toegang. Limieten gelden per sleutel, en elk geauthenticeerd antwoord laat zien wat er nog over is.
Verken de documentatie
Elk endpoint heeft een request en een response die je kunt kopiëren. Onderteken met je sleutel, richt je op de sandbox en ga aan de slag.
curl --request GET \
--url 'https://api.roamgo.net/api/partner/v1/plans?country=JP&minDays=7' \
--header 'Authorization: Roamgo-HMAC-SHA256 keyId=<KEY_ID>, ts=<UNIX>, sig=<SIGNATURE>'{
"plans": [{
"id": "cm...",
"name": "Japan 10 GB",
"countries": ["JP"],
"dataAmountMB": 10240,
"validityDays": 30,
"yourPriceCents": 1840,
"currency": "USD"
}],
"page": 1,
"pageSize": 24,
"total": 18
}curl --request POST \
--url 'https://api.roamgo.net/api/partner/v1/orders' \
--header 'Authorization: Roamgo-HMAC-SHA256 keyId=<KEY_ID>, ts=<UNIX>, sig=<SIGNATURE>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <UNIQUE_KEY>' \
--data '{"planId":"cm_plan_id","quantity":1,"customerEmail":"traveler@example.com","externalRef":"BOOKING-49102"}'HTTP/1.1 202 Accepted
{
"order": {
"id": "cm_order_id",
"status": "PAID",
"customerEmail": "traveler@example.com",
"totalCents": 1840,
"currency": "USD"
}
}curl --request GET \
--url 'https://api.roamgo.net/api/partner/v1/esims/cm_esim_id/qr' \
--header 'Authorization: Roamgo-HMAC-SHA256 keyId=<KEY_ID>, ts=<UNIX>, sig=<SIGNATURE>' \
--output esim-qr.pngHTTP/1.1 200 OK
Content-Type: image/png
Cache-Control: private, max-age=3600curl --request POST \
--url 'https://api.roamgo.net/api/partner/v1/esims/cm_esim_id/topups' \
--header 'Authorization: Roamgo-HMAC-SHA256 keyId=<KEY_ID>, ts=<UNIX>, sig=<SIGNATURE>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <UNIQUE_KEY>' \
--data '{"topUpProviderPlanId":"topup_1gb_7d","externalRef":"BOOKING-49102-TOPUP-1"}'HTTP/1.1 201 Created
{
"topUp": {
"id": "cm_topup_id",
"status": "COMPLETED",
"priceCents": 480,
"currency": "USD"
}
}import crypto from "node:crypto";
// X-Roamgo-Signature: t=<unix>,v1=<hex>
export function verifyRoamgoSignature(rawBody: string, header: string, secret: string) {
const match = header.match(/^t=(\d+),v1=([0-9a-f]+)$/);
if (!match) return false;
const [, ts, v1] = match;
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
const expected = crypto
.createHmac("sha256", secret)
.update(`${ts}.${rawBody}`)
.digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected, "hex"), Buffer.from(v1, "hex"));
}{
"id": "evt_8d…",
"type": "order.fulfilled",
"createdAt": "2026-09-30T09:14:02.118Z",
"livemode": true,
"data": {
"order": {
"id": "cm_order_id",
"status": "FULFILLED",
"items": [{
"esims": [{
"iccid": "8910…",
"lpaString": "LPA:1$...",
"status": "ISSUED"
}]
}]
}
}
}Eén API voor elk deel van de verkoop
Elke resource linkt naar de referentie, met parameters, fouten en voorbeelden.
Catalogus
Bestellingen
eSIM's
Account
Integreer de API of lanceer zonder code
De API is één manier om te verkopen. De opties hieronder draaien op dezelfde catalogus, hetzelfde tegoed en dezelfde levering.
Begin met bouwen in de sandbox
Maak een gratis partneraccount, genereer testsleutels in het dashboard en doorloop een volledige bestelling, met QR-code en webhooks, voordat je tegoed toevoegt.