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
RemoteStartTransactionrequest 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 thetransactionIdin aSetChargingProfile.reqif 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
transactionIdto 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
ChargingProfilewith purpose set toTxProfilewithout presence of an active transaction, or in advance of a transaction.
NOTE: When a
ChargingProfileis refreshed during execution, it is advised to put thestartScheduleof the newChargingProfilein the past, so there is no period of default charging behaviour in between theChargingProfiles. The Charge Point SHALL continue to execute the existingChargingProfileuntil the newChargingProfileis installed.
NOTE: If the
chargingSchedulePeriodis longer thanduration, the remainder periods SHALL not be executed. Ifdurationis longer than thechargingSchedulePeriod, the Charge Point SHALL keep the value of the lastchargingSchedulePerioduntildurationhas ended.
NOTE: When
recurrencyKindis used in combination with achargingScheduledurationshorter than therecurrencyKindperiod, the Charge Point SHALL fall back to default behaviour after thechargingScheduledurationends.
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 Name | Field Type | Card. | Description |
|---|---|---|---|
| connectorId | integer | 1..1 | Required. The connector to which the charging profile applies. If connectorId = 0, the message contains an overall limit for the Charge Point. |
| csChargingProfiles | ChargingProfile | 1..1 | Required. The charging profile to be set at the Charge Point. |
| Field Name | Field Type | Card. | Description |
|---|---|---|---|
| status | ChargingProfileStatus | 1..1 | Required. Returns whether the Charge Point has been able to process the message successfully. This does not guarantee the schedule will be followed to the letter. There might be other constraints the Charge Point may need to take into account. |
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 }
]
}
}
}{
"status": "Accepted"
}Schema
Source:
schemas/SetChargingProfile.json,schemas/SetChargingProfileResponse.json(OCPP 1.6, JSON Schema draft-04)