Payment terminal providers
Test your payment terminal integration before a CPO connects.
ChargerDojo plays the CPO against your terminal management system, from terminal activation to the capture confirmation, and grades every exchange. No CPO sandbox to wait for. From 1 January 2027, AFIR requires CPOs to take payment cards at public points of 50 kW or more on the TEN-T road network, older points included.
OCPI 2.3.0 Payments and the 2.2.1 Direct Payment extension.Free on our sandbox, no login. Testing your own system: $499 a month.Covers your OCPI interface, not terminals, settlement or AFIR compliance.
Direct terminal payment · OCPI 2.3.0
20 passed · 2 not applicable · 18 not tested- 06POST/terminals/activate200 · 44 ms
- 08INTerminal registration received
- 09PUT/terminals/{terminal_id}200 · 23 ms
- 13INTariff pull received
- 15INSTART_SESSION received
- 18POST/cdrs201 · 31 ms
- 20INFinancial Advice Confirmation received
- 23POST/terminals/{terminal_id}/deactivate200 · 23 ms
One payment, start to finish
On OCPI 2.3.0, your system sends five of the thirteen calls.
We send what a CPO sends, then wait up to 5 minutes for each request your system owes.
We activate a terminal and assign it to a location and EVSE, as a CPO's CSMS would. Your system pulls the location and tariff, starts the session with an authorization reference and, when the CPO invoices, confirms the capture.
We push the Session and the CDR with that reference, then deactivate the terminal.
OCPI 2.2.1 runs the same flow without activation and deactivation.
- PTP to CPO.POST
/terminalsReply:201 - PTP to CPO.GET
/locations/{location_id}Reply:200 - PTP to CPO.GET
/tariffs/{tariff_id}Reply:200 - PTP to CPO.POST
START_SESSIONReply:200 - PTP to CPO.POST
/financial-advice-confirmationsReply:201
We send the other eight: activation, assignment and its read-back, the START_SESSION result to your response_url, two Session updates, the CDR and deactivation.
All thirteen calls
- CPO to PTP.POST
/terminals/activateReply:200 - PTP to CPO.POST
/terminalsReply:201 - CPO to PTP.PUT
/terminals/{terminal_id}Reply:200 - CPO to PTP.GET
/terminals/{terminal_id}Reply:200 - PTP to CPO.GET
/locations/{location_id}Reply:200 - PTP to CPO.GET
/tariffs/{tariff_id}Reply:200 - PTP to CPO.POST
START_SESSIONReply:200 - CPO to PTP.POST
{response_url} - CPO to PTP.PUT
/sessionsReply:201 - CPO to PTP.PUT
/sessionsReply:200 - CPO to PTP.POST
/cdrsReply:201 - PTP to CPO.POST
/financial-advice-confirmationsReply:201 - CPO to PTP.POST
/terminals/{terminal_id}/deactivateReply:200
The report
Every capture confirmation is checked against the CDR it pays for.
When the CPO invoices, D12 matches the captured total to the CDR, and D10 checks a successful capture's total, currency and EFT data. On the sandbox you can choose a partial or failed capture instead, and D11 keeps it a payment failure even when the CDR itself is valid. A PTP invoice sends no confirmation, so D10, D11 and D12 do not run.
- Terminal
D02An assignment stays retrievable after the PUT.- Price
D04Your system pulls the tariff it shows on the terminal.- Session
D06START_SESSION carries a Token and every field its version requires.D07START_SESSION carries an authorization reference and, when the CPO invoices, the confirmation repeats it.- Capture
D10The confirmation records total, currency and EFT data.D12The captured total matches the CDR total. A business check, beyond what OCPI requires.D15A duplicate confirmation creates no second transaction, on the deeper adversarial run.
The sandbox run above. The report names what it could not grade, such as the processor's preauthorization release.
OCPI versions
Two versions, two contracts.
A 2.2.1 Direct Payment integration does not carry over to 2.3.0 unchanged.
| What changes | OCPI 2.2.1 Direct Payment | OCPI 2.3.0 Payments |
|---|---|---|
| Defined in | EVRoaming Foundation working document, March 2024 | Core specification chapter |
| Preauthorization amount | max_price on the Tariff | preauthorize_amount on the Tariff |
| Terminal activation | Not in the document | activate and deactivate on the PTP interface |
| Price shape | excl_vat, incl_vat | before_taxes, taxes |
OCPI has no PTP value in its Role enum, so ChargerDojo records your system as OTHER. OCPI 2.3.0 testing scope
Before you rely on a report
What a verdict covers.
It covers
Your terminal management system's OCPI interface.
Each request and response, with the rule behind the result.
A report you can share with a CPO.
It does not cover
Physical terminals.
Settlement with your payment processor.
AFIR compliance.
AFIR places the card payment duty on operators of recharging points, not on terminal providers. From 1 January 2027 it reaches existing points of 50 kW or more on the TEN-T road network and on safe and secure parking areas. Your OCPI side is what we test. Regulation (EU) 2023/1804, Article 5
Sandbox-tested. These checks have run against our own sandbox terminal system, not yet against a terminal provider's own system. A report is not a certification.
Before you connect.
Do I need a physical terminal?
No. ChargerDojo talks to your terminal management system over OCPI. Your system still has to start the session and, when the CPO invoices, send the confirmation, so use a test terminal or a script of your own.
Our system connects as an eMSP. Does this apply?
The journey needs a Payments Sender interface. If you connect through eMSP modules without Payments, test your system as an eMSP endpoint instead. If you can choose, connect over OCPI 2.3.0 Payments, where the module is part of the standard.
We are a CPO connecting a terminal provider. What can we test?
Run the Payments suite against your Receiver interface, on Automate, $499 a month. No journey plays the PTP against a CPO today.
Is a report a certification?
No. ChargerDojo is an independent testing tool. A report records the checks that ran against your endpoint.
Run it before your first CPO connects.
Free on our sandbox, no login. Testing your own system needs Automate, $499 a month.