- Plugsurfing officially support version 2.2 and 2.2.1 alongside version 2.1.1 of the OCPI protocol (Github link)
- from this point onwards, to simplify the article. versions 2.2 and 2.2.1 will be referred to as 2.2.x
- These Technical Requirements are subject to change. The CPO shall check these technical requirements regularly for updates. If major updates are done, Plugsurfing will inform the CPOs with one month's notice.
Registration / Credentials Module (Required):
Initiation of registration can be done by any of the parties
Issuing party Commands Status CPO POST credentials Supported PUT credentials Supported DELETE credentials Supported GET versions Supported GET endpoints (for a specific version) Supported EMP POST credentials Supported PUT credentials Supported DELETE credentials Supported GET versions Supported GET endpoints (for a specific version) Supported Plugsurfing expects all CPOs (sub-CPOs, if they exist) that communicate over the OCPI connection to be represented with an unique set of
role + party_id + country_code.Locations Module (Required):
- The Charging Infrastructure Data shall contain all information required in accordance with the Protocol.
- The Charging Infrastructure Data submitted by the CPO to Plugsurfing must be accurate, valid, complete, unique and consistent.
- The Charging Infrastructure must be located within the operating Territories.
- The Charging Infrastructure Data for a Charging Station must be submitted prior to any Charging Session at this Charging Station.
Request Issuing party Commands Status Push CPO PUT locations Supported PUT EVSE
Supported PUT locations
Supported PATCH locations (Patch call will only patch properties on the Location, child EVSEs and connectors will not be updated.) Supported PATCH locations (Patch calls will only patch properties of the EVSE, child connectors will not be updated.) Supported PATCH locations (connector) Supported Pull CPO GET locations (i.e., CPO gets location from our platform) Not supported EMP GET locations (location) (i.e. our platform gets location from CPO) Supported Differences in 2.2.x
The ‘publish’ property
Plugsurfing supports the publish property introduced in OCPI 2.2.x.
If
publish=false, the location will not be published/visible on the map. However, Plugsurfing does not support thepublish_allowed_toflag to show only locations to certain individual user.Private locations
Plugsurfing requires the CPO to share all locations they intend to send CDRs for up front.
If the location should not be shown to users, the CPO is encouraged to use the publish property mentioned above. If private chargers can’t be shared up front, but CDRs will be sent for these locations the CPO has to communicate this to Plugsurfing before the integration is setup.
The ‘tariff_ids’ property on connectors
Plugsurfing only supports one tariff per connector, default set to REGULAR type.
Tariffs Module (Required):
If Tariffs Module is not supported, the standard Fees for charging will apply: https://partnersupport.plugsurfing.com/hc/en-us/articles/360021089838-Fees
Request Issuing party Commands Status Push CPO PUT Tariffs Supported PATCH Tariffs Supported Pull CPO GET Tariffs Not supported EMP GET Tariffs Supported Plugsurfing only support one tariff per connector, and that must be of REGULAR type. Other tariff types will be dropped. If the CPO use multiple tariff types, Plugsurfing MUST be informed before the integration is setup.
Differences in 2.2.x
PATCH is removed from Tariffs as this was seen is not useful, use PUT instead.
Added county_code and party_id fields
Tokens Module (Required):
CPO shall use Realtime Authorization when their system is online.
Request Issuing party Commands Status Push EMP PUT Tokens (creation/update) Supported PATCH Tokens (update) Not supported Pull CPO Get Tokens (list) Supported Whitelist type
- Whitelist type Plugsurfing supports all whitelist types when tokens are exchanged. The applicable whitelist type will be communicated as part of the token data exchange and must be respected by the CPO.
-
If the whitelist type is set to
NEVER: Offline authorizations are never allowed. A real-time authorization responseALLOWEDis mandatory to allow the charging session to start. - CDRs without a valid authorization reference to an ALLOWED authorization will be rejected. Plugsurfing will not pay for those rejected CDRs.
-
If the whitelist type is set to
ALLOWED_OFFLINE:Plugsurfing expects a real-time authorization request to be performed.In case of a temporary communication interruption preventing real-time authorization, the CPO is allowed to take a local authorization decision based on the whitelist status of the token. Real-time authorization
Plugsurfing expects the authorization request to contain the location reference where the user intends to charge. If the CPO operates private chargers that are not exchanged via the Location module, the CPO must inform Plugsurfing before the system integration is set up.
If Plugsurfing is not informed accordingly, the authorization result will be returned as NOT_ALLOWED. Plugsurfing will return an authorization reference in all real-time authorization responses. This reference must be included in the CDR for the resulting charging session.
Failure to include a valid authorization reference in the CDR where real-time authorization was conducted, will result in rejection and non-payment of the CDR.
OCPI 2.2.x Properties not supported by Plugsurfing
Plugsurfing does currently not support the
group_id,default_profile_typeandenergy_contractproperty in the Tokens module.Charge Detailed Records (CDR) (Required):
- The CDR shall be transmitted immediately, no longer than one hour, after the end of Charging Session.
- The CDR shall contain all information required in accordance with the Protocol version.
- The CDR submitted by the CPO to Plugsurfing must be unaltered, complete and correct.
- The CDR shall be associated with a Customer who was Authorized in Real Time only.
- The Charging Infrastructure Data for a Charging Station must be submitted prior to any Charging Session at this Charging Station.
- The CDR shall refer to a positive (zero or higher) energy consumption, price and session time.
Request Issuing party Commands Status Push CPO POST CDRs Supported Pull EMP GET CDRs Supported (Not preferred) OCPI 2.2.x Properties not supported by Plugsurfing
Credit CDRs
Plugsurfing does currently not support credit CDRs.
Sessions Module (Optional*):
Request Issuing party Commands Status Push CPO PUT sessions Supported PATCH sessions Supported Pull CPO GET sessions Not supported EMP GET sessions Not supported - While optional, Plugsurfing strongly recommends the CPO to utilize this module for real time session updates.
- This is required if remote start/stop is to be used.
OCPI 2.2 Properties not supported by Plugsurfing
Charging preferences
Plugsurfing does not support setting charging preferences for a session.
Charging profiles
Multiple charging profiles are not supported by Plugsurfing.
Commands Module (Optional):
Issuing party Commands Status EMP POST commands (START_SESSION) Supported POST commands (STOP_SESSION) Supported POST commands (RESERVE_NOW/CANCEL_RESERVATION) Not supported POST commands (UNLOCK) Not supported IMPORTANT: Plugsurfing needs to know if the CPO support remote start before the integration is configured. If the CPO supports remote start, the session module is also required. In order to allow Plugsurfing to inform the end user about the availability and status of this functionality.
Hub Client Info Module
This module is dedicated for connecting to Hubs over ocpi 2.2.x, currently this is not supported and being developed.
Special use cases
Home Charging Compensation
- in OCPI 2.1.1. Plugsurfing follows the 3-Violin guideline in regards to denoting and processing sessions that are eligible for Home Charging compensation. the remark field must be populated with one of the supported values (HCC_E or HCC_V).
- For OCPI 2.2.x. the
home_charging_compensationflag must be set totruein the CDR. - However this does not provide any details on whether the compensated value includes or excludes the VAT. Plugsurfing interprets the CDR as follows
home_charging_compensation
remark
total_cost.incl_vat set
Expected outcome
false
N/A
N/A
No home charging
true
HCC_E
N/A
Home charging exempt VAT
true
HCC_V
N/A
Home charging no. VAT exempt
true
null
null
Home charging exempt VAT
true
null
set
Home charging no. VAT exempt
Plug and Charge
- Plug and Charge (PnC) is not natively supported by the current officially released OCPI versions (2.1.1, 2.2 & 2.2.1), however, Plugsurfing have backported the feature from ocpi 2.3 and currently support PnC over OCPI.
- The connectors (EVSE) must include one of the following values as a enum value in the
ConnectorCapabilitiesfield - ISO_15118_2_PLUG_AND_CHARGE
- ISO_15118_20_PLUG_AND_CHARGE
Since July 2025, all PnC keys are pushed as tokens automatically.
The new format, suggested by EV Roaming foundation is used.
UID is the contractId (in EMAID format after ISO-15118)
Token type is “OTHER” (until we support OCPI 2.3 with new type “EMAID”)
No whitelisting
Example token:
{"uid": "DE-8PS-COO13A3LZ-3","valid": "true","authId": "DE-8PS-COO13A3LZ-3","type": "OTHER","issuer": "DE*8PS","whitelist": "NEVER","last_updated": "..."}General Info
Information to be shared with Plugsurfing before the integration
In order to setup the integration properly the following needs to be provided before the integration is configured.
- The CPO/platform that is considered the main CPO on this connection.
- CPO/platform name
- CPO/platform country_code
- CPO/platform party_id
- CPO(s) communicating over the connection
- CPO country_code
- CPO Name
- CPO country_code
- CPO party_id
- Is remote start supported by the CPO?
- Does the CPO require the Token used during an remote start request to exist in the CPO system up front? (If not, Plugsurfing can disable token exchange for these virtual tokens to reduce data exchanged).
- Will real-time authorization requests and/or CDRs be sent for locations not shared up front over the locations module. If yes, please explain why so Plugsurfing understands what type of locations this is, and why they are kept private.
- The CPO will deliver the CDR to Plugsurfing directly after the session is completed. (If not possible, please explain why.)
Supported Countries
- Austria
- Belgium
- Croatia
- Czech Republic
- Denmark
- Estonia
- Finland
- France
- Germany
- Hungary
- Ireland
- Italy
- Latvia
- Liechtenstein
- Lithuania
- Luxembourg
- Norway
- Poland
- Portugal
- Slovakia
- Slovenia
- Spain
- Sweden
- Switzerland
- The Netherlands
- The United Kingdom
- The United States of America*