ReserveNow

Reservation CSMS->CS OCPP 2.0.1

Sent by the CSMS to reserve an EVSE for a specific identifier. The EVSE will be held until the reservation expires or is cancelled.

Quick Reference

Required Fields

id integer

Unique identifier for this reservation

expiryDateTime string (date-time)

Date and time when the reservation expires

idToken IdTokenType

Identifier that will be used to start the transaction for this reservation

Optional Fields

evseId integer

EVSE to reserve. If omitted, any available EVSE can be used

connectorType ConnectorEnumType

Type of connector required (cCCS1, cCCS2, cG105, cTesla, cType1, cType2, s309-1P-16A, etc.)

groupIdToken IdTokenType

Group identifier for the reservation

Example Payload

{
  "id": 1,
  "expiryDateTime": "2024-01-15T12:00:00Z",
  "idToken": {
    "idToken": "AABBCCDD",
    "type": "ISO14443"
  },
  "evseId": 1
}

Example Full Frame

[
  2,
  "msg-001",
  "ReserveNow",
  {
    "id": 1,
    "expiryDateTime": "2024-01-15T12:00:00Z",
    "idToken": {
      "idToken": "AABBCCDD",
      "type": "ISO14443"
    },
    "evseId": 1
  }
]

Format: [MessageType, MessageId, Action, Payload]

Overview

ReserveNow creates a reservation on a specific EVSE (or any EVSE) for a given identifier. While reserved, the EVSE status shows Reserved and cannot be used by other drivers.

When to Send

  • When a driver books a charger in advance via an app
  • For scheduled fleet charging sessions

Expected Response

  • status: Accepted, Faulted, Occupied, Rejected, or Unavailable

Key Differences from OCPP 1.6J

OCPP 1.6JOCPP 2.0.1
expiryDateexpiryDateTime
idTag (string)idToken (object)
connectorIdevseId + optional connectorType

Usage Notes

  • After the reservation, the Charging Station sends StatusNotification with Reserved
  • Use ReservationStatusUpdate to track reservation status changes
  • The reserved EVSE will only accept the matching idToken to start a session

Testing Tips

  • Create a reservation, verify StatusNotification shows Reserved
  • Test expiry: after expiryDateTime, verify the EVSE returns to Available
  • Test that a different idToken is rejected when a reservation is active

Common Errors

TypeConstraintViolation

Cause: expiryDate used instead of expiryDateTime

Solution: OCPP 2.0.1 uses expiryDateTime (not expiryDate as in 1.6J)

TypeConstraintViolation

Cause: idToken is a plain string

Solution: idToken is an object with idToken and type fields in OCPP 2.0.1