Id Tags

Manage RFID Id Tags that authorize charging sessions on your OCPP 1.6J chargers. Create tags, assign them to users or vehicles, and control access with status and expiry rules. All endpoints require the X-API-Key header.

Id Tag management requires the Starter tier or above. Free-tier organisations cannot create or manage Id Tags — physical RFID taps will return Invalid and the charger will not start.

Create Id Tag

POST/api/v1/id-tags

Register a new RFID Id Tag with your organisation.

Request body
json
{
  "idTag": "RFID001",
  "name": "Fleet Van #3",
  "expiryDate": "2027-06-01T00:00:00.000Z"
}
ParameterTypeDescription
idTag*stringAlphanumeric identifier printed on the RFID card (max 20 chars, unique per org)
namestringHuman-readable label for the tag (e.g. driver name or vehicle)
expiryDatestringISO 8601 date after which the tag is treated as Expired. Omit for no expiry.
Response — 201 Created
json
{
  "id": "tag_abc123",
  "idTag": "RFID001",
  "name": "Fleet Van #3",
  "status": "active",
  "scope": "all",
  "source": "api",
  "expiryDate": "2027-06-01T00:00:00.000Z",
  "createdAt": "2026-05-12T10:00:00.000Z"
}
If an Id Tag with the same value already exists in your organisation, the API returns 409 Conflict.

List Id Tags

GET/api/v1/id-tags

Get all Id Tags for your organisation.

ParameterTypeDescription
statusstringFilter by status: active, blocked
limitnumberResults per page (default: 50)
offsetnumberPagination offset (default: 0)
Response — 200 OK
json
{
  "idTags": [
    {
      "id": "tag_abc123",
      "idTag": "RFID001",
      "name": "Fleet Van #3",
      "status": "active",
      "scope": "all",
      "source": "api",
      "expiryDate": "2027-06-01T00:00:00.000Z",
      "createdAt": "2026-05-12T10:00:00.000Z",
      "updatedAt": "2026-05-12T10:00:00.000Z"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 50,
    "offset": 0
  }
}

Get Id Tag

GET/api/v1/id-tags/:idTagId

Get detailed information about a specific Id Tag.

Response — 200 OK
json
{
  "id": "tag_abc123",
  "idTag": "RFID001",
  "name": "Fleet Van #3",
  "status": "active",
  "scope": "all",
  "chargeBoxIds": [],
  "source": "api",
  "expiryDate": "2027-06-01T00:00:00.000Z",
  "createdAt": "2026-05-12T10:00:00.000Z",
  "updatedAt": "2026-05-12T10:00:00.000Z"
}

Update Id Tag

PUT/api/v1/id-tags/:idTagId

Update an existing Id Tag's name, status, or expiry.

Request body
json
{
  "name": "Fleet Van #3 — Driver B",
  "status": "blocked",
  "expiryDate": null
}
ParameterTypeDescription
namestringUpdated human-readable label
statusstringSet to active or blocked
expiryDatestring | nullNew expiry date (ISO 8601), or null to remove expiry
Response — 200 OK
json
{
  "id": "tag_abc123",
  "idTag": "RFID001",
  "name": "Fleet Van #3 — Driver B",
  "status": "blocked",
  "scope": "all",
  "chargeBoxIds": [],
  "source": "api",
  "expiryDate": null,
  "createdAt": "2026-05-12T10:00:00.000Z",
  "updatedAt": "2026-05-12T11:30:00.000Z"
}

Delete Id Tag

DELETE/api/v1/id-tags/:idTagId

Permanently delete an Id Tag from your organisation.

Response — 200 OK
json
{
  "message": "IdTag deleted successfully",
  "id": "tag_abc123"
}

OCPP Authorization

When a user taps an RFID card on a charger, the charger sends an OCPP Authorize.req containing the Id Tag value. Capacitor looks up the tag in your organisation and returns an authorization status. The same validation runs on StartTransaction.req to ensure the tag is still valid when charging begins.

The authorization status determines whether the charger allows the session to start:

StatusMeaning
AcceptedTag is active and not expired — charger starts the session
BlockedTag exists but its status is set to blocked
ExpiredTag's expiryDate is in the past
InvalidTag not found in the organisation, or organisation is on the free tier
Free tier: Physical RFID authorization is not supported. Tapping any card on a charger returns Invalid and the charger will not start. Upgrade to the Starter tier to enable Id Tag management.

Capacitor fires webhook events for every authorization attempt. idtag.authorized fires when a tag is accepted, and idtag.rejected fires when a tag is blocked, expired, or invalid. See the Webhooks docs for payload details.

Validation rules

FieldRule
idTagAlphanumeric only (a-z, A-Z, 0-9), max 20 characters, unique per organisation
statusMust be active or blocked