E-MobilityOICPOpen Standards

Open InterCharge Protocole Training. Lesson 6

31 MARCH 2022 • 10 MIN READ

Bartłomiej Łazarczyk



Open InterCharge Protocole Training

Solidstudio is happy to introduce you to the Open Standards course led by our e-mobility expert - Bartlomiej. Throughout the following lessons, we will uncover the technicalities and functionalities of the OICP - a protocol developed by Hubject - as well as business aspects for e-Mobility Service Providers and Charge Point Operators.

Such a knowledge-pack should serve everyone operating in the e-mobility industry as it unfolds the most crucial aspects of navigating through Open Standards utilization and many more!

Subscribe to our YouTube channel to make sure you don't miss out on the upcoming training entries.

See the previous lessons:

  1. Overview
  2. Business introduction
  3. Technical details
  4. CPO eRoamingAuthorization + eRoamingReservation
  5. CPO eRoamingEVSEdata + eRoamingEVSEstatus

Open InterCharge Protocol Training - Lesson 6

OICP Training Transcript

Tariffs and pricing

Tariffs and pricing issues are very complicated and hard to model. Tariffs may differ depending which aspect is concerned. Going from top to the bottom: we may have an end user which has an individual contract with EMP. EMP can offer him favorable rates under specific conditions, but of course it depends on the charging infrastructure and fees that EMP would like to charge. In order to offer charging infrastructure to end customers, EMP must have a contract with CPO, which can specify different rates than those offered to the end users. Of course, CPO may specify different rates per EVSE, their location, per day time and of course different rates per connector type. This is just a big picture overview and a small presentation of dependencies. In practice, each partner may have its own individual business model and settlement model

Comparing the Hubject model to the model that was presented before, Hubject aims to create a common tariff interface for CPO and EMP by having a specific pricing product within a service offer that EMP can subscribe to. OICP was not designed to cover end user tariffs. Their pricing product interface should be so flexible to cover different pricing depending on charging infrastructure i.e. different rates for type 2 connectors. This solution comes with a trade-offs. If you would like to integrate with the Hubject platform, it would be harder for you to create your own business model, especially as a CPO.

Besides standard pricing and product pricing which were briefly explained before, Hubject created the flexible pricing which allows CPO to offer differentiated pricings in many dimensions. It can depend on charging facility, location, daytime and combination of all above. All of those conditions are in the form of pricing product, which can be assigned to EVSE’s. Flexible pricing offers an API which is clear and understandable between both of the parties. On top of that, Hubject also created dynamic pricing, which enables for almost real-time updates between CPO and EMP. Unfortunately, because of its nature, dynamic pricing cannot be offered to everyone. It must be a bilateral offer. CPO and EMP must agree on business and legal specifics and their system must be prepared on such frequent tariff updates for just one party.


eRoamingPushPricingProductData is an API operation that allows CPO to upload pricing product information. In order to do that, CPO must create flexible or dynamic pricing in authorization service offer. It can be offered to all or per specific EMP. Of course, Hubject will check if there is a valid flexible or dynamic pricing before accepting the request. Hubject will also keep history of all change data records similar as in other services.

eRoamingPushPricingProductData request contains a lot of information about pricing. “PricingDefaultPrice” is quite obvious. It's the default price for a charging session. “AdditionalReferences” can be used for specifying additional pricing components, like start fee, parking fee, fixed fee or minimum/maximum fee. “IsValid24Hours” is self-explanatory, but you need to remember that it is assigned to pricing product not EVSE. “MaximumProductChargingPower” is expressed in kilowatt hours. “PricePerReferenceYouNeed” is a price per reference unit, in our example per hour in product price currency in our example in euros. “ProductAvailabilityTimes” specifies when exactly a given pricing product can be applied, for example it can tell specific begin and end hour of weekday.


Second operation to perform in eRoaming Dynamic Pricing Service is eRoamingPushEVSEPricing. It is used for assigning specific pricing products to EVSE IDs. Hubject will verify if service offer was created before and if pricing product can be assigned to EVSE. Hubject will also keep a history of all changed data records.

