Reserve Now
Source: OCPP 1.6 Specification — Section 5.13 (Operation), Sections 6.37 / 6.38 (Messages)
Overview
A Central System can issue a ReserveNow.req to a Charge Point to reserve a connector for use by a specific idTag.
To request a reservation the Central System SHALL send a ReserveNow.req PDU to a Charge Point. The Central System MAY specify a connector to be reserved. Upon receipt of a ReserveNow.req PDU, the Charge Point SHALL respond with a ReserveNow.conf PDU.
If the reservationId in the request matches a reservation in the Charge Point, then the Charge Point SHALL replace that reservation with the new reservation in the request.
If the reservationId does not match any reservation in the Charge Point, then the Charge Point SHALL return:
Accepted— if it succeeds in reserving a connector.Occupied— if the Charge Point or the specified connector are occupied. Also returned when the Charge Point or connector has been reserved for the same or anotheridTag.Faulted— if the Charge Point or the connector are in the Faulted state.Unavailable— if the Charge Point or connector are in the Unavailable state.Rejected— if it is configured not to accept reservations.
If the Charge Point accepts the reservation request, then it SHALL refuse charging for all incoming idTags on the reserved connector, except when the incoming idTag or the parent idTag match the idTag or parent idTag of the reservation.
When the configuration key ReserveConnectorZeroSupported is set to true the Charge Point supports reservations on connector 0. If the connectorId in the reservation request is 0, then the Charge Point SHALL NOT reserve a specific connector, but SHALL make sure that at any time during the validity of the reservation, one connector remains available for the reserved idTag. If the configuration key ReserveConnectorZeroSupported is not set or set to false, the Charge Point SHALL return Rejected.
If the parent idTag in the reservation has a value (it is optional), then in order to determine the parent idTag that is associated with an incoming idTag, the Charge Point MAY look it up in its Local Authorization List or Authorization Cache. If it is not found in the Local Authorization List or Authorization Cache, then the Charge Point SHALL send an Authorize.req for the incoming idTag to the Central System. The Authorize.conf response contains the parent-id.
A reservation SHALL be terminated on the Charge Point when either:
- A transaction is started for the reserved
idTagor parentidTagand on the reserved connector or any connector when the reservedconnectorIdis0, - The time specified in
expiryDateis reached, or - The Charge Point or connector are set to
FaultedorUnavailable.
If a transaction for the reserved idTag is started, then Charge Point SHALL send the reservationId in the StartTransaction.req PDU to notify the Central System that the reservation is terminated.
When a reservation expires, the Charge Point SHALL terminate the reservation and make the connector available. The Charge Point SHALL send a status notification to notify the Central System that the reserved connector is now available.
If the Charge Point has implemented an Authorization Cache, then upon receipt of a ReserveNow.conf PDU the Charge Point SHALL update the cache entry, if the idTag is not in the Local Authorization List, with the IdTagInfo value from the response as described under Authorization Cache.
NOTE: It is RECOMMENDED to validate the Identifier with an
Authorize.reqafter reception of aReserveNow.reqand before the start of the transaction.
Sequence Diagram
Figure 34. Sequence Diagram: Reserve Now
Central System ──── ReserveNow.req ────▶ Charge Point
(connectorId, expiryDate, idTag, parentIdTag?, reservationId)
Central System ◀─── ReserveNow.conf ──── Charge Point
(status)
Initiator
Central System → Charge Point
Fields
| Field Name | Field Type | Card. | Description |
|---|---|---|---|
| connectorId | integer (>= 0) | 1..1 | Required. This contains the id of the connector to be reserved. A value of 0 means that the reservation is not for a specific connector. |
| expiryDate | dateTime | 1..1 | Required. This contains the date and time when the reservation ends. |
| idTag | IdToken | 1..1 | Required. The identifier for which the Charge Point has to reserve a connector. |
| parentIdTag | IdToken | 0..1 | Optional. The parent idTag. |
| reservationId | integer | 1..1 | Required. Unique id for this reservation. |
| Field Name | Field Type | Card. | Description |
|---|---|---|---|
| status | ReservationStatus | 1..1 | Required. This indicates the success or failure of the reservation. |
ReservationStatus values
Accepted— Reservation has been made.Faulted— Reservation has not been made, because connectors or specified connector are in a faulted state.Occupied— Reservation has not been made. All connectors are occupied.Rejected— Reservation has not been made. Charge Point is not configured to accept reservations.Unavailable— Reservation has not been made, because connectors or specified connector are in an unavailable state.
Examples
{
"connectorId": 1,
"expiryDate": "2026-04-27T15:00:00Z",
"idTag": "044943121F1A80",
"parentIdTag": "PARENT001",
"reservationId": 42
}{
"status": "Accepted"
}Related Configuration Keys
ReserveConnectorZeroSupported— If true, allows reservations onconnectorId = 0.
Schema
Source:
schemas/ReserveNow.json,schemas/ReserveNowResponse.json(OCPP 1.6, JSON Schema draft-04)