Plugchoice
Blog//5 min read

How OCPP Smart Charging Profiles Work and Why Plugchoice Uses TxProfile

A practical explanation of OCPP smart charging profiles, why TxProfile is transaction-scoped, and how Plugchoice uses it for dynamic charging control.

How OCPP Smart Charging Profiles Work and Why Plugchoice Uses TxProfile

Smart charging sounds simple until you ask one annoying question: how does the charger actually know when to slow down?

Not in the vague "the app decides" sense. In the real sense. Because when your home connection is already busy, or solar output keeps bouncing around, or two cars are trying to share the same available power, something has to tell the charger what limit applies right now.

That "something" is usually an OCPP smart charging profile.

What OCPP Smart Charging Profiles actually do

If you strip away the protocol jargon, an OCPP smart charging profile is just a set of instructions sent from the backend to the charger. The platform decides the limit. The charger receives it. Then that schedule becomes the ceiling for how much current or power the charger is allowed to deliver.

So when people talk about smart charging, the intelligence is usually not hiding inside the charger itself. It sits in the OCPP platform and the OCPP backoffice or CSMS that manages the charger.

The three profile types, quickly

  • ChargePointMaxProfile sets a charger-wide ceiling.
  • TxDefaultProfile sets the default rule for future charging sessions.
  • TxProfile sets the rule for the charging session that is happening now.

That last one is the important part here.

TxProfile vs TxDefaultProfile: the practical difference

The easiest way to think about it is this:

  • TxDefaultProfile is a sticky note waiting for the next session.
  • TxProfile is a live instruction for the session already in progress.

A TxDefaultProfile can absolutely be useful. Maybe you want a charger to keep a predictable default when connectivity drops. Fair enough.

But a TxProfile is different. It is tied to an active transaction. When that session ends, the profile should be cleared or discarded. That makes it far better for live decisions instead of broad, one-size-fits-all defaults.

And that is where a lot of explainers go fuzzy. They talk about charging profiles as if they all behave the same way. They do not.

Why session-specific control matters

Real charging conditions change minute by minute.

Maybe the oven, heat pump and EV charger are all pulling power at once, so the charger has to back off before a fuse trips. Maybe solar production suddenly rises because the clouds finally moved. Maybe two chargers need to share one limited connection. Maybe electricity is cheap at night and painfully expensive later in the day.

In those situations, a default rule can be too blunt. You do not always want the charger following yesterday's assumptions. You want a live session rule that matches what is happening now.

That is why TxProfile matters. It gives the backend a transaction-specific way to shape charging during the active session, instead of relying only on a persistent default that was set earlier.

How Plugchoice uses TxProfile in practice

This is also why Plugchoice leans into TxProfile.

Plugchoice positions itself as an OCPP-native platform with broad interoperability, an OCPP proxy approach that helps avoid lock-in, and practical control through Plugchoice integrations, the app, the web portal and developer tools. In other words, it is not sending protocol messages for decoration. It is turning live conditions into charging behaviour people actually care about.

Think smart charging features like dynamic load balancing, solar balancing, power sharing, peak shaving and price-based charging. Those features only feel smart when the system can react to the session in front of it.

That is the fit between Plugchoice and TxProfile. A transaction-scoped profile is a clean way to control the current session without leaving a broad default rule behind for every future session. It keeps the instruction attached to the transaction that actually needs it.

That session-specific approach can also be friendlier than repeatedly rewriting persistent default behaviour, depending on charger implementation. The strong point, though, is not about memory wear. The strong point is that TxProfile makes operational sense for live, session-specific control.

If you want the practical layer behind that, Plugchoice already has useful explainers on power management and tariff management.

What this means when you are choosing a platform

When a charging platform says it supports smart charging, it is worth asking one more question: smart charging with what kind of control?

Because there is a real difference between a default rule that hangs around for future sessions and a transaction-specific profile that can respond to what is happening during the session.

Plugchoice's use of TxProfile is a good signal that the platform is built for live control, not just nice dashboard language. That matters for installers, operators, developers and even ordinary EV drivers who just want the charger to behave sensibly when the real world gets messy.

And if you are building on top of an OCPP platform, that difference matters even more. The protocol only helps if the backend uses it well. For the technical next step, the best place to continue is the developer documentation.