Scroll
Certified EPEX SPOT ISV

The protocol
is our problem.
Start trading.

The missing layer between your stack and
the EPEX SPOT Intraday M7 API. One membership, many isolated desks. Trade your own book, run subsidiaries, or white-label desks for clients.

EPEX SPOT Intraday M7 v6 + v7 on-prem Rust
Voltnir is a certified EPEX SPOT Independent Software Vendor (ISV).
01 · WHAT IT DOES

Most firms don't have a trading problem. They have an infrastructure problem dressed up as one.

EPEX SPOT M7 is unforgiving. AMQP session state, delta sequencing, order-book consistency, failover to the backup servers when one drops: all of it runs live, while your positions are open and the market keeps moving. Most teams either overpay a vendor for software that never quite fits, or spend six months on plumbing before a single order reaches the exchange.

Voltnir ends that. It is an EPEX SPOT intraday trading API gateway for ultra-low-latency, automated power trading: you connect over REST, WebSocket or gRPC, and Voltnir speaks the EPEX SPOT API, M7 v6 and v7, on your behalf; behind it sits a live, consistent order book, full order management, and real-time position tracking. The protocol, the session state, the reconnect logic: none of it is yours to manage anymore. What you build against is the market itself.

Easy to install and configure.

Market and desk information on demand.

Realtime market and desk information.

Ultra-low-latency read and execution.

A complete solution for EPEX SPOT intraday trading.

For a complete picture of how every part works, see the full feature list → or read what the EPEX SPOT API is →

The protocol is our problem, not yours.

02 · SPEED

Bad infrastructure is your competitor's revenue stream.

EPEX SPOT intraday runs continuously, right up to delivery. EPEX SPOT reports that its M7 trading system handles more than 10 million orders a day. Voltnir's ultra-low latency order path applies an order-book delta in 12 μs and hands an order to M7 in 118 μs on a dedicated 8-core server, both means. On a shared 2 vCPU VM the same figures are 30 μs and 480 μs. For a battery running rolling intrinsic strategies, that tempo is revenue, and trading it on a stale book is measurable lost capture.

The market is automating around you: ~84%Share of EPEX SPOT intraday trades executed via API rather than the manual front end (EPEX SPOT, 2023) of EPEX SPOT intraday trades are executed via API rather than by hand, and since October 2025 each day splits into 9615-minute products across all coupled markets, since October 2025 quarter-hour contracts. Stale infrastructure doesn't cost you latency. It costs you fills.

Battery economics · EPEX SPOT intraday
Every update vs once an hour
+58% profit
Every update vs once a minute
+14% profit
Once a minute · 10 MW · per year · 2021
−~€43,000
Peak month · 2025 · intraday + reserves
€19,100 / MW
Market volume · 2025
241 TWh▲ 12%

Sources: Schaurecker et al., Applied Energy, 2026 · enervis Battery Storage Index, May 2025 · EPEX SPOT annual results, 2025

How these figures are derived

The first three rows come from a peer-reviewed study of a 10 MW / 10 MWh battery on the German continuous intraday market, over one year of order-book data (2021, hourly contracts). Re-optimizing on every order-book update earned €349,000 in the year. Once an hour earned €221,000. Every update earned 14% more than once a minute, which puts once a minute at about €306,000: the €43,000 gap above. The peak month is the enervis index for a 1 MW / 2 MWh battery, across intraday, FCR and aFRR. Your figure depends on your assets, strategy and markets.

A 200 ms delay missed about 7% of orders. The study behind the figures above added a 200 ms technical delay to its fastest strategy. About 7% of its orders missed, and profit fell by roughly 6 to 7%. On a dedicated server, Voltnir's share of the path to EPEX SPOT is 118 μs on average. Your network, your algorithm and the exchange add the rest.

Predictable speed matters as much as raw speed. An algorithm is tuned for the delay it expects. When the delay jumps, the late orders are the ones that miss. That is why the table below shows the slowest 1 in 100 orders (p99) as well as the average. On a dedicated server, 99 of 100 orders clear admission within 98.1 μs.

Measured timings · per order
8-corededicated server2 vCPUshared VM
Order in to M7 wire, mean118 μs480 μs
Admission
p5059.2 μs212.8 μs
mean62 μs223 μs
p9998.1 μs708.3 μs
Queue wait
p5049.7 μs227.2 μs
mean56 μs257 μs
p99131 μs1.4 ms

About 12 hours on the EPEX SPOT simulation environment, about 4,000 orders on each host. Dedicated 8-core server. Shared 2 vCPU VM.