Request for eRoamingPushEVSEPricing is pretty straightforward, you need to provide a list of EVSE IDs and then provide a list of products that should be assigned to giving EVSE.

Charging Notifications

eRoamingChargingNotification is optional, but it's very important from an EMP perspective. It covers charging session functionality similar to a session module in OCPI protocol. In general, Hubject treats any kind of event that can happen during charging as a notification. Each notification may reflect various actions i.e. charging session started, update meter value, charging session ended and different kinds of errors that can happen during charging. Hubject will forward every notification received from CPO directly to the interested EMP. That allows EMP to present more details regarding the charging session to his customers, therefore it's very important for him to receive such kind of information.

eRoamingChargingNotification Start

Successful authorization and plugged cable does not necessarily mean that the charging process has started and energy is flowing. OCPP protocol which covers communication between chargepoint and chargepoint operator finds a lot of scenarios for charging session start, which must be handled by CPO. If everything goes right, CPO will receive a specific message that says a charging session has started. In this case CPOmay inform EMP about that by sending eRoaming charging notification start

eRoamingChargingNotification Progress

When a charging session has started, EMP and its customer would like to receive more details about the ongoing charging session. They would like to know what is the energy consumption, duration, charging characteristic for some visualization and maybe even some predictions. The typical scenario is that CPO will receive meter values from chargepoint every 15 minutes via OCPP protocol. Therefore CPO may notify EMP about it and send some useful charging session details with eRoaming charging notification progress. Because those notifications are not crucial and not so frequent Hubject recommends at least a five minute frequency between two progress notifications.

eRoamingChargingNotification Stop

CPO may also notify EMP, that the charging process has stopped. It can mean that energy is not flowing and the customer may be informed that his electric vehicle has been fully charged. a notification itself that does not mean that the charging session has been finished. In order to end the charging session and unlock connector you may use authorized stop request normal or remote or CPO may finish charging session on its own and push CDR right after it happens.

eRoamingChargingNotification Error

Of course, during the charging session there can be a lot of unexpected events i.e. stop triggered by charge points, charging fluctuations or even charge point damage. From an EMP perspective, it's very important to know what is going on and to inform its customer that his charging session cannot be finished successfully or that it was finished before his electric vehicle has been fully charged. In this case, CPO can send an eRoaming charging notification error with some details regarding the problem.

eRoamingChargingNotification Example

Data model of eRoaming charging notification may differ a little bit depending on the type of notification, but for most of the parts it looks almost the same. Charging duration and consumed energy progress is calculated for the time between charging start and event occurred. Charging duration is expressed in milliseconds, consumed energy progress is expressed in kilowatt hours. Meter value in between is an object representing a list of our meter values, which can be used for specifying charging characteristics. Of course, this data will not be present in eRoaming charging notification start. For error notifications we may also see error type and error additional info, which can be used for specifying more details about charging problem that has occurred.

CPO Services - Summary

When it comes to the rest of the fields, we have already seen them before in other data models. So there is no need for an explanation.

To sum up we have covered all OICP services from a CPO perspective and seen how the flow, business logic and data model looks like. Although some services are mandatory in order to integrate with the Hubject platform. Here you have a list of operations network marked as a mandatory in OICP documentation for CPO those operations are
eRoamingAuthorizedStart, eRoamingAuthorizedRemoteStart, eRoamingAuthorizedRemoteStop, eRoamingChargeDetailRecord, eRoamingPushEVSEData, eRoamingPushEVSEStatus. Unfortunately OICP documentation is not perfect and definitely is not clear in many places. In case you encounter some problem, my general advice is to contact the Hubject support team directly. In the past we had a situation where we thought some implementation of operation was mandatory, but it turned out that in our case maybe it's not needed at the moment. After contacting Hubject they said we can postpone it for now and we have definitely saved some time.