Concrete Swiss integration examples.
Each example follows the same shape: what it is, how it connects, how Screver Commerce models it, and a sample request or response.
Storefront — Alpine Zone.
A destination running on Screver Commerce. Same backend powers every product tile.
Zermatt, all in one tap.
Lift passes, rentals, the Glacier Express, dinner at Findlerhof — one cart, one payment, one wallet pass.
Destination
Zermatt
Dates
Any
Guests
Any
Activity
Any
Popular this week
View all →Lift access
Zermatt Day Pass
CHF 89
Rail
Glacier Express
CHF 268
5-day course
Sedrun Ski School
CHF 320
Per day
E-Bike rental
CHF 65
Evening
Findlerhof Dinner
CHF 95
Leukerbad
Wellness day
CHF 95
Next departures from a station.
Swiss Federal Railways open transport API. No API key required; rate-limited. Used for departure boards on destination pages, station resolution for booking forms, and connector ancillaries for combined tickets.
javascript
// Fetch next 6 departures from Montreux
const res = await fetch(
'https://transport.opendata.ch/v1/stationboard?station=Montreux&limit=6'
);
const { stationboard } = await res.json();
return stationboard.map(s => ({
departureTime: s.stop.departure,
line: s.category + s.number,
destination: s.to,
platform: s.stop.platform,
delay: s.stop.delay,
}));Initiate a Swiss mobile payment.
TWINT is initiated by a token (QR or deep-link) returned from a payment provider. Datatrans, SIX Payment Services, and PostFinance all expose TWINT.
http
POST /api/payments/twint/initiate
{
"bookingId": "bkg_01HTABXYZ",
"amount": 64320,
"currency": "CHF",
"channel": "web"
}
-> 200 OK
{
"qrCode": "https://twint.ch/q/abc...",
"deepLink": "twint://pay?token=abc...",
"expiresAt": "2026-05-25T14:35:00Z",
"reference": "twint_ref_123"
}Federated Swiss identity.
SwissPass is the rail-issued identity used by SBB for Half-Fare and GA. SwissID is the federated Swiss digital identity. Both expose OAuth2/OIDC. Binding a SwissPass at checkout applies Half-Fare or GA reduction automatically — the fare engine reads the entitlement; no manual reduction selection.
Lift access control.
Both expose vendor APIs for ticket pre-loading, gate validation, and entitlement push. On booking confirmation, the connector pushes the entitlement to the gate system; on gate scan, validation happens at the vendor with success/failure logged via webhook.
Skidata: REST + OAuth2 client credentials. Endpoints: /Tickets, /MediaRequests, /ValidationEvents. Retries with exponential backoff + outbox table.
Axess: SOAP / SmartConnect. Connector translates to a canonical entitlement schema and back.
Weather data for pricing rules.
Snow-depth input to the low-snow ski-pass discount rule. Wind-speed input to cable-car operability flags. Forecast input to dynamic-pricing weight. Scheduled fetch every 30 minutes; normalised weather signal cached in Postgres. The pricing rule engine reads weather.snowDepth_cm, weather.windSpeed_kmh, weather.forecastTemp_24h as input variables.
Meldewesen automation.
Each Swiss canton operates its own Kurtaxe reporting system. Most accept XML or CSV uploads; some have REST endpoints. Tourist tax is computed automatically as a synthetic line item per booking; a scheduled job aggregates per-period totals and submits to the canton endpoint in the required format. Every submission writes to IntegrationEvents.
Booking → contact + deal sync (in production).
javascript
// On booking.created
await hubspot.contacts.upsert({
idProperty: 'email',
properties: {
email: customer.email,
firstname: customer.firstName,
lastname: customer.lastName,
preferred_language: customer.locale,
swisspass_bound: !!customer.swissPassId,
},
});
await hubspot.deals.create({
properties: {
dealname: `Booking ${booking.reference}`,
amount: booking.total / 100,
pipeline: tenant.hubspot.pipelineId,
dealstage: 'closedwon',
booking_id: booking.id,
booking_lines: JSON.stringify(booking.lineItems),
},
associations: [{ to: { id: contactId }, types: [...] }],
});Keep reading