What the stages cover

Admission is Voltnir's own work on an order. It validates the order and checks that the contract is open. It waits for the position lock, so two orders never spend the same headroom. It runs the position, cash and self-trade checks and records the order. Queue wait starts when the order is handed to the publisher. It covers any wait for the publisher, building the M7 message and writing it to the open AMQP connection to M7. Order in to M7 wire adds the two means. Percentiles do not add, so there is no total p50 or p99. Network transit and exchange processing are outside the measurement, and the order-book delta is a separate path. A vCPU on a shared VM competes for CPU cycles with other processes and other virtual machines on the same physical server. That contention can stretch the tail: the VM's queue-wait p99 is 1.4 ms. Your install reports the same stages over OpenMetrics. Details on the features page

For why the speed of your infrastructure belongs in the strategy, read your infrastructure is part of your strategy →

The only latency between your algo and EPEX SPOT is the wire.

03 · DEPLOYMENT

Voltnir runs in your environment.
Not ours.

Voltnir is a single, statically linked Linux binary. Deploy it on any Linux server. No installer, no third-party software running alongside it.

Everything is configurable through a single file. REST, WebSocket, and gRPC can be enabled independently. Choose your database: SQLite out of the box, or Postgres. TLS on a reverse proxy of your choice.

The only outbound connection is to EPEX SPOT M7, over TLS, authenticated with your own client certificate. Nothing else. No telemetry. No phone-home. No licence server.

For the reasoning behind this design, read why Voltnir runs on your infrastructure →

You own the data. You own the off-switch.

04 · RESILIENCE

What happens when the connection drops.

Voltnir holds one EPEX SPOT M7 session, and a new order or modify goes out only when all of its checks pass: exchange health and your risk checks. A new order is refused the moment the order book is stale, torn, or disconnected, so new orders are not sent against a book Voltnir knows is bad. It is refused too when it would breach a position or cash limit or the member order limit; slot limits refuse it in reject mode, and self-cross under the reject policy. No stage gates a cancel, so you can still reduce exposure.

Both exchange links reconnect on their own, using exponential backoff, pong-age liveness, and automatic failover to EPEX SPOT's alternate host. They rebuild live state from the exchange on reconnect, so state is rebuilt from the exchange and the database after a restart. A sequence gap is treated as corruption: drop, resync, and refuse new orders until the book is whole again.

all must pass
exchange health
  • exchange active
  • AMQP publisher + consumers
  • order-book connected
  • order-book synchronised
  • order-book sequence-healthy
any one red 503
risk checks
  • position limits 422
  • slot limits reject mode 422
  • cash limits 422
  • self-cross reject policy 422
  • member order limit 400
any one red its code
all green new order / modify
cancel gated by no stage
Every stage must pass, and a 503 names the failing link. Slot limits refuse only in reject mode, and self-cross only under the reject policy; in any other setting the order passes them. Exchange health also covers the private-data stream, the M7 heartbeat, the product parameters and cash-window coverage. No stage gates a cancel, so you can still reduce exposure while the feed is degraded.

For the full health and resilience model, see the resilience section →

Degrade loudly.

05 · MULTI-TENANT

One membership fee,
multiple revenue streams.

One EPEX SPOT membership costs the same whether you trade for one entity or ten. Voltnir lets you trade for ten.

Each virtual member is a fully isolated trading entity: its own position limit, its own fixed share of the cash limit in EUR or GBP, enforced before a single order leaves the gateway. One member cannot consume another's margin. One client's bad day stays their bad day.

Every user operates under exactly the permissions you grant them, scoped to exactly the members you assign them to. A junior trader on the NL desk cannot touch the DE book. A read-only auditor sees everything and changes nothing.

If a regulator asks what happened, you have an answer. Every order, every trade, every permission change: attributed to the member, the user, and the moment it happened.

Virtual members · 3
↔ many-to-many ↔
Users · 4
NL-BATTERY10YNL----------L
position limit:± 25.0 MW
allocation:€ 150,000
DE-RENEWABLES10Y1001A1001A82H
position limit:± 18.0 MW
allocation:€ 100,000
INTERNAL-DESK10YFR-RTE------C
position limit:± 12.0 MW
allocation:€ 60,000
s.weber1 member
submitmodifycanceltrade-global
j.koenig2 members
submitmodifycancelread-audit
l.martin2 members
submitmodifycancel
m.bauer3 members
read-auditexport
  • NL-BATTERY±25.0 MW · €150,000
  • DE-RENEWABLES±18.0 MW · €100,000
  • INTERNAL-DESK±12.0 MW · €60,000
