Skip to main content
A pass moves through several statuses during its life. This page explains what each status means, how to transition between them via the API, and how each transition is reflected in the user’s wallet. For permanent, irreversible data removal, see Pass Nullification.

Pass statuses

Deactivating a pass

You can deactivate a pass either immediately or on a schedule, from the Dashboard or via the API.

From the Dashboard

  1. Go to Passes and select the pass you want to deactivate.
  2. In the Pass management section, click Deactivate pass.
  3. Confirm in the dialog. The pass status changes to deactivated and the deactivation timestamp is recorded.
Reactivating a pass from the Dashboard is only supported through Bulk Update via CSV (pass_action=reactivate). For a single pass, use the API.

Via the API

Use the Update Pass endpoint to deactivate a pass, either immediately or on a schedule. To deactivate, set passAction to deactivate:
To deactivate at a future time, set expiresAt to an ISO 8601 timestamp in UTC:
expiresAt must be in the future. If your organisation is on a trial, it must also be earlier than your trial expiry. Scheduled deactivation is processed hourly, so the status change can lag the timestamp by up to an hour.

What deactivation does

  • The pass status is set to deactivated and deactivatedAt is recorded.
  • The pass cannot be added to a wallet. Download and install requests are rejected.
  • When using PassEntry Validation, Scans and NFC taps are refused, with a refusal reason of deactivated_pass. The pass no longer works at entry points.
  • Wallet notifications are not delivered, on either platform.
  • The pass can still receive data updates through the API, and those updates are written to the wallet object.
  • The pass is not removed from the user’s wallet. It moves to the expired or archived section.
  • The pass data and content is unchanged by default, if you wish to remove scanning data (Barcode/NFC) or remove pass content, this can be done in the same Update Pass request that deactivates the pass.
On Google Wallet, deactivation can take up to 24 hours to propagate to the user’s device. The wallet object is updated immediately; the delay is in Google’s device sync.

Wallet behaviour

The pass is marked as voided and moves to the expired passes section of the wallet. It is not deleted; the user can still find it under expired passes.

Reactivating a pass

To reactivate a single pass, call Update Pass with passAction set to reactivate. To reactivate many passes at once, use Batch Pass Update with pass_action=reactivate in the CSV.
The resulting status depends on where the pass was in its lifecycle:
The pass remains in the expired passes section after reactivation. To move it back to the main passes view, the user must manually select Unhide on the pass in Apple Wallet.

Lifecycle timestamps

The pass record exposes the following timestamps, which are useful when reconciling state:
  • expiresAt - when the pass is scheduled to be deactivated.
  • deactivatedAt - when the pass was deactivated via an active request.
  • removedAt - when the user removed the pass from their wallet.
  • nullifiedAt - when the pass was nullified.

Deactivation vs. nullification

If you need to permanently remove passholder data (for example, for GDPR requests) or free up an extId, use Pass Nullification instead.

Related topics

Pass Binding