Method overview: one scale for every flow
The map gives every country two numbers for 2022 to August 2026, each against what it would have done without the war: support for Ukraine and Russia's earnings from trade (what Russia keeps: taxes and profit above a normal return, not the full price). Their sum, with the return Russia lost on its frozen reserves, is the net. Worldwide, Russia's net gain from buyers who cut fell by EUR 353.6bn and rose by EUR 216.4bn from buyers who bought more (2022–August 2026).
The core idea in four steps
- Change, not totals. Each flow is set against the level expected without the war (counterfactual). A country that kept buying the same oil shifted nothing.
- Volumes, valued at each year's prices. Paying more for the same oil is not a change in behaviour, so trade is compared in volumes (prices). The extra Russia earned from higher prices is a part of its own, the war-time windfall.
- Summed from 2022 to the chosen year: whole calendar years, so 2022 includes January and February, before the invasion (little changed then), and 2026 counts January–August. 2021 is the pre-war reference.
- As % of one year's GDP, the 2022–2024 average. It is a total for about 4.7 years, not a yearly rate.
One rule for what counts. A country's figure reflects its own choices and the foreseeable answers to them. Things forced on it that it did not choose — Ukraine's strikes on Russian refineries, Russia's sudden export bans — count neither for it nor against it. Embargoes, sanctions, switching suppliers, Russia's 2022 gas cut-off and its counter-sanctions, and the war-time prices paid by buyers who kept buying all count (what counts).
Choices and their consequences
- Buying from Russia is a choice. What Russia earns on it, at the price of the day, is a consequence of that choice. So the war-time price spike on what a country still bought counts to it, even though it did not set the price.
- No credit for others' sanctions. Where other countries' sanctions pushed Russia's prices down (the oil discount, the price cap), the buyer that kept buying paid less. That saving is not credited against it: it came from others' choices.
- There is always an alternative: another supplier, or, where none exists, sending money to Ukraine to balance it. So buyers who had little choice are counted too, including those who get Russian oil inside refined fuel bought from a third country.
- Forced losses stay neutral. When a buyer wanted to buy and could not (Ukraine's strikes on refineries, Russia's sudden export bans, a pipeline hit in the war), the fall in its purchases counts neither for nor against it.
- Russia's gas cut-offs count to the buyer. Russia cut gas to countries that had sanctioned it or refused its terms (paying in roubles); the cut is a foreseeable answer to the buyer's own choices, so the fall counts, labelled "cut off by Russia".
- The end of gas transit through Ukraine (1 January 2025) was Ukraine's decision not to renew its transit contract with Gazprom, not a cut by Russia. It was announced more than a year ahead and the buyers could switch, so it is counted like the cut-offs: the gas that stopped counts, labelled, only for gas still flowing in 2024.
Every part of the net shift
Each part in a country's panel opens its own method. In short:
| part | counted at | number | page |
|---|---|---|---|
| Aid to Ukraine (Kiel, adjusted) | weapons at market value, loans as gifts, when delivered | support | aid |
| Share of EU-level aid | by EU budget share | support | EU aid |
| Hosting refugees | spending minus the host's gain | support | refugees |
| Undisclosed aid, private donations | estimates beyond Kiel | support | aid |
| New IMF, World Bank, EBRD lending | gift value, by shareholding | support | loans |
| Bought more or less from Ukraine than without the war | Ukraine's net gain | support | trade |
| Flowing back (−) | seller's net gain × extra share | support | flowback |
| Less or more paid to Russia | Russia's net gain | trade | trade |
| War-time fuel prices | Russia's gain on the extra price | trade | prices |
| Russian oil via other countries | Russian crude inside the fuel | trade | laundered oil |
| Sales to Russia | seller's net gain × extra share | trade | trade |
| Services, shipping | seller's net gain | trade | services |
| Company taxes in Russia | profit tax + half of other taxes | trade | taxes |
| Weapons and troops sent to Russia | paid: seller's gain; unpaid: in full | trade | military |
| Weapons bought from Russia | Russia's gain on arms | trade | arms |
| Rosatom, Russian state loans | payments against schedule | trade | state finance |
| Russian-owned firms' profits | against 2019–2021 | trade | firms |
| Gold and hidden payments | Russia's gain on gold | trade | gold |
| Payment agents' fees | financial industry's gain | trade | agents |
| Russian money frozen | return Russia lost | net only | frozen |
Labels that change no total: gas that Russia cut off itself (Poland, Bulgaria, Germany and others in 2022; Austria in 2024) or that stopped when Ukraine ended gas transit in 2025 (counted only for gas still flowing the year before), and the share of a cut required by sanctions (sanctions).
Markers outside the totals
Shown on the map and in the panel, added to nothing:
- Critical goods (◆): sales to Russia of goods its weapons need; the money is already in the trade number (marker).
- Wages from Russia (△): migrants' remittances. They are individuals' wages, not a country's choice, and would swamp the ranking: Tajikistan would be about −40% of GDP; without them it is −0.40% (remittances).
- Taken by Russia (■): company assets Russia seized and forced-exit costs. Russia took them; the country did not choose to move them (taken).
One rule for every seller
Every sale counts at the seller's net gain × the share that is genuinely extra.
- Net gain: the taxes the seller's state collects plus profit above a normal return on capital, as a share of the price. Wages, materials, transport and a normal return are real costs and do not count. For other countries' sellers it comes from OECD industry accounts (2021–2023).
- Genuinely extra: the share of a sale that would not exist without it (weapons about 0.6, sales lost to Russia 0.2–0.45, because many firms found other buyers).
- In full: aid, refugee hosting, unpaid weapons, taxes and profits paid to Russia, and the return on frozen reserves.
Manufacturing earns little above a normal return, so US weapons sold for Ukraine count at about 4% of their value.
The net-gain rule
Aid is a gift: Ukraine gets EUR 1 and gives nothing back. Trade is an exchange: the seller gives up goods that cost money to make. So trade counts at the seller's net gain. The idea came from a reader on Reddit.
Russia's net gain per euro, central values:
| what Russia sells | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 |
|---|---|---|---|---|---|---|
| crude oil | 0.62 | 0.62 | 0.57 | 0.58 | 0.45 | 0.55 |
| oil products | 0.52 | 0.58 | 0.54 | 0.51 | 0.38 | 0.52 |
| pipeline gas | 0.55 | 0.82 | 0.66 | 0.56 | 0.50 | 0.53 |
| LNG (Russian owners' part) | 0.31 | 0.52 | 0.44 | 0.31 | 0.33 | 0.31 |
| coal | 0.27 | 0.41 | 0.17 | 0.03 | 0.02 | 0.02 |
| all other goods | 0.17 | 0.14 | 0.12 | 0.10 | 0.10 | 0.11 |
| services | 0.026 | 0.029 | 0.032 | 0.030 | 0.036 | 0.036 |
| arms | 0.043 | 0.039 | 0.045 | 0.049 | 0.050 | 0.050 |
| gold | 0.37 | 0.31 | 0.38 | 0.47 | 0.56 | 0.64 |
Each country's payments take the gain of what it actually bought: its own mix of fuel and other goods, from its customs records. Russia's normal return is 11.4% a year on its capital (5% real plus Russia's risk premium). Ukraine's net gain is lower, about 0.03–0.05 per euro in 2022–2025: war-time logistics take much of the price and investors need a high return.
Two numbers
- Support for Ukraine: aid, EU share, refugees, purchases from Ukraine above or below the no-war level, donations, new multilateral lending, minus money flowing back.
- Russia's earnings from trade: everything else. Positive means the country cut what Russia earns; the panel says it in words ("cut Russia's earnings from trade by 1.6%"). It has two lines that add up to it: Russia's own gain (what Russia itself kept more or less: fuel and goods it sold, war-time prices, taxes it collected, Russian firms' profits) and the country's own gain from Russia (its sales, services, shipping and its firms' profits there). Both count; the split is on the trade page.
A negative support for Ukraine means the country earned more from the war effort than it gave, not money toward Russia; on the map such a country is grey.
The cost view
What the war cost the country itself (aid at the lender's cost, the extra paid to replace Russian energy, income lost on sales to Russia, minus discounts gained on Russian oil). The site does not show it; the full data download keeps it (Download the data).
Gross flows
The map shows changes, not gross totals, because gross totals include normal trade. Gross flows (paid to Russia, bought from Ukraine, aid) are in each panel's small charts, in the downloads and as an option in Filters.
How the map shows it
One colour rule: blue toward Ukraine, orange toward Russia, grey no clear change (or support below zero), faded where the direction is not very likely. Money streams show the two numbers in euros, never gross trade. What's counted lets you switch parts off; every total, range and grade follows, and the page says "Custom mix, not the official figures".
Rules that apply everywhere
- Counted where used: gas where it is burned, fuel resold by hubs at the final buyer, goods re-exported by hubs at the country that made them.
- Counted once: automated checks test for double counting.
- Rankings leave out economies under EUR 5bn GDP. Each headline number says how likely its direction is, from simulating its parts: very likely at 95% or more with every method choice agreeing and the likely range on that side; otherwise ranked faded, labelled likely (at least 65%), too close to call, near zero or essentially zero (the whole range within ±0.1% of GDP). Among 164 economies above EUR 5bn, 95 are not very likely on the net.
- Parties to the war, Belarus and North Korea, are listed under the ranking, not ranked. Russia invaded Ukraine from Belarus (UN resolution ES-11/1); North Korean troops fought for Russia in Kursk from late 2024.
No data
A trade part counts only where the country has its own observation for the war years: a figure it or its partners report for 2022–2025, or a country-specific record from the research (tanker tracking, national statistics, a refinery's exports). A trend carried forward, or Russia's import gap split by shares, is not an observation.
Why: without an observation the number would be our guess about that country, not its record. A part with no observation counts as zero and is named under the trade section as "No data". A country with nothing observed at all is hatched on the map, with no tags and no ranking. This affects 74 economies and territories, mostly small; the list is in the research files.
Decisions behind the method
The main choices, why they were made and what they did to the numbers when they came in (the panels show today's figures). The full changelog has the evidence for each.
| decision | why | effect when it came in |
|---|---|---|
| Compare with a world without the war, not with zero | buying as before is not a choice; buying less is money Russia did not get | every trade part is a change |
| Forced losses of Russian supply count for neither side (strikes, Russia's sudden export bans, the 2026 Druzhba halt) | a country's figure reflects its own choices and the foreseeable answers to them | EUR 13bn of expected purchases taken out for 60 buyers (rounds 51–52) |
| Total since 2022 as % of average 2022–2024 GDP | compares small and large economies; one bad currency year does not decide | Nigeria +0.42% (+0.81% against 2024 GDP alone) |
| Trade at the seller's net gain | aid is a gift, trade an exchange | Lithuania +27.8% → +14.8%, Poland +8.1% → +4.1% (round 10) |
| One rule for every seller, × the genuinely extra share | sales to Russia, to Ukraine and flowback on one scale | Belarus −18.5% → −5.6% (round 13) |
| Aid from Kiel allocations, counted when delivered | the most complete database; much military aid arrives years later | US EUR 10.2bn, Germany 4.3bn not yet delivered |
| Donated weapons at market value | the value to Ukraine, not the donor's book value | bilateral military aid −14% |
| Loans at their gift to Ukraine | a repaid loan is worth less than a grant; the war yield prices default official lenders did not carry | EUR 96.5bn face → about 55bn |
| Refugees: spending minus the host's gain on refugees' work | refugees' taxes are their own income | Poland net +4.40% → +5.00% (round 24b) |
| Money flowing back is subtracted | a donor's industry earns from aid spent at home | the US earns back about EUR 2bn |
| War-time fuel prices count, against prices a no-war market expected | the premium cost Russia nothing to produce; 2019–2021 prices would overstate it threefold | Germany EUR 16.5bn toward Russia |
| The 2026 Hormuz spike is not a war windfall | this war did not cause it | 2026 no-war price = actual world price |
| Gas counted where it is burned | transit countries do not pay for gas they pass on | Germany, Slovakia, Bulgaria, Türkiye |
| Fuel from Russian crude charged to the final buyer | the buyer's demand creates the sale; the refiner keeps its margin | Nepal, Tanzania toward Russia |
| Re-exports count for the country that made the goods; Baltic transit taken out | otherwise the hub looks like the supplier; final buyers already record transit goods | Lithuania would be +45% of GDP |
| Seizures and forced exits not in the totals | Russia took them; the country did not choose to move them | Germany net +3.23% → +3.50% (round 14b) |
| Remittances only as a marker | individuals' wages, not a country's choice | Tajikistan −39.6% → −0.8% (round 13b) |
| Frozen reserves: the return Russia lost, a third to the host | an EU decision; Belgium and Luxembourg carry the legal risk | Belgium EUR 7.4bn |
| No data, no number | no country is ranked on our guesses about it | 74 economies; at most 0.2 points above EUR 5bn GDP |
| Numbers that are not very likely stay in the ranking, faded | hiding them hides information | 65% threshold is a judgement |
| Belarus and North Korea are parties to the war | Russia attacked from Belarus; North Korean troops fought in Kursk | shown, not ranked |
| No-war model uses actual 2022–2026 GDP and trade; ranges stay at the tested 90% | a war-shrunk economy is not a choice; widening every range for rare shocks blurs more than it helps | ranges cover 77–79% when Russia's own economy moves |
Cite as: War Balance, figures to August 2026, https://warbalance.org/method/overview/