> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Check-ins

> How to track who is on-site at your location using check-ins and handle failed check-in attempts in Nexudus.

## Overview

The **Check-ins** section shows you who is currently on-site at your location and their visit history. Customers check in when they arrive and check out when they leave — either manually, via door access activity, WiFi network detection, automation tiles, sensors, or automatically when a booking starts.

Check-ins are tied to **passes**, which represent a customer's entitlement to access your space. When a customer checks in, the system validates that they have a valid pass (from their plan or a standalone pass) and deducts usage time accordingly.

If a check-in attempt fails (e.g., no valid pass, account disabled, plan limits exceeded), it's recorded as a **failed check-in** for review.

## How to access

* **Check-ins calendar**: Navigate to **Operations → Access & Check-in → Customers on site**
* **Failed check-ins**: Navigate to **Operations → Access & Check-in → Failed check-ins**

<Note>
  Requires the **checkin** role.
</Note>

## Key concepts

| Term | Meaning |
| - | - |
| **Check-in** | A record that a customer arrived at your location, with start and optional end time |
| **Check-out** | Closing a check-in by recording the departure time |
| **Pass** | A customer's entitlement to access the space (from a plan benefit or a standalone pass purchase) |
| **Pay-as-you-go** | A mode where customers without a plan are charged per-minute for their time on-site |
| **Daily cut-off time** | The hour at which all customers are automatically checked out (e.g., midnight or 2 AM) |
| **Failed check-in** | A check-in attempt that was rejected because the customer didn't meet the requirements |
| **Check-in source** | How the check-in was triggered (manual, door access, WiFi, etc.) |

***

## Check-in sources

Check-ins can be created through several methods:

| Source | How it works |
| - | - |
| **Manual / NexIO** | An administrator checks the customer in from the dashboard, or the customer uses the NexIO front-desk app |
| **Door access** | A door access integration (Kisi, Salto, Gallagher, etc.) detects the customer entering the building |
| **Network activity (WiFi)** | The system detects the customer's device MAC address on the WiFi network |
| **Automation tile** | A configured automation tile triggers a check-in (e.g., tapping an NFC tag) |
| **Sensor** | An IoT sensor detects the customer's presence |
| **Booking** | A booking starts and the customer is automatically checked in for the duration |

***

## The check-in calendar

The main check-ins page displays a **hybrid calendar and list view** showing:

* Who is currently on-site (open check-ins with no departure time)
* Recent check-ins and check-outs
* Booking-based check-ins (displayed separately)
* Visitor check-ins from bookings

### Calendar views

* **Month view** — Overview of check-in activity across the month
* **Timeline view** — Check-ins grouped by customer, showing durations as bars
* **List view** — Tabular list of check-ins by day

### Check-in list columns

| Column | Description |
| - | - |
| **Customer** | The customer's full name (links to their profile) |
| **Start time** | When the customer checked in |
| **End time** | When the customer checked out (blank if still on-site) |
| **Plan** | The customer's active plan at the time of check-in |
| **Team** | The customer's team membership at the time of check-in |

***

## Creating a manual check-in

<Steps>
  <Step title="Open the check-in calendar">
    Navigate to **Operations → Access & Check-in → Customers on site**.
  </Step>

  <Step title="Click on a time slot or use the new button">
    Select a date/time on the calendar or click the "+" button to open the check-in form.
  </Step>

  <Step title="Select the location">
    Choose the location where the customer is checking in.
  </Step>

  <Step title="Select the customer">
    Choose the customer from the dropdown.
  </Step>

  <Step title="Set arrival and departure times">
    Set the arrival time. You can optionally set a departure time (or leave it open to check the customer out later). Use the duration shortcuts (1h, 2h, 4h, 8h) for quick selections.
  </Step>

  <Step title="Save">
    Click **Save**. The system validates that the customer has a valid pass and records the check-in.
  </Step>
</Steps>

<Info>
  Times are rounded to the nearest 15-minute interval automatically.
</Info>

***

## Check-in form fields

