Skip to content
Documentation Menu

Set Charging Profile

Source: OCPP 1.6 Specification — Section 5.16 (Operation), Sections 6.43 / 6.44 (Messages)

Overview

A Central System can send a SetChargingProfile.req to a Charge Point, to set a charging profile, in the following situations:

  • At the start of a transaction to set the charging profile for the transaction;
  • In a RemoteStartTransaction request sent to a Charge Point;
  • 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, Charge Point, or a default charging profile to a connector.

IMPORTANT: To prevent mismatch between transactions and a TxProfile, the Central System SHALL include the transactionId in a SetChargingProfile.req if the profile applies to a specific transaction.

Setting a charging profile at start of transaction

If the Central System receives a StartTransaction.req the Central System SHALL respond with a StartTransaction.conf. If there is a need for a charging profile, the Central System MAY choose to send a SetChargingProfile.req to the Charge Point.

It is RECOMMENDED to check the timestamp in the StartTransaction.req PDU prior to sending a charging profile to check if the transaction is likely to be still ongoing. The StartTransaction.req might have been cached during an offline period.

Setting a charging profile in a RemoteStartTransaction request

The Central System MAY include a charging profile in a RemoteStartTransaction request. If the Central System includes a ChargingProfile, the ChargingProfilePurpose MUST be set to TxProfile.

NOTE: The Charge Point SHOULD add the transactionId to the received profile once the transaction is reported to the central system.

Setting a charging profile during a transaction

The Central System MAY send a charging profile to a Charge Point to update the charging profile for that transaction. If a charging profile with the same chargingProfileId, or the same combination of stackLevel / ChargingProfilePurpose, exists on the Charge Point, the new charging profile SHALL replace the existing charging profile, otherwise it SHALL be added. The Charge Point SHALL then re-evaluate its collection of charge profiles to determine which charging profile will become active. In order to ensure that the updated charging profile applies only to the current transaction, the chargingProfilePurpose of the ChargingProfile MUST be set to TxProfile.

Setting a charging profile outside of a transaction

The Central System MAY send charging profiles to a Charge Point that are to be used as default charging profiles. Such charging profiles MAY be sent at any time. If a charging profile with the same chargingProfileId, or the same combination of stackLevel / ChargingProfilePurpose, exists on the Charge Point, the new charging profile SHALL replace the existing charging profile, otherwise it SHALL be added.

NOTE: It is not possible to set a ChargingProfile with purpose set to TxProfile without presence of an active transaction, or in advance of a transaction.

NOTE: When a ChargingProfile is refreshed during execution, it is advised to put the startSchedule of the new ChargingProfile in the past, so there is no period of default charging behaviour in between the ChargingProfiles. The Charge Point SHALL continue to execute the existing ChargingProfile until the new ChargingProfile is installed.

NOTE: If the chargingSchedulePeriod is longer than duration, the remainder periods SHALL not be executed. If duration is longer than the chargingSchedulePeriod, the Charge Point SHALL keep the value of the last chargingSchedulePeriod until duration has ended.

NOTE: When recurrencyKind is used in combination with a chargingSchedule duration shorter than the recurrencyKind period, the Charge Point SHALL fall back to default behaviour after the chargingSchedule duration ends.

Sequence Diagram

Figure 37. Sequence Diagram: Set Charging Profile

Central System  ──── SetChargingProfile.req ────▶  Charge Point
                     (connectorId, csChargingProfiles)
Central System  ◀─── SetChargingProfile.conf ────  Charge Point
                     (status)

Initiator

Central System → Charge Point

Fields

Field NameField TypeCard.Description
connectorIdinteger1..1Required. The connector to which the charging profile applies. If connectorId = 0, the message contains an overall limit for the Charge Point.
csChargingProfilesChargingProfile1..1Required. The charging profile to be set at the Charge Point.

ChargingProfileStatus values

  • Accepted — Request has been accepted and will be executed.
  • Rejected — Request has not been accepted and will not be executed.
  • NotSupported — Charge Point indicates that the request is not supported.

Examples

{
  "connectorId": 1,
  "csChargingProfiles": {
    "chargingProfileId": 100,
    "transactionId": 1234,
    "stackLevel": 0,
    "chargingProfilePurpose": "TxProfile",
    "chargingProfileKind": "Absolute",
    "chargingSchedule": {
      "duration": 3600,
      "startSchedule": "2026-04-27T13:00:00Z",
      "chargingRateUnit": "W",
      "chargingSchedulePeriod": [
        { "startPeriod": 0,    "limit": 11000.0, "numberPhases": 3 },
        { "startPeriod": 1800, "limit": 7400.0,  "numberPhases": 3 }
      ]
    }
  }
}

Schema

Source: schemas/SetChargingProfile.json, schemas/SetChargingProfileResponse.json (OCPP 1.6, JSON Schema draft-04)

Request schema (JSON Schema)
Response schema (JSON Schema)