LIVE · REAL NORD POOL PRICES · 15-MIN SLOTS

Your solar & batteries,
selling only at the peak

GridBank is the control brain for solar parks with batteries. It watches every 15-minute electricity price in your bidding zone, lets the sun fill the batteries, holds the energy, and sells it only in the most expensive slots of the day — inside a 12-rule safety guard, with every decision explained in plain language.

Right now — day-ahead €/MWh…

Loading the engine's next sell slot…
15 minprice resolution — slot exact
24 hpeaks ranked ahead, every refresh
12safety rules on every command
0 €bought from the grid unless you allow it
5languages · EN ET FI RU ES
How it works

Sun in, energy held, sold at the top of the day

A battery earns by selling at a better price than it stored at. GridBank makes that the only thing it does — and refuses everything else.

☀️

1 · The sun fills the battery

Solar production goes into storage instead of being sold at midday prices. GridBank records every hour: what the panels made, when the battery got full, and whether the sun still to come will fill it again — with the time it will happen.

➜
🔋

2 · The energy waits

The engine ranks the next 24 hours of known prices and picks the top slots that can absorb what the battery holds. Every other slot is a HOLD, however tempting the plan looks. You always see the sell threshold, the next slot and how many MWh are waiting.

➜
⚡

3 · Sold in the peak, in your zone

Discharge runs only in the chosen slots, only into the site's own bidding zone, only below the export limit of the grid connection — at full ramp, with minutes-to-empty and sellable MW shown live.

Why GridBank

What a fixed aggregator contract and a black-box optimizer don't give you

Most batteries today sit in an aggregator's pool and earn a fixed share. Most optimizers are a black box you have to trust. GridBank is built so you never have to.

What matters to the ownerFixed aggregator contractBlack-box optimizerGridBank
Where the energy goesWherever the pool needs itUnknown✔ Only the top-priced slots of your own zone, shown 24 h ahead
Grid buyingPool decidesOften, silently✔ Never — unless you switch arbitrage on, with a margin gate and a daily cap
Why a decision was taken✗✗✔ Written reason for every slot, switch log with exact times
Proof before handing over control✗~ backtests✔ Shadow twin runs on your real plant next to your current controller
Safety limits enforced in software~ pool's~✔ 12 interlock-style rules, every veto logged
Connecting the plantTheir gateway, their installerIntegration project✔ 3 steps in the browser, or a box paired with a 6-digit code
Your dataTheirsTheir cloud✔ One zero-dependency binary — our cloud or your own server
Reserve markets (FCR / aFRR / mFRR)✔ (their contract)~roadmap — venues shown per zone, traded once the TSO prequalification exists
The trading brain

Not rules of thumb — a plan recomputed on every price refresh

📈

Peak-only strategy