assignments
NL
DE
INT
s.weber submitmodifycanceltrade-global
j.koenig submitmodifycancelread-audit
l.martin submitmodifycancel
m.bauer read-auditexport

Virtual members and per-user permissions are part of the Desk tier only. See pricing →

Their orders. Your margin.

06 · AUDIT

An audit trail that matches your remit.

If a regulator asks what happened, you have the answer on your own infrastructure, never ours. Voltnir keeps an append-only record of every order, trade, and operator action, each attributed to the user, the member, and the millisecond behind it.

Every order and trade is attributed to the EPEX SPOT trader code, the Voltnir user, and the virtual member behind it, with millisecond timestamps and the original raw M7 message preserved alongside. A refused order leaves as clear a trail as a filled one, whether the exchange or the pre-trade gate refused it: the reason or error code, raw payload, and the user who triggered it, all on the same record.

Operator actions sit on the same log. Every permission change, limit adjustment, kill-switch toggle, and user creation carries the actor, their source IP, the outcome, and a before-and-after snapshot of what changed. The platform's own lifecycle events log under a system actor. Nothing is exempt.

Query the audit log by time, action, user, or outcome, and export it as JSON or CSV. Through the API or the trading terminal.

Optionally, archive the full public trade tape and raw order-book (every M7 snapshot and delta) to PostgreSQL or Parquet, for backtesting and market reconstruction.

Voltnir gives you a complete, attributable audit trail to feed your obligations, but it is not a reporting tool: it does not file your REMIT or MiFID transaction reports for you. That boundary is deliberate. You keep the record and the control; we don't sit in the middle of your compliance.

Nothing happens off the record.

07 · SECURITY

The architecture is the credential.

Most vendor software is a liability the moment it touches your network: it phones home, it needs inbound ports, it ships telemetry you can't see. Voltnir is built to be the opposite. It makes exactly one connection, outbound to EPEX SPOT M7 over mutual TLS, and nothing else. No telemetry, no phone-home, no licence server to call. It can run on a host with no route to the internet but that single exchange dial, air-gapped from everything else you run.

Reaching the exchange takes three independent factors, none replayable on its own: a mutual-TLS client certificate, your M7 credential, and a fresh time-based code generated at every connect. The licence that authorises the binary is verified offline. There is no licence server, online check, or external dependency in the trust path.

your infrastructure
Voltnir
EPEX SPOT M7
One outbound connection to EPEX SPOT. No inbound listeners toward the exchange, no telemetry, no phone-home.

Voltnir is a certified Independent Software Vendor (ISV) of EPEX SPOT for the M7 intraday continuous market: the software has passed the exchange's conformance tests and is listed on epexspot.com. Your desk does not need to pass the conformance test: Voltnir already has.

For what the certification means for getting a desk online, read what an EPEX SPOT ISV is →

Nothing reaches in. One thing reaches out.

08 · API

Three protocols. One contract.

Trading, market data and account operations are available over REST, WebSocket, and gRPC. Pick the transport that fits the job: REST for simplicity, WebSocket for browsers and dashboards, gRPC for low-latency algorithmic power trading systems. The operation is identical on all three. Your code never touches the EPEX SPOT API itself. Voltnir is the M7 API middleware in between.

REST
/api/v1
  • HTTP + JSON, request and response
  • Every request/response operation, minus the live streams
  • No codegen, no SDK; any HTTP client works
WebSocket
/ws/v1
  • Single persistent connection
  • ~100 ms coalesced tick
  • zstd compression
  • Browsers and latency-tolerant clients
gRPC
voltnir.api.v1
  • Typed Protobuf over HTTP/2
  • Every delta, fill, and state change pushed immediately
  • Server-streaming: no polling, no webhooks
  • Python SDK today, .proto file for everything else

One contract, three ways. Every trading, market data and account operation exists on all three transports with the same fields, the same integer units, the same permissions, and the same error codes. One shared implementation, not three, and parity is verified on every release.

Streaming is native to each. REST is request and response. gRPC watch streams push each order-book delta, fill, and state change as it happens; the WebSocket feed coalesces the same events onto a ~100 ms tick (PnL and status once a second), zstd-compressed so a burst collapses to one frame. No polling, no webhooks.

REST  ·  curl
POST /api/v1/order
Authorization: Bearer ${TOKEN}

{
  "side": "BUY",
  "price": 5000,
  "quantity": 1000,
  "delivery_area_id": "10YNL----------L",
  "contract_id": 12345678,
  "v_member_short_id": "NL-BATTERY"
}

