Skip to main content

Employee badges in Apple Wallet and Google Wallet

A plastic badge gets printed, lost, reprinted, and rarely comes back on the last day. An employee badge in Apple Wallet or Google Wallet is issued on day one, updated with every change and deleted on departure. Its barcode carries the employee ID: your systems read it like a regular badge. The same channel carries internal communications, employee perks and badges for your company events.

What eldo wallet does, what your system does

eldo wallet issues the badge, updates it and answers the barcode lookup. The reader, the access-control software and the time-tracking tool stay yours: they read the badge's barcode, then query eldo wallet or their own database. eldo wallet provides neither access hardware nor a time-tracking tool.

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

Employee journeyโ€‹

Integration workflowโ€‹

  1. Set up the badgeBack office

    Pick MEMBER_CARD, show the company (ENTREPRISE) and the start date (ADMISSION_DATE). On iPhone, show the employee's name in the header (iosHeader set to FULLNAME). Pick a barcode format your readers can scan: QR_CODE, CODE_128, PDF_417 or AZTEC. Turn off sharing.

    PATCH/store-cardsTry it
    curl -L -X PATCH 'https://api-v2.test.eldowallet.fr/store-cards' \
    -H 'Accept: application/json' \
    -H 'x-lang: en' \
    -H 'Authorization: Bearer <token>' \
    -F 'strip=@"atlas.png"' \
    -F 'cardType="MEMBER_CARD"' \
    -F 'programName="Employee badge"' \
    -F 'barcodeType="QR_CODE"' \
    -F 'startRow="ENTREPRISE"' \
    -F 'endRow="ADMISSION_DATE"' \
    -F 'iosHeader="{\"labelEnum\":\"CUSTOM_TEXT\",\"customLabel\":\"Employee\",\"valueEnum\":\"FULLNAME\"}"' \
    -F 'validity="{\"expirationType\":\"NO_EXPIRATION\"}"' \
    -F 'sharingProhibited="true"' \
    -F 'sharingProhibitedAndroid="true"' \
    -F 'colors="{\"backgroundColor\":\"\#1e293b\",\"labelColor\":\"\#38bdf8\",\"foregroundColor\":\"\#ffffff\"}"'
  2. One status, one client typeBack office

    Employee, temp, intern, contractor: each status becomes a client type. Your access control uses it to apply its rules (zones, hours). See Client types.

  3. Issue the badge on day oneYour server

    Your HR system creates the employee when they join, with their work email, employee ID as the barcode, status, entity (companyName) and start date. At launch, import all employees in bulk. See Import a customer base.

    POST/clientsTry it
    curl -L 'https://api-v2.test.eldowallet.fr/clients' \
    -H 'Accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'x-lang: en' \
    -H 'Authorization: Bearer <token>' \
    --data-raw '{
    "firstName": "Nadia",
    "lastName": "Benali",
    "email": "nadia.benali@atlas-industries.example",
    "barcode": "E-20418",
    "clientType": "$EMPLOYEE_TYPE_ID",
    "companyName": "Atlas Industries Lyon",
    "admissionDate": "2024-03-04T00:00:00.000Z",
    "source": "CRM",
    "sendCard": true
    }'
  4. The employee adds the badgeEnd customer

    They show it to the reader, even with no network on their phone.

  5. Access and time tracking by your systemYour server

    Your reader scans the barcode. Your access-control or time-tracking software looks up the employee by ID, checks their type (clientTypeName) and pass status (passStatus), then opens the door or records the clock-in in its own tool. An unknown ID returns MODEL_NOT_FOUND.

    GET/clients/barcode/{barcode}Try it
    curl -L 'https://api-v2.test.eldowallet.fr/clients/barcode/E-20418' \
    -H 'Accept: application/json' \
    -H 'x-lang: en' \
    -H 'Authorization: Bearer <token>'
  6. Visitor and seminar badgesYour server

    Seminar, annual convention, open day, customer visit: create an event, then issue a badge to each attendee. Employees: pass their clientId. Visitors: first name, last name and email are enough. At reception, scan the badge and redeem it. See Events & trade fairs.

    POST/events/{id}/passes/bulkTry it
    curl -L 'https://api-v2.test.eldowallet.fr/events/$EVENT_ID/passes/bulk' \
    -H 'Accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'x-lang: en' \
    -H 'Authorization: Bearer <token>' \
    --data-raw '{
    "items": [
    {
    "firstName": "Nadia",
    "lastName": "Benali",
    "email": "nadia.benali@atlas-industries.example",
    "clientId": "$CLIENT_ID",
    "leftRow": "Employee"
    },
    {
    "firstName": "Marc",
    "lastName": "Lefรจvre",
    "email": "marc.lefevre@example.com",
    "leftRow": "Visitor"
    }
    ]
    }'
  7. Internal communicationsBack office

    Site closed today, evacuation drill, benefits enrolment now open: an INFORMATIVE notification to every badge holder, or to a list (target: SPECIFIC). For an internal campaign (safety week, charity drive), create a communication: the badge's strip changes for the period. See Push notifications.

  8. Employee perksYour server

    Works council offers, partner discounts, a free meal at the staff restaurant: send a coupon to the employees concerned. The partner or the till scans and redeems it.

    POST/coupons/{id}/passes/sendTry it
    curl -L 'https://api-v2.test.eldowallet.fr/coupons/$PERK_COUPON_ID/passes/send' \
    -H 'Accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'x-lang: en' \
    -H 'Authorization: Bearer <token>' \
    -d '{
    "clients": [
    {
    "clientId": "$CLIENT_ID"
    },
    {
    "clientId": "$OTHER_CLIENT_ID"
    }
    ]
    }'
  9. Internal movesYour server

    New status or new site: update the type and the entity. Department, HR contact, emergency number: add them as additional information on the back. The installed badge updates.

  10. OffboardingYour server

    On the last day, your HR system deletes the employee in eldo wallet, by ID or by employee number. The same day, deactivate the employee ID in your access control: it's the one that decides to open the door.

    DELETE/clients/barcode/{barcode}Try it
    curl -L -X DELETE 'https://api-v2.test.eldowallet.fr/clients/barcode/E-20418' \
    -H 'Accept: application/json' \
    -H 'x-lang: en' \
    -H 'Authorization: Bearer <token>'