| Field | Description |
| - | - |
| **Location** | The location where the customer is checking in |
| **Customer** | The customer being checked in |
| **Check-in type** | The source of the check-in (read-only after creation — see "Check-in sources" above) |
| **Arrival** | The check-in start time |
| **Departure** | The check-out time (leave empty for an open check-in) |

***

## How pass validation works

When a customer checks in, the system validates their entitlement in this order:

1. **Is the account active?** — Disabled accounts cannot check in.
2. **Does the customer have a valid pass?** — The system looks for an unused pass that:
   * Is valid at the current time (within the pass's allowed hours and days)
   * Is valid at this location (if the pass is restricted to specific locations)
   * Has remaining time (if the pass is time-based)
   * Is not already in use by another check-in (for single-use passes)
3. **Are plan limits exceeded?** — For members with a plan, the system checks:
   * Weekly check-in limit (max number of check-ins per week)
   * Weekly hours limit (max hours per week)
   * Monthly check-in limit (max number of check-ins per month)
   * Monthly hours limit (max hours per month)
   * Plan-period check-in limit (total check-ins since last renewal)
   * Plan-period hours limit (total hours since last renewal)
4. **Is pay-as-you-go available?** — If no pass is found, the system checks if pay-as-you-go access is enabled and a valid pay-as-you-go pass exists.

If all checks fail, the check-in is rejected and recorded as a **failed check-in**.

### Pass priority

When multiple valid passes exist, the system selects one based on:

1. Passes with the highest priority value (configured on the pass)
2. Passes restricted to this location (more specific = preferred)
3. Passes linked to specific plans
4. Passes with the most remaining time
5. Plan-included passes over standalone passes

### Shared passes (teams)

If the customer doesn't have their own valid pass, the system checks if their team's paying member has shared passes available. Shared passes are used when:

* The team has pass-sharing enabled
* The paying member has valid passes with remaining time

***

## Failed check-ins

When a check-in attempt fails, a record is created in **Operations → Access & Check-in → Failed check-ins** with:

| Field | Description |
| - | - |
| **Customer** | Who attempted to check in |
| **Check-in attempted at** | When the attempt was made |
| **Check-in type** | The source (manual, door access, WiFi, etc.) |
| **Description** | The reason the check-in failed |

### Common failure reasons

| Reason | Meaning |
| - | - |
| **Account disabled** | The customer's account is inactive |
| **No valid pass** | The customer has no pass that's valid at this time and location |
| **Plan limits exceeded** | The customer has used all their included check-ins or hours for the current period |
| **Pass not valid at this location** | The customer has a pass, but it's restricted to a different location |
| **Pass expired** | The customer's pass has expired |

### Filter segments

Failed check-ins can be filtered by:

* Today
* This week
* Last week
* This month
* Last month

<Tip>
  Review failed check-ins regularly to identify customers who may need a plan upgrade or have an expired pass.
</Tip>

***

## Automatic check-out

The system automatically checks customers out in several scenarios:

### Daily cut-off time

All customers are automatically checked out at the configured **daily cut-off time** (e.g., midnight or 2 AM). This prevents check-ins from spanning into the next day when customers forget to check out.

The cut-off time is configured in hours (0–23) and represents the time in your location's timezone.

### Pass depletion

If a customer's pass runs out of remaining time while they're checked in, the system:

1. Continuously monitors whether the check-in is still valid via background processing
2. If the pass is depleted, automatically checks the customer out at the time the pass ran out (determined by checking backwards in 15-minute intervals)
3. Attempts to check the customer back in with a new pass (if one is available)
4. If no new pass is available, sends an auto-checkout notification (if enabled)

### Pass time restrictions

If a pass is only valid during certain hours (e.g., "Weekdays 9 AM – 6 PM"), the system continuously validates the check-in and automatically checks the customer out when the valid window ends. After checkout, the system attempts to check the customer back in with another available pass.

### Day change

If a check-in spans across the daily cut-off time (e.g., customer checked in at 10 PM, cut-off is midnight), the customer is checked out at the cut-off time. If they're still on-site after the cut-off, a new check-in is started for the new day.

***

## Pay-as-you-go access

Pay-as-you-go mode lets customers who don't have a plan (or who have exceeded their plan limits) still check in and be charged per-minute for their time.

### How it works

1. When a customer checks in with no valid pass, the system looks for a **pay-as-you-go pass** configured for their customer type (member or contact).
2. A temporary pass is created with zero minutes.
3. When the customer checks out, the total time is calculated and a charge is generated based on the pass's per-minute rate.
4. The charge appears on the customer's next invoice (or immediately for contacts, depending on settings).

### Pay-as-you-go settings

| Setting | Effect |
| - | - |
| **Enable pay-as-you-go access** | Allows customers without a valid pass to check in and be charged per minute |
| **Exclude time used in bookings** | Deducts time spent in bookings from the pay-as-you-go calculation (avoids double-charging) |
| **Members pay via their contract** | Pay-as-you-go charges for members are added to their contract invoice instead of generating a separate invoice |
| **Minimum daily price** | The minimum charge for a day, regardless of how little time was used |
| **Maximum daily price** | The maximum charge for a day, regardless of how much time was used (acts as a daily cap) |

***

## Check-in settings

Check-in settings are found under **Settings → Members → Check-in settings**.

### General settings

| Setting | Effect |
| - | - |
| **Notify customers when running low on access time** | Sends an email when the customer's remaining pass hours drop below the threshold |
| **Low credit threshold (hours)** | The number of hours below which the low-credit notification is sent |
| **Notify customers if they forget to check out** | Sends an email when the system auto-checks out a customer |
| **Record multiple check-ins per day** | When enabled, checking in and out multiple times in one day creates separate records. When disabled, re-checking in on the same day re-opens the previous check-in. |
| **Daily cut-off time** | The hour (0–23) at which all customers are automatically checked out |
| **Building capacity** | Maximum number of people allowed on-site simultaneously (enforced by NexIO) |

### Network check-in settings

| Setting | Effect |
| - | - |
| **Automatically check known users in based on their MAC address** | When the system detects a registered device on WiFi, automatically creates a check-in |
| **Generate an access token for every pre-registered visitor** | Creates a WiFi access token for visitors automatically |
| **Default duration for visitor access tokens** | How long visitor WiFi tokens remain valid (in minutes) |
| **Maximum devices per user** | Limit on how many devices a single customer can register for network check-in |
| **Maximum devices per visitor** | Limit on how many devices a visitor can connect |

***

## Webhooks

The following webhook events are triggered by check-in activity:

| Event | Triggered when |
| - | - |
| **Customer checked in** | A check-in is successfully created |
| **Customer checked out** | A check-in is closed (departure time set) |
| **Customer check-in failed** | A check-in attempt is rejected |
| **Check-in created** | A check-in record is created (includes manual/admin) |
| **Check-in updated** | A check-in record is modified |
| **Check-in deleted** | A check-in record is removed |

***

## Best practices

* **Set a daily cut-off time** to prevent check-ins from spanning days when customers forget to check out. A time between midnight and 4 AM works well for most spaces.
* **Enable auto-checkout notifications** so customers know when they've been checked out and can see their usage for the day.
* **Use pay-as-you-go with a daily cap** to offer flexible drop-in access while capping the cost at a reasonable day rate.
* **Review failed check-ins weekly** to identify customers hitting plan limits — these are upgrade opportunities.
* **Enable network check-in** for a frictionless experience — customers are checked in automatically when their phone connects to WiFi.
* **Set building capacity** if your location has occupancy limits — NexIO will prevent check-ins when the space is full.

***

## Related pages

<CardGroup cols={2}>
  <Card title="Passes" icon="ticket" href="/platform/billing/time-passes">
    Configure the passes that determine who can check in.
  </Card>

  <Card title="Plans" icon="file-contract" href="/platform/billing/plans">
    Set up plan benefits including check-in limits and included passes.
  </Card>

  <Card title="Access control" icon="lock" href="/platform/access-control/overview">
    Integrate with door systems for automated check-ins.
  </Card>

  <Card title="Bookings" icon="calendar" href="/platform/operations/bookings">
    Bookings can automatically check customers in for the duration of their reservation.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.