// → 201 Created
WebSocket  ·  /ws/v1
// after the {action:"auth", token} frame
{
  "action": "new_order",
  "req_id": "r1",
  "side": "BUY",
  "price": 5000,
  "quantity": 1000,
  "delivery_area_id": "10YNL----------L",
  "contract_id": 12345678,
  "v_member_short_id": "NL-BATTERY"
}

// ← {"op":"new_order","ok":true}
gRPC  ·  Python SDK
from voltnir_sdk import VoltnirClient, Side

client = VoltnirClient(
    host="voltnir.local",
    api_key=os.environ["VOLTNIR_TOKEN"],
)

client.submit_order(
    side=Side.BUY,
    price=5000,
    quantity=1000,
    delivery_area_id="10YNL----------L",
    contract_id=12345678,
    v_member_short_id="NL-BATTERY",
)

Pick your transport. The contract doesn’t change.

09 · DESK

A terminal you can trade on today.

Voltnir ships with a full trading terminal, embedded in the same binary, nothing extra to install. Open a browser tab, log in, and you're looking at live depth-of-book, the contract ladder, real-time P&L, and the audit log. On any host. In minutes.

Before an order leaves the ticket you already know its projected position, the cash it consumes, and how far it walks the book. Your own resting orders sit in the ladder with their queue position. Limits and the kill-switch stay visible the whole session. The cross-border map shows where the money is: a pan-and-zoom map of Europe that colours every bidding zone by the spread you could trade, gated by the transfer capacity that would have to carry it.

Every user logs in with their own credentials, trades under their own account, and leaves their own audit trail.Multiple user logins are a Desk-tier feature. A Trader licence runs the same terminal with one operator login.

The terminal runs on the same WebSocket API your code would use, so anything it does, your stack can do too.

voltnir.local
LOAD1s: 99824h: 19741 POS LIMIT100 MW EUR LIMIT€482.315,40 GBP LIMIT£250.000,00 € P&L+1.284,60 € UP&L+312,45
OPERATIONAL LIVE RTT<10ms·AGE<100ms
10YNL----------L XBID_Quarter_Hour_Power ⇄ALL
BLOTTER TAPE EVENTS PNL ATC RECORDS AUDIT EXCHANGE SYSTEM
Q02:00-02:15_XB 1h 11m ×
·11,2MW39,10
·11,5MW38,45
·34,0MW37,80
·11,1MW37,30
·11,4MW36,85
·22,2MW36,40
·11,4MW35,90
34,10⇄35,90
1,80
EUR / MWH
·11,1MW34,10
·22,5MW33,60
·10,6MW33,05
·11,4MW32,40
·34,2MW31,80
·10,8MW31,00
·11,2MW30,25
LAST35,030,1MW27-09 22:48
BID ↓QTY ↕
34,101,1
33,601,7
33,600,8#2/2
33,050,6#1/1
32,401,4
31,801,7
31,801,7
31,800,8
31,000,8
30,251,2
29,501,2
29,501,9
ASK ↑QTY ↕
35,901,4
36,400,9
36,401,3#2/2
36,851,4#1/1
37,301,1
37,801,4
37,801,1
37,801,5
38,451,5
39,101,2
40,000,8
40,001,7
POSITION0,000 MW DEPTHCHART
+ NEW ORDER
DELIVERY ↑ QTY ↕ BID ↕ MID · SPREAD ASK ↕ QTY ↕ TREND ↕ LAST ↕ QTY ↕ REF ↕
Q00:45-01:00_XBLIVE--—--▲+2,4041,201,530,81O
Q01:00-01:15_XB11M4,940,5042,35Δ3,7044,201,7▲+1,1542,990,135,67O
Q01:15-01:30_XB26M2,327,2028,50Δ2,6029,802,7▼−0,8528,500,331,74O
Q01:30-01:45_XB41M1,223,1024,25Δ2,3025,401,7▼−1,3024,300,531,57O
Q01:45-02:00_XB56M4,139,6041,25Δ3,3042,903,4▲+3,0541,400,130,59O
Q02:00-02:15_XB1H11M1,134,1035,00Δ1,8035,901,4▲+0,9535,030,129,69O
Q02:15-02:30_XB1H26M0,831,0032,20Δ2,4033,404,8▼−0,4032,280,128,93O
Q02:30-02:45_XB1H41M2,333,2034,65Δ2,9036,101,2▲+0,6035,000,128,48O
Q02:45-03:00_XB1H56M4,221,4022,65Δ2,5023,900,5▼−0,7522,500,327,96O
Q03:00-03:15_XB2H11M2,420,2021,50Δ2,6022,804,0▼−0,3521,600,128,65O
Q03:15-03:30_XB2H26M2,022,7024,00Δ2,6025,301,3▲+0,2024,100,430,14O
Q03:30-03:45_XB2H41M0,732,9034,35Δ2,9035,800,7▼−1,1034,601,430,75O
TAPE 380 AREA ×
22:48:21Q02:00-02:15_XB▲35,030,1MW
22:48:02Q01:15-01:30_XB▼28,500,3MW
22:47:44Q01:00-01:15_XB▲42,990,1MW
22:47:30Q00:45-01:00_XB·41,201,5MW
22:47:12Q03:30-03:45_XB▲34,601,4MW
22:46:51Q01:30-01:45_XB▼24,300,5MW
22:46:33Q02:45-03:00_XB▼22,500,3MW
22:46:10Q03:15-03:30_XB·24,100,4MW
22:45:48Q02:30-02:45_XB▲35,000,1MW
22:45:25Q01:45-02:00_XB▲41,400,1MW
EVENTS 138 ×
ADD
SELL1,7MW@29,80·Q01:15-01:30_XB
22:48:12·TRD004
ref=HOUSE-QH-0417
DEL
SELL0,5MW@42,90·Q01:45-02:00_XB
22:47:55·TRD004
ref=HOUSE-QH-0409
ADD
BUY0,7MW@21,40·Q02:45-03:00_XB
22:47:31·TRD002
ref=HOUSE-QH-0416
POSITION OVERVIEW ORDERS & TRADES → NETGROSS MERGEDSPLIT Q02:00-02:15_XB
WORKING + EXECUTED
VOLTNIR
voltnir.local
POS LIMIT100 MW € P&L+1.284,60 EUR LIMIT€482.315,40
Q02:00-02:15_XB 1h 11m
·11,4MW36,85
·22,2MW36,40
·11,4MW35,90
34,10 ⇄ 35,90
1,80
EUR / MWH
·11,1MW34,10
·22,5MW33,60
·10,6MW33,05
LAST 35,03 0,1 MW 27-09 22:48
DELIVERYBIDASKLAST
Q01:00-01:15_XB11M40,5044,2042,99
Q01:15-01:30_XB26M27,2029,8028,50
Q01:30-01:45_XB41M23,1025,4024,30
Q01:45-02:00_XB56M39,6042,9041,40
Q02:00-02:15_XB1H11M34,1035,9035,03
Q02:15-02:30_XB1H26M31,0033,4032,28

