ReserveNow

Reserves an EVSE for a specific token until an expiry time.

Version
OCPP 2.0.1
Direction
CSMS → Charge Point
Functional block
Reservation

ReserveNow also exists in OCPP 1.6, with a different payload. See the OCPP 1.6 version.

Same purpose as 1.6, with two changes: reservations attach to an evseId rather than a connector, and a connectorType can be specified so a reservation asks for 'a CCS socket' rather than a particular one.

Reservation is part of the core specification in 2.0.1 rather than an optional feature profile.

Request

FieldTypeRequiredDescription
idintegerRequiredReservation id, chosen by the CSMS.
expiryDateTimedateTimeRequiredWhen the reservation lapses.
idTokenIdTokenTypeRequiredThe token the reservation is held for.
connectorTypeConnectorEnumTypeOptionalThe kind of connector required — cCCS1, cType2, sType2 and so on.
evseIdintegerOptionalA specific EVSE. Omit to reserve any suitable one.
groupIdTokenIdTokenTypeOptionalGroup token that may also use the reservation.
json
[2, "19223201", "ReserveNow", {
  "id": 77,
  "expiryDateTime": "2026-09-09T11:30:00Z",
  "evseId": 1,
  "idToken": { "idToken": "04A1B2C3D4E580", "type": "ISO14443" }
}]

Response

FieldTypeRequiredDescription
statusReserveNowStatusEnumTypeRequiredWhether the reservation was made.
statusInfoStatusInfoTypeOptionalReason code.
json
[3, "19223201", {
  "status": "Accepted"
}]

Values

ReserveNowStatusEnumType

ValueMeaning
AcceptedThe reservation was made.
FaultedThe EVSE is faulted.
OccupiedThe EVSE is in use.
RejectedRefused, or reservations are not supported.
UnavailableThe EVSE is set Inoperative.

Implementation notes

Reusing an `id` replaces the existing reservation. The CSMS owns the id space, as in 1.6.

The field is id here, where 1.6 called it reservationId, and expiryDateTime where 1.6 had expiryDate.

Expiry is reported through ReservationStatusUpdate — 2.0.1 does not leave you inferring it from a timer.