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
| Field | Type | Required | Description |
|---|---|---|---|
id | integer | Required | Reservation id, chosen by the CSMS. |
expiryDateTime | dateTime | Required | When the reservation lapses. |
idToken | IdTokenType | Required | The token the reservation is held for. |
connectorType | ConnectorEnumType | Optional | The kind of connector required — cCCS1, cType2, sType2 and so on. |
evseId | integer | Optional | A specific EVSE. Omit to reserve any suitable one. |
groupIdToken | IdTokenType | Optional | Group 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
| Field | Type | Required | Description |
|---|---|---|---|
status | ReserveNowStatusEnumType | Required | Whether the reservation was made. |
statusInfo | StatusInfoType | Optional | Reason code. |
json
[3, "19223201", {
"status": "Accepted"
}]Values
ReserveNowStatusEnumType
| Value | Meaning |
|---|---|
Accepted | The reservation was made. |
Faulted | The EVSE is faulted. |
Occupied | The EVSE is in use. |
Rejected | Refused, or reservations are not supported. |
Unavailable | The 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.