Data Transfer (Charge Point → Central System)
Source: OCPP 1.6 Specification — Section 4.3 (Operation), Sections 6.15 / 6.16 (Messages)
Note:
DataTransferis bidirectional. This file documents the CP-initiated direction. The CSMS-initiated direction is documented in §5.6.
Overview
If a Charge Point needs to send information to the Central System for a function not supported by OCPP, it SHALL use the DataTransfer.req PDU.
The vendorId in the request SHOULD be known to the Central System and uniquely identify the vendor-specific implementation. The vendorId SHOULD be a value from the reversed DNS namespace, where the top tiers of the name, when reversed, should correspond to the publicly registered primary DNS name of the Vendor organisation.
Optionally, the messageId in the request PDU MAY be used to indicate a specific message or implementation.
The length of data in both the request and response PDU is undefined and should be agreed upon by all parties involved.
If the recipient of the request has no implementation for the specific vendorId it SHALL return a status UnknownVendor and the data element SHALL not be present. In case of a messageId mismatch (if used) the recipient SHALL return status UnknownMessageId. In all other cases the usage of status Accepted or Rejected and the data element is part of the vendor-specific agreement between the parties involved.
Sequence Diagram
Figure 14. Sequence Diagram: Data Transfer
Charge Point ──── DataTransfer.req ────▶ Central System
(vendorId, messageId?, data?)
Charge Point ◀─── DataTransfer.conf ──── Central System
(status, data?)
Initiator
Charge Point → Central System (this file). Also CSMS → CP (see §5.6).
Fields
| Field Name | Field Type | Card. | Description |
|---|---|---|---|
| vendorId | CiString255Type | 1..1 | Required. This identifies the Vendor specific implementation. |
| messageId | CiString50Type | 0..1 | Optional. Additional identification field. |
| data | Text (length undefined) | 0..1 | Optional. Data without specified length or format. |
| Field Name | Field Type | Card. | Description |
|---|---|---|---|
| status | DataTransferStatus | 1..1 | Required. This indicates the success or failure of the data transfer. |
| data | Text (length undefined) | 0..1 | Optional. Data in response to request. |
DataTransferStatus values
Accepted— Message has been accepted, and the contained request is accepted.Rejected— Message has been accepted, but the contained request is rejected.UnknownMessageId— Message could not be interpreted due to unknownmessageId.UnknownVendorId— Message could not be interpreted due to unknownvendorId.
Examples
{
"vendorId": "com.vendorx.charging",
"messageId": "PromoBannerSync",
"data": "{\"campaignId\":\"spring2026\"}"
}{
"status": "Accepted",
"data": "{\"ack\":true}"
}Schema
Source:
schemas/DataTransfer.json,schemas/DataTransferResponse.json(OCPP 1.6, JSON Schema draft-04)