OCPP-2.0.1 Edition3 Part2 Specification
OCPP-2.0.1 Edition3 Part2 Specification
OCPP-2.0.1 Edition3 Part2 Specification
1
Part 2 - Specification
Edition 3 FINAL, 2024-05-06
Table of Contents
Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Generic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Version History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. OCPP 2.0.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. OCPP 2.0.1 Edition 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Conventions, Terminology and Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3. Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4. Actors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5. References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6. Definition of Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7. ISO 15118 support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3. Generic Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1. Time Format Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2. Message Timeouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3. Language support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
A. Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1. OCPP Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.1. Security Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2. Design Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3. Security Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4. Keys used in OCPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.5. Certificate Revocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.6. Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2. Use cases & Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
A01 - Update Charging Station Password for HTTP Basic Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
A02 - Update Charging Station Certificate by request of CSMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
A03 - Update Charging Station Certificate initiated by the Charging Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
A04 - Security Event Notification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
A05 - Upgrade Charging Station Security Profile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
B. Provisioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.1. Transactions before being accepted by a CSMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2. Use cases & Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.1. Booting a Charging Station. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
B01 - Cold Boot Charging Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
B02 - Cold Boot Charging Station - Pending. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
B03 - Cold Boot Charging Station - Rejected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
B04 - Offline Behavior Idle Charging Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.2. Configuring a Charging Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
B05 - Set Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
B06 - Get Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
B07 - Get Base Report. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
B08 - Get Custom Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
B09 - Setting a new NetworkConnectionProfile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
B10 - Migrate to new CSMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.3. Resetting a Charging Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
B11 - Reset - Without Ongoing Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
B12 - Reset - With Ongoing Transaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
C. Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.1. ID Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.2. Group ID Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.3. Authorization Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
1.4. Local Authorization List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
1.5. Unknown Offline Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
2. Use cases & Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
2.1. Authorization options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
C01 - EV Driver Authorization using RFID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
C02 - Authorization using a start button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
C03 - Authorization using credit/debit card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
C04 - Authorization using PIN-code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
C05 - Authorization for CSMS initiated transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
C06 - Authorization using local id type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2.2. ISO 15118 Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
C07 - Authorization using Contract Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
C08 - Authorization at EVSE using ISO 15118 External Identification Means (EIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
2.3. GroupId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
C09 - Authorization by GroupId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
2.4. Authorization Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
C10 - Store Authorization Data in the Authorization Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
C11 - Clear Authorization Data in Authorization Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
C12 - Start Transaction - Cached Id . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
2.5. Local Authorization list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
C13 - Offline Authorization through Local Authorization List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
C14 - Online Authorization through Local Authorization List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
2.6. Offline Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
C15 - Offline Authorization of unknown Id . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2.7. Master Pass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
C16 - Stop Transaction with a Master Pass. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
D. LocalAuthorizationList Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
2. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
D01 - Send Local Authorization List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
D02 - Get Local List Version. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
E. Transactions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1.1. Flexible transaction start/stop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1.2. TransactionId generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
1.3. Delivering transaction-related messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
1.4. Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
1.5. Clarification for optional fields in TransactionEventRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
2.1. OCPP transaction mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
E01 - Start Transaction options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
E02 - Start Transaction - Cable Plugin First . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
E03 - Start Transaction - IdToken First . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
E04 - Transaction started while Charging Station is offline. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
E05 - Start Transaction - Id not Accepted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
E06 - Stop Transaction options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
E07 - Transaction locally stopped by IdToken. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
E08 - Transaction stopped while Charging Station is offline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
E09 - When cable disconnected on EV-side: Stop Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
E10 - When cable disconnected on EV-side: Suspend Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
E11 - Connection Loss During Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
E12 - Inform CSMS of an Offline Occurred Transaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
E13 - Transaction-related message not accepted by CSMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
E14 - Check transaction status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
2.2. Interrupting and Stopping ISO 15118 Charging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
E15 - End of charging process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
F. RemoteControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
2. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
2.1. Remote Transaction Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
F01 - Remote Start Transaction - Cable Plugin First . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
F02 - Remote Start Transaction - Remote Start First . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
F03 - Remote Stop Transaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
F04 - Remote Stop ISO 15118 Charging from CSMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
2.2. Unlock Connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
F05 - Remotely Unlock Connector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
2.3. Remote Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
F06 - Trigger Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
G. Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
2. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
G01 - Status Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
G02 - Heartbeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
G03 - Change Availability EVSE/Connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
G04 - Change Availability Charging Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
G05 - Lock Failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
H. Reservation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
2. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
H01 - Reservation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
H02 - Cancel Reservation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
H03 - Use a reserved EVSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
H04 - Reservation Ended, not used . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
I. TariffAndCost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
1.1. Why no structured tariff information? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
2. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
I01 - Show EV Driver-specific Tariff Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
I02 - Show EV Driver Running Total Cost During Charging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
I03 - Show EV Driver Final Total Cost After Charging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
I04 - Show Fallback Tariff Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
I05 - Show Fallback Total Cost Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
I06 - Update Tariff Information During Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
J. MeterValues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
2. Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
2.1. Transaction Meter Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
2.2. Clock-Aligned Meter Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
2.3. Multiple Locations/Phases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
2.4. Signed Meter Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
2.5. Configuration Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
3. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
3.1. MeterValues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
J01 - Sending Meter Values not related to a transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
J02 - Sending transaction related Meter Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
3.2. ISO 15118 MeterValue signing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
J03 - Charging Loop with metering information exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
K. SmartCharging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
2. Types of Smart Charging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
2.1. Internal Load Balancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
2.2. Central Smart Charging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
2.3. Local Smart Charging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
2.4. External Smart Charging Control Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
3. Charging profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
3.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
3.2. Charging profile purposes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
3.3. Charging profile recurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
3.4. Stacking charging profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
3.5. Combining Charging Profile Purposes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
3.6. Example Charging Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
4. Smart Charging Signals to a Charging Station from Multiple Actors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
5. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
5.1. General Smart Charging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
K01 - SetChargingProfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
K02 - Central Smart Charging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
K03 - Local Smart Charging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
K04 - Internal Load Balancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
K05 - Remote Start Transaction with Charging Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
K06 - Offline Behavior Smart Charging During Transaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
K07 - Offline Behavior Smart Charging at Start of Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
K08 - Get Composite Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
K09 - Get Charging Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
K10 - Clear Charging Profile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
5.2. External Charging Limit based Smart Charging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
K11 - Set / Update External Charging Limit With Ongoing Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
K12 - Set / Update External Charging Limit Without Ongoing Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
K13 - Reset / Release External Charging Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
K14 - External Charging Limit with Local Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
5.3. ISO 15118 based Smart Charging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
K15 - Charging with load leveling based on High Level Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
K16 - Renegotiation initiated by CSMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
K17 - Renegotiation initiated by EV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
L. FirmwareManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
2. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
L01 - Secure Firmware Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
L02 - Non-Secure Firmware Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
L03 - Publish Firmware file on Local Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
L04 - Unpublish Firmware file on Local Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
M. ISO 15118 CertificateManagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
2. ISO 15118 Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
2.1. ISO 15118 Certificate structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
2.2. Using ISO 15118 Certificates in OCPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
2.3. 15118 communication set-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
2.4. Certificate - Use Case mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
3. Use cases from ISO 15118 relevant for OCPP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
4. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
M01 - Certificate installation EV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
M02 - Certificate Update EV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
M03 - Retrieve list of available certificates from a Charging Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
M04 - Delete a specific certificate from a Charging Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
M05 - Install CA certificate in a Charging Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
M06 - Get V2G Charging Station Certificate status. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
N. Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
2. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
2.1. Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
N01 - Retrieve Log Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
2.2. Configure Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
N02 - Get Monitoring report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
N03 - Set Monitoring Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
N04 - Set Variable Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
N05 - Set Monitoring Level. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
N06 - Clear / Remove Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
2.3. Monitoring Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
N07 - Alert Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
N08 - Periodic Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
2.4. Customer Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
N09 - Get Customer Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
N10 - Clear Customer Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
O. DisplayMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
2. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
O01 - Set DisplayMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
O02 - Set DisplayMessage for Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
O03 - Get All DisplayMessages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
O04 - Get Specific DisplayMessages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
O05 - Clear a DisplayMessage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
O06 - Replace DisplayMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
P. DataTransfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
2. Use cases & Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
P01 - Data Transfer to the Charging Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
P02 - Data Transfer to the CSMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Messages, Datatypes & Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
1. Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
1.1. Authorize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
1.2. BootNotification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
1.3. CancelReservation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
1.4. CertificateSigned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
1.5. ChangeAvailability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
1.6. ClearCache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
1.7. ClearChargingProfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
1.8. ClearDisplayMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
1.9. ClearedChargingLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
1.10. ClearVariableMonitoring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
1.11. CostUpdated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
1.12. CustomerInformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
1.13. DataTransfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
1.14. DeleteCertificate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
1.15. FirmwareStatusNotification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
1.16. Get15118EVCertificate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
1.17. GetBaseReport. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
1.18. GetCertificateStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
1.19. GetChargingProfiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
1.20. GetCompositeSchedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
1.21. GetDisplayMessages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
1.22. GetInstalledCertificateIds. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
1.23. GetLocalListVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
1.24. GetLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
1.25. GetMonitoringReport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
1.26. GetReport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
1.27. GetTransactionStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
1.28. GetVariables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
1.29. Heartbeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
1.30. InstallCertificate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
1.31. LogStatusNotification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
1.32. MeterValues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
1.33. NotifyChargingLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
1.34. NotifyCustomerInformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
1.35. NotifyDisplayMessages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
1.36. NotifyEVChargingNeeds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
1.37. NotifyEVChargingSchedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
1.38. NotifyEvent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
1.39. NotifyMonitoringReport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
1.40. NotifyReport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
1.41. PublishFirmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
1.42. PublishFirmwareStatusNotification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
1.43. ReportChargingProfiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
1.44. RequestStartTransaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
1.45. RequestStopTransaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
1.46. ReservationStatusUpdate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
1.47. ReserveNow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
1.48. Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
1.49. SecurityEventNotification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
1.50. SendLocalList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
1.51. SetChargingProfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
1.52. SetDisplayMessage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
1.53. SetMonitoringBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
1.54. SetMonitoringLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
1.55. SetNetworkProfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
1.56. SetVariableMonitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
1.57. SetVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
1.58. SignCertificate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
1.59. StatusNotification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
1.60. TransactionEvent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
1.61. TriggerMessage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
1.62. UnlockConnector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
1.63. UnpublishFirmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
1.64. UpdateFirmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
2. Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
2.1. ACChargingParametersType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
2.2. AdditionalInfoType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
2.3. APNType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
2.4. AuthorizationData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
2.5. CertificateHashDataChainType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
2.6. CertificateHashDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
2.7. ChargingLimitType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
2.8. ChargingNeedsType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
2.9. ChargingProfileCriterionType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
2.10. ChargingProfileType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
2.11. ChargingSchedulePeriodType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
2.12. ChargingScheduleType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
2.13. ChargingStationType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
2.14. ClearChargingProfileType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
2.15. ClearMonitoringResultType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
2.16. ComponentType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
2.17. ComponentVariableType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
2.18. CompositeScheduleType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
2.19. ConsumptionCostType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
2.20. CostType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
2.21. DCChargingParametersType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
2.22. EventDataType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
2.23. EVSEType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
2.24. FirmwareType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
2.25. GetVariableDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
2.26. GetVariableResultType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
2.27. IdTokenInfoType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
2.28. IdTokenType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
2.29. LogParametersType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
2.30. MessageContentType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
2.31. MessageInfoType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
2.32. MeterValueType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
2.33. ModemType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
2.34. MonitoringDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
2.35. NetworkConnectionProfileType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
2.36. OCSPRequestDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
2.37. RelativeTimeIntervalType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
2.38. ReportDataType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
2.39. SalesTariffEntryType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
2.40. SalesTariffType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
2.41. SampledValueType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
2.42. SetMonitoringDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
2.43. SetMonitoringResultType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
2.44. SetVariableDataType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
2.45. SetVariableResultType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
2.46. SignedMeterValueType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
2.47. StatusInfoType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
2.48. TransactionType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
2.49. UnitOfMeasureType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
2.50. VariableAttributeType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
2.51. VariableCharacteristicsType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
2.52. VariableMonitoringType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
2.53. VariableType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
2.54. VPNType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
3. Enumerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
3.1. APNAuthenticationEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
3.2. AttributeEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
3.3. AuthorizationStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
3.4. AuthorizeCertificateStatusEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
3.5. BootReasonEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
3.6. CancelReservationStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
3.7. CertificateActionEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
3.8. CertificateSignedStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
3.9. CertificateSigningUseEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
3.10. ChangeAvailabilityStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
3.11. ChargingLimitSourceEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
3.12. ChargingProfileKindEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
3.13. ChargingProfilePurposeEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
3.14. ChargingProfileStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
3.15. ChargingRateUnitEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
3.16. ChargingStateEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
3.17. ClearCacheStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
3.18. ClearChargingProfileStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
3.19. ClearMessageStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
3.20. ClearMonitoringStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
3.21. ComponentCriterionEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
3.22. ConnectorEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
3.23. ConnectorStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
3.24. CostKindEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
3.25. CustomerInformationStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
3.26. DataEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
3.27. DataTransferStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
3.28. DeleteCertificateStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
3.29. DisplayMessageStatusEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
3.30. EnergyTransferModeEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
3.31. EventNotificationEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
3.32. EventTriggerEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
3.33. FirmwareStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
3.34. GenericDeviceModelStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
3.35. GenericStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
3.36. GetCertificateIdUseEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
3.37. GetCertificateStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
3.38. GetChargingProfileStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
3.39. GetDisplayMessagesStatusEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
3.40. GetInstalledCertificateStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
3.41. GetVariableStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
3.42. HashAlgorithmEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
3.43. IdTokenEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
3.44. InstallCertificateStatusEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
3.45. InstallCertificateUseEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
3.46. Iso15118EVCertificateStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
3.47. LocationEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
3.48. LogEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
3.49. LogStatusEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
3.50. MeasurandEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
3.51. MessageFormatEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
3.52. MessagePriorityEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
3.53. MessageStateEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
3.54. MessageTriggerEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
3.55. MonitorEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
3.56. MonitoringBaseEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
3.57. MonitoringCriterionEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
3.58. MutabilityEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
3.59. NotifyEVChargingNeedsStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
3.60. OCPPInterfaceEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
3.61. OCPPTransportEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
3.62. OCPPVersionEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
3.63. OperationalStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
3.64. PhaseEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
3.65. PublishFirmwareStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
3.66. ReadingContextEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
3.67. ReasonEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
3.68. RecurrencyKindEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
3.69. RegistrationStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
3.70. ReportBaseEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
3.71. RequestStartStopStatusEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
3.72. ReservationUpdateStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
3.73. ReserveNowStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
3.74. ResetEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
3.75. ResetStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
3.76. SendLocalListStatusEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
3.77. SetMonitoringStatusEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
3.78. SetNetworkProfileStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
3.79. SetVariableStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
3.80. TransactionEventEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
3.81. TriggerMessageStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
3.82. TriggerReasonEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
3.83. UnlockStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
3.84. UnpublishFirmwareStatusEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
3.85. UpdateEnumType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
3.86. UpdateFirmwareStatusEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
3.87. UploadLogStatusEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
3.88. VPNEnumType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Referenced Components and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
1. Controller Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
2. Referenced Components and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
2.1. General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
2.2. Security related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
2.3. Authorization related. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
2.4. Authorization Cache related. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
2.5. Local Authorization List Management related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
2.6. Transaction related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
2.7. Metering related. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
2.8. Reservation related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
2.9. Smart Charging related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
2.10. Tariff & Cost related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
2.11. Diagnostics related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
2.12. Display Message related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
2.13. Charging Infrastructure related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
2.14. ISO 15118 Related. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Edition 3 FINAL, 2024-05-06
Disclaimer
Copyright © 2010 – 2024 Open Charge Alliance. All rights reserved.
This document is made available under the *Creative Commons Attribution-NoDerivatives 4.0 International Public License*
(https://creativecommons.org/licenses/by-nd/4.0/legalcode).
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 1/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
Generic
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 2/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
Version History
Version Date Description
2.0.1 Edition 3 2024-05-06 OCPP 2.0.1 Edition 3. All errata from OCPP 2.0.1 Part 2 until and including Errata
2024-04 have been merged into this version of the specification.
2.0.1 Edition 2 2022-12-15 OCPP 2.0.1 Edition 2. All errata from OCPP 2.0.1 Part 2 - Errata v2.0 have been
merged into this version of the specification.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 3/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
1. Scope
This document defines the protocol used between a Charging Station and a Charging Station Management System in an EV
charging infrastructure in the form of use cases. If the protocol requires a certain action or response from one side or the other,
then this will be stated in this document.
This part of the specification does not define the communication technology. In order to ensure widespread compatibility OCPP
2.0.1 is limited to JSON. The specifications for the JSON implementation are in "Part 4 - JSON over WebSockets implementation
guide".
After the release of OCPP 2.0, some issues were found in OCPP 2.0. Some of these issues could not be fixed issuing errata to the
specification text only, as has been done with OCPP 1.6, but required changes to the protocol’s machine-readable schema
definition files that cannot be backward compatible.
To prevent confusion in the market and possible interoperability issues in the field, OCA has decided to name this version: 2.0.1.
OCPP 2.0.1 contains fixes for all the known issues, to date, not only the fixes to the messages.
This version replaces OCPP 2.0. OCA advises implementers of OCPP to no longer implement OCPP 2.0 and only use version 2.0.1
going forward.
As a rule, existing numbered requirements are only updated or removed, previously used requirements numbers are never reused
for a totally different requirement.
Any mentions of "OCPP 2.0" refers to revision 2.0.1 unless specifically stated otherwise.
The appendices of the OCPP 2.0.1 part 2 can be updated without requiring a new OCPP release. This mainly concerns the
components and variables of the OCPP device model, which can be extended with new components or variables, as long as they
are optional.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 4/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
2.1.1. Normative
All sections and appendices are normative, unless they are explicitly indicated to be informative.
The phrase "valid reasons in particular circumstances" relating to the usage of the terms "SHOULD", "SHOULD NOT",
"RECOMMENDED", and "NOT RECOMMENDED" is to be taken to mean technically valid reasons, such as the absence of necessary
hardware to support a function from a Charging Station design: for the purposes of this specification it specifically excludes
decisions made on commercial, or other non-technical grounds, such as cost of implementation, or likelihood of use.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 5/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
2.2. Terminology
Table 2. Terminology
Terminology Description
Application layer OSI-Layer 5-7.
Authentication Authentication is the process of confirming an identity or attribute. When speaking about
authentication one should distinguish between user authentication (e.g. sender/receiver) and
message authentication.
Block cipher Cryptographic primitive to encrypt/decrypt messages of fixed block length. Example: AES
encrypts blocks of 128 bits (16 bytes) at a time.
Cable Plugged in In this document this can mean the following:
- Cable fixed on Charging Station side, cable plugged in to EV
- Cable plugged into the Charging Station and EV
- Wireless Charger detects an EV
Certificate A digital certificate authenticates a public key or entity. See also Public-Key Infrastructure.
Certificate Management Protocol An internet protocol used to manage X.509 digital certificates within a PKI. It is described in
RFC 4210 and uses the certificate request message format (CRMF) described in RFC 4211.
Charging Cable Cable assembly equipped with a, by the EV accepted, plug, intended to be used for the
connection between an EV and an EVSE. One side may be permanently attached to the EVSE,
or also be equipped with a plug that is accepted by the EVSE.
Charging Loop In this specification the ISO 15118-2 definition of the charging loop is used: the V2G messaging
phase for controlling the charging process by ISO 15118.
Charging Profile Generic Charging Profile, used for different types of Profiles. Contains information about the
Profile and holds the ChargingSchedule.
Charging Schedule Part of a Charging Profile. Defines a block of charging Power or Current limits. Can contain a
start time and length.
Charging Station The Charging Station is the physical system where EVs can be charged. A Charging Station
has one or more EVSEs.
Composite Charging Schedule The charging schedule as calculated by the Charging Station. It is the result of the calculation
of all active schedules and possible local limits present in the Charging Station. Local Limits
might be taken into account.
Confidentiality Only authorized entities may access confidential data. To protect data from unauthorized
access it can be encrypted. Then only entities with access to the secret keys can access the
data after decrypting it.
Connector The term Connector, as used in this specification, refers to an independently operated and
managed electrical outlet on a Charging Station. In other words, this corresponds to a single
physical Connector. In some cases an EVSE may have multiple physical socket types and/or
tethered cable/Connector arrangements(i.e. Connectors) to facilitate different vehicle types
(e.g. four-wheeled EVs and electric scooters).
Contactor An electrically controlled switching device, typically used by Charging Stations to switch
charging power on/off.
Contract Certificate A valid certificate for a charging contract in an EV for 15118 communication.
Control Pilot signal A signal used by a Charging Station to inform an EV of a maximum current limit, as defined by
IEC61851-1.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 6/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
Terminology Description
Cost Cost to be paid by an EV Driver for consumed energy/time etc. Including taxes.
Cryptographic hash function Cryptographic hash functions should behave as one-way functions. They must be preimage
resistant, 2nd preimage resistant, and collision-resistant. Changes in the input must produce
explicitly different results in the output. Example: SHA-256. See also ENISA OCPP Security [1].
Cryptography The ENISA Algorithms, Key Sizes and Parameters Report [1] provides an overview of the
current state of the art.
CSMS Charging Station Management System. The system that manages Charging Stations and has
the information for authorizing Users for using its Charging Stations.
Data Integrity See Integrity and Message authentication.
Digital Signature Authenticates the sender. In practice digital signatures are implemented using elliptic curves
(EC).
Encryption Using a cryptographic scheme, the message is mapped to a random-looking undecipherable
string (ciphertext). Decryption reverses the encryption process and can only be performed with
the corresponding decryption key. This decryption key is either the same as the encryption key
(symmetric cryptography) or the private key in a public-key cryptosystem. The confidentiality
of the message can be guaranteed only while the keys are kept secret.
Energy Management System A device that manages the local loads (consumption an production) based on local and/or
contractual constraints and/or contractual incentives. It has additional inputs, such as sensors
and controls from e.g. PV, battery storage.
Energy Offer Period Time during which a Charging Station is ready and willing to offer energy to an EV.
Energy Transfer Period Time during which an EV chooses to take offered energy, or return it.
EVSE An EVSE is considered as an independently operated and managed part of the Charging
Station that can deliver energy to one EV at a time.
Hash function Function that maps a message to a bit string of fixed length (hash value). See also
cryptographic hash function.
Hash value Output of a (cryptographic) hash function. The length is fixed in the specs of the hash function.
High level communication bi-directional digital communication using protocol and messages and physical and data link
layers specified in ISO 15118 series [ISO15118-1]
Idle State In both use cases and sequence diagrams, Idle status is referred as the state in which a
Charging Station is not performing any use case related tasks. Condition during which the
equipment can promptly provide a primary function but is not doing so.
Integrity Data cannot be altered without authorization. See also Message authentication.
Local Controller A logical entity between a CSMS and one or more Charging Stations that has the ability to
control charging of a group of Charging Stations based on the input from the CSMS, and can
send messages to its Charging Stations, independently of the CSMS.
Master Pass IdToken that can be used to stop any (or all) ongoing transactions. This can be used by for
example law enforcement personal to stop a transaction.
Master Pass UI Master Pass User Interface, this might be a full color touchscreen, but might also be just a
couple of buttons and LEDs and/or sounds that enable a user to select transactions to be
stopped.
Message authentication Messages should be protected against unauthorized modifications. The message should
always be sent together with an authentication tag providing its authenticity. Such an
authentication tag can be the second output of an authenticated cipher such as AES-CCM or
AES-GCM or a message authentication code.
Mode of Operation A mode of operation specifies how the message blocks are processed by the block cipher.
Using a block cipher in CBC or CTR mode provides encryption only, whereas using a block
cipher in CCM or GCM mode encrypts the plaintext and produces a message authentication
tag for the ciphertext.
OCPP-J OCPP via JSON over WebSocket.
Offline There is no communication possible between the Charging Station and CSMS. For an OCPP-J
connection this means the WebSocket connection is not open.
Password authentication The user proves his/her identity using a password or PIN.
Phase Rotation Defines the wiring order of the phases between the electrical meter (or if absent, the grid
connection), and the Charging Station Connector.
Price Specific price tag of a single tariff entry, for example: 0.35 per kWh incl. 18% VAT.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 7/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
Terminology Description
Public-key cryptography "Cryptographic scheme where a public key is published and henceforth can be used for
encryption of messages or verification of digital signatures. Each public key has a counterpart,
the corresponding private key. This key must be kept secret and is used for decryption or
digital signing of messages. Public-key primitives have a high computational complexity for
encryption and therefore are mostly used as part of a hybrid encryption scheme where the
public key is used to communicate a common symmetric session key under which all further
communication is encrypted. Certificates administered by a public-key infrastructure are used
to establish the authenticity of the public key. See also ENISA OCPP Security [12]. The most
popular public-key encryption scheme is RSA. Digital signatures can be generated most
efficiently with elliptic-curve based (EC) mechanisms."
Public-key infrastructure System to generate, administer, and revoke certificates.
Resume regular transaction Used in sequence diagrams to indicate that this use case/sequence diagram has ended, but
the transaction has not ended and will continue, but that is outside of scope of that specific
use case.
Requirement Provision that conveys criteria to be fulfilled. ISO/IEC Guide 2:2004, 7.5.
Security Event Any event relevant to the secure operation of the device.
Security Function Any function on the device that is needed for it to be operated securely, including access
control, authentication, and encryption.
Session A Session in OCPP is a general term that refers to the charging process of an EV, that might
include a Transaction.
Session key Symmetric key with a limited lifetime.
Symmetric cryptography Sender and receiver hold the same key. Examples for symmetric primitives are block ciphers or
MACs.
Transaction A transaction in OCPP is a part of the complete process of charging an EV that starts and
stops based on configurable parameters. These configurable parameters refer to moments in
the charging process, such as the EV being connected or the EV driver being authorized.
Tariff Collection of prices depending on charging time, power usage and other price affecting
parameters.
Use case A use case is a structured way of describing the (inter)actions necessary to achieve a certain
objective. In this document, a use case consists of an actor list, a scenario description,
postconditions and a sequence diagram and is always followed by a list of numbered
requirements.
User Authentication Verification of the identity of the communication partners (e.g., user on the device). Moreover,
verification that the communication partners are still alive throughout a session.
The ISO 15118 terminology is more comprehensive when referring to specific components within EVs and Charging Stations. The
following table shows a "mapping" of these terms.
2.3. Abbreviations
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 8/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
Table 4. Abbreviations
Abbreviation Description
AES Advanced Encryption Standard. Original name for this block cipher was Rijndael named after its designers Vincent
Rijmen and Joan Daemen.
BEV Battery Electric Vehicle
CMP Certificate Management Protocol
CS Charging Station
CSL Comma Separated List
CSMS Charging Station Management System
CSO Charging Station Operator
DHCP Dynamic Host Configuration Protocol
DNS Domain Name System
DSO Distribution System Operator
DST Daylight Saving Time
EC Elliptic Curve. See also ENISA OCPP Security [1]
ECDSA Elliptic Curve Digital Signature Algorithm.
EMS Energy Management System
ENISA European Union Agency for Network and Information Security.
EV Electric Vehicle
EVSE EV Supply Equipment IEC61851-1
FQDN Fully Qualified Domain Name
FTP(S) File Transport Protocol (Secure)
HTTP(S) HyperText Transport Protocol (Secure)
ICCID Integrated Circuit Card Identifier
IMSI International Mobile Subscription Identity
JSON JavaScript Simple Object Notation
MAC Message authentication code. Provides data integrity. Examples: CMAC, GMAC. See also ENISA OCPP Security [1].
NAT Network Address Translation
NIST National Institute of Standards and Technology.
NTP Network Time Protocol
PDU Protocol Data Unit
PHEV Plugin Hybrid Electric Vehicle
RDN Relative Distinguished Name
RSA Public-key cryptosystem named after its inventors Rivest, Shamir, and Adleman.
RSA-PSS RSA-PSS is a new signature scheme that is based on the RSA cryptosystem and provides increased security
assurance. It was added in version 2.1 of PKCS #1, following OCPP Security [23]
RST 3 phase power connection, Standard Reference Phasing
RTS 3 phase power connection, Reversed Reference Phasing
SRT 3 phase power connection, Reversed 240 degree rotation
STR 3 phase power connection, Standard 120 degree rotation
TRS 3 phase power connection, Standard 240 degree rotation
TSR 3 phase power connection, Reversed 120 degree rotation
SC Smart Charging
TLS Transport Layer Security
TSO Transmission System Operator
URI Uniform Resource Identifier RFC-3986 [RFC3986]
URL Uniform Resource Locator - refers to the subset of URIs that, in addition to identifying a resource, provide a means
of locating the resource by describing its primary access mechanism (e.g., its network "location").
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 9/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
Abbreviation Description
UTC Coordinated Universal Time
WAN Wide Area Network.
2.4. Actors
This section is informative.
Table 6. Actors
Actor name Actor type Actor description
EV Driver Actor The Driver of an EV who wants to charge the EV at a Charging Station.
Connector Device The term "Connector", as used in this specification, refers to an independently
operated and managed electrical outlet on a Charging Station. In other words,
this corresponds to a single physical Connector. In some cases an EVSE may
have multiple Connectors: multiple physical socket types and/or types (e.g.
four-wheeled EVs and electric scooters).
CSMS System Charging Station Management System: manages Charging Stations and has
the information for authorizing Users for using its Charging Stations.
Charging Station Device The Charging Station is the physical system where an EV can be charged. A
Charging Station has one or more EVSEs.
Charging Station Actor A party that manages a CSMS.
Operator
Electric Vehicle Device Electric Vehicle, distributed energy resource with a remote battery and socket.
Local Controller Device A logical entity between a CSMS and one or more Charging Stations that has
the ability to control charging of a group of Charging Stations based on the
input from the CSMS.
External Control System Actor An external system that may impose charging limits/constraints on the
Charging Station or CSMS, for example a DSO or EMS.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 10/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
2.5. References
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 11/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
Reference Description
[8] "Russel Housley, Tim Polk, Warwick Ford, and David Solo. Internet Public Key Infrastructure: X.509 Certificate and
Certificate Revocation List (CRL) Profile, RFC 3280, April 2002." https://www.ietf.org/rfc/rfc3280.txt
[9] Pettersen. "The Transport Layer Security (TLS) Multiple Certificate Status Request Extension." RFC 6961, June 2013.
https://tools.ietf.org/html/rfc6961.
[10] Hollenbeck, S., "Transport Layer Security Protocol Compression Methods", RFC 3749, May 2004.
https://www.ietf.org/rfc/rfc3749.txt
[11] National Institute of Standards and Technology. Annex C: Approved Random Number Generators for FIPS PUB 140-2
[25], February 2012. https://csrc.nist.gov/csrc/media/publications/fips/140/2/final/documents/fips1402annexc.pdf
[12] Bundesamt für Sicherheit in der Informationstechnik: Anwendungshinweise und Interpretationen zum Schema, AIS
20, Funktionalitätsklassen und Evaluationsmethodologie für deterministische Zufallszahlengeneratoren, Version 3.0,
Bonn, Germany, May 2013. (in German) https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Zertifizierung/
Interpretationen/AIS_20_pdf.html
[13] Bundesamt für Sicherheit in der Informationstechnik: Anwendungshinweise und Interpretationen zum Schema, AIS
31, Funktionalitätsklassen und Evaluationsmethodologie für physikalische Zufallszahlengeneratoren, Version 3.0,
Bonn, Germany, May 2013. (in German) https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Zertifizierung/
Interpretationen/AIS_31_pdf.html
[14] "OWASP - Transport Layer Protection Cheat Sheet. https://www.owasp.org/index.php/
Transport_Layer_Protection_Cheat_Sheet#Extended_Validation_Certificates "
[15] P. Hoffman and W.C.A. Wijngaards, Elliptic Curve Digital Signature Algorithm (DSA) for DNNSEC, Internet Engineering
Task Force (IETF) RFC 6605, April 2012. http://www.ietf.org/rfc/rfc6605.txt
[16] Adams, C., Farrell, S., Kause, T., and T. Mononen, "Internet X.509 Public Key Infrastructure Certificate Management
Protocol (CMP)", RFC 4210, September 2005. https://www.ietf.org/rfc/rfc4210.txt
[17] National Institute of Standards and Technology. Special Publication 800-57 Part 1 Rev. 4, Recommendation for Key
Management. January 2016. https://csrc.nist.gov/publications/detail/sp/800-57-part-1/rev-4/final
[18] RFC 2617. HTTP Authentication: Basic and Digest Access Authentication. https://www.ietf.org/rfc/rfc2617.txt
[19] RFC 5280. Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile.
https://www.ietf.org/rfc/rfc5280.txt
[20] OCPP 1.6. Interface description between Charging Station and CSMS. October 2015.
http://www.openchargealliance.org/downloads/
[21] Eekelen, M. van, Poll, E., Hubbers, E., Vieira, B., Broek, F. van den: An end-to-end security design for smart EV-charging
for Enexis and ElaadNL by LaQuSo1. December 2, 2014. https://www.elaad.nl/smart-charging-end2end-security-
design/
[22] RFC 2986. PKCS #10: Certification Request Syntax Specification, Version 1.7. https://www.ietf.org/rfc/rfc2986.txt
[23] RSA-PSS. https://tools.ietf.org/html/rfc8017
[24] Santesson, et al. "X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP" RFC 6960. June
2013. https://tools.ietf.org/html/rfc6960
[25] RFC 2818. HTTP Over TLS. https://tools.ietf.org/html/rfc2818
To support as many business cases as possible, and to prevent too many messages being sent when not needed for certain
business cases, OCPP 2.0.1 supports flexible configuration of the start and stop of a transaction. This makes it possible to define
the start and stop of a transaction depending on market demands.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 12/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
• an EVSE-initiated suspense of transfer during which the EVSE does not offer energy transfer, or;
• an EV-initiated suspense of transfer during which the EV remains electrically connected to the EVSE, or;
• an EV-initiated suspense of transfer during which the EV is not electrically connected to the EVSE.
Transaction
EnergyOfferPeriod
EnergyTransferPeriod
Energy is transferred.
EnergyTransferPeriod
Energy is transferred.
EnergyOfferSuspendPeriod
EnergyOfferPeriod
EnergyTransferPeriod
Energy is transferred.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 13/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
This version of OCPP supports ISO 15118 authorization (also called "Plug and Charge") and ISO 15118 based Smart Charging. (See
[ISO15118-2]) Furthermore it describes how to install and update ISO 15118 certificates. These 3 functionalities are not included as
one functional block, but are included in multiple chapters throughout the specification. ISO 15118 authorization is included in the
functional block Authorization and the Smart Charging use cases for ISO 15118 are included in the chapter Smart Charging.
Certificate handling is described in a separate functional block.
Implementors of 15118 need to be aware of timeout constraints enforced by 15118, see [ISO15118-1] (Page: 127, Table: 109)
For reference, the current timing constrains for 15118 edition 1 are:
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 14/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
3. Generic Requirements
This section is normative.
The generic requirements build the basis for defining the use case elements described in the Functional Blocks.
All time values exchanged between CSMS and Charging Station SHALL be formatted as defined in RFC-3339 [RFC3339].
Additionally fractional seconds have been given an extra limit. The number of decimal places SHALL NOT exceed the maximum of
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 15/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Generic
3. However, it is RECOMMENDED to omit fractional seconds entirely, because it is of limited use and omitting it reduces data
usages.
It is strongly RECOMMENDED to exchange all time values between CSMS and Charging Station as UTC, with the time zone
designator 'Z', as specified by RFC-3339 [RFC3339]. This will improve interoperability between CSMS and Charging Station.
• The transition dates and offsets are known in the Charging Station, based on the configured TimeZone.
• The transition date and offset is manually configured for every transition via: NextTimeOffsetTransitionDateTime
and TimeOffsetNextTransition.
Daylight saving time is used for displaying the current time to the EV driver.
OCPP does not specify timing requirements for messages. Timing of messages is greatly influenced by the underlying network
used. A GPRS network has different timing characteristics compared to a land-line. As OCPP does not require a certain type of
network, but leaves this open for the CSO to select, OCPP cannot require timing constrains.
If you are looking for some guidance, start with a 30 second timeout on message requests, and tune it for the network used.
The message timeout setting in a Charging Station can be configured in the messageTimeout field in the
NetworkConnectionProfile. The purpose of the message timeout is to be able to consider a request message as not sent and
continue with other tasks when the message did not arrive due to communication errors or software failure. For transaction related
events, use case E13 - Transaction-related message not accepted by CSMS describes the retry procedure when this happens. See
also the section Delivering transaction-related messages in Functional Block E.
A charging station may discover that the connection to CSMS is not functioning correctly when it gets a timeout to a request or
when the websocket ping is not answered. In such a situation it is advised that the charging station drops the connection and then
reconnects to CSMS. This will create a fresh session and will possibly connect to a different endpoint of a multi-instance CSMS,
which may resolve the error.
A CSMS can provide the Charging Station with preferred languages for an EV Driver, enabling the Charging Station to communicate
with the EV Driver in a language according to his/her preferences.
For any Charging Station that shows messages on a display it is RECOMMENDED to at least also implement these in "English".
When the preferred languages for an EV-driver (provided by the CSMS) are not "English" and don’t match any of the other languages
implemented in the Charging Station, it is RECOMMENDED to use "English" as fall-back.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 16/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
A. Security
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 17/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
1. OCPP Security
This Functional Block describes the security requirements for the OCPP protocol. The security part was developed to strengthen
and mature the future development and standardization of OCPP. It is based amongst others on the end-to-end security design by
LaQuSo [21]. Security requirements are included on security measures at Charging Station and CSMS, to support users of the
OCPP.
OCPP security has been designed to meet the following security objectives:
1. To allow the creation of a secure communication channel between the CSMS and Charging Station. The integrity and
confidentiality of messages on this channel should be protected with strong cryptographic measures.
2. To provide mutual authentication between the Charging Station and the CSMS. Both parties should be able to identify who
they are communicating with.
3. To provide a secure firmware update process by allowing the Charging Station to check the source and the integrity of
firmware images, and by allowing non-repudiation of these images.
4. To allow logging of security events to facilitate monitoring the security of the smart charging system. A list of security
related events and their 'criticality' is provided in the appendices.
The security Functional Block was designed to fit into the approach taken in OCPP. Standard web technologies are used whenever
possible to allow cost-effective implementations using available web libraries and software. No application layer security measures
are included. Based on these considerations, OCPP security is based on TLS and public key cryptography using X.509 certificates.
Because the CSMS usually acts as the server, different users or role-based access control on the Charging Station are not
implemented in this standard. To mitigate this, it is recommended to implement access control on the CSMS. To make sure the
mechanisms implemented there cannot be bypassed, OCPP should not be used by qualified personnel performing maintenance to
Charging Stations locally at the Charging Station, as other protocols may be used for local maintenance purposes.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 18/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
• The Unsecured Transport with Basic Authentication Profile does not include authentication for the CSMS, or measures to
set up a secure communication channel. Therefore, it should only be used in trusted networks, for instance in networks
where there is a VPN between the CSMS and the Charging Station. For field operation it is highly recommended to use a
security profile with TLS.
• In some cases (e.g. lab installations, test setups, etc.) one might prefer to use OCPP 2.0.1 without implementing security.
While this is possible, it is NOT considered a valid OCPP 2.0.1 implementation.
• When the Charging Station does not have the correct date and time set, it cannot validate the server certificate. A solution
for this might be to either use NTP, mobile network to set time automatically, or have an installer tool that sets the time
before the first connection.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 19/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
Application Data
7 Remark(s) Please note, that the encoding of the basic authentication password in OCPP 2.0.1 (A00.FR.205)
differs from how this was done in OCPP 1.6.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 20/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
Client Hello
Server Hello
Server Certificate
Server Hello Done
ClientKeyExchange
[ChangeCipherSpec]
Finished
[ChangeCipherSpec]
Finished
Application Data
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 21/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
7 Remark(s) TLS allows a number of configurations, not all of which provide sufficient security. The
requirements below describe the configurations allowed for OCPP.
The Charging Station should include the same header as used in Basic Auth RFC 2617, while
requesting to upgrade the http connection to a websocket connection as described in RFC 6455.
The server first needs to validate the Authorization header before upgrading the connection.
Example:
GET /ws HTTP/1.1
Remote-Addr: 127.0.0.1
UPGRADE: websocket
CONNECTION: Upgrade
HOST: 127.0.0.1:9999
ORIGIN: http://127.0.0.1:9999
SEC-WEBSOCKET-KEY: Pb4obWo2214EfaPQuazMjA==
SEC-WEBSOCKET-VERSION: 13
AUTHORIZATION: Basic <Base64 encoded(<ChargePointId>:<AuthorizationKey>)>
Please note, that the encoding of the basic authentication password in OCPP 2.0.1 (A00.FR.304)
differs from how this was done in OCPP 1.6.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 22/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 23/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
Client Hello
Server Hello
Server Certificate
Certificate Server Request
Server Hello Done
Client Certificate
Client Key Exchange
Certificate Verify
[ChangeCipherSpec]
Finished
[ChangeCipherSpec]
Finished
7 Remark(s) N/a
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 24/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 25/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
OCPP uses a number of public private key pairs for its security, see below Table. To manage the keys on the Charging Station,
messages have been added to OCPP. Updating keys on the CSMS or at the manufacturer is out of scope for OCPP. If TLS with
Client Side certificates is used, the Charging Station requires a "Charging Station certificate" for authentication against the CSMS.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 26/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
Table 19. Certificates used in the OCPP security specification
Certificate Private Key Stored At Description
CSMS Certificate CSMS Key used to authenticate the CSMS.
Charging Station Certificate Charging Station Key used to authenticate the Charging Station.
Firmware Signing Certificate Manufacturer Key used to verify the firmware signature.
SECC Certificate Charging Station Certificate used by ISO15118-2 to set up a TLS
connection between the Charging Station and
an Electric Vehicle.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 27/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
The OCPP protocol supports the use of two separate certificate hierarchies:
1. The Charging Station Operator hierarchy which contains the CSMS, and Charging Station certificates.
2. The Manufacturer hierarchy which contains the Firmware Signing certificate.
The CSMS can update the CSO root certificates stored on the Charging Station using the InstallCertificateRequest message.
In some cases a certificate may become invalid prior to the expiration of the validity period. Such cases include changes of the
organization name, or the compromise or suspected compromise of the certificate’s private key. In such cases, the certificate
needs to be revoked or indicate it is no longer valid. The revocation of the certificate does not mean that the connection needs to
be closed as the the connection can stay open longer than 24 hours.
Different methods are recommended for certificate revocation, see below Table.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 28/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
Note 1: With fast expiration, the certificate is only valid for a short period, less than 24 hours. After that the server needs to request
a new certificate from the Certificate Authority, which may be the CSO itself (see section Certificate Hierarchy). This prevents the
Charging Stations from needing to implement revocation lists or online certificate verification. This simplifies the implementation
of certificate management at the Charging Station and reduces communication costs at the Charging Station side. By requiring fast
expiration, if the certificate is compromised, the impact is reduced to only a short period.
When the certificate chain should becomes compromised, attackers could used forged certificates to trick a Charging Station to
connect to a "fake" CSMS. By using fast expiration, the time a Charging Station is vulnerable is greatly reduced.
The Charging Station always communicates with the Certificate Authority through the CSMS, this way, if the Charging Station is
compromised, the Charging Station cannot attack the CA directly.
Note 2: This allows for immediate revocation of Charging Station certificates. Revocation of Charging Station certificates will
happen for instance when a Charging Station is removed. This is more common than revoking the CSMS certificate, which is
normally only done when it is compromised.
1.6. Installation
This section is normative.
Unique credentials should be used to authenticate each Charging Station to the CSMS, whether they are the password used for
HTTP Basic Authentication (see Charging Station Authentication) or the Charging Station certificate. These unique credentials have
to be put on the Charging Station at some point during manufacturing or installation.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 29/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
Failure postcondition:
If the Charging Station responds to the SetVariablesRequest with a SetVariablesResponse with a
status other than Accepted, the Charging Station will keep using the old credentials. The CSMS
might treat the Charging Station differently, e.g. by not accepting the Charging Station’s boot
notifications.
SetVariablesRequest(BasicAuthPassword)
SetVariablesResponse(status = Accepted)
disconnect
Figure 5. Update Charging Station Password for HTTP Basic Authentication (happy flow)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 30/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
If the Charging Station has a separate ISO15118Ctrlr (SECC in ISO 15118) for each EVSE, then
CSMS will have to send a request for each of them. The device model the Charging Station will tell
if ISO15118Ctrlr is located at toplevel or EVSE-level.
If the Charging Station has multiple SECCs that each control multiple EVSEs, then these are
represented in device model by an ISO15118Ctrlr for each EVSE. The EVSEs that are controlled by
the same SECC report an ISO15118Ctrlr with the same "SeccId".
Actors Charging Station, CSMS, Certificate Authority Server
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 31/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
1. The CSMS requests the Charging Station to update its certificate using the
TriggerMessageRequest with the requestedMessage field set to SignChargingStationCertificate.
2. The Charging Station responds with TriggerMessageResponse
3. The Charging Station generates a new public / private key pair.
4. The Charging Station sends a SignCertificateRequest to the CSMS containing the
certificateType = ChargingStationCertificate .
5. The CSMS responds with SignCertificateResponse, with status Accepted.
6. The CSMS forwards the CSR to the Certificate Authority Server.
7. Certificate Authority Server signs the certificate.
8. The Certificate Authority Server returns the Signed Certificate to the CSMS.
9. The CSMS sends CertificateSignedRequest to the Charging Station.
10. The Charging Station verifies the Signed Certificate.
11. The Charging Station responds with CertificateSignedResponse to the CSMS with the status
Accepted or Rejected.
Alternative scenario SignV2GCertificate
2.1. The CSMS requests the Charging Station to update its certificate using the
TriggerMessageRequest with the requestedMessage field set to SignV2GCertificate for a 15118
certificate, and evse set to the EVSE of the ISO15118Ctrlr. (If ISO15118Ctrlr only exists as one
component at toplevel, then evse can be omitted.)
2.2. The Charging Station responds with TriggerMessageResponse
2.3. The Charging Station generates a new public / private key pair.
2.4. The Charging Station sends a SignCertificateRequest to the CSMS containing the
certificateType = V2GCertificate and a csr in which the CommonName (CN) is set to the value
of SeccId.
2.5. CSMS responds with SignCertificateResponse, with status Accepted.
2.6. The CSMS forwards the CSR to the Certificate Authority Server.
2.7. Certificate Authority Server signs the certificate.
2.8. The Certificate Authority Server returns the Signed Certificate to the CSMS.
2.9. The CSMS sends CertificateSignedRequest to the Charging Station.
2.10. The Charging Station verifies the Signed Certificate.
2.11. The Charging Station responds with CertificateSignedResponse to the CSMS with the status
Accepted or Rejected.
5 Prerequisite(s) The standard configuration variable "OrganizationName" MUST be set. For SignV2GCertificate the
variable ISO15118Ctrlr.SeccId must be set.
6 Postcondition(s) Successful postcondition:
New Client Side certificate installed in the Charging Station.
Failure postcondition:
New Client Side certificate is rejected and discarded.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 32/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
TriggerMessageRequest(SignCertificate)
TriggerMessageResponse(Accepted)
generate new
public / private key pair
SignCertificateRequest(csr)
SignCertificateResponse(Accepted)
forward CSR
sign certificate
CertificateSignedRequest(certificate)
Verify validity
of signed certificate
CertificateSignedResponse (Accepted/Rejected)
7 Error handling The CSMS accepts the CSR request from the Charging Station, before forwarding it to the CA. But
when the CA cannot be reached, or rejects the CSR, the Charging Station will never known. The
CSMS may do some checks on the CSR, but cannot do all the checks that a CA does, and it does
not prevent connection timeout to the CA. When something like this goes wrong, either the CA is
offline or the CSR send by the Charging Station is not correct, according to the CA. In both cases
this is something an operator at the CSO needs to be notified of. The operator then needs to
investigate the issue. When resolved, the operator can re-run A02.
It is NOT RECOMMENDED to let the Charging Station retry when the certificate is not send within
X minutes or hours. When the CSR is incorrect, that will not be resolved automatically. It is
possible that only a new firmware will fix this.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 33/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
8 Remark(s) The Charging Station Operator may act as a certificate authority for the Charging Station Operator
hierarchy.
The applicable Certification Authority SHALL check the information in the CSR.
If it is correct, the Certificate Authority SHALL sign the CSR, send it to the CSO, the CSO sends it
back to the Charging Station in the CertificateSignedRequest message.
The certificate authority SHOULD implement strong measures to keep the certificate signing
private keys secure.
Even though the messages CertificateSignedRequest (see use cases A02 and A03) and
InstallCertificateRequest (use case M05 - Install CA Certificate in a Charging Station) are both
used to send certificates, their purposes are different. CertificateSignedRequest is used to return
the the Charging Stations own public certificate and V2G certificate(s) signed by a Certificate
Authority. InstallCertificateRequest is used to install Root certificates.
For V2G certificate handling see use cases M03 - Retrieve list of available certificates from a
Charging Station, M04 - Delete a specific certificate from a Charging Station and M06 - Get
Charging Station Certificate status.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 34/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 35/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
SignCertificateRequest(csr)
SignCertificateResponse(Accepted)
forward CSR
sign certificate
CertificateSignedRequest(certificate)
CertificateSignedResponse (Accepted/Rejected)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 36/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
7 Error handling The CSMS accepts the CSR request from the Charging Station, before forwarding it to the CA. But
when the CA cannot be reached, or rejects the CSR, the Charging Station will never known. The
CSMS may do some checks on the CSR, but cannot do all the checks that a CA does, and it does
not prevent connection timeout to the CA. When something like this goes wrong, either the CA is
offline or the CSR send by the Charging Station is not correct, according to the CA. In both cases
this is something an operator at the CSO needs to be notified of. The operator then needs to
investigate the issue. When resolved, the operator can re-run A02.
It is NOT RECOMMENDED to let the Charging Station retry when the certificate is not send within
X minutes or hours. When the CSR is incorrect, that will not be resolved automatically. It is
possible that only a new firmware will fix this.
8 Remark(s) Same remarks as in A02 - Update Charging Station Certificate by request of CSMS apply.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 37/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 38/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
SecurityEventNotificationResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 39/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
SetVariablesRequest(NetworkConfigurationPriority)
SetVariablesResponse(status: RebootRequired)
ResetRequest(OnIdle)
ResetResponse(Accepted)
Reboot
BootNotificationRequest(...)
BootNotificationResponse(...)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 40/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 A. Security
A05.FR.06 A05.FR.05 AND The Charging Station SHALL update the value of the
The Charging Station successfully connected to the configuration variable SecurityProfile AND it SHALL
CSMS using the (new) NetworkConnectionProfile remove all NetworkConnectionProfiles with a lower
securityProfile than stored at SecurityProfile AND
update NetworkConfigurationPriority
accordingly.
A05.FR.07 A05.FR.06 The CSMS SHALL NOT allow the Charging Station to
connect with a lower security profile anymore.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 41/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 42/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
1. Introduction
This Functional Block describes all the functionalities that help a CSO provision their Charging Stations, allowing them on their
network and retrieving configuration information from these Charging Stations. Additionally, it consists of the ability to retrieve
information about the configuration of Charging Stations, make changes to the configuration etc. This chapter also covers resetting
a Charging Station and migrating to a new NetworkConnectionProfile.
After a restart (for instance due to a remote reset command, power outage, firmware update, software error etc.) the Charging
Station MUST again contact the CSMS and SHALL send a BootNotification request. If the Charging Station fails to receive a
BootNotificationResponse from the CSMS, and has no in-built non-volatile real-time clock hardware that has been correctly preset,
the Charging Station may not have a valid date and time setting, making it difficult or even impossible to later determine the date
and time of transactions.
It might also be the case (e.g. due to configuration error) that the CSMS indicates a status other than Accepted for an extended
period of time, or indefinitely.
It is usually advisable to deny all charging services at a Charging Station if the Charging Station has never before been Accepted by
the CSMS (using the current connection settings, URL, etc.) since users cannot be authenticated and running transactions could
conflict with provisioning processes.
If this is supported, this behaviour can be configured via the Configuration Variable: TxBeforeAcceptedEnabled.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 43/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
Failure postcondition:
The Charging Station received the status Rejected, B03 - Cold Boot Charging Station -Rejected
applies.
The Charging Station received the status Pending, B02 - Cold Boot Charging Station - Pending
applies.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 44/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
Power up
opt
Self check
BootNotificationRequest(reason, chargingStation)
opt
loop [for all Connectors]
StatusNotificationRequest(connectorStatus = Unavailable)
StatusNotificationResponse()
Self check
StatusNotificationResponse()
[else]
StatusNotificationRequest(Connectortatus = Available)
StatusNotificationResponse()
HeartbeatResponse(currentTime)
7 Error handling 1. No initial establishment of connection of communication between the CSMS and Charging
Station: Retry Connection with the CSMS.
2. No response / time-out from the CSMS: The Charging Station resends BootNotificationRequest
after a waiting interval. The Charging Station chooses this interval on its own (since it dit not get a
BootNotificationResponse containing this interval), in a way that avoids flooding the CSMS with
requests.
8 Remark(s) Multiple options for a self check are possible: some Charging Stations boot and send status
notifications with Unavailable, then perform a check of all the hardware and send new
StatusNotifications with status Available when the Charging Station is up and running. However,
there is no required order for a self check and sending a BootNotificationRequest. A Charging
Stations can also do the self check before sending a BootNotificationRequest and determine the
status before a (mobile) network connection is established and a BootNotificationRequest is
sent.
When something is wrong with the Charging Station or EVSE, the status SHALL be set to Faulted.
Reserved and Unavailable states persist after a reboot.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 45/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 46/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
Failure postcondition:
The Charging Station received the status Rejected, B03 - Cold Boot Charging Station -Rejected
applies.
BootNotificationRequest(...)
opt
GetVariablesRequest(...)
GetVariablesResponse(...)
opt
SetVariablesRequest(...)
SetVariablesResponse(...)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 47/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
7 Error handling 1. When no initial connection established between CSMS and Charging Station: Retry Connection
to the CSMS and resend BootNotificationRequest.
2. No response / time-out from the CSMS: The Charging Station resends BootNotificationRequest
after a waiting interval. This waiting interval can be based on the interval from a previous
BootNotificationResponse or chosen by the Charging Station itself. In the latter case, the
Charging Station chooses this interval in a way that avoids flooding the CSMS with requests.
8 Remark(s) When the CSMS returns with BootNotificationResponse with the status Accepted, B01 - Cold Boot
Charging Station applies.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 48/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 49/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
BootNotificationRequest(...)
7 Error handling When there is no response or a time-out from the CSMS: The Charging Station resends
BootNotificationRequest after a waiting interval. This waiting interval can be based on the interval
from a previous BootNotificationResponse or chosen by the Charging Station itself. In the latter
case, the Charging Station chooses this interval in a way that avoids flooding the CSMS with
requests.
8 Remark(s) During the status Rejected, the Charging Station may no longer be reachable from the CSMS. The
Charging Station MAY e.g. close its communication channel or shut down its communication
hardware.
Additionally, the CSMS MAY close the communication channel, for instance to free up system
resources.
It is advised not to accept any transactions until the BootNotification of the Charging Station has
been accepted by the CSMS. See: Transactions before being accepted by a CSMS
When the CSMS returns with BootNotificationResponse with the status Accepted, B01 - Cold Boot
Charging Station applies.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 50/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 51/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
HeartbeatResponse(currentTime)
Connection loss
Connection restored
StatusNotificationResponse()
loop [for each Connector with status changed during offline period]
StatusNotificationRequest(...)
StatusNotificationResponse()
HeartbeatResponse(currentTime)
7 Error handling The offline situation is an non preferred mode of operation that needs to be handled by the
Charging Station by trying to re-establish the connection.
8 Remark(s) n/a
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 52/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
SetVariablesRequest(setVariableData)
SetVariablesResponse(setVariableResult)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 53/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
8 Remark(s) The attributeType Actual corresponds with the actual value of the Variable, whereas the
attributeTypes Target, MinSet and MaxSet correspond to the target, minimum and maximum
values that have been set for this variable.
This is best explained by an example: the cooling system is configured to operate with a fan
speed between 1000 and 5000 rpm. These boundaries are represented by the MinSet and MaxSet
attributes. The current fan speed is represented by the Actual attribute. The desired fan speed is
represented by the Target attribute.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 54/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
getVariablesRequest(getVariableData)
getVariablesResponse(getVariableResult)
opt
notification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 55/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 56/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
Failure postcondition:
The Charging Station was not able to send the requested report.
GetBaseReportRequest(requestId, reportBase)
GetBaseReportResponse(status)
NotifyReportResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 57/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 58/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 59/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
Failure postcondition:
The Charging Station was not able to send the requested report.
GetReportResponse(status)
NotifyReportResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 60/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 61/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 62/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
SetNetworkProfileRequest(configurationSlot, connectionData)
SetNetworkProfileResponse(status: Accepted)
8 Error Handling Activation of a new NetworkConnectionProfile is described in B10 - Migrate to new CSMS. Errors
during this use-case are not destructive to the current data connection. Error handling is further
described in B10 - Migrate to new CSMS
9 Remarks Even when changes are made to the currenctly active NetworkConnectionProfile, these will not
activated until a reboot has occured, as described in B10 - Migrate to new CSMS.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 63/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 64/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
SetVariablesRequest(NetworkConfigurationPriority)
SetVariablesResponse(status: RebootRequired)
ResetRequest(OnIdle)
ResetResponse(Accepted)
Reboot
BootNotificationRequest(...)
BootNotificationResponse(...)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 65/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
9 Remarks As in line with B12 - Reset - With Ongoing Transaction, when there are ongoing transactions, the
Charging Station waits for these to be finished before performing the Reset and then connecting
to a different CSMS.
When an operator wants to perform an immediate switch, he should stop the transactions first.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 66/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
Failure postcondition:
The Charging Station not was able to reset itself or EVSE.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 67/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
No transaction is active
ResetRequest(OnIdle | Immediate)
ResetResponse(status)
StatusNotificationResponse()
ResetResponse(status)
StatusNotificationResponse()
reset EVSE
StatusNotificationResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 68/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 69/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
Failure postcondition:
The Charging Station not was able to reset itself or EVSE.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 70/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
reset CS
ResetRequest(OnIdle)
ResetResponse(Scheduled)
StatusNotificationResponse(...)
reset CS
ResetRequest(OnIdle, evseId)
ResetResponse(Scheduled)
reset EVSE
StatusNotificationResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 71/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
reset CS
ResetRequest(Immediate)
ResetResponse(Accepted)
TransactionEventResponse(...)
reset CS
ResetRequest(Immediate, evseId)
ResetResponse(Scheduled)
Terminate transaction,
regardless of TxStopPoint.
TransactionEventResponse(...)
reset EVSE
StatusNotificationResponse()
7 Error handling After having accepted the ResetRequest, TransactionEventRequest messages that cannot be
delivered to the CSMS MUST be queued.
8 Remark(s) n/a
B12.FR.03 If no evseId is supplied The transaction of the Charging Station SHALL be terminated
normally, before the reboot, as in E06 - Stop Transaction.
AND
If any transaction is in progress and an OnIdle
reset is received.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 72/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 B. Provisioning
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 73/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 74/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
1. Introduction
This Functional Block describes all the authorization-related functionalities, it contains different ways of authorizing a user, online
and/or offline and the AuthorizeRequest message handling/behavior, Authorization Cache functionality, etc.
When a user wishes to unplug the electric vehicle from the Charging Station, the Charging Station needs to verify that the user is
either the one that initiated the charging or that the user is in the same group and thus allowed to terminate the charging. Once
authorized, the Charging Station informs the CSMS that the charging has been stopped.
• To improve the experience for users, a Charging Station MAY support local authorization of identifiers, using an
Authorization Cache.
• The LocalAuthorizeOffline Configuration Variable controls whether a Charging Station will authorize a user when
offline using the Authorization Cache.
• The LocalPreAuthorize Configuration Variable controls whether a Charging Station will use the Authorization Cache to
start a transaction without performing an authorization with the CSMS.
1.1. ID Tokens
This section is normative
OCPP now makes it possible to use many different types of authorization. Where OCPP 1.x only supported RFID, OCPP now also
supports things like: credit card, PIN-code, a simple start button etc.
An IDTokenType contains the identifier to use for authorization. It is defined as a combination of a case insensitive string and a
type. Message data elements of the IDTokenType class (including GroupId) MAY contain any data, that is meaningful to a CSMS
(e.g. for the purpose of identifying the initiator of charging activity), and Charging Stations MUST NOT make any presumptions as to
the format or content of such data, other than is provided in the description of the IdTokenType (e.g. by assuming that it is a UID-
like value that must be hex characters only and/or an even number of digits). IdToken data acquired via local token reader hardware
is usually a (4, 7 or 10 bytes) UID value of a physical IdToken, typically represented as 8, 14 or 20 hexadecimal digit characters.
To promote interoperability, based on common practice to date in the case of IdTokenType data has type:
NOTE ISO14443, it is RECOMMENDED that such UIDs be represented as hex representations of the UID bytes. According
to ISO 14443-3, byte 0 should come first in the hex string. (Most significant nibble of byte 0 first)
AdditionalInfo contains one or more custom types, which need to be agreed upon by all parties involved. When AdditionalInfo is
implemented the Charging Station SHALL also cache and include AdditionalInfo during regular operations and set the Configuration
Variable AdditionalInfoItemsPerMessage. When AdditionalInfo is NOT implemented or a not supported AdditionalInfo.type is
used, the CSMS/Charging Station MAY ignore the AdditionalInfo.
A CSMS has the ability to treat a set of identity tokens as a "group", thereby allowing any one token in the group to start a
transaction and for the same token, or another token in the same group, to stop the transaction. This supports the common use-
cases of families or businesses with multiple drivers using one or more shared electric vehicles on a single recharging contract
account. IDTokenTypes used as "GroupId" may often use a shared central account identifier for the GroupId, instead of a UID of the
first/master RFID card of an account.
Tokens (idTags) are grouped for authorization purposes by specifying a common group identifier in the optional groupIdToken
element in IdTokenInfo: two IdTokens are considered to be in the same group if their GroupIdTokens match (and they are not
empty).
Even though the GroupId has the same nominal data type (IdTokenType) as an idToken, the value of this element
may not be in the common format of IdTokenTypes and/or may not represent an actual valid IdTokenType (e.g. it
NOTE
may be a common shared "account number"): therefore, the GroupId value SHOULD NOT be used for comparison
against a presented Token value (unless it also occurs as an idToken value).
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 75/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Please refer to the use cases C10 - Store Authorization Data in the Authorization Cache and C12 - Start Transaction - Cached Id for
more information on how to implement / use the Authorization Cache functionality.
When a Charging Station supports both the Authorization Cache and Tariff information (see: Tariff & Cost), it should not store the
tariff information in the Authorization Cache, since this information could become outdated.
A Charging Station MAY support the authorization of any presented identifier when offline, to avoid refusal of charging to bona fide
users that cannot be explicitly authorized by Authorization Cache entries. This functionality is explained in more detail in Unknown
Offline Authorization.
It is RECOMMENDED to store personal information in the Authorization Cache securely, e.g. by only storing hashed idTokens in the
cache.
This list contains the authorization status of all (or a selection of) identifiers and the corresponding expiration date in
cacheExpiryDateTime. These values may be used to provide more fine grained information to users (e.g. by display message)
during local authorization.
Please refer to the use cases D01 - Send Local Authorization List, C13 - Offline Authorization through Local Authorization List and
C14 - Online Authorization through Local Authorization List for more information on how to implement / use the Local Authorization
List functionality.
Please note the difference between the Authorization Cache and Local Authorization List mechanisms: the
NOTE Authorization Cache is an autonomous mechanism at the Charging Station, whereas the Local Authorization List
is a list that is synchronized between CSMS and Charging Station (originating from the CSMS).
The Authorization Cache and Local Authorization List are distinct logical data structures. When both
NOTE Authorization Cache as well as Local Authorization List are supported, a Charging Station SHALL treat Local
Authorization List entries as having priority over Authorization Cache entries for the same identifiers.
The following Configuration Variables are used by the Charging Station to give information about the Local Authorization List
• LocalAuthListEntries (Also reports the maximum amount of IdTokens in the Local Authorization List)
• LocalAuthListEnabled
• LocalAuthListAvailable
• ItemsPerMessageSendLocalList
• BytesPerMessageSendLocalList
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 76/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Failure postcondition:
If the authorize message is Invalid, Blocked, Expired or Unknown, the EV Driver can not start or
stop charging, except in the case where the EV Driver presents the same token used to start the
transaction.
present RFID(AA12345)
AuthorizeResponse(...)
opt
notification
7 Error handling When the Authorization is not 'Accepted', the AuthorizeResponse contains an authorization status
value indicating the reason for rejection.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 77/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
8 Remark(s) Assuming idToken is valid for charging and the Charging Station has 3 EVSEs, what is the content
of idTokenInfo, when idToken is allowed to charge:
. at all EVES: idTokenInfo.status = Accepted.
. at EVSE 1: idTokenInfo.status = Accepted, idTokenInfo.evseId = [ 1 ].
. at EVSE 1 + 2: idTokenInfo.status = Accepted, idTokenInfo.evseId = [ 1, 2 ].
. at none of the EVSEs: _idTokenInfo.status=NotAtThisLocation.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 78/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 79/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 80/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 81/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Plugin cable
StatusNotificationRequest(Occupied)
StatusNotificationResponse()
TransactionEventRequest(eventType = Started,...)
TransactionEventResponse(...)
TransactionEventRequest(eventType = Updated,
idToken.type = NoAuthorization,...)
TransactionEventResponse(idTokenInfo.status = Accepted,...)
Unplug cable
Note that the start button can even be omitted if the Charging Station is configured to start
charging upon cable connection.
The scenario description and sequence diagram above are based on the Configuration Variable
for start transaction being configured as follows:
TxStartPoint: EVConnected, Authorized, DataSigned, PowerPathClosed, EnergyTransfer
This use-case is also valid for other configurations, but then the transaction might start/stop at
another moment, which might change the sequence in which message are send. For more details
see the use case: E01 - Start Transaction options.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 82/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 83/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Charging Station
CS-001 CSMS Payment System
EV Driver
Plugin cable
StatusNotificationRequest(Occupied)
StatusNotificationResponse()
TransactionEventResponse(...)
use card
financial
transaction
authorized(TransactionReference = 1234,
CS = CS-001, EVSE = 1)
RequestStartTransactionRequest(evseId = 1
idToken(id = 4444, type = Central)
RequestStartTransactionResponse(Accepted)
TransactionEventResponse(idTokenInfo.status = Accepted)
A Payment System may consist of multiple components handling the authorization of the user.
The interface of these components and the communication between the Payment System and
CSMS are not in scope of this document.
Stopping a transaction started with a credit/debit card is not defined, this is left to the
implementer, this could for example be: Unplugging the cable on the EV side and/or a stop button
etc.
The scenario description and sequence diagram above are based on the Configuration Variable
for start transaction being configured as follows:
TxStartPoint: EVConnected, Authorized, DataSigned, PowerPathClosed, EnergyTransfer
This use-case is also valid for other configurations, but then the transaction might start/stop at
another moment, which might change the sequence in which message are send. For more details
see the use case: E01 - Start Transaction options.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 84/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 85/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
enter pin-code(1234)
AuthorizeRequest(idToken(id = 1234,
type = PinCode), ...)
opt
notification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 86/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 87/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Charging Station
APP CS-001 CSMS
EV Driver
Start Charging
RequestStartTransactionRequest(evseId = 1
idToken(id = 4444, type = Central))
RequestStartTransactionResponse(Accepted)
TransactionEventResponse(...)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 88/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
This use case uses an App as example, but this is not a requirement. This use case is valid for
any RequestStartTransactionRequest with a server generated IdToken.
The scenario description and sequence diagram above are based on the Configuration Variable
for start transaction being configured as follows:
TxStartPoint: EVConnected, Authorized, DataSigned, PowerPathClosed, EnergyTransfer
This use-case is also valid for other configurations, but then the transaction might start/stop at
another moment, which might change the sequence in which message are send. For more details
see the use case: E01 - Start Transaction options.
This use case assumes that the configuration variable AuthorizeRemoteStart is false. See use
cases F01 and F02 for requirements with AuthorizeRemoteStart.
Other idTokenTypes can also be used to remote start charging, such an eMAID of the user that is
provided by the app.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 89/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 90/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Plugin cable
StatusNotificationRequest(Occupied)
StatusNotificationResponse()
TransactionEventResponse(...)
AuthorizeResponse(...)
opt
notification
Start Charging
present parking
ticket(1234)
Match ticketId
with TransactionId()
RequestStopTransactionRequest(transactionId = AB1234)
RequestStopTransactionResponse(Accepted)
TransactionEventResponse(...)
opt
notification
Unplug cable
StatusNotificationRequest(Available)
StatusNotificationResponse()
TransactionEventResponse(...)
The communication between the Payment Terminal and the CSMS is outside of scope of OCPP.
The scenario description and sequence diagram above are based on the Configuration Variable
for start & stop transaction being configured as follows:
TxStartPoint: Authorized, DataSigned, PowerPathClosed, EnergyTransfer
TxStopPoint: ParkingBayOccupancy, EVConnected
This use-case is also valid for other configurations, but then the transaction might start/stop at
another moment, which might change the sequence in which message are send. For more details
see the use cases: E01 - Start Transaction options and E06 - Stop Transaction options.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 91/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 92/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP:
3. The Charging Station sends an AuthorizeRequest message to the CSMS containing the eMAID
and data needed for an OCSP request with regards to the contract certificate and certificate
chain.
4. The CSMS replies with an agreement or non-agreement, and the certificate status.
5. Service starts after successful authorization of the IDs.
Alternative scenario(s) C01 - EV Driver Authorization using RFID
C02 - Authorization using a start button
C03 - Authorization using credit/debit card
C04 - Authorization using PIN-code
C05 - Authorization for CSMS initiated transactions
C06 - Authorization using local id type
C08 - Authorization at EVSE using ISO 15118 External Identification Means (EIM)
C15 - Unknown Offline Authorization
5 Prerequisites A contract Certificate is installed in the EV.
6 Postcondition(s) The validity of the Contract Certificate is determined.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 93/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
ServiceDiscoveryReq()
PaymentServiceSelectionReq(paymentOption: Contract)
PaymentServiceSelectionRes()
AuthorizeRequest(idToken.EMAID, iso15118CertificateHashData[0..4])
AuthorizeResponse(idTokenInfo, certificateStatus)
PaymentDetailsRes(GenChallenge)
AuthorizationReq(GenChallenge)
AuthorizationRes(EVSEProcessing, ResponseCode)
[Real-time certificate checking]
PaymentDetailsReq(ContractCertificateChain, EMAID)
AuthorizeRequest(idToken.EMAID, iso15118CertificateHashData[0..4])
OCSP request()
PaymentDetailsRes(GenChallenge)
AuthorizationReq(GenChallenge)
OCSP response()
AuthorizeResponse(idTokenInfo, certificateStatus)
AuthorizationRes(EVSEProcessing, ResponseCode)
7 Error handling
8 Remark(s) In edition 1 of 15118, the message timeout of the PaymentDetailsReq/Res message is 5 seconds.
In case certificate verification cannot be completed in that time it is possible to complete this
during the AuthorizationReq/Res, which can be extended up to 60 seconds.
When the Charging Station is offline, it is recommended to omit the payment option for ISO 15118
contract certificates from the ServiceDiscoveryRes and revert to External Identification Means
(use case C08), because certificate status cannot be checked.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 94/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 95/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP
1. The Charging Station sends an AuthorizeRequest with an idToken containing the External
Identification Means (EIM).
2. The CSMS responds with an AuthorizeResponse.
Alternative scenario(s) C01 - EV Driver Authorization using RFID
C02 - Authorization using a start button
C03 - Authorization using credit/debit card
C04 - Authorization using PIN-code
C05 - Authorization for CSMS initiated transactions
C06 - Authorization using local id type
C07 - Authorization using Contract Certificates
C15 - Unknown Offline Authorization
5 Prerequisites Communication between EV and EVSE SHALL be established successfully.
6 Postcondition(s) Authorization is successful. Also see ISO15118-1, use case End conditions D4, page 28.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 96/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Identify first
AuthorizeRequest(idToken)
AuthorizeResponse(idTokenInfo)
ServiceDiscoveryReq()
ServiceDiscoveryRes(PaymentServiceList: ExternalPayment)
PaymentServiceSelectionReq(paymentOption: ExternalPayment)
PaymentServiceSelectionRes()
AuthorizationReq()
AuthorizeRequest(idToken)
AuthorizeResponse(idTokenInfo)
AuthorizationRes()
Figure 28. Sequence Diagram: Authorization at EVSE using external credentials performed with help of SA.
7 Remark(s) Please note that all identification means mentioned in the previous section can be applied to this
use case. The only difference is the availability of 15118 communication.
Source: ISO15118-1
C08 - Authorization at EVSE using ISO 15118 External Identification Means (EIM) -
Requirements
Table 74. C08 - Requirements
ID Precondition Requirement definition
C08.FR.01 The Charging Station SHALL send the identification to the CSMS
for validation.
C08.FR.02 EV Driver SHALL activate the authorization within a specific time
after connecting the EV to the EVSE or the EVSE SHALL have an
HMI to authorize the restart of the identification process.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 97/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
2.3. GroupId
present IdToken(001)
opt [if IdToken is not present in the Local Authorization List or Authorization Cache.]
AuthorizeRequest(IdToken = 001)
opt
notification
TransactionEventResponse(...)
present IdToken(002)
opt [if the IdToken used for stopping the transaction is different from the IdToken that started the transaction AND NOT
(The GroupIdTokens used to start and stop the transaction are present in either the Local Authorization List or Authorization Cache AND
they are the same).]
AuthorizeRequest(IdToken = 002)
TransactionEventResponse(...)
opt
notification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 98/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 99/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Failure postcondition:
The Charging Station was not able to store the Authorization Cache.
AuthorizeResponse(idTokenInfo,...)
[for TransactionEventResponse]
TransactionEventRequest(...)
TransactionEventResponse(idTokenInfo,...)
Figure 30. Sequence Diagram: Store Authorization Data in the Authorization Cache
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 100/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 101/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Failure postcondition:
The Charging Station was not able to clear the Authorization Cache.
ClearCacheRequest()
ClearCacheResponse(status)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 102/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Failure postcondition:
The UserId was not found in the Authorization Cache and:
* Online Charging Station: the Charging Station issues an AuthorizeRequest and that fails too.
* In an offline situation, behaviour of the Charging Station is defined by Configuration Variable
OfflineTxForUnknownIdEnabled.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 103/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Plugin cable
StatusNotificationRequest(Occupied)
StatusNotificationResponse()
TransactionEventRequest(eventType = Started,...)
TransactionEventResponse(...)
Present IdToken
opt
notification
TransactionEventResponse(...)
7 Error handling When the Charging Station has an IdToken in the Authorization Cache, which is valid in the
Authorization Cache, but is no longer valid in the CSMS: The Charging Station will receive the
IdTokenInfo in the TransactionEventResponse which contains the newer invalid status. What
happens in such a cases depends on the Configuration Variables: MaxEnergyOnInvalidId and
StopTxOnInvalidId.
8 Remark(s) If the Charging Station has implemented an Authorization Cache, then upon receipt of a
AuthorizeResponse message the Charging Station updates the Cache entry.
The scenario description and sequence diagram above are based on the Configuration Variable
for start transaction being configured as follows:
TxStartPoint: EVConnected, Authorized, DataSigned, PowerPathClosed, EnergyTransfer
This use-case is also valid for other configurations, but then the transaction might start/stop at
another moment, which might change the sequence in which message are send. For more details
see the use case: E01 - Start Transaction options.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 104/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
The Local Authorization List is a list of idTokens that can be synchronized with the CSMS. The list
contains the authorization status of a selected set of idTokens as managed by the CSMS.
Actors EV Driver, Charging Station
Scenario description 1. The Charging Station is Offline
2. The EV Driver presents IdToken.
3. The Charging Station checks if the IdToken is known and has status Accepted in the Local
Authorization List.
4. The Charging Station start charging.
5 Prerequisite(s) Local Authorization List is available
Local Authorization List is enabled via LocalAuthListEnabled
Charging Station is Offline
The Id of the EV Driver is in the Local Authorization List
Id is valid
6 Postcondition(s) Successful postcondition:
The Charging Station accepts tokens on the Local Authorization List when it is offline.
Failure postcondition:
The Charging Station does not accept tokens on the Local Authorization List when it is offline.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 105/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Charging Station
EV Driver
connection loss
Present IdToken
opt
notification
[tariff: 0.23/kWh]
lock connector
Figure 33. Sequence Diagram: Offline Authorization through Local Authorization List
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 106/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 107/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Present IdToken
AuthorizeResponse(Accepted)
opt
notification
[tariff: 0.23/kWh]
lock connector
Figure 34. Sequence Diagram: Online Authorization through Local Authorization List
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 108/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Failure postcondition:
The authorization status in TransactionEventResponse is not Accepted when
OfflineTxForUnknownIdEnabled is True.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 109/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Charging Station
EV Driver
present IdToken
IdToken unknown
opt
notification
[OfflineTxForUnknownIdEnabled() = False]
reject identifier
opt
notification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 110/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 111/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 112/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 C. Authorization
Present IdToken
AuthorizeRequest(...)
AuthorizeResponse(GroupId = MasterPassGroupId)
select transaction(s)
TransactionEventRequest(eventType = Ended,
chargingState = EVConnected, stopReason = MasterPass,...)
TransactionEventResponse(...)
7 Error Handling When the user does not make a selection before an acceptable timeout, the Charging Station
SHALL go back to normal operation.
8 Remarks The scenario description and sequence diagram above are based on the Configuration Variable
for stop transaction being configured as follows.
TxStopPoint: Authorized, DataSigned, PowerPathClosed, EnergyTransfer
This use-case is also valid for other configurations, but then the transaction might stop at another
moment, which might change the sequence in which message are send. For more details see the
use case: E06 - Stop Transaction options
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 113/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 D. LocalAuthorizationList Management
D. LocalAuthorizationList Management
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 114/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 D. LocalAuthorizationList Management
1. Introduction
As explained in C1.4 - Local Authorization List, the Local Authorization List is a list of identifiers that can be synchronized with the
CSMS. It allows authorization of a user when offline and when online it can be used to reduce authorization response time. This
Functional Block is for enabling the CSMS to synchronize the list by either sending a complete list of identifiers to replace the Local
Authorization List or by sending a list of changes (add, update, delete) to apply to the Local Authorization List. The operations to
support this are GetLocalListVersion and SendLocalList.
The list contains the authorization status of all (or a selection of) identifiers and the corresponding expiration date. These values
may be used to provide more fine grained information to users (e.g. by display message) during local authorization.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 115/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 D. LocalAuthorizationList Management
SendLocalListRequest(versionNumber, updateType,...)
SendLocalListResponse(Accepted)
7 Error handling If the status is Failed or VersionMismatch and the updateType was Differential, the CSMS will
transmit the full Local Authorization List. When this list is too large for one message, it will start
by sending an initial list with updateType Full and adding identifiers using updateType Differential
until the list is completely sent (the amount of identifiers that can be sent in a single
SendLocalListRequest is limited as described in requirement D01.FR.11).
8 Remark(s) n/a
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 116/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 D. LocalAuthorizationList Management
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 117/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 D. LocalAuthorizationList Management
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 118/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 D. LocalAuthorizationList Management
GetLocalListVersionRequest()
GetLocalListVersionResponse(versionNumber)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 119/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 120/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
1. Introduction
This Functional Block describes the OCPP Transaction related functionalities. Transactions are started/stopped on the Charging
Station. Note that at most one transaction can be active on an EVSE at any point in time.
• TxStartPoint
• TxStopPoint
These 2 Configuration Variables make it possible to define when a transaction should start: TransactionEventRequest (eventType =
Started) and when a transaction should stop: TransactionEventRequest (eventType = Ended)
With the introduction in OCPP 2.0.1 of flexible start/stop points of a transaction, it is important to provide a definition of a
transaction.
A transaction is the portion of a charging session that is recorded by CSMS. It is a single time frame with a start and stop
time. This information can be used by the operator for billing.
It is up to the Charging Station Operator to define the values for TxStartPoint and TxStopPoint (unless these are preset as read-only
values in the charging station), but not all combinations make sense.
• If connection time is billed, then start and stop points should be EVConnected.
• If time of use is billed, then the start points should be EVConnected, Authorized and the stop point EVConnected.
(Such that upon authorization first, the charger is already seen as 'in use').
• If charging time is billed, then start and stop points should be PowerPathClosed. (This starts as soon as charger is ready
to provide power and stops when authorization is revoked or vehicle disconnected.) Pauses in between (i.e.
SuspendedEV(SE)) do not end the transaction. Billing on the amount of energy or power can be done based on the meter
values that are collected during the transaction.
Certain combinations of start and stop points can lead to a situation where a started transaction is never
stopped. For example: when the start point is ParkingBayOccupancy and the stop point is EVConnected,
WARNING then a transaction starts when an EV occupies the parking bay, but when the user never connects the EV, but
simply drives away, then the transaction will remain open, because ParkingBayOccupancy is not
configured as a stop point.
When a Charging Station supports RW, the CSO can configure the settings. To support all possible settings, the software in the
Charging Station has to be more flexible.
With only R, the settings are fixed in firmware, the CSO can read the settings to learn how a Charging Station will behave, but cannot
configure it. This makes for a simpler implementation. When the needs of the target market are well known there might be no need
to implement the flexible model.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 121/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
In OCPP 1.x the moment a Charging Station should send StartTransaction.req was not defined very precise, generally this was done
when the Charging Station was ready to deliver energy: cable is connected and user is authorized.
To support similar transaction start behaviour, the value: PowerPathClosed is to be used. (and for completeness, also add:
EnergyTransfer
For stop behavior the ParkingBayOccupancy should not be added, OCPP 1.6 did not support this, and in case of a dual socket
charging station where somebody is using the 'opposite' connector, the transaction would then be stopped, while the EV could still
be charging.
In OCPP 1.x this was done by the CSMS. This had some drawbacks. When a Charging Station was offline it had a transaction which
did not have a transactionId.
The TransactionId generated by a Charging Station has to be unique for this Charging Station. During the lifetime of a Charging
Station it should never use the same TransactionId twice. Also when the Charging Station is rebooted, power cycled, firmware
updated, repaired etc.
OCPP does not specify an algorithm to use, but it is RECOMMENDED to use UUIDs.
1.3.1. Retrying
The Charging Station sends TransactionEventRequest messages to the CSMS System as soon as possible after the events they
report on have occurred.
If the Charging Station is offline, or if an error occurs processing the message in transport, the CSMS will be missing billing
information. In order to repair the missing information in the CSMS, the Charging Station should retry to deliver this information.
When the Charging Station fails to receive a TransactionEventResponse for a TransactionEventRequest message within the
message timeout period, the Charging Station should follow the retry procedure described in use case E13 - Transaction-related
message not accepted by CSMS.
In order to make it possible to know that all TransactionEventRequest messages about a transaction were received, OCPP uses
sequence numbers in TransactionEventRequest messages. For every EVSE, the Charging Station maintains a counter of the number
of TransactionEventRequest messages generated about that EVSE. When generating a new TransactionEventRequest message,
the Charging Station includes the current value of the EVSE’s counter in the seqNo field of the request, and then increments the
counter. With this mechanism, a CSMS can check if it has full information about a transaction by checking that:
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 122/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
When a transaction starts, the Charging Station SHOULD set the seqNo field for the TransactionEventRequest message to 0.
(Implementations with a continuously increasing seqNo are still allowed.)
1.4. Authorization
To simplify the use cases in this functional block, the way an EV Driver is authorized is not part of these use cases. It will simply be
called something like: "User authorization successful" or "The EV Driver is authorized by the Charging Station and/or CSMS.". This
may be any way of authorizing an EV Driver. See functional block: C Authorization for all the options and requirements for
authorization.
The TransactionEventRequest contains several optional fields. Some of these fields should only be sent once and should not be
repeated in every TransactionEventRequest. The following summary points to the requirements related to these optional fields.
evse
(E01.FR.16) The field evse is only provided in the first TransactionEventRequest that occurs after the EV has connected. It is
not repeated in all future TransactionEventRequests.
idToken
(E03.FR.01) The field idToken is provided once in the first TransactionEventRequest that occurs after the transaction has
been authorized.
(E07.FR.02) The field idToken is provided once in the TransactionEventRequest that occurs when the authorization of the
transaction has been ended.
(C12.FR.02) The above is also the case when authorization was granted because the idToken is present in the authorization
cache with a Accepted status.
(F02.FR.05): The above is also the case when the idToken is provided by a RequestStartTransactionRequest.
reservationId
(E03.FR.03/H01.FR.15) The field reservationId is only provided in the first TransactionEventRequest that occurs when the
transaction has been authorized by the idToken for which a reservation existed in the charging station.
(F02.FR.06) The above is also the case when the idToken is provided by a RequestStartTransactionRequest.
meterValue
(E02.FR.09) The TransactionEventRequest(eventType=Started) must contain the meter values that have been configured
in SampledDataCtrlr.TxStartedMeasurands.
(E02.FR.10) A TransactionEventRequest(eventType=Updated) must be sent at every interval configured in
SampledDataCtrlr.TxUpdatedInterval and contain the meter values that have been configured in
SampledDataCtrlr.TxUpdatedMeasurands. If TxUpdatedMeasurands == 0, then no meter values are sent.
(E06.FR.11) The TransactionEventRequest(eventType=Ended) must contain the meter values that have been configured in
SampledDataCtrlr.TxEndedMeasurands. If SampledDataCtrlr.TxEndedInterval == 0, then only the values taken at start and
end of the transaction are included.
transactionInfo.chargingState
(E02.FR.13) Whenever the charging state changes, the Charging Station must send a TransactionEventRequest containing
chargingState. This implies that a TransactionEventRequest(eventType = Started) always has a chargingState, because
the state goes from non-existent to a value.
If the change of charging state is the only event, then TransactionEventRequest has a triggerReason =
ChargingStateChanged, but if a change in charging state occurs together with other events, such as those represented
by triggerReason CablePluggedIn or (Stop)Authorized, for example, then chargingState can simply be reported as
part of that message.
A TransactionEventRequest with triggerReason = ChargingStateChanged must contain chargingState.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 123/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
transactionInfo.stoppedReason
(C15.FR.04, E05.FR.10, E05.FR.08/09, E07.FR.06) The stoppedReason must be provided in the
TransactionEventRequest(eventType=Ended), unless the value is Local, in which case it may be omitted.
(F03.FR.03, F03.FR.10, F04.FR.03) The above also applies to transactions that are stopped by a
RequestStopTransactionRequest, however in this case the stoppedReason value must be Remote.
transactionInfo.remoteStartId
(C05.FR.03, F01.FR.25, F02.FR.01) The remoteStartId must be sent in the next TransactionEventRequest after the
RequestStartTransactionRequest with the same remoteStartId.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 124/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
Failure postcondition:
The transaction is not ongoing, or
The CSMS is not informed.
EV parked.
Parking bay
detector triggers
TransactionEventRequest(eventType = Started,
triggerReason = EVDetected)
TransactionEventResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 125/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
S2 Scenario objective To start a transaction when communication is set up between the Charging Station and an EV
(for example: cable plugged in correctly on both sides)
Scenario description 1. The Charging Station sets up a connection with the EV.
2. The Charging Station sends a TransactionEventRequest (eventType = Started) notifying the
CSMS about a transaction that has started (even when the driver is not yet known).
3. The CSMS responds with a TransactionEventResponse, confirming that the
TransactionEventRequest was received.
Prerequisite(s) No transaction is ongoing on the EVSE.
Configuration Variable: TxStartPoint contains: EVConnected (Not: ParkingBayOccupancy)
Postcondition(s) Successful postcondition:
The transaction is ongoing and the CSMS is Successfully informed.
Failure postcondition:
The transaction is not ongoing, or
The CSMS is not informed.
TransactionEventResponse()
Failure postcondition:
The transaction is not ongoing, or
The CSMS is not informed.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 126/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
provides identification
TransactionEventRequest(eventType = Started,
triggerReason = Authorized)
TransactionEventResponse()
S4 Scenario objective To start a transaction when the meter has provided the first signed meter values before starting
with charging.
Scenario description 1. The EV Driver plugs in the cable at the Charging Station and the EV.
2. The Charging Station request the Meter for a signed value.
3. The Meter provides a signed value (this might take some time).
4. The Charging Station sends a TransactionEventRequest (eventType = Started) notifying the
CSMS about a transaction that has started.
5. The CSMS responds with a TransactionEventResponse, confirming that the
TransactionEventRequest was received.
Prerequisite(s) No transaction is ongoing on the EVSE.
Configuration Variable: TxStartPoint contains: DataSigned (Not: ParkingBayOccupancy,
EVConnected or Authorized).
The Charging Station has a meter that can sign measured values
Configuration Variable: SampledDataSignReadings set to true.
Postcondition(s) Successful postcondition:
The transaction is ongoing and the CSMS is Successfully informed.
Failure postcondition:
The transaction is not ongoing, or
The CSMS is not informed.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 127/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
EV Connected.
TransactionEventRequest(eventType = Started,
triggerReason = SignedDataReceived)
TransactionEventResponse()
S5 Scenario objective To start a transaction when all preconditions have been met to start charging (authorized and
connected), but energy does not yet have to be transfered.
Scenario description 1. The EV Driver is authorized by the Charging Station and/or CSMS.
2. The Charging Station is connected to the EV.
3. The Charging Station sends a TransactionEventRequest (eventType = Started) notifying the
CSMS about a transaction that has started.
4. The CSMS responds with a TransactionEventResponse, confirming that the
TransactionEventRequest was received.
Prerequisite(s) No transaction is ongoing on the EVSE.
Configuration Variable: TxStartPoint contains: PowerPathClosed (Not: ParkingBayOccupancy,
EVConnected, Authorized or DataSigned).
Charging Cable plugged in.
Postcondition(s) Successful postcondition:
The transaction is ongoing and the CSMS is Successfully informed.
Failure postcondition:
The transaction is not ongoing, or
The CSMS is not informed.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 128/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
EV Connected.
TransactionEventResponse()
Failure postcondition:
The transaction is not ongoing, or
The CSMS is not informed.
EV Connected.
energy transfer
TransactionEventResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 129/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 130/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 131/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
Failure postcondition:
The transaction is not ongoing. or
The CSMS is not informed. or
Start Transaction - Id not accepted.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 132/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
plugin cable
StatusNotificationRequest(Occupied)
StatusNotificationResponse()
TransactionEventResponse(...)
TransactionEventResponse(...)
TransactionEventResponse(...)
7 Error handling Failing to respond with TransactionEventResponse will only cause the Charging Station to try the
same message again as specified in E12 - Transaction-related message not accepted by CSMS.
8 Remark(s) If the Charging Station has implemented an Authorization Cache, then upon receipt of
TransactionEventResponse, the Charging Station updates the cache entry.
The scenario description and sequence diagram above are based on the Configuration Variable
for start & stop transaction being configured as follows:
TxStartPoint: EVConnected, Authorized, DataSigned, PowerPathClosed, EnergyTransfer
This use-case is also valid for other configurations, but then the transaction might start at another
moment, which might change the sequence in which message are sent. For more details see the
use cases: E01 - Start Transaction options and E06 - Stop Transaction options.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 133/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 134/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
E02.FR.20 When a transaction has not been The next TransactionEventRequest from Charging If authorization is not
authorized before AND Station SHALL contain the idToken and have successful, then no
the Charging Station authorizes an triggerReason = Authorized. TransactionEventReques
idToken to start charging t is sent, because this
event has no effect on
the running transaction.
(For authorization to stop
charging, see E07).
E02.FR.21 When configured to send meter data The Charging Station SHALL add the measurands
in the TransactionEventRequest for eventType = Started to the optional
(eventType = Started), See: Meter meterValue field with context =
Values - Configuration Transaction.Begin in the
TransactionEventRequest(eventType = Updated)
AND
that occurs when charging starts.
EVSE is not known at start of
transaction
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 135/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 136/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
TransactionEventResponse(idTokenInfo.status = Accepted,...)
StatusNotificationRequest(Occupied)
StatusNotificationResponse()
TransactionEventResponse(...)
TransactionEventResponse(...)
[if not within Connection Timeout]
TransactionEventRequest(eventType = Ended, triggerReason = EVConnectTimeout, transactionId = AB1234, seqNo = N + 1,
timestamp, meterValues, stoppedReason = Timeout)
TransactionEventResponse()
opt
notification
The scenario description and sequence diagram above are based on the Configuration Variable
for start transaction being configured as follows:
TxStartPoint: Authorized, DataSigned, PowerPathClosed, EnergyTransfer
This use-case is also valid for other configurations, but then the transaction might start/stop at
another moment, which might change the sequence in which message are sent. For more details
see the use cases: E01 - Start Transaction options.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 137/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 138/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
E03.FR.15 When the EV Driver does not plug-in The Charging Station SHALL deauthorize the Transaction will be
the charging cable before the timeout transaction and send a TransactionEventRequest ended normally when
set by the Configuration Variable: (triggerReason = EVConnectionTimeout) to the driver leaves the parking
EVConnectionTimeOut AND CSMS. bay.
TxStopPoint contains
ParkingBayOccupancy
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 139/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 140/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
opt
notification
lock connector
Connection restored.
HeartbeatRequest()
HeartbeatResponse()
TransactionEventResponse(...)
Figure 47. Sequence Diagram: Transaction started while Charging Station is offline
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 141/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 142/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 143/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
Failure postcondition:
n/a
TransactionEventResponse(...)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 144/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
8 Remark(s) The scenario description and sequence diagram above are based on the Configuration Variable
for start & stop transaction being configured as follows:
TxStartPoint: Authorized, DataSigned, PowerPathClosed, EnergyTransfer
TxStopPoint: ParkingBayOccupancy, EVConnected
This use-case is also valid for other configurations, but then the transaction might start/stop at
another moment, which might change the sequence in which message are sent. For more details
see the use cases: E01 - Start Transaction options and E06 - Stop Transaction options.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 145/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 146/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
Failure postcondition:
The transaction is still ongoing. or
The CSMS is not informed.
A transaction is ongoing.
TransactionEventRequest(eventType = Ended,
triggerReason = EVDeparted, stoppedReason = Local, ...)
TransactionEventResponse()
S2 Scenario objective Stop a transaction when communication between the Charging Station and the EV is lost. (for
example: cable unplugged)
Scenario description 1. Communication between Charging Station and the EV is lost (Charging cable is unplugged).
2. If charging cable unplugged on the Charging Station side: send StatusNotificationRequest to
the CSMS to inform it about a Connector that became Available.
3. The Charging Station sends a TransactionEventRequest (eventType = Ended) notifying the
CSMS about a transaction that has ended.
4. The CSMS responds with a TransactionEventResponse, confirming that the
TransactionEventRequest was received.
Prerequisite(s) A transaction is ongoing.
Configuration Variable: TxStopPoint contains: EVConnected
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 147/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
S2 Scenario objective Stop a transaction when communication between the Charging Station and the EV is lost. (for
example: cable unplugged)
Postcondition(s) Successful postcondition:
The transaction is ended and the CSMS is Successfully informed.
Failure postcondition:
The transaction is still ongoing. or
The CSMS is not informed.
A transaction is ongoing.
TransactionEventResponse()
Failure postcondition:
The transaction is still ongoing. or
The CSMS is not informed.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 148/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
TxStopPoint
contains "Authorized".
TransactionEventRequest(...)
TransactionEventResponse(...)
[If StopTxOnInvalidId is false]
TransactionEventRequest(eventType = Updated,
triggerReason = ChargingStateChanged, ...)
TransactionEventResponse(...)
S5 Scenario objective Stop a transaction when the EV driver is no longer authorized and/or the EV is disconnected.
Scenario description 1. The Charging Station is disconnected from EV and/or the EV driver is no longer authorized.
2. The Charging Station sends a TransactionEventRequest (eventType = Ended) notifying the
CSMS about a transaction that has ended.
3. The CSMS responds with a TransactionEventResponse, confirming that the
TransactionEventRequest was received.
Prerequisite(s) A transaction is ongoing.
Configuration Variable: TxStopPoint contains: PowerPathClosed
Postcondition(s) Successful postcondition:
The transaction is ended and the CSMS is Successfully informed.
Failure postcondition:
The transaction is still ongoing. or
The CSMS is not informed.
A transaction is ongoing.
TransactionEventResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 149/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
S6 Scenario objective Stop a transaction when energy transfer stops. This will also mean the transaction stops when
the EV stops taking energy, for example when the battery is to hot.
Scenario description 1. The energy transfer between EV and the Charging Station stops (for example: EV stops
charging).
2. The Charging Station sends a TransactionEventRequest (eventType = Ended) notifying the
CSMS about a transaction that has ended.
3. The CSMS responds with a TransactionEventResponse, confirming that the
TransactionEventRequest was received.
Prerequisite(s) A transaction is ongoing.
Configuration Variable: TxStopPoint contains: EnergyTransfer
Postcondition(s) Successful postcondition:
The transaction is ended and the CSMS is Successfully informed.
Failure postcondition:
The transaction is still ongoing. or
The CSMS is not informed.
A transaction is ongoing.
TransactionEventResponse()
Failure postcondition:
The transaction is still ongoing. or
The CSMS is not informed.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 150/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
opt [if cable not permanently attached & (same identification or authorized)]
unlock connector
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 151/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
Scenario description 1. The EV Driver presents IdToken a second time to end charging.
TxStopPoint = 2. The Charging Station stops the energy transfer and if the cable is not permanently attached, the
Authorized (or Charging Station unlocks the cable.
PowerPathClosed) 3. The Charging Station sends a TransactionEventRequest (eventType = Ended) with
triggerReason = StopAuthorized and stoppedReason = Local.
4. The CSMS responds with a TransactionEventResponse.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 152/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
TransactionEventResponse(idTokenInfo.status)
[TxStopPoint = EVConnected OR TxStopPoint = ParkingBayOccupancy OR TxStopPoint = EnergyTransfer]
TransactionEventRequest(eventType = Updated, transactionId = AB1234, seqNo = N + 1, timestamp,
triggerReason = StopAuthorized, idToken.id = 1234)
TransactionEventResponse(idTokenInfo.status)
opt [if cable not permanently attached & (same identification or authorized)]
unlock connector
TransactionEventResponse()
[TxStopPoint = EVConnected OR TxStopPoint = ParkingBayOccupancy]
TransactionEventRequest(eventType = Updated, transactionId = AB1234, seqNo = N + 1, timestamp,
triggerReason = ChargingStateChanged, chargingState = EVConnected)
TransactionEventResponse()
Unplug cable
StatusNotificationRequest(Available)
StatusNotificationResponse()
TransactionEventResponse()
[TxStopPoint = ParkingBayOccupancy]
TransactionEventRequest(eventType = Updated, transactionId = AB1234, seqNo = N + 3, timestamp,
triggerReason = EVCommunicationLost)
TransactionEventResponse()
TransactionEventResponse()
Figure 55. Sequence Diagram: Transaction locally stopped by IdToken with TransactionEventRequest reported strictly by TxStopPoint
configuration
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 153/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
TransactionEventResponse(idTokenInfo.status)
opt [if cable not permanently attached & (same identification or authorized)]
unlock connector
TransactionEventResponse()
[TxStopPoint = EVConnected OR TxStopPoint = ParkingBayOccupancy]
TransactionEventRequest(eventType = Updated, transactionId = AB1234, seqNo = N + 2, timestamp,
triggerReason = ChargingStateChanged, chargingState = EVConnected, meterValues)
TransactionEventResponse()
Unplug cable
StatusNotificationRequest(Available)
StatusNotificationResponse()
TransactionEventResponse()
[TxStopPoint = ParkingBayOccupancy]
TransactionEventRequest(eventType = Updated, transactionId = AB1234, seqNo = N + 3, timestamp,
triggerReason = EVCommunicationLost)
TransactionEventResponse()
TransactionEventResponse()
Figure 56. Sequence Diagram: Transaction locally stopped by IdToken with delayed TransactionEventRequest eventType = Ended for
TxStopPoint = Authorized OR PowerPathClosed
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 154/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 155/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 156/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 157/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
present idToken
Connection restored.
HeartbeatRequest()
HeartbeatResponse()
TransactionEventRequest(eventType = Ended,
offline = true)
TransactionEventResponse()
Figure 57. Sequence Diagram: Transaction stopped while Charging Station is offline
The scenario description and sequence diagram above are based on the Configuration Variable
for stop transaction being configured as follows.
TxStopPoint: ParkingBayOccupancy, EVConnected, Authorized
This use-case is also valid for other configurations, but then the transaction might stop at another
moment, which might change the sequence in which message are sent. For more details see the
use case: E06 - Stop Transaction options
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 158/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 159/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
The Charging Cable is unplugged at the EV side. This is detected by the Charging Station. The
Charging Station stops the transaction and sends a TransactionEventRequest to the CSMS. The
Charging Cable, if locked and UnlockOnEvSideDisconnect = false, will remain locked at the
Charging Station until the EV Driver returns and presents his/hers IdToken. Otherwise it will
unlock the cable.
Actors Charging Station, CSMS, EV Driver
Scenario description 1. The cable is unplugged at the EV.
2. The energy offer is suspended.
3. The Charging Station sends TransactionEventRequest (eventType = Ended, stoppedReason =
EVDisconnected) to the CSMS.
4. The CSMS responds with TransactionEventResponse.
5. The EV Driver is authorized and unplugs the cable.
6. The Charging Station sends StatusNotificationRequest to the CSMS with the status Available.
7. The CSMS responds with StatusNotificationResponse.
Alternative scenario(s) E09 - When cable disconnected on EV-side: Suspend Transaction
5 Prerequisite(s) Configuration Variable: StopTxOnEVSideDisconnect = true
A transaction is ongoing
6 Postcondition(s) Successful postcondition:
The Charging Station is in Idle status.
Failure postcondition:
n/a
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 160/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
A transaction is ongoing.
TransactionEventResponse()
unlock connector
Unplug cable
StatusNotificationRequest(Available)
StatusNotificationResponse()
Figure 58. Sequence Diagram: When cable disconnected on EV-side: Stop Transaction
The scenario description and sequence diagram above are based on the Configuration Variable
for stop transaction being configured as follows.
TxStopPoint: Authorized
This use-case is also valid for other configurations, but then the transaction might stop at another
moment, which might change the sequence in which message are sent. For more details see the
use case: E06 - Stop Transaction options
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 161/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 162/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
The Charging Cable is unplugged at the EV side. This is detected by the Charging Station. The
Charging Station stops the energy offering (safety), but does not stop the transaction. The
Charging Cable, if locked, will remain locked at the Charging Station until the EV Driver returns and
presents his/hers IdToken.
Actors Charging Station, CSMS, EV Driver
Scenario description 1. EV Driver unplugs the cable at the EV while a transaction is ongoing.
2. The energy offer is suspended.
If the EV Driver plugs the cable back in, the transaction is resumed.
A1. The Charging Station sends a TransactionEventRequest (eventType = Updated, trigger =
CablePluggedIn)
A2. The CSMS responds with a TransactionEventResponse.
If cable not permanently attached
B1. The EV Driver is authorized by the Charging Station and/or CSMS to unlock the charging
cable.
B2. The Cable is unlocked.
B3. The Charging Station sends a TransactionEventRequest (eventType = Ended, trigger =
StopAuthorized).
B4. The EV Driver removes the charging cable.
B5. The Charging Station sends a StatusNotificationRequest to the CSMS with the status
Available.
B6. The CSMS responds with a StatusNotificationResponse.
If cable permanently attached
C1. The Cable is not plugged in within timeout.
C2. The Charging Station sends a TransactionEventRequest (eventType = Ended, trigger =
EVCommunicationLost, stoppedReason = EVDisconnected).
C3. The Charging Station sends a StatusNotificationRequest to the CSMS with the status
Available.
C4. The CSMS responds with a StatusNotificationResponse.
Alternative scenario(s) E09 - When cable disconnected on EV-side: Stop Transaction
5 Prerequisite(s) Configuration Variable: StopTxOnEVSideDisconnect = false
A transaction is ongoing
6 Postcondition(s) Successful postcondition:
The Charging Station is in Idle status.
The regular transaction is resumed.
Failure postcondition:
n/a
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 163/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
A transaction is ongoing.
TransactionEventResponse()
TransactionEventResponse()
Continue with E02 - Start Transaction - Cable Plugin First from Ref #1.
unlock connector
TransactionEventResponse()
unplug cable
StatusNotificationRequest(Available)
StatusNotificationResponse()
[if cable permanently attached]
timeout()
TransactionEventResponse()
StatusNotificationRequest(Available)
StatusNotificationResponse()
Figure 59. Sequence Diagram: When cable disconnected on EV-side: Suspend Transaction
When the cable is permanently attached and the cable is not plugged in within a certain timeout,
the Charging Station stops the transaction. This timeout is not defined by OCPP, it is left to the
implementor of the Charging Station.
The scenario description and sequence diagram above are based on the Configuration Variable
for stop transaction being configured as follows.
TxStopPoint: ParkingBayOccupancy, Authorized
This use-case is also valid for other configurations, but then the transaction might stop at another
moment, which might change the sequence in which message are sent. For more details see the
use case: E06 - Stop Transaction options
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 164/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 165/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
A transaction is ongoing.
Connection loss.
opt
loop [while transaction running]
store TransactionEventRequest() messages
Connection restored.
TransactionEventResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 166/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 167/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
Connection restored.
HeartbeatRequest()
HeartbeatResponse()
TransactionEventResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 168/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 169/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
resend message()
dispose message()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 170/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 171/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
GetTransactionStatusResponse(ongoing, messagesInQueue)
[Not for a specific transaction]
GetTransactionStatusRequest()
GetTransactionStatusResponse(messagesInQueue)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 172/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
ID Precondition Requirements
E14.FR.03 The Charging Station receives a The Charging Station’s response SHALL have ongoingIndicator =
GetTransactionStatusRequest with a false.
transactionId AND
The transaction with that transactionId has
stopped
E14.FR.04 The Charging Station receives a The Charging Station’s response SHALL have messagesInQueue
GetTransactionStatusRequest with a = true.
transactionId AND
It has transaction-related messages to be
delivered about the transaction with that
transactionId
E14.FR.05 The Charging Station receives a The Charging Station’s response SHALL have messagesInQueue
GetTransactionStatusRequest with a = false.
transactionId AND
It has no transaction-related messages to be
delivered about the transaction with that
transactionId
E14.FR.06 The Charging Station receives a The Charging Station’s response SHALL NOT have
GetTransactionStatusRequest without a ongoingIndicator set.
transactionId
E14.FR.07 The Charging Station receives a The Charging Station’s response SHALL have messagesInQueue
GetTransactionStatusRequest without a = true.
transactionId AND
It has transaction-related messages to be
delivered
E14.FR.08 The Charging Station receives a The Charging Station’s response SHALL have messagesInQueue
GetTransactionStatusRequest without a = false.
transactionId AND
It has no transaction-related messages to be
delivered
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 173/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 E. Transactions
15118
PowerDeliveryReq(ChargeProgress=Stop)
open contactor
PowerDeliveryRes()
SessionStopReq()
SessionStopRes()
OCPP
TransactionEventRequest(eventType = Ended)
TransactionEventResponse()
The scenario description and sequence diagram above are based on the Configuration Variable
for stop transaction being configured as follows.
TxStopPoint: ParkingBayOccupancy, EVConnected, Authorized, DataSigned, PowerPathClosed
This use-case is also valid for other configurations, but then the transaction might stop at another
moment, which might change the sequence in which message are sent. For more details see the
use case: E06 - Stop Transaction options
Source: ISO15118-1
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 174/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
F. RemoteControl
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 175/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
1. Introduction
This Functional Block describes three types of use cases for remote control management from the CSMS:
1. Remote Transaction Control. These use cases describe the functionality which enable the CSO (or indirect a third party) to
start/stop a transaction with a remote command.
2. Unlocking a Connector. These use cases describe the functionality that enables the CSO (or indirect a third party) to unlock
the Connector with a remote command. This can for example be used to assist customers when they have problems
unplugging their cable.
3. Remote Trigger. These use cases describe all the remote trigger functionality of OCPP. This functionality enables remote
triggering of messages. For example, requesting messages to be resend or request current status of some ongoing
processes in the Charging Station.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 176/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 177/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
Plugin cable
StatusNotificationRequest(Occupied)
StatusNotificationResponse()
TransactionEventResponse(...)
remote start()
Match remoteStartId
with TransactionId()
opt
notification
AuthorizeResponse(idTokenInfo)
TransactionEventResponse(...)
Figure 65. Sequence Diagram: Remote Start Transaction - Cable Plugged in First
The scenario description and sequence diagram above are based on the Configuration Variable
for start transaction being configured as follows:
TxStartPoint: EVConnected, Authorized, DataSigned, PowerPathClosed, EnergyTransfer
This use-case is also valid for other configurations, but then the transaction might start/stop at
another moment, which might change the sequence in which message are send. For more details
see the use cases: E01 - Start Transaction options.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 178/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 179/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 180/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
Failure postcondition:
The transaction for which a start was request did not start or the EV is not charging.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 181/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
TxStartPoint = Authorized
remote start()
RequestStartTransactionResponse(status = Accepted)
opt
notification
AuthorizeResponse(idTokenInfo)
TransactionEventResponse(...)
StatusNotificationRequest(Occupied)
StatusNotificationResponse()
TransactionEventResponse(...)
TransactionEventResponse(...)
[not within ConnectionTimeOut]
TransactionEventRequest(eventType = Ended, stoppedReason = Timeout,
triggerReason = EVConnectTimeout...)
TransactionEventResponse(...)
Figure 66. Sequence Diagram: Remote Start Transaction - Remote Start First with TxStartPoint=Authorized
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 182/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
TxStartPoint = EVConnected
remote start()
RequestStartTransactionResponse(status = Accepted)
opt
notification
AuthorizeResponse(idTokenInfo)
Plugin cable
StatusNotificationRequest(Occupied)
StatusNotificationResponse()
TransactionEventResponse(...)
TransactionEventResponse(...)
Figure 67. Sequence Diagram: Remote Start Transaction - Remote Start First with TxStartPoint=EVConnected
It is advised not to start transactions remotely without evseId due to the uncertainty
which EVSE is started. In case of a Logic Controller with many EVSEs, the EV Driver
might not be in front of the activated EVSE.
The scenario description and sequence diagram above are based on the Configuration
Variable for start transaction being configured as follows:
TxStartPoint: EVConnected, Authorized, DataSigned, PowerPathClosed,
EnergyTransfer
This use-case is also valid for other configurations, but then the transaction might
start/stop at another moment, which might change the sequence in which message
are send. For more details see the use cases: E01 - Start Transaction options.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 183/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 184/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 185/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
Requirements of previous use case: F01 - Remote Start Transaction - Cable Plugin First, are also considered
NOTE
relevant for F02 - Remote Start Transaction - Remote Start First
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 186/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
remote stop()
RequestStopTransactionRequest(transactionId)
RequestStopTransactionResponse(Accepted)
opt
notification
TransactionEventResponse(...)
opt
notification
Unplug cable
StatusNotificationRequest(Available)
StatusNotificationResponse()
TransactionEventResponse(...)
7 Remark(s) This remote request to stop a transaction is equal to a local action to stop a
transaction.
The scenario description and sequence diagram above are based on the Configuration
Variable for stop transaction being configured as follows.
TxStopPoint: ParkingBayOccupancy, EVConnected
This use-case is also valid for other configurations, but then the transaction might stop
at another moment, which might change the sequence in which message are send. For
more details see the use case: E06 - Stop Transaction options
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 187/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
ISO 15118:
3. The EV sends a ChargingStatus (in case of AC charging) or CurrentDemandReq (in case of DC
Charging) PDU to the Charging Station.
4. The Charging Station responds with an EVSENotification = StopCharging.
8 Postcondition(s) See ISO15118-1, use case End conditions F2, page 38.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 188/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
RequestStopTransactionRequest(transactionId)
RequestStopTransactionResponse(Accepted)
ChargingStatusRes(EVSENotification=StopCharging)
[if DC Charging]
CurrentDemandReq()
CurrentDemandRes(EVSENotification=StopCharging)
Figure 69. Charging loop with interrupt from the Charging Station
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 189/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
unlock connector
UnlockConnectorRequest(evseId, connectorId)
unlock connector
UnlockConnectorResponse(unlocked)
opt
notification
UnlockConnectorRequest is intended only for unlocking the cable retention lock on the Connector,
not for unlocking a Connector access door.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 190/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 191/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
TriggerMessageRequest(requestedMessage, ...)
TriggerMessageResponse(status)
TriggerMessageResponse(Status: Accepted)
TransactionEventResponse(...)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 192/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 193/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 F. RemoteControl
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 194/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
G. Availability
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 195/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
1. Introduction
This Functional Block specifies how the Charging Station can inform the CSMS of its current availability for starting new
transactions.
For the CSO it is important to know if a Charging Station is available for new EVs to be charged. The CSO wants to know this
information so they can tell EV Drivers whether the Charging Station is available. To know this, the Charging Station should send
any status changes of itself or one of its EVSEs to the CSMS. See for an example: B04 - Offline Behavior Idle Charging Station.
For the CSO it is very helpful to know the status of the transaction, therefore the Charging Station can send detailed statuses to the
CSMS. This can be very useful when helping an EV Driver when he experiences problems during charging.
When a fault is detected by the Charging Station it can send a message notifying the CSMS about the fault.
When the CSO wants the Charging Station to no longer start new transactions, it can change the availability. For example: they need
to do maintenance on the Charging Station, and for this reason they don’t want the Charging Station to be in use.
The CSO can also change the availability for one or more EVSEs. For example: A customer calls, complaining about a broken EVSE
on the Charging Station. The CSO can then set the Connector to unavailable, making it impossible for an EV Driver to use that
Connector.
Obviously, it is also possible to make the Charging Station or a Connector available again with a command from the CSMS.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 196/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
StatusNotificationResponse()
Notifying a connector status from the Charging Station to the CSMS will be taken over by the new
Device Management Monitoring feature, however this mechanism has not been proven in the field
yet. So the old StatusNotificationRequest message remains available for use for now.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 197/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 198/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
G02 - Heartbeat
Table 138. G02 - Heartbeat
No. Type Description
1 Name Heartbeat
2 ID G02
Functional block G. Availability
3 Objective(s) To let the CSMS know that a Charging Station is still connected, optionally the Heartbeat can be
used for time synchronisation.
4 Description This use case describes a way to let the CSMS know the Charging Station is still connected, a
Charging Station sends a heartbeat after a configurable time interval. Depending on the
configuration the Heartbeat can be used for time synchronisation.
Actors Charging Station, CSMS
Scenario description 1. If there is no activity for a certain time, the Charging Station sends HeartbeatRequest for
ensuring that the CSMS knows that a Charging Station is still alive.
2. Upon receipt of HeartbeatRequest, the CSMS responds with HeartbeatResponse. The response
message contains the current time of the CSMS, which the Charging Station MAY use to
synchronize its internal clock.
5 Prerequisite(s) The heartbeat interval is set.
6 Postcondition(s) Successful postconditions::
The CSMS knows the Charging Station is still connected.
Failure postconditions:
The CSMS concludes that the Charging Station is Offline.
HeartbeatRequest()
HeartbeatResponse(currentTime)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 199/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 200/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
Failure postcondition:
The status of the EVSE is as it was just before the Charging Station received
ChangeAvailabilityRequest and not according to the requested Availability.
ChangeAvailabilityRequest(EVSE.id, type)
ChangeAvailabilityResponse(status)
StatusNotificationResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 201/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
1. The Charging Station, EVSEs and Connectors have separate / individual states. This means (for example) that
NOTE when setting a connector to Inoperative, then setting the connected EVSE to Inoperative and thereafter change
the EVSE back to operative, the connector will remain Inoperative.
2. It is only required to report a status change of a connector. StatusNotificationRequest only supports the
NOTE
reporting of connector statuses.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 202/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
A Charging Station is considered Inoperative when it does not allow any charging.
Actors Charging Station, CSMS
Scenario description 1. The CSMS sends a ChangeAvailabilityRequest for requesting a Charging Station to change its
availability.
2. Upon receipt of a ChangeAvailabilityRequest, the Charging Station responds with
ChangeAvailabilityResponse.
5 Prerequisite(s) n/a
6 Postcondition(s) Successful postcondition:
The CSMS was able to change the availability of the Charging Station.
When changing the availability of a Charging Station to Operative, the status of the Charging
Station has changed to Available.
When changing the availability of a Charging Station to Inoperative, the status of the Charging
Station has changed to Unavailable.
Failure postcondition:
The CSMS was not able to change the requested Charging Station’s availability.
ChangeAvailabilityRequest(type)
ChangeAvailabilityResponse(status)
StatusNotificationResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 203/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
1. The Charging Station, EVSEs and Connectors have separate / individual states. This means (for example) that
NOTE when setting a connector to Inoperative, then setting the connected EVSE to Inoperative and thereafter change
the EVSE back to operative, the connector will remain Inoperative.
2. It is only required to report a status change of a connector. StatusNotificationRequest only supports the
NOTE
reporting of connector statuses.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 204/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
Cable plugged in
NotifyEventRequest(component = ConnectorPlugRetentionLock,
variable = Problem, value = true)
NotifyEventResponse()
optional notification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 205/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 G. Availability
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 206/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 H. Reservation
H. Reservation
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 207/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 H. Reservation
1. Introduction
This Functional Block describes the reservation functionality of OCPP. The reservation functionality enables an EV Driver to make a
reservation of a Charging Station/EVSE, ensuring an available Connector at a Charging Station when he arrives.
With Charging Stations not being abundantly available, and EVs having limited range, EV Drivers plan their trips from Charging
Station to Charging Station. They need to know for sure they can use a Charging Station they plan to go to. They don’t like it when
another EV Driver has started using the Charging Station in the time they were traveling to the Charging Station.
For the EV Driver it is useful to be able to reserve a specific Type of Connector, or, when the EV Driver has no preference, an
unspecified EVSE at a Charging Station. So he knows for sure he can charge at the Charging Station when he arrives.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 208/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 H. Reservation
reserve
ReserveNowRequest(reservation.id, no evseId)
ReserveNowResponse(status = Accepted)
opt
notification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 209/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 H. Reservation
reserve
ReserveNowRequest(connectorId, ...)
ReserveNowResponse(status = Accepted)
opt
notification
StatusNotificationResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 210/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 H. Reservation
reserve
ReserveNowResponse(status = Accepted)
opt
notification
6 Error handling
7 Remark(s) It is RECOMMENDED to validate the Identifier with an AuthorizeRequest after reception of
ReserveNowRequest and before the start of the transaction.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 211/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 H. Reservation
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 212/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 H. Reservation
Failure postcondition:
n/a.
Cancel reservation
CancelReservationRequest(reservationId)
CancelReservationResponse(status = Accepted)
StatusNotificationResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 213/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 H. Reservation
reserve
ReserveNowResponse(status = Accepted)
StatusNotificationResponse()
Present IdToken(TOKEN_A)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 214/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 H. Reservation
Scenario description 1. The CSMS sends a ReserveNowRequest with the GroupId to a Charging Station to
reserve a EVSE for use by a specific IdTokenType.
2. Upon receipt of the ReserveNowRequest, the Charging Station responds with a
ReserveNowResponse.
3. When a specific EVSE is reserved for this reservation, the Charging Station sends a
StatusNotificationRequest with the status Reserved for all the Connectors of that
EVSE.
4. The CSMS responds with a StatusNotificationResponse to the Charging Station.
5. The EV Driver presents an IdTokenType at the Charging Station, and the
IdTokenType is different from the reservation’s IdTokenType, the Charging Station
sends an AuthorizeRequest to the CSMS.
6. The CSMS responds with an AuthorizeResponse. This response message includes
the GroupId.
7. Based on the matching GroupId information in both responses, the Charging Station
starts charging and E02 - Start Transaction - Cable Plugin First applies.
5 Prerequisite(s) n/a
6 Postcondition(s) n/a
reserve
ReserveNowResponse(status = Accepted)
StatusNotificationResponse()
Present IdToken(TOKEN_B)
alt [If TOKEN_B is NOT found in the Local Authorization List or Authorization Cache]
AuthorizeRequest(idToken = TOKEN_B)
AuthorizeResponse(idTokenInfo(groupIdToken = TOKEN_P))
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 215/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 H. Reservation
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 216/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 H. Reservation
Reservation ended,
expiryDateTime is reached
StatusNotificationResponse()
ReservationStatusUpdateResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 217/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 I. TariffAndCost
I. TariffAndCost
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 218/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 I. TariffAndCost
1. Introduction
This Functional Block provides tariff and cost information to an EV Driver, when a Charging Station is capable of showing this on a
display.
Before a driver starts charging he needs to be given tariff information, given detailed prices for all the components that make up the
tariff plan applicable to this driver at this Charging Station. As this is a human readable text message, it can also be used for other
things, like a personal welcome message.
Some business cases might require the EV Driver to be shown the running total cost during charging, updated at a regular, fitting
interval. When the EV Driver stops charging, he needs to be shown to the total cost of the just stopped transaction.
All tariffs and costs are in the currency configured in the Configuration Variable Currency.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 219/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 I. TariffAndCost
Failure postcondition:
If the authorization status is other than Accepted, the EV Driver can not start and might not know
the tariff.
No ongoing transaction
for this User
present IdToken
AuthorizeRequest(idToken = '123456')
AuthorizeResponse(status = Accepted,
PersonalMessage = '0.25/kWh')
tariff: 0.25/kWh
If known, and applicable, it is advisable to show the tariff information in a language understood by
the EV Driver.
It is advisable to give the driver the option to cancel the transaction when he does not agree with
the tariff. This could be not plugging in the cable, or a cancel button in the user interface etc. As
long at it is clear to the driver how a transaction can be canceled.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 220/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 I. TariffAndCost
Failure postcondition:
Total cost not known to the EV Driver during charging.
Ongoing transaction
CostUpdatedResponse()
Figure 86. Sequence Diagram: Show EV Driver Running Total Cost During Charging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 221/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 I. TariffAndCost
Failure postcondition:
The EV Driver does NOT know the total cost of the transaction.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 222/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 I. TariffAndCost
Ongoing transaction
Present IdToken
opt
notification
TransactionEvent / StatusNotification
messages left out for readability
Figure 87. Sequence Diagram: Show EV Driver Final Total Cost After Charging
The scenario description and sequence diagram above are based on the Configuration Variable
for stop transaction being configured as follows.
TxStopPoint: ParkingBayOccupancy, EVConnected, Authorized
This use-case is also valid for other configurations, but then the transaction might stop at another
moment, which might change the sequence in which message are send. For more details see the
use case: E06 - Stop Transaction options
I03.FR.03 I03.FR.02 AND The Charging Station SHALL display the total cost to the EV
Charging Station was online when transaction Driver.
stopped
I03.FR.04 To indicate a free transaction, the CSMS SHALL set totalCost to
0.00. Thus omitting totalCost does not imply that the transaction
was free.
I03.FR.05 I02.FR.02 AND The Charging Station SHOULD NOT display the total cost to the
TxStopPoint is defined as EV Driver. (Driver has left already).
ParkingBayOccupancy
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 223/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 I. TariffAndCost
Failure postcondition:
EV Driver has no information about the tariff at this Charging Station.
present IdToken
TariffFallbackMessage
[No specific tariff is available]
AuthorizeRequest(idToken)
AuthorizeResponse(...)
TariffFallbackMessage
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 224/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 I. TariffAndCost
Charging Station
EV Driver
Ongoing transaction
present IdToken
TotalCostFallbackMessage
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 225/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 I. TariffAndCost
Failure postcondition:
The EV Driver has not been shown the updated tariff information.
A transaction is ongoing.
TransactionEventRequest(eventType = Updated,...)
TransactionEventResponse(PersonalMessage,...)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 226/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 I. TariffAndCost
I06.FR.03 I06.FR.02 The Charging Station SHALL display the updated tariff
information to the EV Driver.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 227/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
J. MeterValues
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 228/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
1. Introduction
This Functional Block describes the functionality that enables a Charging Station to send periodic, possibly clock-aligned
MeterValues.
The transfer of the MeterValues from the Charging Station to the CSMS will be taken over by the new Device Management
Monitoring feature, however this mechanism has not been proven in the field yet. So the old MeterValuesRequest message remains
available for use for now.
Extensive metering data relating to transactions can be recorded and transmitted in different ways depending on its intended
purpose. There are two obvious use cases (but the use of meter values is not limited to these two):
Both types of meter readings MAY be reported in the meterValue element of the TransactionEventRequest message. Clock-Aligned
Meter Values MAY be reported in standalone MeterValuesRequest messages.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 229/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
2. Configuration
This section is normative.
• SampledDataTxStartedMeasurands
• SampledDataTxUpdatedMeasurands
• SampledDataTxUpdatedInterval
• SampledDataTxEndedMeasurands
• SampledDataTxEndedInterval
SampledDataTxUpdatedInterval is the time (in seconds) between sampling of metering (or other) data, intended to be
transmitted by TransactionEventRequest (eventType = Updated) messages during a transaction. A value of "0" (numeric zero), by
convention, is to be interpreted to mean that no sampled data should be transmitted.
SampledDataTxEndedInterval is the time (in seconds) between sampling of metering (or other) data, intended to be
transmitted in the TransactionEventRequest (eventType = Ended) message.
SampledDataTxStartedMeasurands is a comma separated list that prescribes the set of measurands to be included in the
meterValues field of a TransactionEventRequest (eventType = Started).
SampledDataTxUpdatedMeasurands is a comma separated list that prescribes the set of measurands to be included in the
meterValues field of a TransactionEventRequest (eventType = Updated), every SampledDataTxUpdatedInterval seconds.
SampledDataTxEndedMeasurands is a comma separated list that prescribes the sampled measurands to be included in the
meterValues field of a TransactionEventRequest (eventType = Ended), these measurands have to be taken every
SampledDataTxEndedInterval seconds from the start of the transaction, and will only be sent in the TransactionEventRequest
(eventType = Ended).
Care should be taken to ensure that the amount of measurands that is expected at the end of a transaction fits in one
TransactionEventRequest(eventType=Ended) message. Keep the number of measurands in SampledDataTxEndedMeasurands
to a minimum and configure a large interval in SampledDataTxEndedInterval to keep the number of samples small.
NOTE Please note: Transaction related MeterValues are never transmitted in MeterValuesRequest.
"Clock-Aligned Meter Values" can be configured with the following Configuration Variables:
• AlignedDataMeasurands
• AlignedDataInterval
• AlignedDataTxEndedMeasurands
• AlignedDataTxEndedInterval
• AlignedDataSendDuringIdle
AlignedDataInterval is the size of the clock-aligned data interval (in seconds). This defines the set of evenly spaced meter
data aggregation intervals per day, starting at 00:00:00 (midnight), at which time the Charging Station should take measurements
and send them to the CSMS in a MeterValuesRequest message. A value of "0" (numeric zero), by convention, is to be interpreted to
mean that no clock-aligned data should be transmitted.
AlignedDataTxEndedInterval is the size of the clock-aligned data interval (in seconds). This defines the set of evenly spaced
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 230/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
meter data aggregation intervals per day, starting at 00:00:00 (midnight) intended to be transmitted in the TransactionEventRequest
(eventType = Ended) message.
For example, a value of 900 (15 minutes) indicates that every day should be broken into 96 15-minute intervals, starting at 0:00 and
then measured every 15 minutes: 0:15, 0:30, 0:45, 1:00, 1:15 etc.
AlignedDataMeasurands is a comma separated list that prescribes the set of measurands to be included in a
MeterValuesRequest PDU, every AlignedDataInterval seconds.
AlignedDataTxEndedMeasurands is a comma separated list that prescribes the set of clock-aligned periodic measurands to be
included in the meterValue elements of TransactionEventRequest (eventType = Ended) PDU for every
AlignedDataTxEndedInterval of the transaction.
AlignedDataSendDuringIdle can be used to only send clock aligned meter values when there are no ongoing transactions.
Clock-aligned meter values for an EVSE that is involved in a transaction MAY be transmitted in
NOTE
TransactionEventRequests with context = Sample.Clock instead of in MeterValuesRequests.
For example: A Charging Station capable of measuring Current.Import on Inlet (all 3 phases) (grid connection) and Outlet (3 phases
per EVSE on both its EVSEs). Current.Import is set in AlignedDataMeasurands. AlignedDataInterval is set to 900
(seconds). Then the Charging Station should send: (every 15 minutes)
• a MeterValuesRequest with: evseId = 0; with 3 SampledValue elements, one per phase with location = Inlet.
• a MeterValuesRequest with: evseId = 1; with 3 SampledValue elements, one per phase with location = Outlet.
• a MeterValuesRequest with: evseId = 2; with 3 SampledValue elements, one per phase with location = Outlet.
When the configuration variable SampledDataRegisterValuesWithoutPhases has the value true, then
NOTE meter values of measurand Energy.Active.Import.Register will only report the total energy over all
phases without reporting the individual phase values.
When enabled the Charging Station shall put the signed meter value in the SignedMeterValue field of the SampledValue.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 231/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
Only clock-aligned register values during and start/stop at end of transction
• SampledDataCtrlr.TxStartedMeasurands and TxUpdatedMeasurands are left empty.
• SampledDataCtrlr.TxEndedMeasurands = "Energy.Active.Import.Register"
• SampledDataCtrlr.TxEndedInterval = 0
• AlignedDataCtrlr.Measurands = "Energy.Active.Import.Register"
• AlignedDataCtrlr.Interval = 300 (every 5 minutes)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 232/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
Failure postcondition:
n/a
MeterValuesRequest(evseId, meterValue)
MeterValuesResponse()
The phase rotation of a Connector relative to the grid connection can be derived by querying the
PhaseRotation Configuration Variables of all components in the chain from grid connection up
to Connector.
The nature of each sampledValue is determined by the optional Measurand, context, location, unit
and phase fields.
The optional SignedMeterValue field can contain digitally signed binary meter value data.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 233/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
J01.FR.04 J01.FR.03 AND The sample SHALL be taken from the main energy
Measurand is energy related. meter.
J01.FR.05 If all captured at the same point in Each MeterValue element SHALL contain a
time. timestamp.
J01.FR.06 If all captured at the same point in Each MeterValue(s) element SHALL contain a set
time. of one or more individual SampledValue elements.
J01.FR.07 The optional measurand field SHALL specify the
type of value being measured/reported.
J01.FR.08 The optional context field SHALL specify the
reason/event triggering the reading.
J01.FR.09 The optional location field SHALL specify where the (e.g. Inlet, Outlet).
measurement is taken.
J01.FR.10 The optional phase field SHALL specify to which
phase or phases of the electric installation the
value applies.
J01.FR.11 The Charging Station SHALL report all phase
number dependent values from the electrical meter
(or grid connection when absent) point of view.
J01.FR.13 When reporting phase rotation of a The Charging Station SHALL report the phase
component rotation relative to the grid connection
J01.FR.14 When AlignedDataCtrlr.Interval > 0 The Charging Station SHALL send a It is possible that certain
AND MeterValuesRequest message to the CSMS for the measurands are not
EVSE for which measurands are sent, measurands in AlignedDataCtrlr.Measurands at available for every
is not involved in a transaction every AlignedDataCtrlr.Interval for all evseIds, location. For example,
locations and phases for which a configured evseId = 0 (grid meter)
measurand is supported. will not have a
"Current.Offered" or
"SoC" measurand.
See also J01.FR.22
J01.FR.15 J01.FR.14 The Charging Station MAY use multiple
MeterValuesRequest messages to send all
AND
measurands.
Amount of measurands is too much
for 1 MeterValuesRequest
J01.FR.17 The timestamp of a MeterValue SHALL apply to all
its SampledValues.
J01.FR.18 When CSMS receives a CSMS SHALL respond with MeterValuesResponse. Failing to respond with
MeterValuesRequest MeterValuesResponse
might cause the
Charging Station to try
the same message
again.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 234/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 235/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
Failure postcondition:
n/a
TransactionEventResponse()
7 Error handling When Offline, the Charging Station MUST queue any transaction-related messages (Meter Values
belonging to a transaction) that it would have sent to the CSMS if the Charging Station had been
online.
8 Remark(s) The phase field is not applicable to all Measurands.
The phase rotation of a Connector relative to the grid connection can be derived by querying the
PhaseRotation Configuration Variables of all components in the chain from grid connection up
to Connector.
The nature of each sampledValue is determined by the optional Measurand, context, location, unit
and phase fields.
The optional SignedMeterValue field can contain digitally signed binary meter value data.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 236/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 237/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 238/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 J. MeterValues
15118
if AC Charging
ChargingStatusReq()
ChargingStatusRes(MeterInfoRecord { MeterId,
[MeterReading], MeterStatus,
SignedMeterReading, timeStamp },ReceiptRequired: True)
MeteringReceiptRes()
OCPP
TransactionEventRequest(eventType = Updated, transactionID,
timestamp, chargingState = Charging, Signed metervalues)
TransactionEventResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 239/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 240/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
1. Introduction
This Functional Block describes all the functionalities that enable the CSO (or a third party) to influence the charging current/power
transferred during a transaction, or set limits to the amount of current/power a Charging Station can draw from the grid.
Smart Charging in general has more than one definition. It can mean that the grid capacity is used in such a manner that
consumers are able to charge their batteries fully at any time, even if large groups of consumers wish to ‘fill up’ simultaneously.
Smart can also mean that energy prices can be taken into consideration when charging. Or again smart can be taken as using a
local supply of sustainable energy from solar panels. And it is even 'smarter' when the Electric Vehicle (EV) driver wishes to be part
of the solution. Within OCPP, Smart Charging means that a CSMS gains the ability to influence the (de-)charging power or current of
a specific EV, or the total allowed energy consumption on an entire Charging Station / a group of Charging Stations. Different
setups can be used. The following four typical kinds of smart charging will be used to illustrate the possible behavior of smart
charging using OCPP:
These types will be explained in Types of Smart Charging. Of course, more complex use cases are possible in which two or more of
the above use cases are combined into one more complex system.
NOTE A mapping of the ISO 15118 and OCPP terminology is provided in ISO 15118 and OCPP terminology mapping
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 241/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
EV2
CSMS
OCPP charging profile Charging Station: CS11
EVSE
2
Central Smart Charging can be done with a Control Pilot signal, albeit with some limitations, because an EV cannot communicate
its charging needs via the Control Pilot signal. In analogy to the Local Smart Charging use case, an EVSE can execute a charging
schedule by the Control Pilot signal.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 242/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
Local group
EV1
Local Controller limits
power usage of total
group to pre-configured Charging Station
maximum capacity. CS01
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 243/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
If a Charging Station is connected both to the outside world as well as to an Energy Management System (EMS), this could result in
a situation where the EMS, for whatever reason, decides that charging is not opportune, despite a charging schedule it might have
received from the CSMS. This means that the Charging Station will not behave as expected by the CSMS. To prevent this, the
Charging Station will have to be able to notify the CSMS that it has received a command from the EMS. An example reason could be
an airconditioning system that is given preference / priority instead of charging an EV by a home user (in this case assuming that
using the airconditioning and EV charging at the same time is not possible). This EMS might be in place to manage the maximum
limit of a connection, but this can also be externally controlled.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 244/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
3. Charging profiles
3.1. Introduction
Influencing the charge power or current is based on sending energy transfer limits at specific points in time to a Charging Station.
Those limits are combined in a ChargingProfile. A ChargingProfile holds the ChargingSchedule which defines a block of charging
Power or Current limits and can contain a start time and duration. These can be applied to Charging Stations as well as to EVSEs of
the Charging Stations. In Example ChargingProfile an example of a ChargingProfile is given to illustrate how these charging profiles
can be used.
A CSMS can send a charging profile to a Charging Station using the message SetChargingProfileRequest, in the following
situations:
• At the start of a transaction to set the charging profile for the transaction
• In a RequestStartTransaction request sent to a Charging Station
• During a transaction to change the active profile for the transaction
• Outside the context of a transaction as a separate message to set a charging profile to a local controller, Charging Station,
or a default charging profile to an EVSE.
ChargingProfile Description
Purpose
ChargingStationMaxProfi In internal load balancing scenarios, the Charging Station has one or more local charging profiles that
le limit the power or current to be shared by all EVSEs of the Charging Station. The CSMS SHALL configure
such a profile with ChargingProfilePurpose set to "ChargingStationMaxProfile".
ChargingStationMaxProfile can only be set at Charging Station evseId 0.
TxProfile A transaction-specific profile with purpose TxProfile overrules the TxDefaultProfile for the duration of
the current transaction only or until the TxProfile expires, whichever occurs earlier.
TxDefaultProfile Default schedules for new transactions that MAY be used to impose charging policies. An example
could be a policy that prevents charging during the day.
ChargingStationExternal When an external system, not the CSMS, sets a charging limit or schedule, the Charging Station uses this
Constraints purpose to report such a limit/schedule.
ChargingProfile Description
Kind
Absolute The charging schedule periods are relative to an absolute point in time defined in the schedule. This
requires that startSchedule is set to a starting point in time. Use this, for example, to define a schedule
that reduces charging between 17:00h and 21:00h, regardless of when charging session was started.
Recurring The charging schedule restarts periodically at the first schedule period. To be most useful, this requires
that startSchedule is set to a starting point in time. Use this in combination with recurrencyKind = Daily,
for example, to define a schedule that reduces charging between 17:00h and 21:00h every day,
regardless of when charging session was started.
Relative Charging schedule periods should start when the EVSE is ready to deliver energy. i.e. when the EV driver
is authorized and the EV is connected. When a ChargingProfile is received for a transaction that is
already charging, then the charging schedule periods should remain relative to the PowerPathClosed
moment.
No value for startSchedule should be supplied.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 245/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
A ChargingProfile holds a ChargingSchedule that defines limits for a certain time interval. Precedence of ChargingSchedules is
determined by the stackLevel of their ChargingProfile. When more than one ChargingProfile with the same chargingProfilePurpose
is valid, then a ChargingSchedule of a ChargingProfile with a higher stack level overrules a ChargingSchedule from a
ChargingProfile with a lower stack level.
To avoid conflicts, it is not allowed to have multiple charging profiles with the same stackLevel and same chargingProfilePurpose to
be valid on the same EVSE at a given time. Note, that a charging profile for EVSE #0 is considered to be active on all EVSEs!
As mentioned before, for each charging profile purpose, at any point in time, the leading charging schedule for that purpose is the
charging schedule that has a schedule period defined for that time and that belongs to a charging profile with the highest stack
level that is valid at that time, as determined by their validFrom and validTo parameters. The Composite Schedule is then calculated
by taking the lowest charging limit (taking the different chargingRateUnits into account) among the leading profiles of the different
purposes for each time interval.
The only exception is when both a TxDefaultProfile and a TxProfile are valid. In that case, the TxProfile will always overrule the
TxDefaultProfile, hence the Composite Schedule will not take the leading profile of purpose TxDefaultProfile into account in this
specific situation. Note that time intervals do not have to be of fixed length, nor do they have to be the same for every
ChargingProfile purpose. This means that a resulting Composite Schedule MAY contain intervals of different lengths.
In case the Charging Station is equipped with more than one EVSE, the limit value of ChargingStationMaxProfile is the limit for all
EVSEs combined.
The two figures below will be used to give an example of combining multiple charging profiles with different stackLevels and
Purposes.
TxDefaultProfile
ChargingStationExternalConstraints
ChargingStationMaxProfile
Suppose that at a certain time interval the valid charging profiles are as in the above figure (situation 1). The composite schedule
for this time interval will then be the lowest of the charging limits given in the ChargingStationMaxProfile with stackLevel 0, the
TxDefaultProfile with stackLevel 2 and the ChargingStationExternalConstraints profile with stackLevel 1.
TxDefaultProfile
TxProfile ChargingStationExternalConstraints
ChargingStationMaxProfile
On the other hand, consider the situation in which for a certain time interval the valid charging profiles are as in the above figure
(situation 2). The composite schedule for this time interval will then be the lowest of the charging limits given in the
ChargingStationMaxProfile with stackLevel 0, the TxProfile with stackLevel 1 and the ChargingStationExternalConstraints profile
with stackLevel 1. Note that in this situation the TxProfile overrules the TxDefaultProfile.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 246/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
The following data structure describes a daily default profile that limits the power to 6 kW between 08:00h and 20:00h and to 11 kW
between 00:00h and 08:00h and between 20:00h and 00:00h.
ChargingProfile
chargingProfileId 100
stackLevel 0
chargingProfilePurpose TxDefaultProfile
chargingProfileKind Recurring
recurrencyKind Daily
chargingSchedule (List of 1 ChargingSchedule elements)
ChargingSchedule
duration 86400 (= 24 hours)
startSchedule 2013-01-01T00:00Z
chargingRateUnit W
chargingSchedulePeriod (List of 3 ChargingSchedulePeriod elements)
ChargingSchedulePeriod
startPeriod 0 (=00:00)
limit 11000
numberPhases 3
ChargingSchedulePeriod
startPeriod 28800 (=08:00)
limit 6000
numberPhases 3
ChargingSchedulePeriod
startPeriod 72000 (=20:00)
limit 11000
numberPhases 3
The amount of phases used during charging is limited by the capabilities of: The Charging Station, EV and
IMPORTANT Cable between CS and EV. If any of these three is not capable of 3 phase charging, the EV will be charged
using the number of phases that is supported by all three.
Switching the number of used phases during a schedule or transaction should be done with care. Some
EVs MAY not support this and changing the amount of phases MAY result in physical damage. With the
IMPORTANT
Configuration Variable: Phases3to1 The Charging Station can tell if it supports switching the amount of
phases during a transaction.
On days on which daylight saving goes into or out of effect, a special profile might be needed (e.g. for relative
TIP
profiles).
If this applies to a large number or charging stations, then it is not practical to delete the charging profile every Sunday and then
add it again on Monday. A possible solution is to add profiles with higher stack level for the exceptions to the base profile. See the
following JSON examples where stack levels #2 and #3 are used to define exceptions for Sunday and Christmas.
(1) TxDefaultProfile, stack #1: time-of-day limitation to 2 kW, recurring every day from 17:00h to 20:00h.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 247/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
"chargingProfile": {
"id": 10, "stackLevel": 1, "chargingProfilePurpose": "TxDefaultProfile",
"chargingProfileKind": "Recurring", "recurrencyKind": "Daily",
"chargingSchedule": [ {
"id": 1, "startSchedule": "2020-01-09T17:00:00", "duration": 1080,
"chargingRateUnit": "W",
"chargingSchedulePeriod": [ { "startPeriod": 0, "limit": 2000 } ]
} ]
}
(2) TxDefaultProfile, stack #2: overruling Sundays to no limit, recurring every week starting 2020-01-05.
"chargingProfile": {
"id": 11, "stackLevel": 2, "chargingProfilePurpose": "TxDefaultProfile",
"chargingProfileKind": "Recurring", "recurrencyKind": "Weekly",
"chargingSchedule": [ {
"id": 1, "startSchedule": "2020-01-05T00:00:00", "duration": 86400,
"chargingRateUnit": "W",
"chargingSchedulePeriod": [ { "startPeriod": 0, "limit": 999999 } ]
} ]
}
(3) TxDefaultProfile, stack #3: overruling Christmas Day 2020 to no limit, fixed date 2020-12-25.
Note, that this profile is only valid in the year 2020.
"chargingProfile": {
"id": 12, "stackLevel": 3, "chargingProfilePurpose": "TxDefaultProfile",
"chargingProfileKind": "Absolute",
"validFrom": "2020-01-01T00:00:00", "validTo": "2021-01-01T00:00:00",
"chargingSchedule": [ {
"id": 1, "startSchedule": "2020-12-25T00:00:00", "duration": 86400,
"chargingRateUnit": "W",
"chargingSchedulePeriod": [ { "startPeriod": 0, "limit": 999999 } ]
} ]
}
Normally, when no limits are desired for charging, one will not define a charging schedule period for those hours
(see stack level #1 for hours outside 17:00h - 20:00h). However, when overruling a charging schedule by one from
NOTE a profile with a higher stack level, it is not possible to define a charging schedule period that has no limit.
Therefore, the charging schedules for stack #2 and #3 in the above example use a (arbitrary) high value of
999999.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 248/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
Within OCPP, multiple mechanism are supported for Smart Charging, i.e. multiple mechanisms are available that can add a limit
when charging an EV:
1. The CSMS can influence charging by sending a SetChargingProfile message to the Charging Station. See K01 -
SetChargingProfile.
2. The EV can influence charging based on the PlugAndCharge functionality: the ISO 15118 enables EV initiated Charging
Limits. See Section 5.3. ISO 15118 based Smart Charging.
3. Some local input, for example a Home Energy Management System (HEMS) or DSO, can influence the charging, for example
via an External Smart Charging Control signal. See K11 - Set / Update External Charging Limit.
4. A Charging Station can limit charging when it is load balancing when more than 1 EV is charging.
The assumption is that all parties that might be involved in setting limits for charging an EV will use one of the above mechanisms
directly or indirectly.
To determine how a Charging Station should respond to simultaneous smart charging signals from multiple actors, the following
rules should be followed:
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 249/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
K01 - SetChargingProfile
Table 159. K01 - Central Smart Charging
No. Type Description
1 Name SetChargingProfile
2 ID K01
Functional block K. Smart Charging
3 Objective(s) To enable the CSMS to influence the charging power or current drawn from a specific EVSE or the
entire Charging Station over a period of time.
4 Description The CSMS sends a SetChargingProfileRequest to the Charging Station to influence the power or
current drawn by EVs. The CSMS calculates a ChargingSchedule to stay within certain limits,
which MAY be imposed by any external system.
Actors Charging Station, CSMS, EV
Scenario description 1. The CSMS sets charging limits by sending SetChargingProfileRequest to the Charging Station.
2. The Charging Station responds with SetChargingProfileResponse.
5 Prerequisite(s) n/a
6 Postcondition(s) Successful postcondition:
The Charging Station Successfully influences the charging power or current of a specific EV,
following the SetChargingProfileRequest sent by the CSMS.
Failure postcondition:
The Charging Station was not able to influence the charging power or current of a specific EV,
following the SetChargingProfileRequest sent by the CSMS.
SetChargingProfileRequest(evseId, chargingProfile)
SetChargingProfileResponse(Accepted)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 250/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 251/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 252/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 253/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 254/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
Failure postcondition:
The Charging Station was not able to influence the charging power or current of a specific EV,
following the SetChargingProfileRequest sent by the CSMS.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 255/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
switch power on
TransactionEventResponse(...)
start charging()
CSMS decides to
change the charging profile.
SetChargingProfileResponse(Accepted)
end charging()
TransactionEventResponse(...)
unplug cable
StatusNotificationRequest(Available)
StatusNotificationResponse()
TransactionEventResponse([IdTokenInfo])
• After authorization the EVSE will set a maximum current to use via the Control Pilot signal. This limit is based on a (default)
charging profile that the EVSE had previously received from the CSMS. The EV starts charging and a
TransactionEventRequest is sent to the CSMS.
• While charging is in progress the EVSE will continuously adapt the maximum current or power according to the charging
profile. Optionally, at any point in time the CSMS may send a new charging profile for the EVSE. The Charging Station will
then also take this new schedule into account when calculating a new composite schedule. This way the CSMS can
influence the charging of an ongoing transaction.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 256/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
It is recommended to omit the duration field of the ChargingSchedule from a TxProfile, so that it
automatically lasts until the end of the transaction. If the TxProfile expires before the transaction
ends, it falls back to the lowest limit of the active TxDefaultProfile and
ChargingStationMaxProfile. If there are no other active profiles, it falls back to the local limit of
the Charging Station.
The scenario description and sequence diagram above are based on the Configuration Variable
for start transaction being configured as follows:
TxStartPoint: Authorized, DataSigned, PowerPathClosed, EnergyTransfer
This use-case is also valid for other configurations, but then the transaction might start/stop at
another moment, which might change the sequence in which message are send. For more details
see the use case: E01 - Start Transaction options.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 257/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 258/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
Failure postcondition:
n/a
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 259/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
switch power on
start charging
TransactionEventRequest(eventType = Updated,
transactionId = AB1234,
chargingState = Charging, ...)
TransactionEventRequest(eventType = Updated,
transactionId = AB1234,
chargingState = Charging, ...)
TransactionEventResponse(...)
TransactionEventResponse(...)
SetChargingProfileResponse(Accepted)
end charging()
switch power off
TransactionEventRequest(eventType = Updated,
transactionId = AB1234,
chargingState = EVConnected, ...)
TransactionEventRequest(eventType = Updated,
transactionId = AB1234,
chargingState = EVConnected, ...)
TransactionEventResponse(...)
TransactionEventResponse(...)
Transaction is stopped
The Local Controller MAY or MAY NOT have any EVSEs of its own.
The limits on Charging Stations in a Local Smart Charging group can either be pre-configured in
the Local Controller in one way or another, or they can be set by the CSMS. The Local Controller
contains the logic to distribute this capacity among the connected EVSEs by adjusting their limits
as needed.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 260/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 261/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
The Charging Station is configured with a fixed limit, e.g. the maximum current of the connection
to the grid.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 262/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 263/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
remote start()
RequestStartTransactionResponse(status = Accepted)
opt
notification
AuthorizeResponse(idTokenInfo)
StatusNotificationRequest(Occupied)
StatusNotificationResponse()
opt
notification
TransactionEventRequest(eventType = Started,
chargingState = Charging, remoteStartId = 123, ...)
TransactionEventResponse(...)
Figure 104. Sequence Diagram: Remote Start Transaction with Charging Profile
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 264/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
K05.FR.04 If a Charging Station The Charging Station SHALL ignore the specified The device model variable
without support for Smart ChargingProfile. SmartChargingCtrlr.Enabled
Charging receives a tells CSMS whether smart
RequestStartTransactionRe charging is supported.
quest with a
ChargingProfile.
K05.FR.05 If a Charging Station with The Charging Station SHALL respond with The device model variable
support for Smart Charging RequestStartTransactionResponse with status = SmartChargingCtrlr.Enabled
receives a Rejected and optionally with reasonCode = tells CSMS whether smart
RequestStartTransactionRe "InvalidProfile" or "InvalidSchedule". charging is supported.
quest with an invalid
ChargingProfile.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 265/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
Failure postcondition:
n/a
SetChargingProfileRequest(TxProfile, evseId)
SetChargingProfileResponse(Accepted)
connection loss
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 266/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
Failure postcondition:
n/a
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 267/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
SetChargingProfileRequest(TxDefaultProfile, evseId)
SetChargingProfileResponse(Accepted)
Time period between start of transaction and setting of charging profile can be minutes, but can also be days.
connection loss
Present IdToken()
opt
notification
alt [LocalAuthorizeOffline=true & (Id in cache or (Id in local list & Valid)) or (OfflineTxForUnknownIdEnabled=true
& Id not Invalid in local list)]
lock connector
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 268/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
The CompositeSchedule is the result of the calculation of all active schedules and possible local
limits present in the Charging Station.
Actors Charging Station, CSMS
Scenario description 1. The CSMS requests the Charging Station to report the Composite Charging Schedule by
sending a GetCompositeScheduleRequest.
2. The Charging Station calculates the schedule.
3. The Charging Station responds with a GetCompositeScheduleResponse with the status and
ChargingSchedule.
5 Prerequisite(s) The Functional Block Smart Charging is installed.
6 Postcondition(s) Successful postcondition:
The CSMS Successfully received the composite schedule from the Charging Station.
Failure postcondition:
The CSMS did not receive the composite schedule from the Charging Station.
GetCompositeScheduleRequest(evseId, duration)
calculate
schedule
GetCompositeScheduleResponse(status, schedule)
The Composite Schedule that will guide the charging level is a combination of the prevailing
Charging Profiles of the different chargingProfilePurposes.
This Composite Schedule is calculated by taking the minimum value for each time interval (see:
Smart Charging signals to a Charging Station from multiple actors). Time intervals do not have to
be of fixed length, nor do they have to be the same for every charging profile purpose. This means
that a resulting Composite Schedule MAY contain intervals of different lengths.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 269/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 270/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
GetChargingProfileResponse(status = Accepted)
ReportChargingProfilesResponse()
Figure 108. Sequence diagram of the use case "Get Charging Profiles"
7 Error Handling When the Charging Station has no charging profiles that match the parameters in the
GetChargingProfilesRequest the Charging Station SHALL respond with: NoProfiles.
8 Remarks The charging profiles report can be split over multiple ReportChargingProfilesRequest messages,
this can be because charging profiles for different charging sources need to be reported, or
because there is just to much data for one message. To indicate that more reports will follow the
flag tbc can be used.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 271/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
Failure postcondition:
The requested charging profiles are not cleared, as no ChargingProfile is found.
ClearChargingProfileResponse(status)
Figure 109. Sequence Diagram of the use case "Clear Charging Profile"
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 272/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 273/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 274/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
loop
opt [during charging process]
I/U value
MeterValuesResponse()
[transaction ongoing]
TransactionEventRequest(eventType = Updated, ...)
TransactionEventResponse(...)
opt
recalculate charging schedule
NotifyChargingLimitResponse()
TransactionEventResponse(...)
Figure 110. Sequence diagram of the use case "Setting / Updating External Charging Limit with Ongoing Transaction"
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 275/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 276/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
NotifyChargingLimitResponse()
Figure 111. Sequence diagram of the use case "Set / Update External Charging Limit Without Ongoing Transaction"
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 277/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
opt
recalculate charging schedule
ClearedChargingLimitRequest(evseId, chargingLimitSource)
ClearedChargingLimitResponse()
TransactionEventResponse(...)
Figure 112. Sequence diagram of the use case "Release / Reset External Charging Limit"
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 278/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
ID Precondition Requirements
K13.FR.03 K13.FR.01 The Charging Station SHALL send a TransactionEventRequest message to
the CSMS with trigger = ChargingRateChanged.
AND
Charging rate changed by more
than: LimitChangeSignificance
Failure postcondition:
The CSMS is not informed about the changed charging limit.
The External Control System is not able to change the charging limit.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 279/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
NotifyChargingLimitsRequest(chargingLimitSource, [chargingLimitGridCritical],...)
NotifyChargingLimitsResponse()
SetChargingProfileResponse(status)
ClearedChargingLimitRequest(chargingLimitSource,...)
ClearedChargingLimitResponse()
ClearChargingProfileResponse(status)
Figure 113. Sequence Diagram: External Charging Limit with Local Controller.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 280/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 281/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
TransactionEventResponse(...)
ChargeParameterDiscoveryReq(EnergyTransferMode, EVChargeParam)
NotifyEVChargingNeedsRequest(evseId, chargingNeeds)
NotifyEVChargingNeedsResponse(Accepted)
ChargeParameterDiscoveryReq(EnergyTransferMode, EVChargeParam)
SetChargingProfileRequest(evseId, chargingProfile)
SetChargingProfileResponse(Accepted)
ChargeParameterDiscoveryRes(Finished, SAScheduleList)
Contactor close
PowerDeliveryRes(OK)
NotifyEVChargingScheduleResponse(Accepted)
TransactionEventRequest(...)
TransactionEventResponse(...)
Figure 114. Sequence Diagram: Charging with load leveling based on High Level Communication
9 Error handling The Charging Station needs to use the information from the SetChargingProfileRequest message
to create the response to the ISO 15118 ChargeParameterDiscoveryReq towards the EV. This
message has a timeout of 60 seconds, which means the SetChargingProfileRequest has to be
sent well within 60 seconds after receiving the NotifyEVChargingNeedsRequest. If the Charging
Station does not receive the SetChargingProfileRequest in time or when the
NotifyEVChargingNeedsResponse has status = Processing, then the Charging Station will return
a schedule in ChargeParameterDiscoverRes that matches the capabilities of the EVSE. When
CSMS sends the SetChargingProfileRequest at a later time, then this will trigger a renegotiation
according to use case K16 - Renegotiation initiated by CSMS.
10 Remark(s) Signed SalesTariffs are currently not supported. If these are needed please use P01 - Data
Transfer to the Charging Station to send these to the Charging Station.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 282/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 283/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 284/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
ChargingStatusRes()
[if DC Charging]
CurrentDemandReq()
CurrentDemandRes()
TransactionEventRequest(eventType = Updated,...)
TransactionEventResponse(...)
SetChargingProfileResponse(Accepted)
ChargingStatusRes(ReNegotiation)
[if DC Charging]
CurrentDemandReq()
CurrentDemandRes(ReNegotiation)
PowerDeliveryReq(ReNegotiate)
ChargeParameterDiscoveryReq(EnergyTransferMode, EVChargeParam)
NotifyEVChargingScheduleResponse(Accepted)
7 Remark(s) Signed SalesTariffs are currently not supported. If these are needed please use P01 - Data
Transfer to the Charging Station to send these to the Charging Station.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 285/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 286/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
ChargingStatusRes()
[if DC Charging]
CurrentDemandReq()
CurrentDemandRes()
TransactionEventRequest(eventType = Updated,...)
TransactionEventResponse(...)
ChargeParameterDiscoveryReq(EnergyTransferMode, EVChargeParam)
NotifyEVChargingNeedsRequest(evseId, chargingNeeds)
NotifyEVChargingNeedsResponse(Accepted)
SetChargingProfileRequest(evseId, chargingProfile)
SetChargingProfileResponse(Accepted)
NotifyEVChargingScheduleResponse(Accepted)
7 Remark(s) Signed SalesTariffs are currently not supported. If these are needed please use P01 - Data
Transfer to the Charging Station to send these to the Charging Station.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 287/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 288/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 K. SmartCharging
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 289/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
L. FirmwareManagement
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 290/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
1. Introduction
This Functional Block describes the functionality that enables a CSO to update the firmware of a Charging Station.
When a Charging Station needs to be updated with new firmware, the CSMS informs the Charging Station of the time at which the
Charging Station can start downloading the new firmware. The Charging Station SHALL notify the CSMS after each step as it
downloads and installs the new firmware.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 291/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 292/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
UpdateFirmwareRequest(requestId = 123)
UpdateFirmwareResponse()
Verify certificate
FirmwareStatusNotificationResponse()
Download firmware
Downloading firmware...
FirmwareStatusNotificationResponse()
Verify signature
FirmwareStatusNotificationResponse()
FirmwareStatusNotificationResponse()
Reboot
Rebooting...
FirmwareStatusNotificationResponse()
Install firmware
Installing...
FirmwareStatusNotificationResponse()
Reboot
Rebooting...
FirmwareStatusNotificationResponse()
opt
Rebooting...
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 293/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
Measures SHOULD be taken to secure the firmware when it is stored on a server or workstation.
The Charging Station has a required Configuration Variable that reports which file transfer
protocols it supports: FileTransferProtocols
The requirements for the Firmware Signing Certificate are described in the: Certificate Properties
section.
The manufacturer SHALL NOT use intermediate certificates for the firmware signing certificate in
the Charging Station.
FTP needs to be able to use Passive FTP, to be able to transverse over as much different
typologies as possible.
Failed to download firmware, waiting for retryInterval to try again Firmware not downloaded
Downloading firmware
Installation failed
InstallRebooting_2
Installation successful
Installation successful
Installed
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 294/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 295/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 296/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 297/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 298/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
UpdateFirmwareRequest()
UpdateFirmwareResponse()
FirmwareStatusNotificationRequest(Status = Downloading)
FirmwareStatusNotificationResponse()
Download firmware
Downloading firmware...
FirmwareStatusNotificationRequest(Status = Downloaded)
FirmwareStatusNotificationResponse()
FirmwareStatusNotificationResponse()
Reboot
Rebooting...
FirmwareStatusNotificationRequest(Status = Installing)
FirmwareStatusNotificationResponse()
Install firmware
Installing...
FirmwareStatusNotificationResponse()
Reboot
Rebooting...
FirmwareStatusNotificationRequest(Installed)
FirmwareStatusNotificationResponse()
opt
Rebooting...
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 299/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
FTP needs to be able to use Passive FTP, to be able to transverse over as much different
typologies as possible.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 300/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 301/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
Failure postcondition:
The Local Controller could not download the firmware file, and has sent the DownloadFailed
status.
The Local Controller could not verify the MD5 checksum, and has sent the InvalidChecksum
status.
The Local Controller could not publish the firmware file, and has sent the PublishFailed status.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 302/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
PublishFirmwareRequest()
PublishFirmwareResponse()
PublishFirmwareStatusNotificationRequest(status = Downloading)
PublishFirmwareStatusNotificationResponse()
Download firmware
Downloading firmware
PublishFirmwareStatusNotificationRequest(status = Downloaded)
PublishFirmwareStatusNotificationResponse()
Verify checksum
PublishFirmwareStatusNotificationRequest(status = ChecksumVerified)
PublishFirmwareStatusNotificationResponse()
FirmwareStatusNotificationResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 303/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
UnpublishFirmwareRequest()
UnpublishFirmwareResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 304/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 L. FirmwareManagement
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 305/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 306/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
1. Introduction
The ISO/IEC JWG 15118 for the Vehicle to Grid Communication Interface (V2G CI) was founded in 2009 with means to the need of
a complementary international standard to IEC 61851-1 [IEC61851-1] providing bi-directional digital communication based on
Internet protocols. The major purpose of 15118 is to establish a more advanced and autonomously working charge control
mechanism between EVs and charging infrastructures. The standard is currently under development and will ultimately provide
means for various authentication schemes (e.g. plug charge vs. external identification means, like RFID cards), automatic handling
of charging services as well as (proprietary) value added services, charge scheduling and advance planning, etc.
The 15118 standard is of interest to the Open Charge Alliance, as it provides the exchange of charging schedules and enables to
control the amount of power that an EV may draw from a Charging Station, in which some form of vehicle to grid communication is
necessary. Especially the second part, which specifies the messages to be exchanged between the communication partners
(Application Layer), the associated data and data types (Presentation Layer) via TCP/IP based Transport and Network Layer, is
important to acknowledge in this specification. The authorization for charging is provided either by External Identification Means
(EIM), such as an RFID card, or by the Plug and Charge (PnC) mechanism using a contract certificate stored in the EV, handled by
the certificate handling process in use case elements "C", eliminating the need of other authorization means.
This 15118 OCPP Functional Block has been designed to meet a number of alignment objectives:
• To allow the support of certificate-based authentication and authorization at the Charging Station, i.e. plug and charge.
For illustration purposes: the figure below shows a complete sequence with authorization and scheduling.
To the below figure: this sequence only applies for AC charging, although the certificate handling (which is the
NOTE
focus in this section) does not differ in AC or DC.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 307/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
ServiceDiscoveryRes()
PaymentServiceSelectionReq()
PaymentServiceSelectionRes()
Get15118EVCertificateRequest(15118SchemaVersion, install/update,
exiRequest)
Get15118EVCertificateResponse(status, exiResponse)
CertificateUpdateRes()
PaymentDetailsReq()
AuthorizeRequest(idToken, iso15118CertificateHashData)
AuthorizeResponse(idTokenInfo, certificateStatus)
PaymentDetailsRes()
AuthorizationReq()
AuthorizationRes(EVSEProcessing, ResponseCode)
TransactionEventRequest(eventType = Started,
triggerReason = Authorized, chargingState = EVConnected, ...)
TransactionEventResponse(...)
NotifyEVChargingNeedsResponse(Accepted)
SetChargingProfileRequest(evseId, chargingProfile)
SetChargingProfileResponse(Accepted)
ChargeParameterDiscoveryRes(SAScheduleList)
PowerDeliveryReq(ChargeProcess=Start)
Contactor Close
PowerDeliveryRes()
TransactionEventRequest(eventType = Updated,
triggerReason = ChargingStateChanged, chargingState = Charging, ...)
TransactionEventResponse(...)
NotifyEVChargingScheduleRequest(timeBase, evseId,
chargingSchedule)
NotifyEVChargingScheduleResponse(status)
EV is charging...
Stopping Transaction
PowerDeliveryReq(ChargeProcess=Stop)
Contactor Open
PowerDeliveryRes()
SessionStopReq()
SessionStopRes()
TransactionEventRequest(eventType = Updated,
triggerReason = ChargingStateChanged, chargingState = EVConnected, ...)
TransactionEventResponse(...)
TransactionEventRequest(eventType = Ended,
triggerReason = EVCommunicationLost, chargingState = Idle, ...)
TransactionEventResponse(...)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 308/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
The time-out on the ChargeParameterDiscoveryReq is 2 seconds, but this can be prolonged up to 60 seconds to
NOTE
wait for charging profile to be provided by the CSMS. See ISO 15118-2 [ISO15118-2].
Please note that it is highly RECOMMENDED to use one of the TLS based security profiles from functional block
NOTE
A, not doing this might "break" the ISO 15118 security.
In order to control the amount of power that an EV may draw from a Charging Station, some form of vehicle to grid communication
is necessary. OCPP has been designed to support the ISO 15118 standard for communication between the EV and Charging Station
(EVSE). However, it is anticipated that for the coming years, the majority of EVs will only support the control pilot PWM signal
IEC61851, so care has been taken to support smart charging with this as well.
A mapping of the ISO 15118 and OCPP terminology is provided in ISO 15118 and OCPP terminology mapping and
NOTE
abbreviations used in ISO 15118 are listed in ISO 15118 Abbreviations.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 309/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
The PKI structure defined by ISO 15118 is shown in the figure below. In general, four PKIs need to be in place.
The trust anchor (root CA) for the CSO and CPS is the so-called V2G Root CA. On the other hand, it is up to the respective OEM and
MO to operate a Root CA of their own or derive their certificates from a V2G Root CA (indicated by the dotted lines between V2G
Root and MO Sub-CA 1 and OEM Sub-CA 1, respectively).
Signs
OCSP
OCSP Signer Response
Prov Sub-CA 1 CSO Sub-CA 1 OEM Sub-CA 1 MO Sub-CA 1
Certificate
Signs
OCSP
OCSP Signer Response
Prov Sub-CA 2 CSO Sub-CA 2 OEM Sub-CA 2 MO Sub-CA 2
Certificate
Provisioning
Service EVSE Vehicle
SalesTariff
Figure 123. PKIs applied for Plug & Charge identification mode
If only one Sub-CA layer is used, i.e. a Sub-CA signed by a Root CA directly signs leaf certificates, the profile of Sub-CA 2 shall apply
for that Sub-CA (Source: ISO15118-2)
OCPP needs to make sure that the necessary information can be exchanged between the EV, the Charging Station and a backend IT
infrastructure to facilitate the contract provisioning. Contract provisioning is a process defined within ISO 15118 that describes
how an EV can retrieve a valid contract certificate during a communication session in order to authenticate and authorize itself for
the charging process.
Given the PKI structure in the figure above, OCPP must provide messages which are able to transmit the following certificates:
Furthermore, some ISO 15118 messages require digital XML-based signatures. Those signatures need to be validated by the
receiving party by using the corresponding certificate chain and verifying the chain of signatures all the way up to the respective
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 310/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
trust anchor (V2G root, MO root or OEM root). Table 13 on page 45 of ISO15118-2 provides an overview of applied XML-based
signatures in ISO 15118. As you can see in there, the Charging Station (EVSE is part of a Charging Station) needs to verify the
signature of the following messages.
• AuthorizationReq
Certificate chain needed to verify signature is provided with PaymentDetailsReq.
• MeteringReceiptReq
Certificate chain needed to verify signature is provided with PaymentDetailsReq.
• CertificateUpdateReq
Certificate chain needed to verify signature is provided with this message.
The signature verification as well as the check of the validity of each certificate provided by the EV can be done offline. These three
messages are signed with the private key belonging to the public key of the contract certificate that is installed in the EV. The CSO
needs to make sure that the corresponding MO root CA certificate (MO trust anchor) is installed on the Charging Station to enable
signature verification offline (the chain of contract certificates and sub-CA certificates is already fulfilled by the EV in the
PaymentDetailsReq message so only the MO root CA is required).
The PaymentDetailsReq message is sent before the AuthorizationReq and MeteringReceiptReq message. Therefore, the Charging
Station must temporarily save the certificate chain provided with the PaymentDetailsReq message as long as the current
transaction is active in order to be able to verify the signature created by the EV. After the transaction has been terminated, the
temporarily saved certificate chain must be deleted on the Charging Station side.
Please note that the Charging Station only needs to check the contract certificate upon the receipt of the PaymentDetailsReq
message from the EV which delivers the ContractSignatureCertChain, containing the contract certificate and possible sub-CA
certificates, excluding the root CA certificate. However, it does not need to check the contract certificate upon installation or update
of the contract certificate, upon delivery to the EV.
On the contrary, the signature provided with the CertificateInstallationReq needs to be verified by a so-called secondary actor, a
market stakeholder communicating with the CSO backend. This means that OCPP needs to provide means for transmitting the
complete CertificateInstallationReq message.
The CertificateUpdateRes and CertificateInstallationRes need to be sent from the CSO backend to the charging station as Base64
encoded binary data. The Charging Station removes the Base64 encoding and sends it to the EV as a binary EXI message.
Finally, the Charging Station certificate (labelled as EVSE Leaf Certificate in figure 1) together with its private key is used to
establish a secure connection between EV and EVSE via TLS. According to ISO 15118, this certificate should be valid for only 2 to 3
months. To install or update the Charging Station certificate, please refer to Certificate installation Charging Station.
While the Charging Station can verify the signature and validity period of each certificate in the MO contract certificate chain offline,
there are two things which the Charging Station cannot verify offline:
1. The authorization status of the EMAID
The EMAID is a unique identifier issued by the MO together with the contract certificate. Therefore, only the MO can provide
information on whether the user is authorized for charging based on this EMAID or not. The Charging Station needs to forward the
EMAID to the CSO after having checked that the signature of each certificate in the contract certificate chain is valid. This order of
steps is necessary because the contract certificate protects the EMAID against manipulation by means of the digital signature of
its issuer. The Charging Station could also work with a white list of EMAIDs cached locally. However, white lists need to be
frequently updated to ensure that the authorization information used is not outdated.
2. The revocation status of each certificate
Reasons for revoking a certificate are e.g. that the private key belonging to the public key of a certificate has been corrupted or that
the algorithm used to create a signature is not considered to be secure anymore. Revocation status is checked using an OCSP
responder whose address is given as an attribute value of an X.509 certificate.
Type Description
V2GChargingStation Certificate of the Charging Station. In 15118 this is called the SECC Certificate (or EVSE Leaf Certificate). This
Certificate certificate is used during the set-up of the TLS connection between the Charging Station and the EV.
V2GRootCertificate Certificate of the ISO15118 V2G Root. The V2G Charging Station Certificate MUST BE derived from this root.
MORootCertificate Certificate from an eMobility Service provider. To support PnC charging with contracts from service
providers that not derived their certificates from the V2G root.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 311/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
The V2G Charging Station Certificate might be the same as the certificate used for securing the connection
NOTE between the Charging Station and the CSMS. For this to work, this certificate MUST BE to be derived from a V2G
Root.
A Contract Certificate can be derived from a V2G root, or an eMobility root. This means the Charging Station needs to be in
possession of the corresponding root certificate to be able to authenticate the driver by means of the Contract Certificate and the
associated certificate chain.
When a Charging Station is online this does not have to be the case, because it can send an AuthorizeRequest
NOTE
message with the Contract Certificate to be validated by the CSMS.
The V2G Charging Station Certificate needs to be derived from a V2G root. If this root is not known by the EV, no connection via
15118 is possible, so charging controlled by 15118 is NOT possible. In the event a Charging Station needs to support more than
one V2G root, multiple V2G Charging Station Certificates are needed.
During the TLS handshake, the EVCC can request the OCSP status of the Charging Station and intermediate certificates using OCSP
stapling as defined in IETF RFC 6961. The Charging Station can retrieve this information by sending a GetCertificateStatusRequest
to the CSMS, see use case M06 - Get Charging Station Certificate status.
GetCertificateStatusResponse(status, ocspResult)
startTLS(ListOfRootCertificates)
The TLS response will include OCSP revocation status information on the CSO Sub-CA certificates.
StartTLSresponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 312/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 313/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
Table 201. 15118 use cases relevant for OCPP (Source original table: ISO15118-1)
No. Use case element name / grouping
A1 Begin of charging process with forced High Level Communication
A2 Begin of charging process with concurrent IEC61851-1 and High Level Communication
B1 EV/Charging Station communication setup
C1 Certificate update
C2 Certificate installation
D1 Authorization using Contract Certificates performed at the EVSE
D2 Authorization using Contract Certificates performed with help of SA
D3 Authorization at EVSE using external credentials performed at the EVSE
D4 Authorization at EVSE using external credentials performed with help of SA
E1 AC charging with load leveling based on High Level Communication
E2 Optimized charging with scheduling to Secondary Actor
E3 Optimized charging with scheduling at EV
E4 DC charging with load leveling based on High Level Communication
E5 Resume to Authorized Charge Schedule
F0 Charging loop
F1 Charging loop with metering information exchange
F2 Charging loop with interrupt from the Charging Station
F3 Charging loop with interrupt from the EV or user
F4 Reactive power compensation
F5 Vehicle to grid support
G1 Value added services
G2 Charging details
H1 End of charging process
Not all 15118 related OCPP use cases are described in this functional block. This functional block describes
installing and updating certificates in the EV and CA certificate handling (also for non 15118 related purposes).
NOTE
Please refer to ISO 15118 Authorization for the authorization related use cases. The Smart Charging related use
cases are described in the chapter Smart Charging.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 314/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
CertificateInstallationReq()
Get15118EVCertificateResponse(status, exiResponse)
CertificateInstallationRes()
7 Error handling In case the CSMS is not able to respond within the specified time, the Charging Station SHALL
indicate failure to the EV.
8 Remark(s) The message timeout in ISO15118-2 for CertificateInstallationReq is 5 seconds.
There may be alternative communication paths for doing a certificate installation. However, these
are outside the scope of this standard.
Source: ISO15118-1
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 315/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
OCPP:
- The Charging Station sends a Get15118EVCertificateRequest message with action = Update to
the CSMS.
- The CSMS responds with Get15118EVCertificateResponse to the Charging Station.
15118:
See ISO15118-1, use case Description C1, Scenario Description, last 2 bullets, page 21.
CertificateUpdateReq()
Get15118EVCertificateResponse(status, exiResponse)
CertificateUpdateRes()
7 Error handling In case the CSMS is not able to respond within the specified time, the Charging Station SHALL
indicate failure to the EV.
8 Remark(s) See ISO15118-1, use case Requirements C1, trigger , page 21.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 316/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
Source: ISO15118-1
GetInstalledCertificateIdsRequest(certificateType)
GetInstalledCertificateIdsResponse(status, certificateHashData)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 317/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
DeleteCertificateRequest(certificateHashData)
DeleteCertificateResponse(status)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 318/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
M04.FR.06 M04.FR.01 AND Charging Station SHALL respond with Deletion of the Charging Station
When certificateHashData refers to DeleteCertificateReponse with status = Certificate is not allowed via
the Charging Station Certificate Failed. DeleteCertificateRequest.
(see use case A)
M04.FR.07 When deleting a certificate The CSMS SHALL use the same hashAlgorithm This ensures CSMS uses a
as the Charging Station uses to report the hashAlgorithm that is supported by
certificateHashData for the certificate in the the Charging Station.
GetInstalledCertificateIdsResponse.
M04.FR.08 M04.FR.02 AND Charging Station MAY also delete all child Else these child certificates remain
Certificate to delete is a sub-CA or certificates. as unusable orhan certificates that
root certificate can no longer be deleted.
InstallCertificateRequest(certificateType, certificate)
InstallCertificateResponse(installCertificateStatus)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 319/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
8 Remark(s) Even though the messages CertificateSignedRequest (see use cases A02 - Update Charging
Station Certificate by request of CSMS and A03 - Update Charging Station Certificate initiated by
the Charging Station) and InstallCertificateRequest (use case M05) are both used to send
certificates, their purposes are different. CertificateSignedRequest is used to return the the
Charging Stations own public certificate and V2G certificate(s) signed by a Certificate Authority.
InstallCertificateRequest is used to install Root certificates.
For installing the (V2G) Charging Station Certificate, see use cases A02 - Update Charging Station
Certificate by request of CSMS and A03 - Update Charging Station Certificate initiated by the
Charging Station. The V2G certificate chain SHOULD not include the V2GRootCertificate. This
SHOULD be installed using this use case.
M05.FR.03 M05.FR.01 AND The Charging Station SHALL indicate failure by by setting 'status'
The installation failed to 'Failed' in the InstallCertificateResponse.
M05.FR.06 When a new certificate gets installed AND The Charging Station SHALL respond with status Rejected.
the CertificateEntries.maxLimit is going to be
exceeded
M05.FR.07 M05.FR.01 AND The Charging Station SHALL indicate rejection by setting 'status'
The certificate is invalid. to 'Rejected' in the InstallCertificateResponse.
M05.FR.09 When AdditionalRootCertificateCheck Only one certificate (plus a temporarily fallback certificate) of
is true certificateType CSMSRootCertificate is allowed to be installed at
a time.
M05.FR.10 When AdditionalRootCertificateCheck The new CSMS Root certificate SHALL replace the old CSMS
is true AND Root certificate AND the new Root Certificate MUST be signed
installing a new certificate of certificateType by the old Root Certificate it is replacing
CSMSRootCertificate
M05.FR.11 M05.FR.10 AND The Charging Station SHALL NOT install the new CSMS Root
the new CSMS Root certificate is NOT signed by Certificate and respond with status Rejected.
the old CSMS Root certificate
M05.FR.12 M05.FR.10 AND The Charging Station SHALL install the new CSMS Root
the new CSMS Root certificate is signed by the Certificate AND temporarily keep the old CSMS Root certificate
old CSMS Root certificate as a fallback certificate AND respond with status Accepted
M05.FR.13 M05.FR.12 AND The Charging Station SHALL remove the old CSMS Root
the Charging Station successfully connected to (fallback) certificate.
the CSMS using the new CSMS Root certificate
M05.FR.14 M05.FR.12 AND The Charging Station SHALL try to use the old CSMS Root
The Charging Station is attempting to reconnect (fallback) certificate to verify the server certificate.
to the CSMS (NOT migrating to another CSMS
with Use Case B10 - Migrate to new CSMS), but
determines that the server certificate provided
by the CSMS is invalid when using the new
CSMS Root certificate to verify it
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 320/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
GetCertificateStatusRequest(ocpsRequestData)
GetCertificateStatusResponse(status, ocspResult)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 321/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 M. ISO 15118 CertificateManagement
For installing the (V2G) Charging Station Certificate, see use cases A02 - Update Charging Station
Certificate by request of CSMS and A03 - Update Charging Station Certificate initiated by the
Charging Station. The V2G certificate chain SHOULD not include the V2GRootCertificate. This
SHOULD be installed using Use case M05 - Install CA certificate in a Charging Station.
OCPP allows for only one certificate per GetCertificateStatusRequest. Because when multiple
answers on a GetCertificateStatusRequest are to be expected, it makes handling the request and
status more complex. So a GetCertificateStatusRequest needs to be sent per SubCA.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 322/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
N. Diagnostics
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 323/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
1. Introduction
This Functional Block describes the diagnostics functionality of OCPP. This functionality enables remote diagnostics of problems
with a Charging Station. A Charging Station can be requested to upload a file with diagnostics information (optionally limited to a
specified interval).
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 324/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
Failure postcondition:
Log file not successfully uploaded and failed.
GetLogRequest(logType)
GetLogResponse(fileName)
LogStatusNotificationResponse()
LogStatusNotificationResponse()
7 Error handling When the upload fails and the transfer protocol supports "resume" the Charging Station is
RECOMMENDED to try to resume before aborting the upload.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 325/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
8 Remark(s) As an example in this use case the requestId = 123, but this could be any value.
When a Charging Station is requested to upload a log file, the CSMS supplies in the request an
URL where the Charging Station SHALL upload the file. The URL also contains the protocol which
must be used to upload the file.
It is recommended that the log file is uploaded via FTP or FTPS. FTP(S) is better optimized for
large binary data than HTTP. Also FTP(S) has the ability to resume uploads. In case an upload is
interrupted, the Charging Station can resume uploading after the part it already has uploaded. The
FTP URL is of format: ftp://User:password@host:port/path in which the parts User:password@,
:password or :port may be excluded.
The Charging Station has a required Configuration Variable that reports which file transfer
protocols it supports: FileTransferProtocols
FTP needs to be able to use Passive FTP, to be able to transverse over as much different
typologies as possible.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 326/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 327/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
GetMonitoringReportResponse(status)
NotifyMonitoringReportResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 328/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 329/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
SetMonitoringBaseRequest(monitoringBase)
SetMonitoringBaseResponse(status)
For a MonitoringBase = All the Charging Station will activate all pre-configured monitors and
leave previously configured custom monitors intact. This includes the custom monitors that were
created when changing an existing pre-configured monitor.
When the set of pre-configured monitors for All and FactoryDefault is the same, then the
difference between the two is, that with FactoryDefault all custom monitors are deleted
before the factory default pre-configured monitors are restored.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 330/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
N03.FR.05 N03.FR.01 AND Then the Charging Station SHALL clear all custom and disable all
When the Charging Station received a pre-configured monitors. Only hard-wired monitors remain
setMonitoringBaseRequest with monitoringBase active.
HardWiredOnly
SetVariableMonitoringRequest(MonitoringData)
SetVariableMonitoringResponse(setMonitoringResult)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 331/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 332/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 333/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
SetMonitoringLevelRequest(severity)
SetMonitoringLevelResponse(status)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 334/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
ClearVariableMonitoringRequest(id)
ClearVariableMonitoringResponse(status)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 335/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
alt [If a threshold or a delta value of a monitoring setting has been reached]
NotifyEventResponse()
For example, a monitoring event for a variable exceeding a threshold occurred while offline and
was not sent. Once back online, at some point in time the monitoring event is reported with the
variable cleared set to true, but CSMS did not even know that the threshold had been exceeded.
CSMS will have to be able to deal with that.
This problem can be prevented, while still adhering to the specification, by not simply discarding
these monitoring events, but by delaying the evaluation of those monitors that exceed
OfflineMonitoringEventQueuingSeverity, until the charging station comes back online. The result
is, that when the charging station is back online, CSMS will get the monitoring events that apply to
the current situation, and it is fully up-to-date regarding the monitors. Only those monitoring
events that were triggered & cleared during the offline period will remain invisible to CSMS.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 336/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 337/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
loop [Each time the periodic value of a monitoring setting has been reached]
NotifyEventResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 338/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
8 Remark(s) n/a
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 339/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
CustomerInformationResponse()
NotifyCustomerInformationResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 340/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 341/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
CustomerInformationResponse()
NotifyCustomerInformationResponse()
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 342/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 N. Diagnostics
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 343/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
O. DisplayMessage
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 344/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
1. Introduction
With the DisplayMessage feature, OCPP enables a CSO to display a message or a cycle of messages on a Charging Station, that is
not part of the firmware of the Charging Station. The CSO gets control over these messages: the CSO can set, retrieve (get), replace
and clear messages.
Every message can be configured in different languages and different message formats. See DisplayMessageSupportedFormats.
So the Charging Station can select the correct format/language when it needs to display a message to a user. Every message the
CSO sends to the Charging Station has some parameters to control when and how a message is shown: priority, state, start/end
time etc. See DisplayMessageSupportedPriorities.
It is not possible to retrieve/modify messages not configured via SetDisplayMessageRequest. (In other words:
NOTE
Message coded in the firmware of a Charging Station cannot be modified.)
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 345/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
SetDisplayMessagesRequest(...)
SetDisplayMessagesResponse(Accepted)
opt
notification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 346/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 347/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
A transaction with
id=123 is ongoing
SetDisplayMessagesRequest(transactionId=123,...)
SetDisplayMessagesResponse(Accepted)
opt
notification
At configured moment
Display Message
Transaction with
id=123 ends
Remove Message
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 348/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
8 Remarks The maximum number of messages that can be stored in a Charging Station can be read by the
CSMS in the Configuration Variable:NumberOfDisplayMessages.maxLimit.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 349/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
GetDisplayMessagesRequest(requestId)
GetDisplayMessagesResponse(Accepted)
NotifyDisplayMessagesResponse()
opt
notification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 350/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 351/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
Query Messages()
GetDisplayMessagesResponse(Accepted)
NotifyDisplayMessagesResponse()
opt
notification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 352/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 353/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
Clear Message(id=12)
ClearDisplayMessageRequest(id=12)
Remove
Message(id=12)
ClearDisplayMessageResponse(Accepted)
opt
notification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 354/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 O. DisplayMessage
A message with
id=15 is configured
SetDisplayMessagesRequest(id = 15,...)
SetDisplayMessagesResponse(Accepted)
opt
notification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 355/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 P. DataTransfer
P. DataTransfer
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 356/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 P. DataTransfer
1. Introduction
This Functional Block describes the functionality that enables parties to extend existing commands with custom attributes or add
new custom commands to OCPP
1. The DataTransferRequest message allows for the exchange of data or messages not standardized in OCPP. As such, it
offers a framework within OCPP for experimental functionality that may find its way into future OCPP versions.
Experimenting can be done without creating new (possibly incompatible) OCPP dialects. Secondly, it offers a possibility to
implement additional functionality agreed upon between specific CSMS and Charging Station vendors.
2. A CustomData element exists as an optional element in the JSON schemas of all types. CustomData is the only class in the
JSON schema files that allows additional properties. It can thus be used to add additional custom attributes to any type.
The CustomData has been deliberately left out of the specification document, because it would introduce a lot of clutter and
it is not meant to be used in standard implementations. See also [OCPP2.0-PART4].
The DataTransferRequest/Response contains a field without a length or type specification. It can be convenient to use this field as
structured JSON content.
[2,
"<unique msg id>",
"DataTransfer",
{
"vendorId": "com.mycompany.ice",
"messageId": "iceParkedAtCs"
"data": { "start_time": "2020-04-01T11:01:02" }
}
]
Please use with extreme caution and only for optional functionality, since it will impact your compatibility
with other systems that do not make use of this option. We recommend mentioning the usage explicitly in
IMPORTANT
your documentation and/or communication. Please consider consulting the Open Charge Alliance before
turning to this option to add functionality.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 357/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 P. DataTransfer
Failure postcondition:
Message has been Accepted but the contained request is Rejected.
In all other cases the usage of status Accepted or Rejected and the data element is part of the
vendor-specific agreement between the parties involved.
DataTransferResponse(status, [data])
The length of data in both the request and response message is undefined and it is
RECOMMENDED that this is agreed upon by all parties involved.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 358/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 P. DataTransfer
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 359/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 P. DataTransfer
Failure postcondition:
Message has been accepted but the contained request is Rejected.
In all other cases the usage of status Accepted or Rejected and the data element is part of the
vendor-specific agreement between the parties involved.
DataTransferResponse(status, [data])
The length of data in both the request and response message is undefined and should be agreed
upon by all parties involved.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 360/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 P. DataTransfer
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 361/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 362/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1. Messages
1.1. Authorize
1.1.1. AuthorizeRequest
This contains the field definition of the AuthorizeRequest PDU sent by the Charging Station to the CSMS.
Class
1.1.2. AuthorizeResponse
This contains the field definition of the AuthorizeResponse PDU sent by the CSMS to the Charging Station in response to an
AuthorizeRequest.
Class
1.2. BootNotification
1.2.1. BootNotificationRequest
This contains the field definition of the BootNotificationRequest PDU sent by the Charging Station to the CSMS.
Class
1.2.2. BootNotificationResponse
This contains the field definition of the BootNotificationResponse PDU sent by the CSMS to the Charging Station in response to a
BootNotificationRequest.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 363/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.3. CancelReservation
1.3.1. CancelReservationRequest
This contains the field definition of the CancelReservationRequest PDU sent by the CSMS to the Charging Station.
Class
1.3.2. CancelReservationResponse
This contains the field definition of the CancelReservationResponse PDU sent by the Charging Station to the CSMS in response to a
CancelReservationRequest.
Class
1.4. CertificateSigned
1.4.1. CertificateSignedRequest
This contains the field definition of the CertificateSignedRequest PDU sent by the CSMS to the Charging Station.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 364/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.4.2. CertificateSignedResponse
This contains the field definition of the CertificateSignedResponse PDU sent by the Charging Station to the CSMS in response to a
CertificateSignedRequest.
Class
1.5. ChangeAvailability
1.5.1. ChangeAvailabilityRequest
This contains the field definition of the ChangeAvailabilityRequest PDU sent by the CSMS to the Charging Station.
Class
1.5.2. ChangeAvailabilityResponse
This contains the field definition of the ChangeAvailabilityResponse PDU sent by the Charging Station to the CSMS.
Class
1.6. ClearCache
1.6.1. ClearCacheRequest
This contains the field definition of the ClearCacheRequest PDU sent by the CSMS to the Charging Station. No fields are defined.
1.6.2. ClearCacheResponse
This contains the field definition of the ClearCacheResponse PDU sent by the Charging Station to the CSMS in response to a
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 365/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
ClearCacheRequest.
Class
1.7. ClearChargingProfile
1.7.1. ClearChargingProfileRequest
This contains the field definition of the ClearChargingProfileRequest PDU sent by the CSMS to the Charging Station. The CSMS can
use this message to clear (remove) either a specific charging profile (denoted by id) or a selection of charging profiles that match
with the values of the optional evse, stackLevel and ChargingProfilePurpose fields.
Class
1.7.2. ClearChargingProfileResponse
This contains the field definition of the ClearChargingProfileResponse PDU sent by the Charging Station to the CSMS in response to
a ClearChargingProfileRequest.
Class
1.8. ClearDisplayMessage
1.8.1. ClearDisplayMessageRequest
This contains the field definition of the ClearDisplayMessageRequest PDU sent by the CSMS to the Charging Station. The CSMS
asks the Charging Station to clear a display message that has been configured in the Charging Station to be cleared/removed. See
also O05 - Clear a Display Message.
Class
1.8.2. ClearDisplayMessageResponse
This contains the field definition of the ClearDisplayMessageResponse PDU sent by the Charging Station to the CSMS in a response
to a ClearDisplayMessageRequest. See also O05 - Clear a Display Message.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 366/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.9. ClearedChargingLimit
1.9.1. ClearedChargingLimitRequest
This contains the field definition of the ClearedChargingLimitRequest PDU sent by the Charging Station to the CSMS.
Class
1.9.2. ClearedChargingLimitResponse
This contains the field definition of the ClearedChargingLimitResponse PDU sent by the CSMS to the Charging Station. No fields are
defined.
1.10. ClearVariableMonitoring
1.10.1. ClearVariableMonitoringRequest
This contains the field definition of the ClearVariableMonitoringRequest PDU sent by the CSMS to the Charging Station.
Class
1.10.2. ClearVariableMonitoringResponse
This contains the field definition of the ClearVariableMonitoringResponse PDU sent by the Charging Station to the CSMS.
Class
1.11. CostUpdated
1.11.1. CostUpdatedRequest
This contains the field definition of the CostUpdatedRequest PDU sent by the CSMS to the Charging Station. With this request the
CSMS can send the current cost of a transaction to a Charging Station.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 367/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.11.2. CostUpdatedResponse
This contains the field definition of the CostUpdatedResponse PDU sent by the Charging Station to the CSMS in response to
CostUpdatedRequest. No fields are defined.
1.12. CustomerInformation
This contains the field definition of the CustomerInformationRequest PDU sent by the CSMS to the Charging Station.
1.12.1. CustomerInformationRequest
Class
1.12.2. CustomerInformationResponse
Class
1.13. DataTransfer
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 368/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.13.1. DataTransferRequest
This contains the field definition of the DataTransferRequest PDU sent either by the CSMS to the Charging Station or vice versa.
Class
1.13.2. DataTransferResponse
This contains the field definition of the DataTransferResponse PDU sent by the Charging Station to the CSMS or vice versa in
response to a DataTransferRequest.
Class
1.14. DeleteCertificate
1.14.1. DeleteCertificateRequest
Used by the CSMS to request deletion of an installed certificate on a Charging Station.
Class
1.14.2. DeleteCertificateResponse
Response to a DeleteCertificateRequest.
Class
1.15. FirmwareStatusNotification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 369/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.15.1. FirmwareStatusNotificationRequest
This contains the field definition of the FirmwareStatusNotificationRequest PDU sent by the Charging Station to the CSMS.
Class
1.15.2. FirmwareStatusNotificationResponse
This contains the field definition of the FirmwareStatusNotificationResponse PDU sent by the CSMS to the Charging Station in
response to a FirmwareStatusNotificationRequest. No fields are defined.
1.16. Get15118EVCertificate
1.16.1. Get15118EVCertificateRequest
This message is sent by the Charging Station to the CSMS if an ISO 15118 vehicle selects the service Certificate installation. NOTE:
This message is based on CertificateInstallationReq Res from ISO 15118 2.
Class
1.16.2. Get15118EVCertificateResponse
Response message from CSMS to Charging Station containing the status and optionally new certificate. NOTE: This message is
based on CertificateInstallationReq Res from ISO 15118-2.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 370/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.17. GetBaseReport
1.17.1. GetBaseReportRequest
This contains the field definition of the GetBaseReportRequest PDU sent by the CSMS to the Charging Station.
Class
1.17.2. GetBaseReportResponse
This contains the field definition of the GetBaseReportResponse PDU sent by the Charging Station to the CSMS.
Class
1.18. GetCertificateStatus
1.18.1. GetCertificateStatusRequest
This contains the field definition of the GetCertificateStatusRequest PDU sent by the Charging Station to the CSMS.
Class
1.18.2. GetCertificateStatusResponse
This contains the field definition of the GetCertificateStatusResponse PDU sent by the CSMS to the Charging Station.
Class
1.19. GetChargingProfiles
1.19.1. GetChargingProfilesRequest
The message GetChargingProfilesRequest can be used by the CSMS to request installed charging profiles from the Charging
Station. The charging profiles will then be reported by the Charging Station via ReportChargingProfilesRequest messages.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 371/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Class
1.19.2. GetChargingProfilesResponse
This contains the field definition of the GetChargingProfilesResponse PDU sent by the Charging Station to the CSMS in response to
a GetChargingProfilesRequest.
Class
1.20. GetCompositeSchedule
1.20.1. GetCompositeScheduleRequest
This contains the field definition of the GetCompositeScheduleRequest PDU sent by the CSMS to the Charging Station.
Class
1.20.2. GetCompositeScheduleResponse
This contains the field definition of the GetCompositeScheduleResponse PDU sent by the Charging Station to the CSMS in
response to a GetCompositeScheduleRequest .
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 372/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.21. GetDisplayMessages
1.21.1. GetDisplayMessagesRequest
Class
1.21.2. GetDisplayMessagesResponse
Class
1.22. GetInstalledCertificateIds
1.22.1. GetInstalledCertificateIdsRequest
Used by the CSMS to request an overview of the installed certificates on a Charging Station.
Class
1.22.2. GetInstalledCertificateIdsResponse
Response to a GetInstalledCertificateIDsRequest.
Class
1.23. GetLocalListVersion
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 373/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.23.1. GetLocalListVersionRequest
This contains the field definition of the GetLocalListVersionRequest PDU sent by the CSMS to the Charging Station. No fields are
defined.
1.23.2. GetLocalListVersionResponse
This contains the field definition of the GetLocalListVersionResponse PDU sent by the Charging Station to CSMS in response to a
GetLocalListVersionRequest.
Class
1.24. GetLog
1.24.1. GetLogRequest
This contains the field definition of the GetLogRequest PDU sent by the CSMS to the Charging Station.
Class
1.24.2. GetLogResponse
This contains the field definition of the GetLogResponse PDU sent by the Charging Station to the CSMS in response to a
GetLogRequest.
Class
1.25. GetMonitoringReport
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 374/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.25.1. GetMonitoringReportRequest
This contains the field definition of the GetMonitoringReportRequest PDU sent by the CSMS to the Charging Station.
Class
1.25.2. GetMonitoringReportResponse
This contains the field definition of the GetMonitoringReportResponse PDU sent by the Charging Station to the CSMS.
Class
1.26. GetReport
1.26.1. GetReportRequest
This contains the field definition of the GetReportRequest PDU sent by the CSMS to the Charging Station.
Class
1.26.2. GetReportResponse
The response to a GetReportRequest, sent by the Charging Station to the CSMS.
Class
1.27. GetTransactionStatus
1.27.1. GetTransactionStatusRequest
With this message, the CSMS can ask the Charging Station whether it has transaction-related messages waiting to be delivered to
the CSMS. When a transactionId is provided, only messages for a specific transaction are asked for.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 375/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Class
1.27.2. GetTransactionStatusResponse
The response to a GetTransactionStatusRequest, sent by the Charging Station to the CSMS.
Class
1.28. GetVariables
1.28.1. GetVariablesRequest
This contains the field definition of the GetVariablesRequest PDU sent by the CSMS to the Charging Station.
Class
1.28.2. GetVariablesResponse
This contains the field definition of the GetVariablesResponse PDU sent by the CSMS to the Charging Station in response to
GetVariablesRequest.
Class
1.29. Heartbeat
1.29.1. HeartbeatRequest
This contains the field definition of the HeartbeatRequest PDU sent by the Charging Station to the CSMS. No fields are defined.
1.29.2. HeartbeatResponse
This contains the field definition of the HeartbeatResponse PDU sent by the CSMS to the Charging Station in response to a
HeartbeatRequest.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 376/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.30. InstallCertificate
1.30.1. InstallCertificateRequest
Used by the CSMS to request installation of a certificate on a Charging Station. Note: This message is not for installing a TLS client
certificate in a charging station. The CertificateSignedRequest mechanism is used for that.
Class
1.30.2. InstallCertificateResponse
The response to a InstallCertificateRequest, sent by the Charging Station to the CSMS.
Class
1.31. LogStatusNotification
1.31.1. LogStatusNotificationRequest
This contains the field definition of the LogStatusNotificationRequest PDU sent by the Charging Station to the CSMS.
Class
1.31.2. LogStatusNotificationResponse
This contains the field definition of the LogStatusNotificationResponse PDU sent by the CSMS to the Charging Station in response
to LogStatusNotificationRequest. No fields are defined.
1.32. MeterValues
1.32.1. MeterValuesRequest
This contains the field definition of the MeterValuesRequest PDU sent by the Charging Station to the CSMS. This message might be
removed in a future version of OCPP. It will be replaced by Device Management Monitoring events.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 377/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.32.2. MeterValuesResponse
This contains the field definition of the MeterValuesResponse PDU sent by the CSMS to the Charging Station in response to a
MeterValuesRequest PDU. This message might be removed in a future version of OCPP. It will be replaced by Device Management
Monitoring events.
1.33. NotifyChargingLimit
1.33.1. NotifyChargingLimitRequest
The message NotifyChargingLimitRequest can be used to communicate a charging limit, set by an external system on the Charging
Station (Not installed by the CSO via SetChargingProfileRequest), to the CSMS.
Class
1.33.2. NotifyChargingLimitResponse
The NotifyChargingLimitResponse message is sent by the CSMS to the Charging Station in response to a
NotifyChargingLimitsRequest. No fields are defined.
1.34. NotifyCustomerInformation
This contains the field definition of the NotifyCustomerInformationRequest PDU sent by the Charging Station to the CSMS.
1.34.1. NotifyCustomerInformationRequest
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 378/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.34.2. NotifyCustomerInformationResponse
1.35. NotifyDisplayMessages
1.35.1. NotifyDisplayMessagesRequest
This contains the field definition of the NotifyDisplayMessagesRequest PDU sent by the Charging Station to the CSMS.
Class
1.35.2. NotifyDisplayMessagesResponse
The NotifyDisplayMessagesResponse message is sent by the CSMS to the Charging Station in response to a
NotifyDisplayMessagesRequest. No fields are defined.
1.36. NotifyEVChargingNeeds
1.36.1. NotifyEVChargingNeedsRequest
The Charging Station uses this message to communicate the charging needs as calculated by the EV to the CSMS.
Class
1.36.2. NotifyEVChargingNeedsResponse
Response to a NotifyEVChargingNeedsRequest.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 379/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.37. NotifyEVChargingSchedule
1.37.1. NotifyEVChargingScheduleRequest
The Charging Station uses this message to communicate the charging schedule as calculated by the EV to the CSMS.
Class
1.37.2. NotifyEVChargingScheduleResponse
Response to a NotifyEVChargingScheduleRequest message.
Class
1.38. NotifyEvent
1.38.1. NotifyEventRequest
This contains the field definition of the NotifyEventRequest PDU sent by the Charging Station to the CSMS.
Class
1.38.2. NotifyEventResponse
Response to NotifyEventRequest. No fields are defined.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 380/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.39. NotifyMonitoringReport
1.39.1. NotifyMonitoringReportRequest
This contains the field definition of the NotifyMonitoringRequest PDU sent by the Charging Station to the CSMS.
Class
1.39.2. NotifyMonitoringReportResponse
Response to a NotifyMonitoringRequest message. No fields are defined.
1.40. NotifyReport
1.40.1. NotifyReportRequest
This contains the field definition of the NotifyReportRequest PDU sent by the Charging Station to the CSMS.
Class
1.40.2. NotifyReportResponse
Response to a NotifyReportRequest message. No fields are defined.
1.41. PublishFirmware
1.41.1. PublishFirmwareRequest
This contains the field definition of the PublishFirmwareRequest PDU sent by the CSMS to the Local Controller.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 381/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Class
1.41.2. PublishFirmwareResponse
This contains the field definition of the PublishFirmwareResponse PDU sent by the Local Controller to the CSMS in response to a
PublishFirmwareRequest.
Class
1.42. PublishFirmwareStatusNotification
1.42.1. PublishFirmwareStatusNotificationRequest
This contains the field definition of the PublishFirmwareStatusNotificationRequest PDU sent by the Charging Station to the CSMS.
Class
1.42.2. PublishFirmwareStatusNotificationResponse
This contains the field definition of the PublishFirmwareStatusNotificationResponse PDU sent by the CSMS to the Charging station
in response to a PublishFirmwareStatusNotificationRequest.
1.43. ReportChargingProfiles
1.43.1. ReportChargingProfilesRequest
Reports charging profiles installed in the Charging Station, as requested via a GetChargingProfilesRequest message. The charging
profile report can be split over multiple ReportChargingProfilesRequest messages, this can be because charging profiles for
different charging sources need to be reported, or because there is just to much data for one message.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 382/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Class
1.43.2. ReportChargingProfilesResponse
The ReportChargingProfilesResponse message is sent by the CSMS to the Charging Station in response to a
ReportChargingProfilesRequest. No fields are defined.
1.44. RequestStartTransaction
1.44.1. RequestStartTransactionRequest
This contains the field definitions of the RequestStartTransactionRequest PDU sent to Charging Station by CSMS.
Class
1.44.2. RequestStartTransactionResponse
This contains the field definitions of the RequestStartTransactionResponse PDU sent from Charging Station to CSMS.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 383/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.45. RequestStopTransaction
1.45.1. RequestStopTransactionRequest
This contains the field definitions of the RequestStopTransactionRequest PDU sent to Charging Station by CSMS.
Class
1.45.2. RequestStopTransactionResponse
This contains the field definitions of the RequestStopTransactionResponse PDU sent from Charging Station to CSMS.
Class
1.46. ReservationStatusUpdate
1.46.1. ReservationStatusUpdateRequest
This contains the field definition of the ReservationStatusUpdateRequest PDU sent by the Charging Station to the CSMS.
Class
1.46.2. ReservationStatusUpdateResponse
This contains the field definition of the ReservationStatusUpdateResponse PDU sent by the CSMS to the Charging Station in
response to a ReservationStatusUpdateRequest. No fields are defined.
1.47. ReserveNow
1.47.1. ReserveNowRequest
This contains the field definition of the ReserveNowRequest PDU sent by the CSMS to the Charging Station.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 384/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.47.2. ReserveNowResponse
This contains the field definition of the ReserveNowResponse PDU sent by the Charging Station to the CSMS in response to
ReserveNowRequest PDU.
Class
1.48. Reset
1.48.1. ResetRequest
This contains the field definition of the ResetRequest PDU sent by the CSMS to the Charging Station.
Class
1.48.2. ResetResponse
This contains the field definition of the ResetResponse PDU sent by the Charging Station to the CSMS in response to ResetRequest.
Class
1.49. SecurityEventNotification
1.49.1. SecurityEventNotificationRequest
Sent by the Charging Station to the CSMS in case of a security event.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 385/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.49.2. SecurityEventNotificationResponse
Sent by the CSMS to the Charging Station to confirm the receipt of a SecurityEventNotificationRequest message. No fields are
defined.
1.50. SendLocalList
1.50.1. SendLocalListRequest
This contains the field definition of the SendLocalListRequest PDU sent by the CSMS to the Charging Station. If no (empty)
localAuthorizationList is given and the updateType is Full, all IdTokens are removed from the list. Requesting a Differential update
without or with empty localAuthorizationList will have no effect on the list. All IdTokens in the localAuthorizationList MUST be
unique, no duplicate values are allowed.
Class
1.50.2. SendLocalListResponse
This contains the field definition of the SendLocalListResponse PDU sent by the Charging Station to the CSMS in response to
SendLocalListRequest PDU.
Class
1.51. SetChargingProfile
1.51.1. SetChargingProfileRequest
This contains the field definition of the SetChargingProfileRequest PDU sent by the CSMS to the Charging Station. The CSMS uses
this message to send charging profiles to a Charging Station.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 386/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.51.2. SetChargingProfileResponse
This contains the field definition of the SetChargingProfileResponse PDU sent by the Charging Station to the CSMS in response to
SetChargingProfileRequest PDU.
Class
1.52. SetDisplayMessage
1.52.1. SetDisplayMessageRequest
This contains the field definition of the SetDisplayMessageRequest PDU sent by the CSMS to the Charging Station. The CSMS asks
the Charging Station to configure a new display message that the Charging Station will display (in the future). See also O01 - Set
Display Message, O02 - Set Display Message for Transaction and O06 - Replace Display Message
Class
1.52.2. SetDisplayMessageResponse
This contains the field definition of the SetDisplayMessageResponse PDU sent by the Charging Station to the CSMS in a response
to a SetDisplayMessageRequest. See also O01 - Set Display Message, O02 - Set Display Message for Transaction and O06 -
Replace Display Message
Class
1.53. SetMonitoringBase
1.53.1. SetMonitoringBaseRequest
This contains the field definition of the SetMonitoringBaseRequest PDU sent by the CSMS to the Charging Station.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 387/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.53.2. SetMonitoringBaseResponse
This contains the field definition of the SetMonitoringBaseResponse PDU sent by the Charging Station to the CSMS in response to a
SetMonitoringBaseRequest.
Class
1.54. SetMonitoringLevel
1.54.1. SetMonitoringLevelRequest
This contains the field definition of the SetMonitoringLevelRequest PDU sent by the CSMS to the Charging Station.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 388/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.54.2. SetMonitoringLevelResponse
This contains the field definition of the SetMonitoringLevelResponse PDU sent by the Charging Station to the CSMS in response to
a SetMonitoringLevelRequest.
Class
1.55. SetNetworkProfile
1.55.1. SetNetworkProfileRequest
With this message the CSMS gains the ability to configure the connection data (e.g. CSMS URL, OCPP version, APN, etc) on a
Charging Station.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 389/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.55.2. SetNetworkProfileResponse
This contains the field definition of the SetNetworkProfileResponse PDU sent by the Charging Station to the CSMS in response to a
SetNetworkProfileRequest.
Class
1.56. SetVariableMonitoring
1.56.1. SetVariableMonitoringRequest
This contains the field definition of the SetVariableMonitoringRequest PDU sent by the CSMS to the Charging Station.
Class
1.56.2. SetVariableMonitoringResponse
This contains the field definition of the SetVariableMonitoringResponse PDU sent by the Charging Station to the CSMS in response
to a SetVariableMonitoringRequest.
Class
1.57. SetVariables
1.57.1. SetVariablesRequest
This contains the field definition of the SetVariablesRequest PDU sent by the CSMS to the Charging Station.
Class
1.57.2. SetVariablesResponse
This contains the field definition of the SetVariablesResponse PDU sent by the Charging Station to the CSMS in response to a
SetVariablesRequest.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 390/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.58. SignCertificate
1.58.1. SignCertificateRequest
Sent by the Charging Station to the CSMS to request that the Certificate Authority signs the public key into a certificate.
Class
1.58.2. SignCertificateResponse
Sent by the CSMS to the Charging Station in response to the SignCertificateRequest message.
Class
1.59. StatusNotification
1.59.1. StatusNotificationRequest
This contains the field definition of the StatusNotificationRequest PDU sent by the Charging Station to the CSMS. This message
might be removed in a future version of OCPP. It will be replaced by Device Management Monitoring events.
Class
1.59.2. StatusNotificationResponse
This contains the field definition of StatusNotificationResponse sent by the CSMS to the Charging Station in response to a
StatusNotificationRequest. This message might be removed in a future version of OCPP. It will be replaced by Device Management
Monitoring events.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 391/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.60. TransactionEvent
1.60.1. TransactionEventRequest
This section contains the field definition of the TransactionEventRequest PDU sent by the Charging Station to the CSMS. For each
of the eventTypes; Started, Updated and Ended, the corresponding cardinality is specified.
Class
1.60.2. TransactionEventResponse
This contains the field definition of the TransactionEventResponse PDU sent by the CSMS to the Charging Station in response to a
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 392/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
TransactionEventRequest.
Class
1.61. TriggerMessage
1.61.1. TriggerMessageRequest
This contains the field definition of the TriggerMessageRequest PDU sent by the CSMS to the Charging Station.
Class
1.61.2. TriggerMessageResponse
This contains the field definition of the TriggerMessageResponse PDU sent by the Charging Station to the CSMS in response to
TriggerMessageResponse.
Class
1.62. UnlockConnector
1.62.1. UnlockConnectorRequest
This contains the field definition of the UnlockConnectorRequest PDU sent by the CSMS to the Charging Station.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 393/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Class
1.62.2. UnlockConnectorResponse
This contains the field definition of the UnlockConnectorResponse PDU sent by the Charging Station to the CSMS in response to an
UnlockConnectorRequest.
Class
1.63. UnpublishFirmware
1.63.1. UnpublishFirmwareRequest
This contains the field definition of the UnpublishFirmwareRequest PDU sent by the CSMS to the Charging Station.
Class
1.63.2. UnpublishFirmwareResponse
This contains the field definition of the UnpublishFirmwareResponse PDU sent by the Charging Station to the CSMS in response to
a UnpublishFirmwareRequest.
Class
1.64. UpdateFirmware
1.64.1. UpdateFirmwareRequest
This contains the field definition of the UpdateFirmwareRequest PDU sent by the CSMS to the Charging Station.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 394/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
1.64.2. UpdateFirmwareResponse
This contains the field definition of the UpdateFirmwareResponse PDU sent by the Charging Station to the CSMS in response to an
UpdateFirmwareRequest.
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 395/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2. Datatypes
2.1. ACChargingParametersType
Class
EV AC charging parameters.
2.2. AdditionalInfoType
Class
Contains a case insensitive identifier to use for the authorization and the type of authorization to support multiple forms of
identifiers.
2.3. APNType
Class
When asking a GSM modem to dial in, it is possible to specify which mobile operator should be used. This can be
done with the mobile country code (MCC) in combination with a mobile network code (MNC). Example: If your
preferred network is Vodafone Netherlands, the MCC=204 and the MNC=04 which means the key
NOTE
PreferredNetwork = 20404 Some modems allows to specify a preferred network, which means, if this network is
not available, a different network is used. If you specify UseOnlyPreferredNetwork and this network is not
available, the modem will not dial in.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 396/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.4. AuthorizationData
Class
2.5. CertificateHashDataChainType
Class
2.6. CertificateHashDataType
Class
2.7. ChargingLimitType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 397/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
ChargingLimitType is used by: NotifyChargingLimitRequest
2.8. ChargingNeedsType
Class
2.9. ChargingProfileCriterionType
Class
A ChargingProfile consists of ChargingSchedule, describing the amount of power or current that can be delivered per time interval.
2.10. ChargingProfileType
Class
A ChargingProfile consists of ChargingSchedule, describing the amount of power or current that can be delivered per time interval.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 398/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.11. ChargingSchedulePeriodType
Class
2.12. ChargingScheduleType
Class
Charging schedule structure defines a list of charging periods, as used in: GetCompositeSchedule.conf and ChargingProfile.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 399/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.13. ChargingStationType
Class
2.14. ClearChargingProfileType
Class
A ChargingProfile consists of a ChargingSchedule, describing the amount of power or current that can be delivered per time
interval.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 400/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.15. ClearMonitoringResultType
Class
2.16. ComponentType
Class
2.17. ComponentVariableType
Class
2.18. CompositeScheduleType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 401/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
CompositeScheduleType is used by: GetCompositeScheduleResponse
2.19. ConsumptionCostType
Class
2.20. CostType
Class
2.21. DCChargingParametersType
Class
EV DC charging parameters
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 402/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.22. EventDataType
Class
2.23. EVSEType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 403/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.24. FirmwareType
Class
Represents a copy of the firmware that can be loaded/updated on the Charging Station.
2.25. GetVariableDataType
Class
2.26. GetVariableResultType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 404/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.27. IdTokenInfoType
Class
Contains status information about an identifier. It is advised to not stop charging for a token that expires during charging, as
ExpiryDate is only used for caching purposes. If ExpiryDate is not given, the status has no end date.
2.28. IdTokenType
Class
Contains a case insensitive identifier to use for the authorization and the type of authorization to support multiple forms of
identifiers.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 405/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.29. LogParametersType
Class
2.30. MessageContentType
Class
2.31. MessageInfoType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 406/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.32. MeterValueType
Class
Collection of one or more sampled values in MeterValuesRequest and TransactionEvent. All sampled values in a MeterValue are
sampled at the same point in time.
2.33. ModemType
Class
Defines parameters required for initiating and maintaining wireless communication with other devices.
2.34. MonitoringDataType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 407/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.35. NetworkConnectionProfileType
Class
The NetworkConnectionProfile defines the functional and technical parameters of a communication link.
2.36. OCSPRequestDataType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 408/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.37. RelativeTimeIntervalType
Class
2.38. ReportDataType
Class
2.39. SalesTariffEntryType
Class
2.40. SalesTariffType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 409/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.41. SampledValueType
Class
Single sampled value in MeterValues. Each value can be accompanied by optional fields.
To save on mobile data usage, default values of all of the optional fields are such that. The value without any additional fields will
be interpreted, as a register reading of active import energy in Wh (Watt-hour) units.
2.42. SetMonitoringDataType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 410/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.43. SetMonitoringResultType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 411/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.44. SetVariableDataType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 412/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.45. SetVariableResultType
Class
2.46. SignedMeterValueType
Class
2.47. StatusInfoType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 413/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.48. TransactionType
Class
2.49. UnitOfMeasureType
Class
2.50. VariableAttributeType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 414/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.51. VariableCharacteristicsType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 415/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
2.52. VariableMonitoringType
Class
2.53. VariableType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 416/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
GetVariablesResponse.GetVariableResultType , NotifyMonitoringReportRequest.MonitoringDataType ,
NotifyReportRequest.ReportDataType , SetVariableMonitoringRequest.SetMonitoringDataType ,
SetVariableMonitoringResponse.SetMonitoringResultType , SetVariablesRequest.SetVariableDataType ,
SetVariablesResponse.SetVariableResultType , NotifyEventRequest.EventDataType
2.54. VPNType
Class
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 417/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3. Enumerations
3.1. APNAuthenticationEnumType
Enumeration
Value Description
CHAP Use CHAP authentication
NONE Use no authentication
PAP Use PAP authentication
AUTO Sequentially try CHAP, PAP, NONE.
3.2. AttributeEnumType
Enumeration
Value Description
Actual The actual value of the variable.
Target The target value for this variable.
MinSet The minimal allowed value for this variable
MaxSet Thne maximum allowed value for this variable
3.3. AuthorizationStatusEnumType
Enumeration
Value Description
Accepted Identifier is allowed for charging.
Blocked Identifier has been blocked. Not allowed for charging.
ConcurrentTx Identifier is already involved in another transaction and multiple transactions are not allowed. (Only relevant
for the response to a transactionEventRequest(eventType=Started).)
Expired Identifier has expired. Not allowed for charging.
Invalid Identifier is invalid. Not allowed for charging.
NoCredit Identifier is valid, but EV Driver doesn’t have enough credit to start charging. Not allowed for charging.
NotAllowedTypeEVS Identifier is valid, but not allowed to charge at this type of EVSE.
E
NotAtThisLocation Identifier is valid, but not allowed to charge at this location.
NotAtThisTime Identifier is valid, but not allowed to charge at this location at this time.
Unknown Identifier is unknown. Not allowed for charging.
3.4. AuthorizeCertificateStatusEnumType
Enumeration
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 418/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
AuthorizeCertificateStatusEnumType is used by: authorize:AuthorizeResponse
Value Description
Accepted Positive response
SignatureError <not used>
CertificateExpired If the contract certificate in the AuthorizeRequest is expired.
CertificateRevoked If the Charging Station or CSMS determine (via a CRL or OCSP response) that the contract certificate in the
AuthorizeRequest is marked as revoked.
NoCertificateAvailab <not used>
le
CertChainError If the contract certificate contained in the AuthorizeRequest message is not valid.
ContractCancelled If the EMAID provided by EVCC is invalid, unknown, expired or blocked.
3.5. BootReasonEnumType
Enumeration
Value Description
ApplicationReset The Charging Station rebooted due to an application error.
FirmwareUpdate The Charging Station rebooted due to a firmware update.
LocalReset The Charging Station rebooted due to a local reset command.
PowerUp The Charging Station powered up and registers itself with the CSMS.
RemoteReset The Charging Station rebooted due to a remote reset command.
ScheduledReset The Charging Station rebooted due to a scheduled reset command.
Triggered Requested by the CSMS via a TriggerMessage
Unknown The boot reason is unknown.
Watchdog The Charging Station rebooted due to an elapsed watchdog timer.
3.6. CancelReservationStatusEnumType
Enumeration
Status in CancelReservationResponse.
Value Description
Accepted Reservation for the identifier has been canceled.
Rejected Reservation could not be canceled, because there is no reservation active for the identifier.
3.7. CertificateActionEnumType
Enumeration
Value Description
Install Install the provided certificate.
Update Update the provided certificate.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 419/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3.8. CertificateSignedStatusEnumType
Enumeration
Value Description
Accepted Signed certificate is valid.
Rejected Signed certificate is invalid.
3.9. CertificateSigningUseEnumType
Enumeration
Value Description
ChargingStationCert Client side certificate used by the Charging Station to connect the the CSMS.
ificate
V2GCertificate Use for certificate for 15118 connections. This means that the certificate should be derived from the V2G
root.
3.10. ChangeAvailabilityStatusEnumType
Enumeration
Value Description
Accepted Request has been accepted and will be executed.
Rejected Request has not been accepted and will not be executed.
Scheduled Request has been accepted and will be executed when transaction(s) in progress have finished.
3.11. ChargingLimitSourceEnumType
Enumeration
Value Description
EMS Indicates that an Energy Management System has sent a charging limit.
Other Indicates that an external source, not being an EMS or system operator, has sent a charging limit.
SO Indicates that a System Operator (DSO or TSO) has sent a charging limit.
CSO Indicates that the CSO has set this charging profile.
3.12. ChargingProfileKindEnumType
Enumeration
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 420/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
ChargingProfileKindEnumType is used by: Common:ChargingProfileType
Value Description
Absolute Schedule periods are relative to a fixed point in time defined in the schedule. This requires that startSchedule
is set to a starting point in time.
Recurring The schedule restarts periodically at the first schedule period. To be most useful, this requires that
startSchedule is set to a starting point in time.
Relative Charging schedule periods should start when the EVSE is ready to deliver energy. i.e. when the EV driver is
authorized and the EV is connected. When a ChargingProfile is received for a transaction that is already
charging, then the charging schedule periods should remain relative to the PowerPathClosed moment.
No value for startSchedule should be supplied.
3.13. ChargingProfilePurposeEnumType
Enumeration
Value Description
ChargingStationExte Additional constraints that will be incorporated into a local power schedule. Only valid for a Charging Station.
rnalConstraints Therefore evse.Id MUST be 0 in the SetChargingProfileRequest message.
ChargingStationMax Configuration for the maximum power or current available for an entire Charging Station.
Profile
TxDefaultProfile Default profile that can be configured in the Charging Station. When a new transaction is started, this profile
SHALL be used, unless it was a transaction that was started by a RequestStartTransactionRequest with a
ChargingProfile that is accepted by the Charging Station.
TxProfile Profile with constraints to be imposed by the Charging Station on the current transaction, or on a new
transaction when this is started via a RequestStartTransactionRequest with a ChargingProfile. A profile with
this purpose SHALL cease to be valid when the transaction terminates.
3.14. ChargingProfileStatusEnumType
Enumeration
Value Description
Accepted Request has been accepted and will be executed.
Rejected Request has not been accepted and will not be executed.
3.15. ChargingRateUnitEnumType
Enumeration
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 421/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Value Description
W Watts (power). This is the TOTAL allowed charging power. If used for AC Charging, the phase current should
be calculated via: Current per phase = Power / (Line Voltage * Number of Phases). The "Line Voltage" used in
the calculation is not the measured voltage, but the set voltage for the area (hence, 230 of 110 volt). The
"Number of Phases" is the numberPhases from the ChargingSchedulePeriod. It is usually more convenient to
use this for DC charging. Note that if numberPhases in a ChargingSchedulePeriod is absent, 3 SHALL be
assumed.
A Amperes (current). The amount of Ampere per phase, not the sum of all phases. It is usually more
convenient to use this for AC charging.
3.16. ChargingStateEnumType
Enumeration
Value Description
Charging The contactor of the Connector is closed and energy is flowing to between EVSE and EV.
EVConnected There is a connection between EV and EVSE, in case the protocol used between EV and the Charging Station
can detect a connection, the protocol needs to detect this for the state to become active. The connection
can either be wired or wireless.
SuspendedEV When the EV is connected to the EVSE and the EVSE is offering energy but the EV is not taking any energy.
SuspendedEVSE When the EV is connected to the EVSE but the EVSE is not offering energy to the EV, e.g. due to a smart
charging restriction, local supply power constraints, or when charging has stopped because of the
authorization status in the response to a transactionEventRequest indicating that charging is not allowed
etc.
Idle There is no connection between EV and EVSE.
3.17. ClearCacheStatusEnumType
Enumeration
Value Description
Accepted Command has been executed.
Rejected Command has not been executed.
3.18. ClearChargingProfileStatusEnumType
Enumeration
Value Description
Accepted Request has been accepted and will be executed.
Unknown No Charging Profile(s) were found matching the request.
3.19. ClearMessageStatusEnumType
Enumeration
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 422/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Result for a ClearDisplayMessageRequest as used in a ClearDisplayMessageResponse.
Value Description
Accepted Request successfully executed: message cleared.
Unknown Given message (based on the id) not known.
3.20. ClearMonitoringStatusEnumType
Enumeration
Value Description
Accepted Monitor successfully cleared.
Rejected Clearing of monitor rejected.
NotFound Monitor Id is not found.
3.21. ComponentCriterionEnumType
Enumeration
Value Description
Active Components that are active, i.e. having Active = 1
Available Components that are available, i.e. having Available = 1
Enabled Components that are enabled, i.e. having Enabled = 1
Problem Components that reported a problem, i.e. having Problem = 1
3.22. ConnectorEnumType
Enumeration
This enumeration does not attempt to include every possible power connector type worldwide as an individual
type, but to specifically define those that are known to be in use (or likely to be in use) in the Charging Stations
using the OCPP protocol. In particular, many of the very large number of domestic electrical sockets designs in
use in many countries are excluded, unless there is evidence that they are or are likely to be approved for use on
NOTE
Charging Stations in some jurisdictions (e.g. as secondary connectors for charging light EVs such as electric
scooters). These light connector types can be represented with the enumeration value Other1PhMax16A.
Similarly, any single phase connector not otherwise enumerated that is rated for 16A or over should be reported
as Other1PhOver16A. All 3 phase connector types not explicitly enumerated should be represented as Other3Ph.
Value Description
cCCS1 Combined Charging System 1 (captive cabled) a.k.a. Combo 1
cCCS2 Combined Charging System 2 (captive cabled) a.k.a. Combo 2
cG105 JARI G105-1993 (captive cabled) a.k.a. CHAdeMO
cTesla Tesla Connector (captive cabled)
cType1 IEC62196-2 Type 1 connector (captive cabled) a.k.a. J1772
cType2 IEC62196-2 Type 2 connector (captive cabled) a.k.a. Mennekes connector
s309-1P-16A 16A 1 phase IEC60309 socket
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 423/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Value Description
s309-1P-32A 32A 1 phase IEC60309 socket
s309-3P-16A 16A 3 phase IEC60309 socket
s309-3P-32A 32A 3 phase IEC60309 socket
sBS1361 UK domestic socket a.k.a. 13Amp
sCEE-7-7 CEE 7/7 16A socket. May represent 7/4 & 7/5 a.k.a Schuko
sType2 IEC62196-2 Type 2 socket a.k.a. Mennekes connector
sType3 IEC62196-2 Type 2 socket a.k.a. Scame
Other1PhMax16A Other single phase (domestic) sockets not mentioned above, rated at no more than 16A. CEE7/17, AS3112,
NEMA 5-15, NEMA 5-20, JISC8303, TIS166, SI 32, CPCS-CCC, SEV1011, etc.
Other1PhOver16A Other single phase sockets not mentioned above (over 16A)
Other3Ph Other 3 phase sockets not mentioned above. NEMA14-30, NEMA14-50.
Pan Pantograph connector
wInductive Wireless inductively coupled connection (generic)
wResonant Wireless resonant coupled connection (generic)
Undetermined Yet to be determined (e.g. before plugged in)
Unknown Unknown; not determinable
3.23. ConnectorStatusEnumType
Enumeration
A status can be reported for the Connector of an EVSE of a Charging Station. States considered Operative are: Available, Reserved
and Occupied. States considered Inoperative are: Unavailable, Faulted.
Value Description
Available When a Connector becomes available for a new User (Operative)
Occupied When a Connector becomes occupied, so it is not available for a new EV driver. (Operative)
Reserved When a Connector becomes reserved as a result of ReserveNow command (Operative)
Unavailable When a Connector becomes unavailable as the result of a Change Availability command or an event upon
which the Charging Station transitions to unavailable at its discretion. Upon receipt of ChangeAvailability
message command, the status MAY change immediately or the change MAY be scheduled. When
scheduled, StatusNotification SHALL be send when the availability change becomes effective (Inoperative)
Faulted When a Connector (or the EVSE or the entire Charging Station it belongs to) has reported an error and is not
available for energy delivery. (Inoperative).
3.24. CostKindEnumType
Enumeration
Value Description
CarbonDioxideEmiss Absolute value. Carbon Dioxide emissions, in grams per kWh.
ion
RelativePricePercen Relative value. Price per kWh, as percentage relative to the maximum price stated in any of all tariffs
tage indicated to the EV.
RenewableGeneratio Relative value. Percentage of renewable generation within total generation.
nPercentage
3.25. CustomerInformationStatusEnumType
Enumeration
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 424/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Status in CancelReservationResponse.
Value Description
Accepted The Charging Station accepted the message.
Rejected When the Charging Station is in a state where it cannot process this request.
Invalid In a request to the Charging Station no reference to a customer is included.
3.26. DataEnumType
Enumeration
Value Description
string This variable is of the type string.
decimal This variable is of the type decimal.
integer This variable is of the type integer.
dateTime DateTime following the [RFC3339] specification.
boolean This variable is of the type boolean.
OptionList Supported/allowed values for a single choice, enumerated, text variable.
SequenceList Supported/allowed values for an ordered sequence variable.
MemberList Supported/allowed values for a mathematical set variable.
3.27. DataTransferStatusEnumType
Enumeration
Status in DataTransferResponse.
Value Description
Accepted Message has been accepted and the contained request is accepted.
Rejected Message has been accepted but the contained request is rejected.
UnknownMessageId Message could not be interpreted due to unknown messageId string.
UnknownVendorId Message could not be interpreted due to unknown vendorId string.
3.28. DeleteCertificateStatusEnumType
Enumeration
Value Description
Accepted Normal successful completion (no errors).
Failed The Charging Station either failed to remove the certificate or rejected the request. A Charging Station may
reject the request to prevent the deletion of a certificate, if it is the last one from its certificate type.
NotFound Requested resource not found.
3.29. DisplayMessageStatusEnumType
Enumeration
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 425/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Result for a SetDisplayMessageRequest as used in a SetDisplayMessageResponse.
Value Description
Accepted Request to display message accepted.
NotSupportedMessa None of the formats in the given message are supported.
geFormat
Rejected Request cannot be handled.
NotSupportedPriorit The given MessagePriority not supported for displaying messages by Charging Station.
y
NotSupportedState The given MessageState not supported for displaying messages by Charging Station.
UnknownTransactio Given Transaction not known/ongoing.
n
3.30. EnergyTransferModeEnumType
Enumeration
Value Description
DC DC charging.
AC_single_phase AC single phase charging according to IEC 62196.
AC_two_phase AC two phase charging according to IEC 62196.
AC_three_phase AC three phase charging according to IEC 62196.
3.31. EventNotificationEnumType
Enumeration
Value Description
HardWiredNotificati The software implemented by the manufacturer triggered a hardwired notification.
on
HardWiredMonitor Triggered by a monitor, which is hardwired by the manufacturer.
PreconfiguredMonit Triggered by a monitor, which is preconfigured by the manufacturer.
or
CustomMonitor Triggered by a monitor, which is set with the setvariablemonitoringrequest message by the Charging Station
Operator.
3.32. EventTriggerEnumType
Enumeration
Value Description
Alerting Monitored variable has passed an Lower or Upper Threshold.
Also used as trigger type for a HardWiredNotification.
Delta Delta Monitored Variable value has changed by more than specified amount
Periodic Periodic Monitored Variable has been sampled for reporting at the specified interval
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 426/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3.33. FirmwareStatusEnumType
Enumeration
A value with "Intermediate state" in the description, is an intermediate state, update process is not finished.
A value with "Failure end state" in the description, is an end state, update process has stopped, update failed.
A value with "Successful end state" in the description, is an end state, update process has stopped, update successful.
Value Description
Downloaded Intermediate state. New firmware has been downloaded by Charging Station.
DownloadFailed Failure end state. Charging Station failed to download firmware.
Downloading Intermediate state. Firmware is being downloaded.
DownloadScheduled Intermediate state. Downloading of new firmware has been scheduled.
DownloadPaused Intermediate state. Downloading has been paused.
Idle Charging Station is not performing firmware update related tasks. Status Idle SHALL only be used as in a
FirmwareStatusNotificationRequest that was triggered by TriggerMessageRequest.
InstallationFailed Failure end state. Installation of new firmware has failed.
Installing Intermediate state. Firmware is being installed.
Installed Successful end state. New firmware has successfully been installed in Charging Station.
InstallRebooting Intermediate state. Charging Station is about to reboot to activate new firmware. If sent before installing the
firmware, it indicates the Charging Station is about to reboot to start installing new firmware. If sent after
installing the new firmware, it indicates the Charging Station has finished installing, but requires a reboot to
activate the new firmware, which will be done automatically when idle.
This status MAY be omitted if a reboot is an integral part of the installation and cannot be reported
separately.
InstallScheduled Intermediate state. Installation of the downloaded firmware is scheduled to take place on installDateTime
given in UpdateFirmware request.
InstallVerificationFai Failure end state. Verification of the new firmware (e.g. using a checksum or some other means) has failed
led and installation will not proceed. (Final failure state)
InvalidSignature Failure end state. The firmware signature is not valid.
SignatureVerified Intermediate state. Provide signature successfully verified.
3.34. GenericDeviceModelStatusEnumType
Enumeration
Value Description
Accepted Request has been accepted and will be executed.
Rejected Request has not been accepted and will not be executed.
NotSupported The content of the request message is not supported.
EmptyResultSet If the combination of received criteria result in an empty result set.
3.35. GenericStatusEnumType
Enumeration
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 427/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
GenericStatusEnumType is used by: getCompositeSchedule:GetCompositeScheduleResponse ,
notifyEVChargingSchedule:NotifyEVChargingScheduleResponse , signCertificate:SignCertificateResponse ,
setMonitoringLevel:SetMonitoringLevelResponse , publishFirmware:PublishFirmwareResponse
Value Description
Accepted Request has been accepted and will be executed.
Rejected Request has not been accepted and will not be executed.
3.36. GetCertificateIdUseEnumType
Enumeration
Value Description
V2GRootCertificate Use for certificate of the V2G Root.
MORootCertificate Use for certificate from an eMobility Service provider. To support PnC charging with contracts from service
providers that not derived their certificates from the V2G root.
CSMSRootCertificat Root certificate for verification of the CSMS certificate.
e
V2GCertificateChain ISO 15118 V2G certificate chain (excluding the V2GRootCertificate).
ManufacturerRootC Root certificate for verification of the Manufacturer certificate.
ertificate
3.37. GetCertificateStatusEnumType
Enumeration
Value Description
Accepted Successfully retrieved the OCSP certificate status.
Failed Failed to retrieve the OCSP certificate status.
3.38. GetChargingProfileStatusEnumType
Enumeration
Value Description
Accepted Normal successful completion (no errors).
NoProfiles No ChargingProfiles found that match the information in the GetChargingProfilesRequest.
3.39. GetDisplayMessagesStatusEnumType
Enumeration
Value Description
Accepted Request accepted, there are Display Messages found that match all the requested criteria. The Charging
Station will send NotifyDisplayMessagesRequest messages to report the requested Display Messages.
Unknown No messages found that match the given criteria.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 428/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3.40. GetInstalledCertificateStatusEnumType
Enumeration
Value Description
Accepted Normal successful completion (no errors).
NotFound Requested resource not found.
3.41. GetVariableStatusEnumType
Enumeration
Value Description
Accepted Variable successfully set.
Rejected Request is rejected.
UnknownComponen Component is not known.
t
UnknownVariable Variable is not known.
NotSupportedAttrib The AttributeType is not supported.
uteType
3.42. HashAlgorithmEnumType
Enumeration
Value Description
SHA256 SHA-256 hash algorithm.
SHA384 SHA-384 hash algorithm.
SHA512 SHA-512 hash algorithm.
3.43. IdTokenEnumType
Enumeration
Value Description
Central A centrally, in the CSMS (or other server) generated id (for example used for a remotely started transaction
that is activated by SMS). No format defined, might be a UUID.
eMAID Electro-mobility account id as defined in ISO 15118
ISO14443 ISO 14443 UID of RFID card. It is represented as an array of 4 or 7 bytes in hexadecimal representation.
ISO15693 ISO 15693 UID of RFID card. It is represented as an array of 8 bytes in hexadecimal representation.
KeyCode User use a private key-code to authorize a charging transaction. For example: Pin-code.
Local A locally generated id (e.g. internal id created by the Charging Station). No format defined, might be a UUID
MacAddress The MacAddress of the EVCC (Electric Vehicle Communication Controller) that is connected to the EVSE.
This is used as a token type when the MAC address is used for authorization ("Autocharge").
NoAuthorization Transaction is started and no authorization possible. Charging Station only has a start button or mechanical
key etc. IdToken field SHALL be left empty.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 429/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3.44. InstallCertificateStatusEnumType
Enumeration
Value Description
Accepted The installation of the certificate succeeded.
Rejected The certificate is invalid and/or incorrect OR the CSO tries to install more certificates than allowed.
Failed The certificate is valid and correct, but there is another reason the installation did not succeed.
3.45. InstallCertificateUseEnumType
Enumeration
Value Description
V2GRootCertificate Use for certificate of the V2G Root, a V2G Charging Station Certificate MUST be derived from one of the
installed V2GRootCertificate certificates.
MORootCertificate Use for certificate from an eMobility Service provider. To support PnC charging with contracts from service
providers that not derived their certificates from the V2G root.
CSMSRootCertificat Root certificate, used by the CA to sign the CSMS and Charging Station certificate.
e
ManufacturerRootC Root certificate for verification of the Manufacturer certificate.
ertificate
3.46. Iso15118EVCertificateStatusEnumType
Enumeration
Value Description
Accepted exiResponse included. This is no indication whether the update was successful, just that the message was
processed properly.
Failed Processing of the message was not successful, no exiResponse included.
3.47. LocationEnumType
Enumeration
Value Description
Body Measurement inside body of Charging Station (e.g. Temperature).
Cable Measurement taken from cable between EV and Charging Station.
EV Measurement taken by EV.
Inlet For the Charging Station (evseId = 0): measurement at network ("grid") inlet connection.
For measurements with evseId > 0, these are measurements taken at the EVSE inlet (This can be useful for a
DC charger).
Outlet Measurement at a Connector. Default value.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 430/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3.48. LogEnumType
Enumeration
Value Description
DiagnosticsLog This contains the field definition of a diagnostics log file
SecurityLog Sent by the CSMS to the Charging Station to request that the Charging Station uploads the security log.
3.49. LogStatusEnumType
Enumeration
Value Description
Accepted Accepted this log upload. This does not mean the log file is uploaded is successfully, the Charging Station
will now start the log file upload.
Rejected Log update request rejected.
AcceptedCanceled Accepted this log upload, but in doing this has canceled an ongoing log file upload.
3.50. MeasurandEnumType
Enumeration
Allowable values of the optional "measurand" field of a Value element, as used in MeterValuesRequest and
TransactionEventRequest with eventTypes Started, Ended and Updated. Default value of "measurand" is always
"Energy.Active.Import.Register".
Note 1: Two measurands (Current.Offered and Power.Offered) are available that are strictly speaking no measured values. They
indicate the maximum amount of current/power that is being offered to the EV and are intended for use in smart charging
applications.
Note 2: Import is energy flow from the Grid to the Charging Station, EV or other load. Export is energy flow from the EV to the
Charging Station and/or from the Charging Station to the Grid. Except in the case of a meter replacement, all "Register" values
relating to a single charging transaction, or a non-transactional consumer (e.g. Charging Station internal power supply, overall
supply) MUST be monotonically increasing in time.
Note 3: The actual quantity of energy corresponding to a reported ".Register" value is computed as the register value in question
minus the register value recorded/reported at the start of the transaction or other relevant starting reference point in time. For
improved auditability, ".Register" values SHOULD be reported exactly as they are directly read from a non-volatile register in the
electrical metering hardware, and SHOULD NOT be re-based to zero at the start of transactions. This allows any "missing energy"
between sequential transactions, due to hardware fault, meter replacement, mis-wiring, fraud, etc. to be identified, by allowing the
CSMS to confirm that the starting register value of any transaction is identical to the finishing register value of the preceding
transaction on the same connector.
Value Description
Current.Export Instantaneous current flow from EV
Current.Import Instantaneous current flow to EV
Current.Offered Maximum current offered to EV
Energy.Active.Expor Numerical value read from the "active electrical energy" (Wh or kWh) register of the (most authoritative)
t.Register electrical meter measuring energy exported (to the grid).
Energy.Active.Impor Numerical value read from the "active electrical energy" (Wh or kWh) register of the (most authoritative)
t.Register electrical meter measuring energy imported (from the grid supply).
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 431/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Value Description
Energy.Reactive.Exp Numerical value read from the "reactive electrical energy" (varh or kvarh) register of the (most authoritative)
ort.Register electrical meter measuring energy exported (to the grid).
Energy.Reactive.Imp Numerical value read from the "reactive electrical energy" (varh or kvarh) register of the (most authoritative)
ort.Register electrical meter measuring energy imported (from the grid supply).
Energy.Active.Expor Absolute amount of "active electrical energy" (Wh or kWh) exported (to the grid) during an associated time
t.Interval "interval", specified by a Metervalues ReadingContext, and applicable interval duration configuration values
(in seconds) for ClockAlignedDataInterval and TxnMeterValueSampleInterval.
Energy.Active.Impor Absolute amount of "active electrical energy" (Wh or kWh) imported (from the grid supply) during an
t.Interval associated time "interval", specified by a Metervalues ReadingContext, and applicable interval duration
configuration values (in seconds) for ClockAlignedDataInterval and TxnMeterValueSampleInterval.
Energy.Active.Net Numerical value read from the “net active electrical energy" (Wh or kWh) register.
Energy.Reactive.Exp Absolute amount of "reactive electrical energy" (varh or kvarh) exported (to the grid) during an associated
ort.Interval time "interval", specified by a Metervalues ReadingContext, and applicable interval duration configuration
values (in seconds) for ClockAlignedDataInterval and TxnMeterValueSampleInterval.
Energy.Reactive.Imp Absolute amount of "reactive electrical energy" (varh or kvarh) imported (from the grid supply) during an
ort.Interval associated time "interval", specified by a Metervalues ReadingContext, and applicable interval duration
configuration values (in seconds) for ClockAlignedDataInterval and TxnMeterValueSampleInterval.
Energy.Reactive.Net Numerical value read from the “net reactive electrical energy" (varh or kvarh) register.
Energy.Apparent.Ne Numerical value read from the "apparent electrical energy" (VAh or kVAh) register.
t
Energy.Apparent.Im Numerical value read from the "apparent electrical import energy" (VAh or kVAh) register.
port
Energy.Apparent.Ex Numerical value read from the "apparent electrical export energy" (VAh or kVAh) register.
port
Frequency Instantaneous reading of powerline frequency
Power.Active.Export Instantaneous active power exported by EV. (W or kW)
Power.Active.Import Instantaneous active power imported by EV. (W or kW)
Power.Factor Instantaneous power factor of total energy flow
Power.Offered Maximum power offered to EV
Power.Reactive.Exp Instantaneous reactive power exported by EV. (var or kvar)
ort
Power.Reactive.Imp Instantaneous reactive power imported by EV. (var or kvar)
ort
SoC State of charge of charging vehicle in percentage
Voltage Instantaneous DC or AC RMS supply voltage.
For location = Inlet and evseId = 0: voltage at charging station grid connection.
For location = Outlet and evseId > 0: voltage at EVSE outlet towards the EV.
3.51. MessageFormatEnumType
Enumeration
Value Description
ASCII Message content is ASCII formatted, only printable ASCII allowed.
HTML Message content is HTML formatted.
URI Message content is URI that Charging Station should download and use to display. for example a HTML
page to be shown in a web-browser.
UTF8 Message content is UTF-8 formatted.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 432/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3.52. MessagePriorityEnumType
Enumeration
Value Description
AlwaysFront Show this message always in front. Highest priority, don’t cycle with other messages. When a newer
message with this MessagePriority is received, this message is replaced. No Charging Station own message
may override this message.
InFront Show this message in front of the normal cycle of messages. When more messages with this priority are to
be shown, they SHALL be cycled.
NormalCycle Show this message in the cycle of messages.
3.53. MessageStateEnumType
Enumeration
Value Description
Charging Message only to be shown while the Charging Station is charging.
Faulted Message only to be shown while the Charging Station is in faulted state.
Idle Message only to be shown while the Charging Station is idle (not charging).
Unavailable Message only to be shown while the Charging Station is in unavailable state.
3.54. MessageTriggerEnumType
Enumeration
Value Description
BootNotification To trigger BootNotification.
LogStatusNotificatio To trigger LogStatusNotification.
n
FirmwareStatusNotif To trigger FirmwareStatusNotification.
ication
Heartbeat To trigger Heartbeat.
MeterValues To trigger MeterValues.
SignChargingStation To trigger a SignCertificate with certificateType: ChargingStationCertificate.
Certificate
SignV2GCertificate To trigger a SignCertificate with certificateType: V2GCertificate
StatusNotification To trigger StatusNotification.
TransactionEvent To trigger TransactionEvent.
SignCombinedCertif To trigger a SignCertificate with certificateType: ChargingStationCertificate AND V2GCertificate
icate
PublishFirmwareSta To trigger PublishFirmwareStatusNotification.
tusNotification
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 433/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3.55. MonitorEnumType
Enumeration
Value Description
UpperThreshold Triggers an event notice when the actual value of the Variable rises above monitorValue
LowerThreshold Triggers an event notice when the actual value of the Variable drops below monitorValue.
Delta Triggers an event notice when the actual value has changed more than plus or minus monitorValue since the
time that this monitor was set or since the last time this event notice was sent, whichever was last. For
variables that are not numeric, like boolean, string or enumerations, a monitor of type Delta will trigger an
event notice whenever the variable changes, regardless of the value of monitorValue.
Periodic Triggers an event notice every monitorValue seconds interval, starting from the time that this monitor was
set.
PeriodicClockAligne Triggers an event notice every monitorValue seconds interval, starting from the nearest clock-aligned interval
d after this monitor was set. For example, a monitorValue of 900 will trigger event notices at 0, 15, 30 and 45
minutes after the hour, every hour.
3.56. MonitoringBaseEnumType
Enumeration
Value Description
All Activate all pre-configured monitors.
FactoryDefault Activate the default monitoring settings as recommended by the manufacturer. This is a subset of all pre-
configured monitors.
HardWiredOnly Clears all custom monitors and disables all pre-configured monitors.
3.57. MonitoringCriterionEnumType
Enumeration
Value Description
ThresholdMonitorin Report variables and components with a monitor of type UpperThreshold or LowerThreshold.
g
DeltaMonitoring Report variables and components with a monitor of type Delta.
PeriodicMonitoring Report variables and components with a monitor of type Periodic or PeriodicClockAligned.
3.58. MutabilityEnumType
Enumeration
Value Description
ReadOnly This variable is read-only.
WriteOnly This variable is write-only.
ReadWrite This variable is read-write.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 434/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3.59. NotifyEVChargingNeedsStatusEnumType
Enumeration
Value Description
Accepted A schedule will be provided momentarily.
Rejected Service not available.
Processing The CSMS is gathering information to provide a schedule.
3.60. OCPPInterfaceEnumType
Enumeration
Value Description
Wired0 Use wired connection 0
Wired1 Use wired connection 1
Wired2 Use wired connection 2
Wired3 Use wired connection 3
Wireless0 Use wireless connection 0
Wireless1 Use wireless connection 1
Wireless2 Use wireless connection 2
Wireless3 Use wireless connection 3
3.61. OCPPTransportEnumType
Enumeration
Enumeration of OCPP transport mechanisms. SOAP is currently not a valid value for OCPP 2.0.
Value Description
JSON Use JSON over WebSockets for transport of OCPP PDU’s
SOAP Use SOAP for transport of OCPP PDU’s
3.62. OCPPVersionEnumType
Enumeration
Value Description
OCPP12 OCPP version 1.2
OCPP15 OCPP version 1.5
OCPP16 OCPP version 1.6
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 435/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Value Description
OCPP20 OCPP version 2.0
The OCPP 2.0 release of OCPP has been deprecated, so this value OCPP20 must now be used for OCPP
2.0.1 implementations in the NetworkConnectionProfile. Note that OCPP 2.0.1 does have its own Websocket
subprotocol name: ocpp2.0.1.
3.63. OperationalStatusEnumType
Enumeration
Value Description
Inoperative Charging Station is not available for charging.
Operative Charging Station is available for charging.
3.64. PhaseEnumType
Enumeration
Phase specifies how a measured value is to be interpreted. Please note that not all values of Phase are applicable to all
Measurands.
Value Description
L1 Measured on L1
L2 Measured on L2
L3 Measured on L3
N Measured on Neutral
L1-N Measured on L1 with respect to Neutral conductor
L2-N Measured on L2 with respect to Neutral conductor
L3-N Measured on L3 with respect to Neutral conductor
L1-L2 Measured between L1 and L2
L2-L3 Measured between L2 and L3
L3-L1 Measured between L3 and L1
3.65. PublishFirmwareStatusEnumType
Enumeration
Value Description
Idle
DownloadScheduled Intermediate state. Downloading of new firmware has been scheduled.
Downloading Intermediate state. Firmware is being downloaded.
Downloaded Intermediate state. New firmware has been downloaded by Charging Station.
Published The firmware has been successfully published.
DownloadFailed Failure end state. Charging Station failed to download firmware.
DownloadPaused Intermediate state. Downloading has been paused.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 436/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Value Description
InvalidChecksum Failure end state. The firmware checksum is not matching.
ChecksumVerified Intermediate state. The Firmware checksum is successfully verified.
PublishFailed Publishing the new firmware has failed.
3.66. ReadingContextEnumType
Enumeration
Value Description
Interruption.Begin Value taken at start of interruption.
Interruption.End Value taken when resuming after interruption.
Other Value for any other situations.
Sample.Clock Value taken at clock aligned interval.
Sample.Periodic Value taken as periodic sample relative to start time of transaction.
Transaction.Begin Value taken at start of transaction.
Transaction.End Value taken at end of transaction.
Trigger Value taken in response to TriggerMessageRequest.
3.67. ReasonEnumType
Enumeration
Value Description
DeAuthorized The transaction was stopped because of the authorization status in the response to a
transactionEventRequest.
EmergencyStop Emergency stop button was used.
EnergyLimitReached EV charging session reached a locally enforced maximum energy transfer limit
EVDisconnected Disconnecting of cable, vehicle moved away from inductive charge unit.
GroundFault A GroundFault has occurred
ImmediateReset A Reset(Immediate) command was received.
Local Stopped locally on request of the EV Driver at the Charging Station. This is a regular termination of a
transaction. Examples: presenting an IdToken tag, pressing a button to stop.
LocalOutOfCredit A local credit limit enforced through the Charging Station has been exceeded.
MasterPass The transaction was stopped using a token with a MasterPassGroupId.
Other Any other reason.
OvercurrentFault A larger than intended electric current has occurred
PowerLoss Complete loss of power.
PowerQuality Quality of power too low, e.g. voltage too low/high, phase imbalance, etc.
Reboot A locally initiated reset/reboot occurred. (for instance watchdog kicked in)
Remote Stopped remotely on request of the CSMS. This is a regular termination of a transaction. Examples:
termination using a smartphone app, exceeding a (non local) prepaid credit.
SOCLimitReached Electric vehicle has reported reaching a locally enforced maximum battery State of Charge (SOC)
StoppedByEV The transaction was stopped by the EV
TimeLimitReached EV charging session reached a locally enforced time limit
Timeout EV not connected within timeout
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 437/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3.68. RecurrencyKindEnumType
Enumeration
Value Description
Daily The schedule restarts every 24 hours, at the same time as in the startSchedule.
Weekly The schedule restarts every 7 days, at the same time and day-of-the-week as in the startSchedule.
3.69. RegistrationStatusEnumType
Enumeration
Value Description
Accepted Charging Station is accepted by the CSMS.
Pending CSMS is not yet ready to accept the Charging Station. CSMS may send messages to retrieve information or
prepare the Charging Station.
Rejected Charging Station is not accepted by CSMS. This may happen when the Charging Station id is not known by
CSMS.
3.70. ReportBaseEnumType
Enumeration
Value Description
ConfigurationInvent Required. A (configuration) report that lists all Components/Variables that can be set by the operator.
ory
FullInventory Required. A (full) report that lists everything except monitoring settings.
SummaryInventory Optional. A (summary) report that lists Components/Variables relating to the Charging Station’s current
charging availability, and to any existing problem conditions.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 438/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3.71. RequestStartStopStatusEnumType
Enumeration
Value Description
Accepted Command will be executed.
Rejected Command will not be executed.
3.72. ReservationUpdateStatusEnumType
Enumeration
Value Description
Expired The reservation is expired.
Removed The reservation is removed.
3.73. ReserveNowStatusEnumType
Enumeration
Status in ReserveNowResponse.
Value Description
Accepted Reservation has been made.
Faulted Reservation has not been made, because evse, connectors or specified connector are in a faulted state.
Occupied Reservation has not been made. The evse or the specified connector is occupied.
Rejected Reservation has not been made. Charging Station is not configured to accept reservations.
Unavailable Reservation has not been made, because evse, connectors or specified connector are in an unavailable
state.
3.74. ResetEnumType
Enumeration
Value Description
Immediate Immediate reset of the Charging Station.
OnIdle Delay reset until no more transactions are active.
3.75. ResetStatusEnumType
Enumeration
Result of ResetRequest.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 439/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
ResetStatusEnumType is used by: reset:ResetResponse
Value Description
Accepted Command will be executed.
Rejected Command will not be executed.
Scheduled Reset command is scheduled, Charging Station is busy with a process that cannot be interrupted at the
moment. Reset will be executed when process is finished.
3.76. SendLocalListStatusEnumType
Enumeration
Value Description
Accepted Local Authorization List successfully updated.
Failed Failed to update the Local Authorization List.
VersionMismatch Version number in the request for a differential update is less or equal then version number of current list.
3.77. SetMonitoringStatusEnumType
Enumeration
Value Description
Accepted Monitor successfully set.
UnknownComponen Component is not known.
t
UnknownVariable Variable is not known.
UnsupportedMonitor Requested monitor type is not supported.
Type
Rejected Request is rejected.
Duplicate A monitor already exists for the given type/severity combination.
3.78. SetNetworkProfileStatusEnumType
Enumeration
Value Description
Accepted Setting new data successful
Rejected Setting new data rejected
Failed Setting new data failed
3.79. SetVariableStatusEnumType
Enumeration
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 440/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Value Description
Accepted Variable successfully set.
Rejected Request is rejected.
UnknownComponen Component is not known.
t
UnknownVariable Variable is not known.
NotSupportedAttrib The AttributeType is not supported.
uteType
RebootRequired A reboot is required.
3.80. TransactionEventEnumType
Enumeration
Value Description
Ended Last event of a transaction
Started First event of a transaction.
Updated Transaction event in between 'Started' and 'Ended'.
3.81. TriggerMessageStatusEnumType
Enumeration
Status in TriggerMessageResponse.
Value Description
Accepted Requested message will be sent.
Rejected Requested message will not be sent.
NotImplemented Requested message cannot be sent because it is either not implemented or unknown.
3.82. TriggerReasonEnumType
Enumeration
Value Description
Authorized Charging is authorized, by any means. Might be an RFID, or other authorization means.
CablePluggedIn Cable is plugged in and EVDetected.
ChargingRateChang Rate of charging changed by more than LimitChangeSignificance.
ed
ChargingStateChang Charging State changed.
ed
Deauthorized The transaction was stopped because of the authorization status in the response to a
transactionEventRequest.
EnergyLimitReached Maximum energy of charging reached. For example: in a pre-paid charging solution
EVCommunicationL Communication with EV lost, for example: cable disconnected.
ost
EVConnectTimeout EV not connected before the connection is timed out.
MeterValueClock Needed to send a clock aligned meter value
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 441/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
Value Description
MeterValuePeriodic Needed to send a periodic meter value
TimeLimitReached Maximum time of charging reached. For example: in a pre-paid charging solution
Trigger Requested by the CSMS via a TriggerMessageRequest.
UnlockCommand CSMS sent an Unlock Connector command.
StopAuthorized An EV Driver has been authorized to stop charging. For example: By swiping an RFID card.
EVDeparted EV departed. For example: When a departing EV triggers a parking bay detector.
EVDetected EV detected. For example: When an arriving EV triggers a parking bay detector.
RemoteStop A RequestStopTransactionRequest has been sent.
RemoteStart A RequestStartTransactionRequest has been sent.
AbnormalCondition An Abnormal Error or Fault Condition has occurred.
SignedDataReceived Signed data is received from the energy meter.
ResetCommand CSMS sent a Reset Charging Station command.
3.83. UnlockStatusEnumType
Enumeration
Value Description
Unlocked Connector has successfully been unlocked.
UnlockFailed Failed to unlock the connector.
OngoingAuthorizedT The connector is not unlocked, because there is still an authorized transaction ongoing.
ransaction
UnknownConnector The specified connector is not known by the Charging Station.
3.84. UnpublishFirmwareStatusEnumType
Enumeration
Value Description
DownloadOngoing Intermediate state. Firmware is being downloaded.
NoFirmware There is no published file.
Unpublished Successful end state. Firmware file no longer being published.
3.85. UpdateEnumType
Enumeration
Value Description
Differential Indicates that the current Local Authorization List must be updated with the values in this message.
Full Indicates that the current Local Authorization List must be replaced by the values in this message.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 442/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Messages, Datatypes & Enumerations
3.86. UpdateFirmwareStatusEnumType
Enumeration
Value Description
Accepted Accepted this firmware update request. This does not mean the firmware update is successful, the Charging
Station will now start the firmware update process.
Rejected Firmware update request rejected.
AcceptedCanceled Accepted this firmware update request, but in doing this has canceled an ongoing firmware update.
InvalidCertificate The certificate is invalid.
RevokedCertificate Failure end state. The Firmware Signing certificate has been revoked.
3.87. UploadLogStatusEnumType
Enumeration
Value Description
BadMessage A badly formatted packet or other protocol incompatibility was detected.
Idle The Charging Station is not uploading a log file. Idle SHALL only be used when the message was triggered by
a TriggerMessageRequest.
NotSupportedOperat The server does not support the operation
ion
PermissionDenied Insufficient permissions to perform the operation.
Uploaded File has been uploaded successfully.
UploadFailure Failed to upload the requested file.
Uploading File is being uploaded.
AcceptedCanceled On-going log upload is canceled and new request to upload log has been accepted.
3.88. VPNEnumType
Enumeration
Value Description
IKEv2 IKEv2 VPN
IPSec IPSec VPN
L2TP L2TP VPN
PPTP PPTP VPN
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 443/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 444/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
1. Controller Components
This section gives an overview of the 'Controller' components, which are introduced in OCPP 2.0. A controller component can be
recognized by the 'Ctrlr' suffix and is responsible for the configuration of a certain functionality. Most of the 'Referenced'
components that are described in this document, are 'Controller' components.
The table below contains a summary of all Controller components, for more details, please refer to Part 2 - Appendices.
Every Controller component has an 'Enabled' variable. This variable can be used to enable/disable a certain functionality. Any data
in the charging station is not part of the controller component, so when disabling a functionality, any relating data stored in the
Charging Station will not be changed or removed.
For example: if ReservationCtrlr is disabled when there is an active reservation, the EVSE will become available, but the reservation
entries will still be there – they are just not used. If afterwards ReservationCtrlr is enabled again, the reservation entries will become
active again as long as they have not expired and no transaction is in progress. If a transaction has started in the mean time, that
transaction remains active. The reservation is then considered expired.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 445/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
These Configuration Variables replace the Configuration Keys from OCPP 1.x
The list is split by functionality: General, Security, Authorization, Local Authorization List Management related, Authorization Cache,
Transaction, Metering, Reservation, Smart Charging, Tariff & Cost, Diagnostics, Display Message and Charging Infrastructure
related.
A required Configuration Variable mentioned under a particular function block only has to be supported by the Charging Station if it
supports that functional block.
Please see chapter 4 in "Part 1 - Architecture & Topology" about the addressing of Components and Variables in the Device Model.
• All variables that are writable SHALL have the VariableAttribute field: persistence = true, and SHALL thus be stored in a
persistent way.
• Any fields not defined SHALL be left empty.
• Any field marked with a * (Asterisk) can be of any possible value.
• When the AttributeType is NOT given, the CSMS and Charging Station SHALL assume the AttributeType to be Actual.
See 'OCPP 2.0 Part 4 - JSON over Websockets implementation guide' for a number of Configuration Variables that
NOTE
are specific to controlling the JSON/Websocket behavior.
2.1. General
NOTE WebSocket-related variables are described in "OCPP-2.0.1 Part 4 JSON over WebSockets".
2.1.1. ActiveNetworkProfile
Required no
Component componentName OCPPCommCtrlr
Variable variableName ActiveNetworkProfile
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Indicates the configuration profile the station uses at that moment to connect to the network. This configuration
variable only has to be implemented when NetworkConnectionProfile is implemented.
2.1.2. AllowNewSessionsPendingFirmwareUpdate
Required no
Component componentName ChargingStation
Variable variableName AllowNewSessionsPendingFirmwareUpdate
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description Indicates whether new sessions can be started on EVSEs, while Charging Station is waiting for all EVSEs to
become Available in order to start a pending firmware update.
When a firmware update is waiting to be installed and this variable exists and has the value true, then, the
Charging Station will not set free EVSEs to Unavailable, pending the update. This means that it may take longer
until there is a point in time when all EVSEs of the Charging Station are free and it can perform the firmware
update.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 446/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.1.3. DefaultMessageTimeout
Required yes
Component componentName OCPPCommCtrlr
Variable variableName MessageTimeout
variableInstance Default
variableAttributes mutability ReadOnly
variableCharacteristics unit s
dataType integer
Description The purpose of the message timeout is to be able to consider a request message as not sent and continue with
other tasks when the message did not arrive due to communication errors or software failure. The message
timeout setting in a Charging Station can be configured in the messageTimeout field in the
NetworkConnectionProfile.
2.1.4. FileTransferProtocols
Required yes
Component componentName OCPPCommCtrlr
Variable variableName FileTransferProtocols
variableAttributes mutability ReadOnly
variableCharacteristics dataType MemberList
Description List of supported file transfer protocols.
2.1.5. HeartbeatInterval
Required no
Component componentName OCPPCommCtrlr
Variable variableName HeartbeatInterval
variableAttributes mutability ReadWrite
variableCharacteristics unit s
dataType integer
minLimit 1
Description Interval of inactivity (no OCPP exchanges) with CSMS after which the Charging Station should send
HeartbeatRequest.
2.1.6. NetworkConfigurationPriority
Required yes
Component componentName OCPPCommCtrlr
Variable variableName NetworkConfigurationPriority
variableAttributes attributeType Actual
mutability ReadWrite
variableCharacteristics dataType SequenceList
valueList List of possible values
Description A comma separated ordered list of the priority of the possible Network Connection Profiles. The list of possible
available profile slots for the network configuration profiles SHALL be reported, via the valueList characteristic of
this Variable.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 447/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.1.7. NetworkProfileConnectionAttempts
Required yes
Component componentName OCPPCommCtrlr
Variable variableName NetworkProfileConnectionAttempts
variableAttributes mutability ReadWrite
variableCharacteristics dataType integer
Description Specifies the number of connection attempts the Charging Station executes before switching to a different profile.
2.1.8. OfflineThreshold
Required yes
Component componentName OCPPCommCtrlr
Variable variableName OfflineThreshold
variableAttributes mutability ReadWrite
variableCharacteristics unit s
dataType integer
Description When the offline period of a Charging Station exceeds the OfflineThreshold it is recommended to send a
StatusNotificationRequest for all its Connectors when the Charging Station is back online.
2.1.9. QueueAllMessages
Required no
Component componentName OCPPCommCtrlr
Variable variableName QueueAllMessages
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description When this variable is set to true, the Charging Station will queue all message until they are delivered to the CSMS.
When set to false the Charging Station will only queue Transaction related messages as required in: E04.FR.01.
and other requirements
When this variable is the to true, and the Charging Station is running low on memory, the Charging Station SHALL
drop TransactionEvent messages last, and when dropping measurements/meter data, the Charging Station
SHALL drop intermediate values first (1st value, 3th value, 5th etc), not start dropping values from the beginning or
end of the measurements/meter data.
Default = false
2.1.10. MessageAttemptsTransactionEvent
Required yes
Component componentName OCPPCommCtrlr
Variable variableName MessageAttempts
variableInstance TransactionEvent
variableAttributes mutability ReadWrite
variableCharacteristics dataType integer
Description How often the Charging Station should try to submit a TransactionEventRequest message when the CSMS fails to
process it.
2.1.11. MessageAttemptIntervalTransactionEvent
Required yes
Component componentName OCPPCommCtrlr
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 448/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.1.12. UnlockOnEVSideDisconnect
Required yes
Component componentName OCPPCommCtrlr
Variable variableName UnlockOnEVSideDisconnect
variableAttributes mutability ReadWrite/ReadOnly
variableCharacteristics dataType boolean
Description When set to true, the Charging Station SHALL unlock the cable on the Charging Station side when the cable is
unplugged at the EV. For an EVSE with only fixed cables, the mutability SHALL be ReadOnly and the actual value
SHALL be false. For a charging station with fixed cables and sockets, the variable is only applicable to the
sockets.
2.1.13. WebSocketPingInterval
This configuration variable is described in "OCPP-2.0.1 Part 4 JSON over WebSockets".
2.1.14. ResetRetries
Required yes
Component componentName OCPPCommCtrlr
Variable variableName ResetRetries
variableAttributes mutability ReadWrite
variableCharacteristics dataType integer
Description Number of times to retry a reset of the Charging Station when a reset was unsuccessful.
2.1.15. MessageFieldLength
Required no
Component componentName OCPPCommCtrlr
Variable variableName FieldLength
variableInstance <message>.<field>
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description This variable is used to report the length of <field> in <message> when it is larger than the length that is defined in
the standard OCPP message schema.
2.1.16. ItemsPerMessageGetReport
Required yes
Component componentName DeviceDataCtrlr
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 449/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.1.17. ItemsPerMessageGetVariables
Required yes
Component componentName DeviceDataCtrlr
Variable variableName ItemsPerMessage
variableInstance GetVariables
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Maximum number of GetVariableData objects in GetVariablesRequest.
2.1.18. BytesPerMessageGetReport
Required yes
Component componentName DeviceDataCtrlr
Variable variableName BytesPerMessage
variableInstance GetReport
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Message Size (in bytes) - puts constraint on getReportRequest or GetMonitoringReportRequest message size.
2.1.19. BytesPerMessageGetVariables
Required yes
Component componentName DeviceDataCtrlr
Variable variableName BytesPerMessage
variableInstance GetVariables
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Message Size (in bytes) - puts constraint on GetVariablesRequest message size.
2.1.20. ConfigurationValueSize
Required no
Component componentName DeviceDataCtrlr
Variable variableName ConfigurationValueSize
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
maxLimit 1000
Description This Configuration Variable can be used to limit the following fields: SetVariableData.attributeValue and
VariableCharacteristics.valueList. The max size of these values will always remain equal.
2.1.21. ReportingValueSize
Required no
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 450/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.1.22. ItemsPerMessageSetVariables
Required yes
Component componentName DeviceDataCtrlr
Variable variableName ItemsPerMessage
variableInstance SetVariables
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Maximum number of SetVariableData objects in SetVariablesRequest.
2.1.23. BytesPerMessageSetVariables
Required yes
Component componentName DeviceDataCtrlr
Variable variableName BytesPerMessage
variableInstance SetVariables
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Message Size (in bytes) - puts constraint on SetVariablesRequest message size.
2.1.24. DateTime
Required yes
Component componentName ClockCtrlr
Variable variableName DateTime
variableAttributes mutability ReadOnly
variableCharacteristics dataType DateTime
Description Contains the current date and time.
2.1.25. NtpSource
Required no
Component componentName ClockCtrlr
Variable variableName NtpSource
variableAttributes mutability ReadWrite
variableCharacteristics dataType OptionList
valuesList DHCP, manual
Description When an NTP client is implemented, this variable can be used to configure the client: Use the NTP server provided
via DHCP, or use the manually configured NTP server.
2.1.26. NtpServerUri
Required no
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 451/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
Multiple NTP servers can be configured. These can be back-up NTP servers. If the NTP client supports it, it can
also connect to multiple NTP servers simultaneous to get a more reliable time source.
2.1.27. TimeOffset
Required no
Component componentName ClockCtrlr
Variable variableName TimeOffset
variableAttributes mutability ReadWrite
variableCharacteristics dataType string
Description Configured current local time offset in the format: "+01:00", "-02:00" etc.
When a TimeOffset is used, it is advised not to implement: TimeZone. If a Charging Station has implemented both
TimeOffset and TimeZone it is RECOMMENDED to not use both at the same time.
2.1.28. NextTimeOffsetTransitionDateTime
Required no
Component componentName ClockCtrlr
Variable variableName NextTimeOffsetTransitionDateTime
variableAttributes mutability ReadWrite
variableCharacteristics dataType DateTime
Description Date time of the next time offset transition. On this date time, the clock displayed to the EV driver will be given the
new offset as configured via 'TimeOffsetNextTransition'.
This can be used to manually configure the next start or end of a daylight saving time period.
2.1.29. TimeOffsetNextTransition
Required no
Component componentName ClockCtrlr
Variable variableName TimeOffset
variableInstance NextTransition
variableAttributes mutability ReadWrite
variableCharacteristics dataType string
Description Next local time offset in the format: "+01:00", "-02:00" etc.
New offset that will be set on the next time offset transition as configured via
'NextTimeOffsetTransitionDateTime'.
This can be used to manually configure the offset for the start or end of the daylight saving time period.
2.1.30. TimeSource
Required yes
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 452/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
By providing a list of possible sources, the CSO can configure fallback sources.
Example:
"NTP,Heartbeat" means, use NTP, but when none of the NTP servers responses, use time synchronization via
Heartbeat.
NOTE: RadioTimeTransmitter: At various locations around the globe, low-frequency radio transmitters provide
accurate local time information e.g. DCF77 in Germany, MSF in the United Kingdom, JJY in Japan etc. Such a
radio time clock can be used as a time source for a Charging Station. The Charging Station shall convert the
broadcasted time to UTC. For this TimeZone, TimeOffset, 'NextTimeOffsetTransitionDateTime' and
'TimeOffsetNextTransition' can be used.
2.1.31. TimeZone
Required no
Component componentName ClockCtrlr
Variable variableName TimeZone
variableAttributes mutability ReadWrite
variableCharacteristics dataType string
Description Configured current local time zone in the format: "Europe/Oslo", "Asia/Singapore" etc.
When a time zone is used, it is advised not to implement: TimeOffset. If a Charging Station has implemented
both TimeOffset and TimeZone it is RECOMMENDED to not use both at the same time.
2.1.32. TimeAdjustmentReportingThreshold
Required no
Component componentName ClockCtrlr
Variable variableName TimeAdjustmentReportingThreshold
variableAttributes mutability ReadWrite
variableCharacteristics unit s
dataType integer
Description When the clock time is adjusted forwards or backwards for more then TimeAdjustmentReportingThreshold
number of seconds, a SecurityEventNotification( "SettingSystemTime" ) is sent by the charging station. A
reasonable value is 20 seconds.
2.1.33. CustomImplementationEnabled
Required no
Component componentName CustomizationCtrlr
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 453/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
It is recommended to first check if the custom behavior is able to be implemented using the device model,
otherwise DataTransfer message(s) and/or CustomData fields can be used.
2.2.1. BasicAuthPassword
The basic authentication password is used for HTTP Basic Authentication. The configuration value is write-only, so that it cannot be
accidentally stored in plaintext by the CSMS when it reads out all configuration values.
Required no
Component componentName SecurityCtrlr
Variable variableName BasicAuthPassword
variableAttributes mutability WriteOnly
variableCharacteristics dataType string
maxLimit 40 (Max length of the BasicAuthPassword)
Description The basic authentication password is used for HTTP Basic Authentication. The password SHALL be a randomly
chosen passwordString with a sufficiently high entropy, consisting of minimum 16 and maximum 40 characters
(alpha-numeric characters and the special characters allowed by passwordString). The password SHALL be sent
as a UTF-8 encoded string (NOT encoded into octet string or base64). This configuration variable is write-only, so
that it cannot be accidentally stored in plaintext by the CSMS when it reads out all configuration variables.
This configuration variable is required unless only "security profile 3 - TLS with client side certificates" is
implemented.
2.2.2. Identity
Required no
Component componentName SecurityCtrlr
Variable variableName Identity
variableAttributes mutability ReadOnly or ReadWrite
variableCharacteristics dataType string
maxLimit 48 (Charging Station Identity)
Description The Charging Station identity. identity is an identifierString, however because this value is also used as the basic
authentication username, the colon character ':' SHALL not be used.
Maximum length was chosen to ensure compatibility with EVSE ID from [EMI3-BO] "Part 2: business objects".
2.2.3. OrganizationName
Required yes
Component componentName SecurityCtrlr
Variable variableName OrganizationName
variableAttributes mutability ReadWrite
variableCharacteristics dataType string
Description This configuration variable is used to set the organization name of the CSO or an organization trusted by the CSO.
It is used to set the O (organizationName) RDN in the subject field of the client certificate. See also A00.FR.509.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 454/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.2.4. CertificateEntries
Required yes
Component componentName SecurityCtrlr
Variable variableName CertificateEntries
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
maxLimit Maximum number of Certificates installed at any
time.
Description Amount of Certificates currently installed on the Charging Station.
2.2.5. SecurityProfile
Required yes
Component componentName SecurityCtrlr
Variable variableName SecurityProfile
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description This configuration variable is used to report the security profile used by the Charging Station.
2.2.6. AdditionalRootCertificateCheck
Required no
Component componentName SecurityCtrlr
Variable variableName AdditionalRootCertificateCheck
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description When set to true, only one certificate (plus a temporarily fallback certificate) of certificateType
CSMSRootCertificate is allowed to be installed at a time. When installing a new CSMS Root certificate, the new
certificate SHALL replace the old one AND the new CSMS Root Certificate MUST be signed by the old CSMS Root
Certificate it is replacing.
This configuration variable is required unless only "security profile 1 - Unsecured Transport with Basic
Authentication" is implemented. Please note that security profile 1 SHOULD only be used in trusted networks.
Note: When using this additional security mechanism please be aware that the Charging Station needs to perform a
full certificate chain verification when the new CSMS Root certificate is being installed. However, once the old CSMS
Root certificate is set as the fallback certificate, the Charging Station needs to perform a partial certificate chain
verification when verifying the server certificate during the TLS handshake. Otherwise the verification will fail once
the old CSMS Root (fallback) certificate is either expired or removed.
Note 2: The statement that the variable is required, means that the configuration variable must be present, but does
NOT indicate that the feature must be implemented. This is an optional feature. By setting the value to false, the
Charging Station indicates that it does not support this feature, whereas true means that it does support the feature.
2.2.7. MaxCertificateChainSize
Required no
Component componentName SecurityCtrlr
Variable variableName MaxCertificateChainSize
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
maxLimit 10000
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 455/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
Description This configuration variable can be used to limit the size of the 'certificateChain' field from the
CertificateSignedRequest PDU. This value SHOULD NOT be set too small. The smaller this value, the less security
architectures the Charging Station will support. It is RECOMMENDED to set at least a size of 5600. This will allow
the Charging Station to support most security architectures.
2.2.8. CertSigningWaitMinimum
Required no
Component componentName SecurityCtrlr
Variable variableName CertSigningWaitMinimum
variableAttributes mutability ReadWrite
variableCharacteristics unit s
dataType integer
Description This configuration variable defines how long the Charging Station has to wait before generating another CSR, in
the case the CSMS accepts the SignCertificateRequest, but never returns the signed certificate back. This value
will be doubled after every attempt. The amount of attempts is configured at CertSigningRepeatTimes If the
certificate signing process is slow, this setting allows the CSMS to tell the Charging Station to allow more time.
2.2.9. CertSigningRepeatTimes
Required no
Component componentName SecurityCtrlr
Variable variableName CertSigningRepeatTimes
variableAttributes mutability ReadWrite
variableCharacteristics dataType integer
Description This variable can be used to configure the amount of times the Charging Station SHALL double the previous back-
off time, starting with the number of seconds configured at CertSigningWaitMinimum, every time the back-off time
expires without having received the CertificateSignedRequest containing the from the CSR generated signed
certificate. When the maximum number of increments is reached, the Charging Station SHALL stop resending the
SignCertificateRequest, until it is requested by the CSMS using a TriggerMessageRequest.
2.3.1. AuthEnabled
Required no
Component componentName AuthCtrlr
Variable variableName Enabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If set to false, then no authorization is done before starting a transaction or when reading an idToken. If an
idToken was provided, then it will be put in the idToken field of the TransactionEventRequest. If no idToken was
provided, then idToken in TransactionEventRequest will be left empty and type is set to NoAuthorization.
2.3.2. AdditionalInfoItemsPerMessage
Required no
Component componentName AuthCtrlr
Variable variableName AdditionalInfoItemsPerMessage
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Maximum number of AdditionalInfo items that can be sent in one message. This configuration variable only has to
be implemented when AdditionalInfo is implemented.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 456/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.3.3. OfflineTxForUnknownIdEnabled
Required no
Component componentName AuthCtrlr
Variable variableName OfflineTxForUnknownIdEnabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this key exists, the Charging Station supports Unknown Offline Authorization. If this key reports a value of true,
Unknown Offline Authorization is enabled.
2.3.4. AuthorizeRemoteStart
Required yes
Component componentName AuthCtrlr
Variable variableName AuthorizeRemoteStart
variableAttributes mutability ReadOnly or ReadWrite. Choice is up to Charging
Station implementation.
variableCharacteristics dataType boolean
Description Whether a remote request to start a transaction in the form of RequestStartTransactionRequest message should
be authorized beforehand like a local action to start a transaction.
2.3.5. LocalAuthorizeOffline
Required yes
Component componentName AuthCtrlr
Variable variableName LocalAuthorizeOffline
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description Whether the Charging Station, when Offline, will start a transaction for locally-authorized identifiers.
2.3.6. LocalPreAuthorize
Required yes
Component componentName AuthCtrlr
Variable variableName LocalPreAuthorize
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description Whether the Charging Station, when online, will start a transaction for locally-authorized identifiers without waiting
for or requesting an AuthorizeResponse from the CSMS.
2.3.7. MasterPassGroupId
Required no
Component componentName AuthCtrlr
Variable variableName MasterPassGroupId
variableAttributes mutability ReadWrite
variableCharacteristics dataType string
maxLimit 36 (The maximum string length of
MasterPassGroupId)
Description IdTokens that have this id as groupId belong to the Master Pass Group. Meaning they can stop any ongoing
transaction, but cannot start transactions. This can, for example, be used by law enforcement personal to stop any
ongoing transaction when an EV has to be towed away.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 457/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.3.8. DisableRemoteAuthorization
Required no
Component componentName AuthCtrlr
Variable variableName DisableRemoteAuthorization
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description When set to true this instructs the Charging Station to not issue any AuthorizationRequests, but only use
Authorization Cache and Local Authorization List to determine validity of idTokens.
2.4.1. AuthCacheEnabled
NOTE When the value of this variable is changed, the content of the authorization cache should not be altered.
Required no
Component componentName AuthCacheCtrlr
Variable variableName Enabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this variable exists and reports a value of true, Authorization Cache is enabled.
2.4.2. AuthCacheAvailable
Required no
Component componentName AuthCacheCtrlr
Variable variableName Available
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description If this variable exists and reports a value of true, Authorization Cache is supported, but not necessarily enabled.
2.4.3. AuthCacheLifeTime
Required no
Component componentName AuthCacheCtrlr
Variable variableName LifeTime
variableAttributes mutability ReadWrite
variableCharacteristics unit s
dataType integer
Description Indicates how long it takes until a token expires in the authorization cache since it is last used.
2.4.4. AuthCacheStorage
Required no
Component componentName AuthCacheCtrlr
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 458/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.4.5. AuthCachePolicy
Required no
Component componentName AuthCacheCtrlr
Variable variableName Policy
variableAttributes mutability ReadWrite
variableCharacteristics dataType OptionList
valuesList LRU, LFU, FIFO, CUSTOM
Description Cache Entry Replacement Policy: least recently used, least frequently used, first in first out, other custom
mechanism.
2.4.6. AuthCacheDisablePostAuthorize
Required no
Component componentName AuthCacheCtrlr
Variable variableName DisablePostAuthorize
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description When set to true this variable disables the behavior to request authorization for an idToken that is stored in the
cache with a status other than Accepted, as stated in C10.FR.03 and C12.FR.05.
2.5.1. LocalAuthListEnabled
Required no
Component componentName LocalAuthListCtrlr
Variable variableName Enabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this variable exists and reports a value of true, Local Authorization List is enabled.
2.5.2. LocalAuthListEntries
Required when LocalAuthListAvailable is true
Component componentName LocalAuthListCtrlr
Variable variableName Entries
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
maxLimit The maximum number of IdTokens that can be stored
in the Local Authorization List.
Description Amount of IdTokens currently in the Local Authorization List.
The maxLimit of this variable SHALL be provided to report the maximum number of IdTokens that can be stored in
the Local Authorization List.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 459/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.5.3. LocalAuthListAvailable
Required no
Component componentName LocalAuthListCtrlr
Variable variableName Available
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description If this variable exists and reports a value of true, Local Authorization List is supported.
2.5.4. ItemsPerMessageSendLocalList
Required when LocalAuthListAvailable is true
Component componentName LocalAuthListCtrlr
Variable variableName ItemsPerMessage
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
2.5.5. BytesPerMessageSendLocalList
Required when LocalAuthListAvailable is true
Component componentName LocalAuthListCtrlr
Variable variableName BytesPerMessage
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
2.5.6. LocalAuthListStorage
Required no
Component componentName LocalAuthListCtrlr
Variable variableName Storage
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
maxLimit The maximum number of bytes
Description Indicates the number of bytes currently used by the Local Authorization List. MaxLimit indicates the maximum
number of bytes that can be used by the Local Authorization List.
2.5.7. LocalAuthListDisablePostAuthorize
Required no
Component componentName LocalAuthListCtrlr
Variable variableName DisablePostAuthorize
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description When set to true this variable disables the behavior to request authorization for an idToken that is stored in the
local authorization list with a status other than Accepted, as stated in C14.FR.03.
2.5.8. LocalAuthListSupportsExpiryDateTime
Required no
Component componentName LocalAuthListCtrlr
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 460/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.6.1. EVConnectionTimeOut
Required yes
Component componentName TxCtrlr
Variable variableName EVConnectionTimeOut
variableAttributes mutability ReadWrite
variableCharacteristics unit s
dataType integer
Description Interval from between "starting" of a transaction until incipient transaction is automatically canceled, due to failure
of EV driver to (correctly) insert the charging cable connector(s) into the appropriate socket(s). The Charging
Station SHALL go back to the original state, probably: 'Available'. "Starting" might be the swiping of the RFID,
pressing a start button, a RequestStartTransactionRequest being received etc.
2.6.2. StopTxOnEVSideDisconnect
Required yes
Component componentName TxCtrlr
Variable variableName StopTxOnEVSideDisconnect
variableAttributes mutability ReadWrite or ReadOnly, depending on Charging
Station implementation.
variableCharacteristics dataType boolean
Description When set to true, the Charging Station SHALL deauthorize the transaction when the cable is unplugged from the
EV.
2.6.3. TxBeforeAcceptedEnabled
Required no
Component componentName TxCtrlr
Variable variableName TxBeforeAcceptedEnabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description With this configuration variable the Charging Station can be configured to allow charging before having received a
BootNotificationResponse with RegistrationStatus: Accepted. See: Transactions before being accepted by a
CSMS.
2.6.4. TxStartPoint
Required yes
Component componentName TxCtrlr
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 461/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.6.5. TxStopPoint
Required yes
Component componentName TxCtrlr
Variable variableName TxStopPoint
variableAttributes mutability ReadOnly or ReadWrite. Choice is up to Charging
Station implementation.
variableCharacteristics dataType MemberList
valueList See TxStartStopPoint values for allowed values. It is
not required to implement all possible values.
Description Defines when the Charging Station ends a transaction: last transactioneventRequest: eventType = Ended.
When any event in the given list is no longer valid, the Charging Station SHALL end the transaction.
The Charging Station SHALL only send the Ended event once for every transaction.
Value Description
ParkingBayOccupancy An object (probably an EV) is detected in the parking/charging bay.
EVConnected Both ends of the Charging Cable have been connected (if this can
be detected, else detection of a cable being plugged into the
socket), or for wireless charging: initial communication between
EVSE and EV is established.
Authorized Driver or EV has been authorized, this can also be some form of
anonymous authorization like a start button.
PowerPathClosed All preconditions for charging have been met, power can flow. This
event is the logical AND of EVConnected and Authorized and
should be used if a transaction is supposed to start when EV is
connected and authorized. Despite its name, this event is not
related to the state of the power relay.
Note: There may be situations where PowerPathClosed does not
imply that charging starts at that moment, e.g. because of delayed
charging or a battery that is too hot.
EnergyTransfer Energy is being transferred between EV and EVSE.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 462/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
Value Description
DataSigned The moment when the signed meter value is received from the
fiscal meter, that is used in the TransactionEventRequest with
context = Transaction.Begin and triggerReason =
SignedDataReceived. This TxStartPoint might be applicable
when legislation exists that only allows a billable transaction to
start when the first signed meter value has been received.
The values are the same as for TxStartPoint, but in this case the meaning is different, since it refers to the ending of the event,
rather than the start. For use with TxStopPoint each value should be interpreted as if it had "Not" prefixed to it. See the following
table:
Value Description
ParkingBayOccupancy An object (probably an EV) is no longer detected in the
parking/charging bay.
EVConnected One or both ends of the Charging Cable have been disconnected (if
this can be detected, else detection of a cable being unplugged
from the socket), or for wireless charging: communication between
EVSE and EV is lost.
Authorized Driver or EV is no longer authorized, this can also be some form of
anonymous authorization like a start button. The end of
authorization will cause the Charging Station to stop the energy
transfer, after which the TransactionEventRequest with eventType
= Ended will be transmitted.
PowerPathClosed All preconditions for charging are no longer met. This event is the
logical OR of EVConnected and Authorized and should be used
if a transaction is supposed to end when EV is disconnected and/or
deauthorized. This will cause the Charging Station to stop the
energy transfer, after which the TransactionEventRequest with
eventType = Ended will be transmitted. It is exactly the same as
having the values EVConnected, Authorized in TxStopPoint.
Despite its name, this event is not related to the state of the power
relay.
EnergyTransfer Energy is not being transferred between EV and EVSE.
This is not recommended to use as a TxStopPoint, because it
will stop the transaction as soon as EV or EVSE (temporarily)
suspend the charging.
DataSigned This condition has no meaning as a TxStopPoint and should not
be used as such.
2.6.7. MaxEnergyOnInvalidId
Required no
Component componentName TxCtrlr
Variable variableName MaxEnergyOnInvalidId
variableAttributes mutability ReadWrite
variableCharacteristics unit Wh
dataType integer
Description Maximum amount of energy in Wh delivered when an identifier is deauthorized by the CSMS after start of a
transaction.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 463/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.6.8. StopTxOnInvalidId
Required yes
Component componentName TxCtrlr
Variable variableName StopTxOnInvalidId
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description whether the Charging Station will deauthorize an ongoing transaction when it receives a non- Accepted
authorization status in TransactionEventResponse for this transaction.
2.7.1. SampledDataEnabled
Required no
Component componentName SampledDataCtrlr
Variable variableName Enabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this variable reports a value of true, Sampled Data is enabled.
2.7.2. SampledDataAvailable
Required no
Component componentName SampledDataCtrlr
Variable variableName Available
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description If this variable reports a value of true, Sampled Data is supported.
2.7.3. SampledDataSignReadings
Required no
Component componentName SampledDataCtrlr
Variable variableName SignReadings
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If set to true, the Charging Station SHALL include signed meter values in the TransactionEventRequest to the
CSMS. Some Charging Stations might only be able to sign Transaction.Begin and Transaction.End meter
values. When a Charging Station does not support signed meter values it SHALL NOT report this variable.
2.7.4. SampledDataTxEndedMeasurands
Required yes
Component componentName SampledDataCtrlr
Variable variableName TxEndedMeasurands
variableAttributes mutability ReadWrite
variableCharacteristics dataType MemberList
maxLimit The maximum length of the CSV formatted string, to
be defined by the implementer.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 464/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
When left empty, no sampled measurands SHALL be put into the TransactionEventRequest (eventType = Ended).
2.7.5. SampledDataTxEndedInterval
Required yes
Component componentName SampledDataCtrlr
Variable variableName TxEndedInterval
variableAttributes mutability ReadWrite
variableCharacteristics unit s
dataType integer
Description Interval between sampling of metering (or other) data, intended to be transmitted in the TransactionEventRequest
(eventType = Ended) message. For transaction data (evseId>0), samples are acquired and transmitted only in the
TransactionEventRequest (eventType = Ended) message.
A value of "0" (numeric zero), by convention, is to be interpreted to mean that only the values taken at the start and
end of a transaction SHALL be transmitted (no intermediate values). A TxEndedInterval = 0 is recommended, since
other values may result in a lot of data to be transmitted in the TransactionEventRequest (eventType = Ended)
message.
2.7.6. SampledDataTxStartedMeasurands
Required yes
Component componentName SampledDataCtrlr
Variable variableName TxStartedMeasurands
variableAttributes mutability ReadWrite
variableCharacteristics dataType MemberList
maxLimit The maximum length of the CSV formatted string, to
be defined by the implementer.
Description Sampled measurand(s) to be taken at the start of any transaction to be included in the meterValues field of the
first TransactionEventRequest message send at the start of a transaction (eventType = Started).
The Charging Station reports the list of supported Measurands in VariableCharacteristicsType.valuesList of this
variable. This way the CSMS knows which Measurands it can put in the SampledDataTxStartedMeasurands.
2.7.7. SampledDataTxUpdatedMeasurands
Required yes
Component componentName SampledDataCtrlr
Variable variableName TxUpdatedMeasurands
variableAttributes mutability ReadWrite
variableCharacteristics dataType MemberList
maxLimit The maximum length of the CSV formatted string, to
be defined by the implementer.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 465/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
Description Sampled measurands to be included in the meterValues element of every TransactionEventRequest (eventType =
Updated), every SampledDataTxUpdatedInterval seconds from the start of the transaction.
The Charging Station reports the list of supported Measurands in VariableCharacteristicsType.valuesList of this
variable. This way the CSMS knows which Measurands it can put in the SampledDataTxUpdatedMeasurands.
2.7.8. SampledDataTxUpdatedInterval
Required yes
Component component Name SampledDataCtrlr
Variable variableName TxUpdatedInterval
variableAttributes mutability ReadWrite
variableCharacteristics unit s
dataType integer
Description Interval between sampling of metering (or other) data, intended to be transmitted via TransactionEventRequest
(eventType = Updated) messages. For transaction data (evseId>0), samples are acquired and transmitted
periodically at this interval from the start of the charging transaction.
A value of "0" (numeric zero), by convention, is to be interpreted to mean that no sampled data should be
transmitted during the transaction.
2.7.9. AlignedDataEnabled
Required no
Component componentName AlignedDataCtrlr
Variable variableName Enabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this variable reports a value of true, Aligned Data is enabled.
2.7.10. AlignedDataAvailable
Required no
Component componentName AlignedDataCtrlr
Variable variableName Available
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description If this variable reports a value of true, Aligned Data is supported.
2.7.11. AlignedDataMeasurands
Required yes
Component componentName AlignedDataCtrlr
Variable variableName Measurands
variableAttributes mutability ReadWrite
variableCharacteristics dataType MemberList
maxLimit The maximum length of the CSV formatted string, to
be defined by the implementer.
Description Clock-aligned measurand(s) to be included in MeterValuesRequest or TransactionEventRequest, every
AlignedDataInterval seconds. For all the allowed values see: Measurand.
The Charging Station reports the list of supported Measurands in VariableCharacteristicsType.valuesList of this
variable. This way the CSMS knows which Measurands it can put in the AlignedDataMeasurands.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 466/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.7.12. AlignedDataInterval
Required yes
Component componentName AlignedDataCtrlr
Variable variableName Interval
variableAttributes mutability ReadWrite
variableCharacteristics unit s
dataType integer
Description Size (in seconds) of the clock-aligned data interval, intended to be transmitted in the MeterValuesRequest or
TransactionEventRequest message. This is the size (in seconds) of the set of evenly spaced aggregation intervals
per day, starting at 00:00:00 (midnight). For example, a value of 900 (15 minutes) indicates that every day should
be broken into 96 15-minute intervals.
When clock aligned data is being transmitted, the interval in question is identified by the start time and (optional)
duration interval value, represented according to the ISO8601 standard.
A value of "0" (numeric zero), by convention, is to be interpreted to mean that no clock-aligned data should be
transmitted.
2.7.13. AlignedDataSendDuringIdle
Required no
Component componentName AlignedDataCtrlr
evse *
Variable variableName SendDuringIdle
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If set to true, the Charging Station SHALL NOT send clock aligned meter values when a transaction is ongoing.
When an EVSE is specified, it SHALL stop sending the clock aligned meter values for this EVSE when it has an
ongoing transaction. When no EVSE is specified, it SHALL stop sending the clock aligned meter values when any
transaction is ongoing on this Charging Station.
2.7.14. AlignedDataSignReadings
Required no
Component componentName AlignedDataCtrlr
Variable variableName SignReadings
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If set to true, the Charging Station SHALL include signed meter values in the SampledValueType in the
TransactionEventRequest to the CSMS for those measurands defined in AlignedDataTxEndedMeasurands.
When a Charging Station does not support signed meter values it SHALL NOT report this variable.
2.7.15. AlignedDataTxEndedMeasurands
Required yes
Component componentName AlignedDataCtrlr
Variable variableName TxEndedMeasurands
variableAttributes mutability ReadWrite
variableCharacteristics dataType MemberList
maxLimit The maximum length of the CSV formatted string, to
be defined by the implementer.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 467/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
When left empty, no Clock-aligned measurands SHALL be put into the TransactionEventRequest (eventType =
Ended).
2.7.16. AlignedDataTxEndedInterval
Required yes
Component componentName AlignedDataCtrlr
Variable variableName TxEndedInterval
variableAttributes mutability ReadWrite
variableCharacteristics unit s
dataType integer
Description Size (in seconds) of the clock-aligned data interval, intended to be transmitted in the TransactionEventRequest
(eventType = Ended) message. This is the size (in seconds) of the set of evenly spaced aggregation intervals per
day, starting at 00:00:00 (midnight). For example, a value of 900 (15 minutes) indicates that every day should be
broken into 96 15-minute intervals.
When clock aligned data is being collected, the interval in question is identified by the start time and (optional)
duration interval value, represented according to the ISO8601 standard. All intervals are transmitted (if so
enabled) at the end of the transaction in 1 TransactionEventRequest (eventType = Ended) message.
This is not a recommended practice, since the size of the message can become very large.
2.7.17. PublicKeyWithSignedMeterValue
Required no
Component componentName OCPPCommCtrlr
Variable variableName PublicKeyWithSignedMeterValue
variableAttributes mutability ReadWrite
variableCharacteristics dataType OptionList
valueList Never,OncePerTransaction,EveryMeterValue
Description This Configuration Variable can be used to configure whether a public key needs to be sent with a signed meter
value. Note, that the field is required, so it needs to be present as an empty string when the public key is not sent.
2.7.18. SampledDataRegisterValuesWithoutPhases
Required no
Component componentName SampledDataCtrlr
Variable variableName RegisterValuesWithoutPhases
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this variable reports a value of true, then meter values of measurand Energy.Active.Import.Register will
only report the total energy over all phases without reporting the individual phase values.
If this variable is absent or false, then the value for each phase is reported, possibly also with a total value
(depending on the meter).
2.8.1. ReservationEnabled
Required no
Component componentName ReservationCtrlr
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 468/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.8.2. ReservationAvailable
Required no
Component componentName ReservationCtrlr
Variable variableName Available
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description Whether Reservation is supported.
2.8.3. ReservationNonEvseSpecific
Required no
Component componentName ReservationCtrlr
Variable variableName NonEvseSpecific
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description If this configuration variable is present and set to true: Charging Station supports Reservation where EVSE id is not
specified.
2.9.1. SmartChargingEnabled
Required no
Component componentName SmartChargingCtrlr
Variable variableName Enabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description Whether Smart Charging is enabled.
2.9.2. SmartChargingAvailable
Required no
Component componentName SmartChargingCtrlr
Variable variableName Available
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description Whether Smart Charging is supported.
2.9.3. ACPhaseSwitchingSupported
Required no
Component componentName SmartChargingCtrlr
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 469/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.9.4. ChargingProfileMaxStackLevel
Required yes
Component componentName SmartChargingCtrlr
Variable variableName ProfileStackLevel
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Maximum acceptable value for stackLevel in a ChargingProfile. Since the lowest stackLevel is 0, this means that if
SmartChargingCtrlr.ProfileStackLevel = 1, there can be at most 2 valid charging profiles per Charging Profile
Purpose per EVSE.
2.9.5. ChargingScheduleChargingRateUnit
Required yes
Component componentName SmartChargingCtrlr
Variable variableName RateUnit
variableAttributes mutability ReadOnly
variableCharacteristics dataType MemberList
Description A list of supported quantities for use in a ChargingSchedule.
Allowed values: 'A' and 'W'
2.9.6. PeriodsPerSchedule
Required yes
Component componentName SmartChargingCtrlr
Variable variableName PeriodsPerSchedule
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Maximum number of periods that may be defined per ChargingSchedule.
2.9.7. ExternalControlSignalsEnabled
Required no
Component componentName SmartChargingCtrlr
Variable variableName ExternalControlSignalsEnabled
variableAttributes mutability ReadOnly or ReadWrite. Choice is up to Charging
Station implementation.
variableCharacteristics dataType boolean
Description Indicates whether a Charging Station should respond to external control signals that influence charging.
2.9.8. NotifyChargingLimitWithSchedules
Required no
Component componentName SmartChargingCtrlr
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 470/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.9.9. Phases3to1
Required no
Component componentName SmartChargingCtrlr
Variable variableName Phases3to1
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description If defined and true, this Charging Station supports switching from 3 to 1 phase during a transaction.
2.9.10. ChargingProfileEntries
Required yes
Component componentName SmartChargingCtrlr
Variable variableName Entries
VariableInstance ChargingProfiles
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
maxLimit Maximum number of Charging profiles installed at
any time.
Description Amount of Charging profiles currently installed on the Charging Station.
2.9.11. LimitChangeSignificance
Required yes
Component componentName SmartChargingCtrlr
Variable variableName LimitChangeSignificance
variableAttributes mutability ReadWrite
variableCharacteristics dataType decimal
Description If at the Charging Station side a change in the limit in a ChargingProfile is lower than this percentage, the Charging
Station MAY skip sending a NotifyChargingLimitRequest or a TransactionEventRequest message to the CSMS. It
is RECOMMENDED to set this key to a low value. See Smart Charging signals to a Charging Station from multiple
actors.
2.10.1. TariffEnabled
Required no
Component componentName TariffCostCtrlr
Variable variableName Enabled
variableInstance Tariff
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description Whether Tariff is enabled.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 471/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.10.2. TariffAvailable
Required no
Component componentName TariffCostCtrlr
Variable variableName Available
variableInstance Tariff
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description Whether Tariff is supported.
2.10.3. TariffFallbackMessage
Required for Charging Stations supporting Tariff Information.
Required yes
Component componentName TariffCostCtrlr
Variable variableName TariffFallbackMessage
variableAttributes mutability ReadWrite
variableCharacteristics dataType string
maxLimit 255
Description Message (and/or tariff information) to be shown to an EV Driver when there is no driver specific tariff information
available.
2.10.4. CostEnabled
Required no
Component componentName TariffCostCtrlr
Variable variableName Enabled
variableInstance Cost
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description Whether Cost is enabled.
2.10.5. CostAvailable
Required no
Component componentName TariffCostCtrlr
Variable variableName Available
variableInstance Cost
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description Whether Cost is supported.
2.10.6. TotalCostFallbackMessage
Required for Charging Stations supporting Tariff Information.
Required yes
Component componentName TariffCostCtrlr
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 472/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.10.7. Currency
Required for Charging Stations supporting Tariff Information.
Required yes
Component componentName TariffCostCtrlr
Variable variableName Currency
variableAttributes mutability ReadWrite
variableCharacteristics dataType string
maxLimit 3
Description Currency used by this Charging Station in a ISO 4217 [ISO4217] formatted currency code.
2.11.1. MonitoringEnabled
Required no
Component componentName MonitoringCtrlr
Variable variableName Enabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description Whether Monitoring is enabled.
2.11.2. MonitoringAvailable
Required no
Component componentName MonitoringCtrlr
Variable variableName Available
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description Whether Monitoring is supported.
2.11.3. ItemsPerMessageClearVariableMonitoring
Required no
Component componentName MonitoringCtrlr
Variable variableName ItemsPerMessage
variableInstance ClearVariableMonitoring
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Maximum number of IDs in a ClearVariableMonitoringRequest.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 473/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.11.4. ItemsPerMessageSetVariableMonitoring
Required yes
Component componentName MonitoringCtrlr
Variable variableName ItemsPerMessage
variableInstance SetVariableMonitoring
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Maximum number of setMonitoringData elements that can be sent in one setVariableMonitoringRequest
message.
2.11.5. BytesPerMessageClearVariableMonitoring
Required no
Component componentName MonitoringCtrlr
Variable variableName BytesPerMessage
variableInstance ClearVariableMonitoring
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Message Size (in bytes) - puts constraint on ClearVariableMonitoringRequest message size.
2.11.6. BytesPerMessageSetVariableMonitoring
Required yes
Component componentName MonitoringCtrlr
Variable variableName BytesPerMessage
variableInstance SetVariableMonitoring
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Message Size (in bytes) - puts constraint on setVariableMonitoringRequest message size.
2.11.7. OfflineMonitoringEventQueuingSeverity
Required no
Component componentName MonitoringCtrlr
Variable variableName OfflineQueuingSeverity
variableAttributes mutability ReadWrite
variableCharacteristics dataType integer
Description When set and the Charging Station is offline, the Charging Station shall queue any notifyEventRequest messages
triggered by a monitor with a severity number equal to or lower than the severity configured here. Value ranging
from 0 (Emergency) to 9 (Debug).
2.11.8. ActiveMonitoringBase
Required no
Component componentName MonitoringCtrlr
Variable variableName ActiveMonitoringBase
variableAttributes mutability ReadOnly
variableCharacteristics dataType OptionList
Description Shows the currently used MonitoringBase. Valid values according MonitoringBaseEnumType: All,
FactoryDefault, HardwiredOnly.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 474/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.11.9. ActiveMonitoringLevel
Required no
Component componentName MonitoringCtrlr
Variable variableName ActiveMonitoringLevel
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
Description Shows the currently used MonitoringLevel. Valid values are severity levels of SetMonitoringLevelRequest: 0-9.
2.12.1. DisplayMessageEnabled
Required no
Component componentName DisplayMessageCtrlr
Variable variableName Enabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description Whether Display Message is enabled.
2.12.2. DisplayMessageAvailable
Required no
Component componentName DisplayMessageCtrlr
Variable variableName Available
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description Whether Display Message is supported.
2.12.3. NumberOfDisplayMessages
Required yes
Component componentName DisplayMessageCtrlr
Variable variableName DisplayMessages
variableAttributes mutability ReadOnly
variableCharacteristics dataType integer
maxLimit Maximum number of different messages that can
configured in this Charging Station simultaneous, via
SetDisplayMessageRequest.
Description Amount of different messages that are currently configured in this Charging Station, via
SetDisplayMessageRequest
2.12.4. DisplayMessageSupportedFormats
Required yes
Component componentName DisplayMessageCtrlr
Variable variableName SupportedFormats
variableAttributes mutability ReadOnly
variableCharacteristics dataType MemberList
Description List of message formats supported by this Charging Station. Possible values: MessageFormat.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 475/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.12.5. DisplayMessageSupportedPriorities
Required yes
Component componentName DisplayMessageCtrlr
Variable variableName SupportedPriorities
variableAttributes mutability ReadOnly
variableCharacteristics dataType MemberList
Description List of the priorities supported by this Charging Station. Possible values: MessagePriority.
2.13.1. Available
Required yes
Components componentName ChargingStation
EVSE
Connector
evse * (for EVSE and Connector)
Variable variableName Available
variableAttributes mutability ReadOnly
variableCharacteristics dataType boolean
Description When true the Component exists and is locally configured/wired for use, but may not be (remotely) Enabled.
This variable is required on any Component that can be reported by the Charging Station. As a minimum it shall
exist on ChargingStation, EVSE and Connector.
Note If any other variables are reported for a Component, then reporting Available does not add much value and may be
omitted. However, the variable needs to exist, because it can be queried for by a GetCustomReport request for all
Components that are 'available'.
EVSE and Connector components are addressed on their respective tier. So, EVSE #1 is addressed as component
EVSE on tier "evse = 1" and connector #1 on this EVSE is addressed as component Connector on tier "evse = 1,
connector = 1.
2.13.2. AvailabilityState
Required yes
Components componentName ChargingStation
EVSE
evse * (for EVSE)
Variable variableName AvailabilityState
variableAttributes mutability ReadOnly
variableCharacteristics dataType optionList
valuesList Available, Occupied, Reserved, Unavailable, Faulted
Description This variable reports current availability state for the ChargingStation and EVSE. If a Connector has its own
availability state independent of the EVSE, then this variable may be used to report the Connector’s availability
state. As such it replicates ConnectorStatus values reported in StatusNotification messages.
An EVSE component is addressed on its own tier. So, EVSE #1 is addressed as component EVSE on tier "evse = 1.
2.13.3. AllowReset
Required no
Component componentName EVSE
evse *
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 476/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.13.4. ConnectorType
Required yes
Component componentName Connector
evse *
Variable variableName ConnectorType
variableAttributes mutability ReadOnly
variableCharacteristics dataType string
Description Value of the type of connector as defined by ConnectorEnumType in "Part 2 - Specification" plus additionally:
cGBT, cChaoJi, OppCharge.
2.13.5. PhaseRotation
Required no
Component componentName *
evse *
Variable variableName PhaseRotation
variableAttributes mutability ReadOnly or ReadWrite.
variableCharacteristics dataType String
Description This variable describes the phase rotation of a Component relative to its parent Component, using a three letter
string consisting of the letters: R, S, T and x.
The letter 'R' can be identified as phase 1 (L1), 'S' as phase 2 (L2), 'T' as phase 3 (L3).
The lower case 'x' is used to designate a phase that is not connected.
An empty string means that phase rotation is not applicable or not known.
Certain measurands, like voltage and current, are reported with a phase relative to the grid connection. In order to
support this, all components in the chain from Connector to ElectricalFeed need to have a value for
PhaseRotation.
Some examples:
"" (unknown)
"RST" (Standard Reference Phasing)
"RTS" (Reversed Reference Phasing)
"SRT" (Reversed 240 degree rotation)
"STR" (Standard 120 degree rotation)
"TRS" (Standard 240 degree rotation)
"TSR" (Reversed 120 degree rotation)
"RSx" (Two phases connected)
"Rxx" (One phase connected)
2.13.6. SupplyPhases
Required yes
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 477/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.13.7. Power
Required yes (maxLimit only)
Component componentName EVSE
evse *
Variable variableName Power
variableAttributes mutability ReadOnly
variableCharacteristics dataType decimal
maxLimit decimal
Description The variableCharacteristic maxLimit, that holds the maximum power that this EVSE can provide, is required. The
Actual value of the instantaneous (real) power is desired, but not required.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 478/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
An instance name has been given to the EVSEs in this example. This is to illustrate that it is allowed to provide an
instance name even if only one instance of the component exists. It is not required to do so.
NOTE
The variable Voltage of ChargingStation has been added to show an example of a multi-instance variable.
Not all VariableAttributes and VariableCharacteristics are shown in the table.
2.14.1. CentralContractValidationAllowed
Required no
Component componentName ISO15118Ctrlr
Variable variableName CentralContractValidationAllowed
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this variable exists and has the value true, then Charging Station can provide a contract certificate that it cannot
validate, to the CSMS for validation as part of the AuthorizeRequest.
2.14.2. ContractValidationOffline
Required yes
Component componentName ISO15118Ctrlr
Variable variableName ContractValidationOffline
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this variable is true, then Charging Station will try to validate a contract certificate when it is offline.
2.14.3. ProtocolSupportedByEV
Required no
Component componentName ConnectedEV
evse *
Variable variableName ProtocolSupportedByEV
variableInstance <Priority>
variableAttributes mutability ReadOnly
variableCharacteristics dataType string
Description A string with the following comma-separated items:
“<uri>,<major>,<minor>”.
This is information from the SupportedAppProtocolReq message from ISO 15118
Each priority is given its own variable instance. Priority is a number from 1 to 20 as a string. E.g. "1" or "2".
Example:
- ConnectedEV.ProtocolSupportedByEV["1"] = "urn:iso:15118:2:2013:MsgDef,2,0"
- ConnectedEV.ProtocolSupportedByEV["2"] = "urn:iso:15118:2:2010:MsgDef,1,0"
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 479/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.14.4. ProtocolAgreed
Required no
Component componentName ConnectedEV
evse *
Variable variableName ProtocolAgreed
variableAttributes mutability ReadOnly
variableCharacteristics dataType string
Description A string with the following comma-separated items:
“<uri>,<major>,<minor>”.
This is the protocol uri and version information that was agreed upon between EV and EVSE in the
supportedAppProtocolReq handshake from ISO 15118.
Example: "urn:iso:15118:2:2013:MsgDef,2,0"
2.14.5. ISO15118PnCEnabled
Required no
Component componentName ISO15118Ctrlr
Variable variableName PnCEnabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this variable is true, then ISO 15118 plug and charge as described by use case C07 - Authorization using
Contract Certificates is enabled.
If this variable is false, then ISO 15118 plug and charge as described by use case C07 - Authorization using
Contract Certificates is disabled.
2.14.6. ISO15118V2GCertificateInstallationEnabled
Required no
Component componentName ISO15118Ctrlr
Variable variableName V2GCertificateInstallationEnabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this variable is true, then ISO 15118 V2G Charging Station certificate installation as described by use case A02 -
Update Charging Station Certificate by request of CSMS and A03 - Update Charging Station Certificate initiated by
the Charging Station is enabled.
If this variable is false, then ISO 15118 V2G Charging Station certificate installation as described by use case A02 -
Update Charging Station Certificate by request of CSMS and A03 - Update Charging Station Certificate initiated by
the Charging Station is disabled.
2.14.7. ISO15118ContractCertificateInstallationEnabled
Required no
Component componentName ISO15118Ctrlr
Variable variableName ContractCertificateInstallationEnabled
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this variable is true, then ISO 15118 contract certificate installation/update as described by use case M01 -
Certificate installation EV and M02 - Certificate Update EV is enabled.
If this variable is false, then ISO 15118 contract certificate installation/update as described by use case M01 -
Certificate installation EV and M02 - Certificate Update EV is disabled.
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 480/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
2.14.8. ISO15118RequestMeteringReceipt
Required no
Component componentName ISO15118Ctrlr
Variable variableName RequestMeteringReceipt
variableAttributes mutability ReadWrite
variableCharacteristics dataType boolean
Description If this variable is true, then Charging Station shall request a metering receipt from EV before sending a fiscal meter
value to CSMS.
2.14.9. ISO15118SeccId
Required no
Component componentName ISO15118Ctrlr
evse * (optional)
Variable variableName SeccId
variableAttributes mutability ReadWrite
variableCharacteristics dataType string
Description The name of the SECC in the string format as required by ISO 15118.
It is used as the commonName (CN) of the SECC leaf certificate.
Example: "DE-ICE-S-0003C4D5578786756453309675436-2"
2.14.10. ISO15118CountryName
Required no
Component componentName ISO15118Ctrlr
evse * (optional)
Variable variableName CountryName
variableAttributes mutability ReadWrite
variableCharacteristics dataType string
Description The countryName of the SECC in the ISO 3166-1 format.
It is used as the countryName (C) of the SECC leaf certificate.
Example: "DE"
2.14.11. ISO15118OrganizationName
Required no
Component componentName ISO15118Ctrlr
evse * (optional)
Variable variableName OrganizationName
variableAttributes mutability ReadWrite
variableCharacteristics dataType string
Description The organizationName of the CSO operating the charging station.
It is used as the organizationName (O) of the SECC leaf certificate.
Example: "John Doe Charging Services Ltd"
Note: This value will usually be identical to SecurityCtrlr.OrganizationName, but it does not have to be.
2.14.12. ISO15118EvseId
Required no
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 481/482 Part 2 - Specification
Edition 3 FINAL, 2024-05-06 Referenced Components and Variables
OCPP 2.0.1 Edition 3 - © Open Charge Alliance 2024 482/482 Part 2 - Specification