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 gates trading on its health: 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. A cancel is always allowed, so you can always 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.

Redundancy beyond the single session is a deployment choice you control, the way you already run the rest of your estate. Voltnir is deliberately one binary, not a black-box cluster you have to trust.

  • exchange active
  • AMQP publisher + consumers
  • order-book connected
  • order-book synchronised
  • order-book sequence-healthy
all greennew order / modify
any one red503
cancel always allowed
session health
  • exchange active
  • AMQP publisher + consumers
  • order-book connected
  • order-book synchronised
  • order-book sequence-healthy
all greennew order / modify
any one red503
cancelalways allowed
A cancel is never gated, so you can always reduce exposure while the feed is degraded. The gate also checks the M7 heartbeat, the exchange's product parameters and cash-window coverage.

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 any of it by time, action, user, or outcome (over REST, WebSocket, or gRPC), with JSON or CSV export over REST, from the API, or for orders and trades directly from the terminal. Who can read the audit log, who can export it, and who can read exchange errors are each a permission of their own.

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.

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. Report exports and terminal sign-in sessions are REST only. 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. Report exports and terminal sign-in sessions are REST only. 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.

No floats. No surprises. Prices and quantities move as fixed-point integers, never floats. API keys are hashed at rest and shown once. Lose one and you rotate, you do not recover.

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.

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. Flat.

One price per EPEX SPOT membership. Flat and predictable, the same whether you run one virtual member or fifty.

// TRADER

Everything, for one trader.

€2,000
per month, per EPEX SPOT membership
Included
  • The Voltnir trading terminal: depth-of-book, order entry with pre-trade risk checks, real-time P&L, charts with VWAP, the XBID opportunity map, and the public trade tape.
  • Runs on-premise as a single binary. No telemetry, nothing phones home. You own the data, and the off-switch.
  • One user, trading your EPEX SPOT membership directly.
  • Trading, market data and account operations on three transports at parity (REST, WebSocket, and gRPC), report exports and terminal sign-in sessions over REST, and a first-party Python SDK.
  • Capture the live trade tape and raw order book to your own database for history and analysis.
  • Append-only audit trail, every order and trade attributed to the user behind it, queryable and exportable.

The whole platform. One user.

// DESK

If you're running a book.

€4,800
per month, per EPEX SPOT membership
Everything in Trader, plus
  • Unlimited users, each with their own login and granular per-action permissions
  • Unlimited virtual members: subsidiaries, asset-operator clients, or white-label desks on one node
  • Per-member position and cash limits, built to ECC Risk Management Services: separate EUR/GBP pools, an isolated pre-trade limit for every virtual member.
  • Real-time P&L and exposure, isolated per virtual member, so each client or asset stands on its own book.
  • Per-user member assignment
  • Per-user audit trail and export permissions
  • Trading terminal with user login

The whole platform. Your whole desk.

Not included EPEX SPOT membership fees · custom feature development, quoted separately

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 what you trade and who you trade it for, and we'll walk you through the software and get you licensed, usually within a working day. Or try it first: run it free on SIM below, no sales call.

CERTIFIED

Because Voltnir is a certified ISV application, EPEX SPOT does not ask your desk to pass the M7 conformance test: Voltnir already has. In the exchange's own application process you go from interest straight to simulation access and then production access, with no API implementation, testing or conformance test of your own, on software the exchange has already tested.

Run it yourself, free on SIM

Create a free account in the customer portal, download a simulator licence, and have Voltnir trading against EPEX SPOT SIM in minutes. You'll need an EPEX SPOT ASIM account for the SIM credentials; if you don't have one yet, tell us and we'll help you get set up.