Best practicesโ€‹

  • Employee ID as the barcode. It's the identifier your systems already know.
  • No sensitive data on the badge. Name, entity and start date are enough. Pay, reviews and health data stay in your HR system.
  • Offboarding happens on both sides. Delete in eldo wallet and deactivate in your access control, on the same day.
  • Plan a fallback mode. The badge displays offline, but the barcode lookup needs network on the reader side. Keep a local list of active IDs in your access system.
  • Test your readers. A 1D laser reader can't scan a QR code on a screen. Test with Apple and Google badges before rollout.
  • Turn off sharing. The badge is personal.

Go furtherโ€‹

Get inspiredโ€‹

The Wallet badge can support the whole employee experience. Here are ideas to go further.

Welcome the day beforeThe day before the start date: time, floor, name of the person welcoming them. Day one starts stress-free.
Work anniversaryโ€œ5 years with us, thank you!โ€ A message on each work anniversary, and why not a perk.
Parking and car-sharingAssigned parking space, bike parking access, car-sharing offers: the information is on the badge.
Upcoming trainingThe day before a training session: room, time and a link to the materials. Fewer no-shows, better punctuality.
Employee surveyA message invites employees to take the annual survey, with a direct link. More responses than an email.
Visiting another siteOn arriving at another group site, employees see the reception address and the guest Wi-Fi code.
Todayโ€™s menuThe staff restaurant menu on the back of the badge, updated every morning.
Green commute challengeCycling, walking, public transport: a team challenge, with the leaderboard on the badge and a reward at the end.

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