Documentation / Guides / Scanning Tickets
Protocol specificationAPI referenceGuides
Documentation / Guides / Scanning Tickets
GUIDE · V1

Scanning Tickets

Camera scanning, validation results, check-in flow

Opening the Scanner

Tap Scan Tickets from the home screen to open the camera scanner.

If this is your first time, the app will ask for camera access permission. You must grant it to use the scanner.

Camera View

The scanner displays:

  • Full-screen camera feed
  • An overlay frame indicating where to aim
  • A session scan counter at the bottom (e.g., "5 scanned")
  • A close button in the top corner

Scanning a QR Code

  1. Point the camera at a ticket QR code
  2. The code is detected automatically
  3. A haptic vibration confirms detection
  4. The result modal appears

A 3-second debounce prevents the same QR code from being scanned twice in rapid succession.

Result Modal

After scanning, a modal displays the validation result.

Status Icon

The top of the modal shows a colored circle with an icon:

  • Green circle with checkmark for valid tickets
  • Amber circle with warning triangle for warning conditions
  • Red circle with X for errors

Ticket Details

If the QR code contains valid ticket data, the modal shows:

Field Description
Holder Name of the ticket holder
Type Ticket type (e.g., "General Admission")
Event Event name
Date Event date and time
Checked in at Time of previous check-in (only for already-used tickets)

Scan Result Statuses

Status Icon Color Meaning
Valid Ticket Checkmark Green Ticket is valid and ready to check in
Already Checked In Warning Amber Ticket was already scanned; check-in time is displayed
Ticket Revoked X Red Ticket has been revoked by the organizer
Ticket Expired Warning Amber Ticket expiration date has passed
Wrong Event Warning Amber Ticket is for a different event than the ones this scanner is enrolled for
Ticket Not Found X Red Ticket ID not recognized by the server
Invalid Ticket X Red Digital signature verification failed (possible forgery)
Invalid QR Code X Red QR code is not a valid ticket format
Not Enrolled Warning Amber Scanner is not enrolled for this ticket's event. Shows the event name
Unknown Issuer Warning Amber Issuer public key not found; cannot verify the signature
Already Used (Local) Warning Amber Already scanned locally in this session (offline duplicate detection)
Wrong Gate Warning Amber Ticket is valid but not assigned to this scanner's gate

Check-In Flow

When a ticket is Valid:

  1. The modal shows the ticket details and a Mark as used button
  2. Tap Mark as used to check the attendee in
  3. The app sends the check-in to the server
  4. On success: green haptic feedback, the modal closes, and the scan counter increments
  5. If you do not want to check in, tap Cancel to dismiss the modal

For all other statuses, the modal shows a Close button to dismiss and continue scanning.

Offline Check-In

If the server is unreachable when you tap Mark as used:

  1. The check-in is queued locally
  2. The modal shows "Admitted (pending sync)"
  3. Green haptic feedback confirms the admission
  4. The check-in is recorded in local scan history with a "Pending sync" status

The queued check-in will be synced automatically when connectivity is restored. See Offline Mode for details.

Tips

  • Hold the phone steady about 15-20 cm from the QR code for best results
  • Ensure adequate lighting; the camera needs to clearly see the QR code
  • If a QR code is not being detected, try adjusting the angle or distance
  • The session counter resets each time you leave and re-enter the scanner