Use the prices endpoint to retrieve a list of MSP prices and CPO ad hoc prices. The prices are considered at the connector level.

📘

Note

The way you match prices with a location is different if you are using this endpoint to retrieve the pricing information.

To match a location with its prices:

  1. Download the latest Locations data.
  2. Download the latest Connector Prices data.
  3. Download the latest Prices data.
  4. Each location in the response of Locations data contains a location's id (data.id), and one or more EVSE UIDs and connector ids (data.evses.uid and data.evses.connectors.id). Use these 3 attributes to search and retrieve pricing_ids at the connector level from the response of Connector Prices.
  5. Use each id from pricing_ids to retrieve the prices from the response of Prices data.

Eco-Movement recommends that you retrieve all the prices once a day or week. Download the prices data during CET working hours. Outside of these working hours, it is likely that there can be updates impacting the id attribute.

Request

See prices and prices/{id} to know more about the parameters that are used with the two versions of the locations endpoint.

Response

The following is a sample response for the prices endpoint:

{
    data: [ 
    
        { product {
         ...
        },
          elements
            [
                { 
                  price_components 
                    [{...},{...}],
                  restrictions
                    {...},{...}
                }
            ]
        }     
    ], 
}

🚧

Caution

Eco-Movement always upholds the API contract, but we may send new attributes in our JSON response when:

  • we add an OCPI mandatory attribute to the JSON response to be OCPI compliant
  • we improve your licensing module with new features

Hence, we strongly recommend that you handle or ignore unknown JSON fields.

Response Definitions

The following are the attributes for the prices endpoint:

AttributeDescription
data.idThe unique id for a price.

Note: It is created by Eco-Movement and is refreshed whenever a price or product associated with that particular id is updated.
data.partnerThe owner of the payment product.
data.partner_idThe unique id for the owner of the payment product. It is created by Eco-Movement, and is stable.
data.product.nameThe name of the payment product.
data.product.typeThe type of the payment product. It is one of the following:

- adhoc
- msp
- cpo_subscription
data.product.descriptionA brief description about the product.
data.product.subscription_typeIndicates the type of subscription. The possible values are:

- monthly: A subscription fee is applicable every month.

- yearly: A subscription fee is applicable every year.

- one_off: An initial fee is applicable to purchase a RFID card or chip, but there isn't a recurring subscription fee.

- n/a: The product doesn't have a subscription option.
data.product.subscription_fee_excl_vatThe subscription price for a month or year, excluding VAT. (if applicable)
data.product.currencyThe three digit currency code of the country where the charging station is located.
data.elements.price_components.typeThe type of pricing that is applicable. The available pricing types are:

- ENERGY: The price per kWh.

- FLAT: The fixed price per charging session.

- PARKING_TIME: The parking price per hour. This fee is applicable even if the parked car is not charging.

- TIME: The fixed price per hour.
data.elements.price_components.price_excl_vatThe applicable price excluding vat.
data.elements.price_components.vatThe applicable VAT.
data.elements.price_components.step_sizeIndicates the minimum amount that is billed. A
unit is billed in step_size blocks. For example, if the type is TIME and step_size is 300, then the time is billed in blocks of 5 minutes. Hence, if 6 minutes is used, then 10 minutes (2 blocks of step_size) is billed.

Note: step_size also depends on the type. Every type (except FLAT) defines a step_size multiplier. This is the size of every 'step' and the unit. For example, PARKING_TIME has a step_size multiplier of 1 second. Therefore, step_size of a price component is multiplied by 1 second. Thus, step_size = 300 means 300 seconds.
data.elements.restrictions.start_timeThe starting time of the day for the prices.
data.elements.restrictions.end_timeThe ending time of the day for the prices.
data.elements.restrictions.start_dateThe starting date for the prices.
data.elements.restrictions.end_dateThe ending date for the prices.
data.elements.restrictions.min_kwhThe minimum energy used in kWh.
data.elements.restrictions.max_kwhThe maximum energy used in kWh.
data.elements.restrictions.min_powerThe minimum charging speed in kW.
data.elements.restrictions.max_powerThe maximum charging speed in kW.
data.elements.restrictions.min_currentThe sum of the minimum current (in Amperes) over all the phases. When the EV is charging with more than or equal to this value the prices are active. If the charging current is lower, this price is inactive.
data.elements.restrictions.max_currentThe sum of the maximum current (in Amperes) over all the phases. When the EV is charging with less than this value the prices are active. If the charging current is higher, this price is inactive.
data.elements.restrictions.min_priceThe minimum price excluding VAT based on the amount of kWh that is being delivered.

This is different from the FLAT pricing type (Flat Fee), as FLAT indicates a fixed amount that must be paid for any charging session. min_price indicates a minimum value that must be paid as the cost of a charging session even when the cost of kWh delivered is lower than themin_price value.
data.elements.restrictions.max_priceThe maximum price excluding VAT based on the amount of kWh that is being delivered. The charging session will not cost more than this amount.
data.elements.restrictions.overstay_battery_percentage.minThe battery percentage at which the overstay prices are active.
data.elements.restrictions.overstay_battery_percentage.maxThe battery percentage at which the overstay prices are inactive.
data.elements.restrictions.overstay_time.minThe time after which the overstay prices are active.
data.elements.restrictions.overstay_time.maxThe time after which the overstay prices are inactive.
data.elements.restrictions.overstay_time.unitThe unit for the time after which the prices are active. It can be in seconds, minutes, or hours.
data.elements.restrictions.min_durationThe minimum duration in seconds.
data.elements.restrictions.max_durationThe maximum duration in seconds.
data.elements.restrictions.day_of_weekThe day(s) of the week that the prices are valid.
data.elements.restrictions.emsp_contract_date.nameThe name of the contract signed between the eMSP and a customer.
data.elements.restrictions.emsp_contract_date.fromThe prices are active from this date, which is based on the contract signed between the eMSP and a customer.
data.elements.restrictions.emsp_contract_date.toThe prices are active until this date, which is based on the contract signed between the eMSP and a customer.
data.elements.restrictions.reservationIndicates the costs for reservation or the cost when a reservation expires.
data.elements.restrictions.payment_methodsIndicates if the price is only for one or more of the following payment methods:

- CREDIT_CARD
- DEBIT_CARD
- APPLE_PAY
- GOOGLE_PAY
- QR_CODE
data.last_updatedIndicates when the pricing data was last updated. The date is in ISO 8601 standard and the time zone is UTC. The update could be a price update or any other update (for example, pricing type update).

📘

Note

  • Use the "Try It!" button in prices and prices/{id} to view an actual response from our API.
  • The JSON schema is available here.