Your desk, in a browser tab.

10 · PRICING

Per EPEX SPOT membership.

See the full feature list

// TRADER
€2,000
per month
Included
  • An EPEX SPOT-certified, ultra-low-latency M7 integration
  • Updated for every M7 release
  • REST, WebSocket and gRPC APIs, and a Python gRPC SDK
  • A feature-rich trading terminal on the same API as your code
  • Configurable pre-trade risk checks: position, slot and EUR/GBP cash limits
  • Self-trade prevention and a kill-switch
  • Real-time P&L, per TSO, per product, per contract
  • Trade tape and order book capture for backtesting your algorithms
  • Append-only audit trail of every order, trade and action

One user, trading your EPEX SPOT membership directly.

// DESK
€4,800
per month
Everything in Trader, plus
  • Unlimited users, each with their own login and permissions
  • Unlimited virtual members for your subsidiaries and clients
  • Per virtual member configurable position and pre-trade risk checks
  • Per virtual member configurable cash limits, per ECC rules
  • Per virtual member real-time P&L and exposure
  • Per-user virtual member assignment (many-to-many)
  • Per-user audit trail and export permissions
  • Read-only compliance accounts, firm-wide view
  • Every user gets their own terminal, scoped to their members and permissions

Your whole firm, on one EPEX SPOT membership.

You shouldn't need a discovery call to know what software costs.

11 · GET ACCESS

Talk to us about your desk.

Voltnir is a considered purchase for a trading desk, not a checkout. Tell us the problem you're trying to solve, and we'll walk you through how Voltnir handles it, usually within a working day. Or try it first: run it free on SIM below, no sales call.

Run it yourself, free on SIM

Create a free account in the customer portal, generate a Voltnir evaluation licence, download the Voltnir gateway bundle and have Voltnir trading against the EPEX SPOT simulation environment in minutes. You'll need an EPEX SPOT ASIM account + licence; if you don't have one yet, tell us and we'll help you get set up.