Ranks every 15-minute price of the next 24 hours, picks the top slots that can absorb the stored energy (default: slots at ≥ 90 % of the day's high), sells there and nowhere else. Battery wear is priced into every cycle.

🧮

Exact optimizer as second opinion

A dynamic-programming plan over 36 hours, 41 battery levels, three actions per slot, with the solar forecast and round-trip losses. Energy left at midnight is valued at tomorrow's good slots, so charge is carried overnight instead of dumped.

🔒

Zone-locked selling

An Estonian site sells into EE, a Finnish one into FI — the guard vetoes anything else. Per site you set the export limit, the enabled venues and the strategy.

💱

Arbitrage only when it truly pays

Buying cheap grid power to sell at the peak is off by default. Switched on, it fires only when the margin after losses, import fee and wear beats your threshold, under a daily buying cap.

🌤

Solar & battery record

Hourly and daily production, peak time, first and last sun, battery-full time, 7-day average, best day — and an outlook that says whether the sun ahead fills the battery and by when.

📡

Imbalance guard

Solar underdelivering versus forecast is where plants silently bleed money. GridBank detects deviation within minutes, alerts you and replans the whole schedule to real conditions.

Safety

Every command passes twelve interlocks before it touches the plant

Whether the request comes from the optimizer, the rule engine or a manual button, the same guard checks it. Property-tested against 50,000 random states with zero violations. Every veto is logged with its reason.

I1No telemetry, no action — stale plant data means fail-safe idle
I2Stale prices — never trade blind
I3Reserve floor — the battery never discharges below its reserve
I4Capacity ceiling — never charge past full
I5Price ≤ 0 — export vetoed, the grid is full
I6Rated charge power limit
I7Rated discharge power limit
I8Ramp rate — power changes step by step, never a jump
I9Zone lock — the price behind a command must be the site's own zone, and a live venue must be enabled
I10Grid export cap — battery share limited to what the connection allows after solar
I11Solar-only charging unless arbitrage is on, then capped by the import limit
I12Control mode — outside ACTIVE nothing is ever dispatched
🛑

Capital-protection breaker

A daily loss floor enforced in software. If the day's result ever touches it, the battery sells only at a clear profit until midnight — the system can recover, but it can never dig deeper.

⚠️

Money-risk alerts

Price-feed outages, offline sites, guard vetoes, skipped sell slots, battery-full events, failed logins — logged, de-duplicated and badged the moment they happen.

🔐

Hardened by default

PBKDF2 password hashing, hashed session tokens, rate-limited logins, token-gated write API, secrets stored server-side and masked in the browser, strict CSP.

Real-time connection

Connect a plant in three steps — no technical knowledge needed

No box, no installer. Pick the plant, tap the portal your app already uses, type the same login or key, press Test. GridBank reads the portal itself from the cloud — nothing is installed at the site. Eleven brands and sources today; the box exists only for plants without any portal.

☀️SolarEdgemonitoring portal API
🟥Huawei FusionSolarNorthbound API
🟩GoodWe SEMSyour app login
🟦SolaX CloudAPI token + SN
🟧Solarman / Deyeopen API
🟠Fronius Solar.webcloud access keys
🔵Victron VRMportal token
📡Fronius localSolar API on site
🏠Home Assistantlong-lived token
⚙️Any JSON gatewayURL + field paths
📦GridBank boxonly if no portal exists

Choose the source

Eleven tiles in plain words. Each field says where to find the value — "SolarEdge portal → Admin → Site Access → API key".

Press Test

One live read, nothing saved. The answer is a sentence: "Solar now 3.4 kW · battery charging 1.0 kW (55 % full) · sending 1.2 kW to the grid." If a sign looks wrong, flip a switch and test again.

Save & start

The simulator switches off, the site starts in shadow mode, and the dashboard shows the link health: source, age of the last reading, readings today, gaps.

📦

The GridBank box — for any inverter or big plant

A small computer at the site. The dashboard gives a pairing code:

4 8 2 9 1 7

Whoever plugs in the box types one line with that code and it connects itself. The code works once and expires in 30 minutes. Or skip even that: the dashboard makes a pre-paired USB stick — on a Raspberry Pi it installs itself on first boot, on any plant PC one file is run. The stick carries a token for that site only, revocable from the dashboard. The box then fetches its settings from the dashboard — inverter address, sign conventions, poll rate, control mode — so nobody ever edits a config file.

🔍

Finds the inverter by itself

The box scans the plant network for Modbus TCP devices, recognises SunSpec inverters, meters and batteries, and decodes power and state of charge from the standard models. Vendor-specific plants use the JSON path or the Advanced register map.

🛰

Live, every 15 seconds

Solar, battery, grid and state of charge stream into the engine, which re-evaluates each site every cycle and at every 15-minute slot boundary. Telemetry older than 90 seconds idles the plant — fail-safe by design.

Control handover

Shadow first. Control only when you say so.

A battery that already sits with an aggregator keeps earning there while GridBank proves itself alongside. Nothing is dispatched until a real site is switched to ACTIVE by typing its name.

SHADOW

Decide, log, value — touch nothing

The engine decides every slot and values it at real prices. The guard blocks every dispatch at the lowest level (rule I12). Your current controller or aggregator keeps running the battery.

ADVISORY

Recommendations exposed

Same as shadow, but the setpoint API tells a human or the partner what GridBank would do right now, with the guard's verdict and the reason.

ACTIVE

Guarded setpoints executed

The box executes GridBank's setpoints — only while the server says ACTIVE, only with control explicitly enabled on the box, and it releases the battery to idle if it ever loses the server.

Proof

GridBank versus what actually happened — on your plant, in euros

For every battery a virtual twin with the same specs runs GridBank's decisions through the same guard, against the real sun and the real prices. Its revenue sits next to what the plant actually earned under its current controller, and next to what the aggregator reports.

DaySolar MWhGridBank twin €Actual plant €DifferenceAggregator reported €Twin sell slots
Mon61.23 9402 860+1 0802 7906
Tue44.82 6152 210+4052 1805
Wed70.54 3803 050+1 330—7
Illustrative numbers. Real rows fill in day by day; the aggregator's figures are typed in or imported as CSV.
AI analyst

A briefing grounded in your real numbers — and it answers questions

The analyst sees every site's zone, strategy, sellable energy, solar record, outlook, guard vetoes and the shadow comparison. It judges by peak capture — how close to the daily high the energy was sold — never by market averages. In English, Estonian, Finnish, Russian or Spanish.

Daily brief. Pärnu held 6.4 MWh through the afternoon and sold in the 18:15–19:00 block at 312–500 €/MWh, 91 % of the day's high. Tartu skipped one planned slot: the margin over stored cost was below your 25 € minimum — that is the rule working, not a fault. Tomorrow's forecast fills Oulu's battery by 13:40; the evening peak is thin (238 €), so the engine keeps 40 % for Thursday.
You: why is Pärnu holding right now?
Analyst: The current slot pays 131.8 €/MWh; the sell threshold for today is 500 €/MWh (top slots at 00:45 and 01:00). Selling now would give up ~2 300 € versus the plan. Solar surplus of 1.07 MW is being stored for that window.
Markets & access

Day-ahead today, reserves when you are ready

GridBank shows, per bidding zone, every venue a site could sell into and what each one requires. Only markets with a live price feed are ever traded automatically.

🏛

Nord Pool day-ahead — live

EE, FI, LV, LT — 15-minute auction, prices from the Elering feed, verified slot-exact. The baseline the engine trades on.

⏱

Intraday — indicative

Continuous trading until an hour before delivery. Shown as an estimate; traded once your partner grants intraday access.

⚖️

mFRR · aFRR · FCR — roadmap

Baltic balancing energy and capacity markets (Elering) and Fingrid reserves. Requires a balancing-service-provider agreement and a prequalified battery; typical minimum bid 1 MW, aggregation allowed.

🗺

The route to market, explained

Grid connection contract → metering point in the data hub → balance responsibility via a supplier/aggregator or your own Nord Pool membership → reserves later. The dashboard walks you through it and GridBank produces the 15-minute schedules either way.

Platform

Built like plant software, not like a web app

📦

One binary, zero dependencies

Go, standard library only, the dashboard embedded. Runs in our cloud or fully on-premise — plant data never has to leave your network.

🌍

Five languages, one dashboard

English, Estonian, Finnish, Russian and Spanish — every page, every guide, every AI brief.

📱

Phone-first operations

Bottom tab bar, big status chips, one-line reasons. Everything an operator needs at 06:00 from a phone.

🧾

Audit trail & exports

Trade ledger per 15-minute settlement, switch log with reasons, CSV export, daily net revenue history.

🧪

Tested

Guard invariants, zone lock, export cap, solar-only charging, control-mode lock and the shadow twin are covered by automated tests on every build.

🔁

Self-healing

Watchdog restarts, persistent state, slot-boundary refresh, de-duplicated events. The engine has been running the public demo fleet on real prices since August 2026.

Pricing

Aligned with your revenue — we earn when you earn

Prove it

Shadow Pilot

€0 / 30 days
  • Read-only connection to one site
  • Full dashboard, solar record & AI briefings
  • Proof page: GridBank vs. your current controller
  • No hardware control, no risk
Start free pilot
Most popular

Operate

12% of market revenue · no minimum · box included
  • Peak-only day-ahead selling + reserve income (aFRR / mFRR) through our market access
  • 12-rule safety guard & capital-protection breaker
  • GridBank box with SIM, installed and monitored
  • Owner keeps 88 % — statement every month, Proof page always open
  • AI analyst in 5 languages, alerts, audit trail, CSV
Talk to us
Fleets & utilities

Fleet

8% of market revenue · 20+ plants
  • Multi-site fleets, portfolio view, one box per plant
  • On-premise deployment option
  • Intraday & reserve markets with TSO prequalification
  • SLA, dedicated support, custom connectors
Contact
FAQ

Questions owners ask first

Do I have to leave my aggregator to try GridBank?

No. In shadow mode GridBank only reads the plant and decides on paper. Your aggregator keeps controlling the battery and earning its reserves. The Proof page then shows what GridBank would have earned next to what actually happened.

Does GridBank buy electricity?

Not unless you switch arbitrage on. By default the sun is the only source. With arbitrage on, it buys only when the margin after losses, import fee and wear beats your threshold, under a daily cap you set.

Who sells the energy on the exchange?

Either a supplier/aggregator that already holds balance responsibility sells at the exchange price and GridBank sends it the 15-minute schedule, or a larger owner becomes a Nord Pool member itself. GridBank produces the schedules and bids in both cases.

What do I need to install?

For SolarEdge, Huawei FusionSolar, Victron VRM and Home Assistant: nothing — GridBank reads the portal. For everything else the GridBank box is paired with a 6-digit code and finds the inverter on its own.

Can it break my battery or my grid contract?

The guard enforces reserve floor, rated powers, ramp rate, export limit, zone lock and control mode on every command, and a daily loss floor stops further loss. Every veto is logged. Real sites cannot be switched to ACTIVE without typing the site name.

Where does my data live?

In one zero-dependency binary that runs in our cloud or on your own server. Secrets are stored server-side and never shown unmasked in the browser.

🔒 PBKDF2 password hashing🔑 Hashed session tokens🛡 Token-gated write API📦 Zero third-party dependencies🇪🇺 Nord Pool via Elering · EE FI LV LT🧪 Guard property-tested · 50 000 states

See your own numbers before you decide

A 30-day shadow pilot costs nothing and touches nothing. Connect the plant in three steps and read the Proof page in a month.