Letting a driver start charging without a card, using only an app on their phone or by scanning a QR code, is possible thanks to the RemoteStartTransaction command in OCPP. The same command also lets customer support start charging remotely for a driver who has forgotten their card.

How does the flow work?

  1. The driver selects the station and connector in the mobile app or scans the QR code on the socket.
  2. The app tells the CSMS: "start charging on this connector for this user."
  3. The CSMS checks the user's permissions, limits and payment status.
  4. The CSMS sends RemoteStartTransaction to the charger.
  5. If the charger accepts the request, the reply is Accepted; if not, Rejected.
  6. If the cable is plugged in, or once it is, the charger sends StartTransaction through the normal flow and the session starts.

Important: an Accepted reply does not mean charging has started; it only shows that the charger accepted the request. You know the session actually started from the StartTransaction message.

Message content

In OCPP 1.6J, RemoteStartTransaction contains:

  • idTag (required): The ID on whose behalf the session is started. For mobile app users the CSMS usually uses a virtual user-specific ID.
  • connectorId (optional): Which connector. If omitted, the charger chooses a suitable one; on multi-socket chargers it should always be specified.
  • chargingProfile (optional): A session-specific power limit (TxProfile).

Example:

[2, "5001", "RemoteStartTransaction", {"connectorId": 2, "idTag": "APP-7F3A21"}]

In OCPP 2.0.1 and 2.1 the equivalent is RequestStartTransaction; the structure is similar, but the idToken and evseId fields are used and the CSMS assigns a remoteStartId.

Does the charger authorise again?

That depends on the AuthorizeRemoteTxRequests setting. If it is true, the charger first sends an Authorize message for the remote idTag; if false, it starts directly. Since the CSMS has already done the check, most installations choose false, which also shortens the driver's wait. See AuthorizeRemoteTxRequests for details.

Why does it return Rejected?

  • The connector is busy, reserved or out of service.
  • The connector number does not exist on the charger.
  • The charger is in a fault state (Faulted).
  • The charger does not support remote start or the feature is disabled.

When you receive Rejected, show the user a clear message such as "This socket is not available right now, please choose another socket."

What if the cable is not plugged in?

If, after the charger accepts the request, the user does not plug in the cable within a certain time, the charger cancels the preparation when the waiting time runs out. In OCPP 1.6J this time is set with the ConnectionTimeOut setting. Details: the ConnectionTimeOut setting.

Charging with a QR code

A QR code usually contains a link that identifies the station and connector. The user opens the link, signs in or enters payment details, and RemoteStartTransaction is used in the background. This is the most practical way to offer charging without handing out cards. See our article on starting charging with a QR code for details.

Common problems

  • Accepted arrives but charging does not start: The cable may not be plugged in, the vehicle may be refusing to charge or ConnectionTimeOut may have expired. Check the logs for a StartTransaction.
  • The wrong connector starts: connectorId may not have been sent.
  • Delay: If the charger's connection is slow, the command can take a few seconds; show the user a waiting state.

Security and preventing misuse

Because a remote start request can only come from the CSMS, it is a secure channel; but on the mobile app side you need to make sure the user is actually standing at that socket. Otherwise someone could start charging from their own account on another driver's plugged-in vehicle, or choose the wrong socket. A QR code that identifies the socket directly, a location check in the app and matching the start request with a cable being plugged in within a short time all reduce these risks.

Conclusion

RemoteStartTransaction is the foundation of cardless charging and remote customer support. Telling an Accepted reply apart from a session that has actually started, specifying the right connector and managing timeouts well give users a smooth experience. Üreticy's OCPP software records the result of remote commands and lets you start charging from your own app through the API.