Skip to main content

Ferry tickets in Apple Wallet and Google Wallet

A crossing is planned the day before and lived in the 30 minutes before boarding. eldo wallet steps into both moments. The ticket is in Apple Wallet or Google Wallet from the moment of booking, the reminder arrives at the right time, and so does the dock change. On a delay, passengers wait at home, not on the quay.

Try this pass liveFill in the form, watch the pass and the code update, then get it on your phone.

Customer journey​

Integration workflow​

  1. Create the crossing templateBack office

    Use the Boat type. Fill in the ports and their codes, reference times, fare, terms of carriage and customer service number. Set seatName=N_CABINE so the seat field shows as a cabin number. One template per route is enough.

    POST/transitsTry it
    curl -L 'https://api-v2.test.eldowallet.fr/transits' \
    -H 'Accept: application/json' \
    -H 'x-lang: en' \
    -H 'Authorization: Bearer <token>' \
    -F 'strip=@"crossing.png"' \
    -F 'type="Boat"' \
    -F 'number="1"' \
    -F 'originStationCode="MRS"' \
    -F 'originName="Marseille"' \
    -F 'destinationStationCode="AJA"' \
    -F 'destinationName="Ajaccio"' \
    -F 'departureTime="17:30"' \
    -F 'arrivalTime="05:30"' \
    -F 'seatName="N_CABINE"' \
    -F 'details="Boarding closes 45 minutes before departure."' \
    -F 'terms="Named ticket. ID required."' \
    -F 'barcodeFormat="QR_CODE"' \
    -F 'colors="{\"backgroundColor\":\"\#0b5a7a\",\"labelColor\":\"\#c8f15f\",\"foregroundColor\":\"\#ffffff\"}"'
  2. Issue the ticket at bookingYour server

    Your booking system calls eldo wallet for each ticket, with the sailing's tripNumber and the cabin in seat. Add the passenger list and the vehicle on board as custom back fields (customBackFields). For a group, issue in bulk.

  3. The passenger adds the ticketEnd customer

    They open it from the confirmation email. No more PDF to print.

  4. Boarding reminderYour server

    30 minutes before departure, your scheduling system sends a message to every holder on the sailing: "Boarding in 30 min, dock B6. Remember your ID."

    POST/transits/{transitId}/passes/trip/{tripNumber}/notifyTry it
    curl -L 'https://api-v2.test.eldowallet.fr/transits/$TRANSIT_ID/passes/trip/MRS-AJA-20260718/notify' \
    -H 'Accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'x-lang: en' \
    -H 'Authorization: Bearer <token>' \
    -d '{
    "message": "Boarding in 30 min, dock B6. Remember your ID."
    }'
  5. Dock change or delayYour server

    Bad weather, one-hour delay: update the times on every ticket of the trip, then explain why with a message. Dock change? A message is enough.

  6. Change a passenger's bookingYour server

    New cabin, an extra child, moved to another sailing: update the ticket concerned, including its tripNumber.

  7. BoardYour server

    Staff scan the barcode. The ticket is looked up, then redeemed.

  8. Traveller card and upgradesYour server

    Count crossings on the loyalty card ("8/10 crossings"). At the threshold, send a cabin upgrade coupon. Before summer, win back last year's passengers with a targeted coupon.

Best practices​

  • One tripNumber per sailing, not per route. Monday's 17:30 and Tuesday's 17:30 are two different trips.
  • A family: how many tickets? One ticket per booking with the passenger list on the back works for group boarding. One ticket per passenger is needed if each person is checked separately.
  • Warn early. A delay announced at home avoids a crowd on the quay. Trigger the update as soon as your operations system detects it.
  • Set the expiry date. The ticket expires after the crossing.

Go further​

Get inspired​

A crossing is also the start of a holiday. Here are ideas to enrich your passengers’ experience.

The day-before checklistThe day before departure: latest check-in time at the port, ID documents, pets, vehicle height. Fewer questions at the desk.
On-board restaurant and shopAs soon as boarding starts, an offer for the restaurant, bar or on-board shop lands on the ticket. The crossing becomes an experience.
Last-minute seatsA crossing still half empty? Offer a last-minute fare to regular passengers on that route.
Deals on arrivalAs the ship nears the arrival port, an offer from a local partner: car rental, excursion, restaurant.
Traveller’s birthdayOn their birthday, a loyal traveller receives a discount on their next crossing.
Expiring creditA passenger holds a credit after a cancellation? A reminder before it expires invites them to book.
Post-crossing reviewThe day after arrival, a message asks the passenger to rate the crossing, with a direct link.

Like one of these ideas? Contact our team and we'll show you how to set it up.

API news, once a month

New endpoints, upcoming changes, guides and use cases. No spam, one-click unsubscribe.

Report a technical problem

An API error, a pass that does not update, an email that does not arrive? Describe the problem: our technical team will answer.

For a fast answer, include:

  • The method and endpoint (e.g. POST /clients)
  • The error code returned (errorCode) and the body sent
  • The date and time of the call
  • The identifiers involved (customer, template, pass)

Never include an API token or a password.

AI assistant

Beta

Loading…

AI-generated answers (Claude): double-check important details.

Sign in to use the assistant