<!-- --> <!-- --> !function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document); * { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -o-font-smoothing: antialiased; } Chart.plugins.unregister(ChartDataLabels); Chart.Legend.prototype.afterFit = function() { this.height = this.height + 30; }; // load a number locale numeral.register('locale', 'changeventures', { delimiters: { thousands: ',', decimal: '.' }, abbreviations: { thousand: 'K', million: 'M', billion: 'B', trillion: 'T' }, currency: { symbol: '€' } }); // switch between locales numeral.locale('changeventures'); var convertCurrency = function(value, length) { // if short if (length == 'short') { // by default show format that looks like €700k, €1M var currencyFormat = '($0a)'; var toText = value.toString(); //convert to string var last5Chars = toText.slice(-5); //gets last 6 character var last6Chars = toText.slice(-6); //gets last 6 character var last9Chars = toText.slice(-9); //gets last 6 character var last5Digits = +(last5Chars); //convert last characters to number var last6Digits = +(last6Chars); //convert last characters to number var last9Digits = +(last9Chars); //convert last characters to number // if value is over million and // if not a round number with 6 zeros, show 1 number after ".": e,g €1.2M if (value > 1000000 && last6Digits !== 000000) { var currencyFormat = '($0.0a)'; } // if not a round number with 5 zeros, show 2 numbers after ".": e,g €1.23M if (value > 1000000 && last5Digits !== 00000) { var currencyFormat = '($0.00a)'; } // if billions and not a round number with 8 zeros, show 1 numbers after ".": e,g €1.23B if (value > 1000000000 && last9Digits !== 000000000) { var currencyFormat = '($0.0a)'; } } return numeral(value).format(currencyFormat); } var convertCurrencyShorter = function(value, length) { // if short if (length == 'short') { // by default show format that looks like €700k, €1M var currencyFormat = '($0a)'; var toText = value.toString(); //convert to string var last5Chars = toText.slice(-5); //gets last 6 character var last6Chars = toText.slice(-6); //gets last 6 character var last9Chars = toText.slice(-9); //gets last 6 character var last5Digits = +(last5Chars); //convert last characters to number var last6Digits = +(last6Chars); //convert last characters to number var last9Digits = +(last9Chars); //convert last characters to number // if value is over million and // if not a round number with 6 zeros, show 1 number after ".": e,g €1.2M if (value > 1000000 && last6Digits !== 000000) { var currencyFormat = '($0.0a)'; } // if not a round number with 5 zeros, show 2 numbers after ".": e,g €1.23M if (value > 1000000 && last5Digits !== 00000) { var currencyFormat = '($0.0a)'; } // if billions and not a round number with 8 zeros, show 1 numbers after ".": e,g €1.23B if (value > 1000000000 && last9Digits !== 000000000) { var currencyFormat = '($0.0a)'; } } return numeral(value).format(currencyFormat); } window.fbAsyncInit = function() { FB.init({ appId : '427689131960563', autoLogAppEvents : true, xfbml : true, version : 'v9.0' }); };
/* Focus state style for keyboard navigation for the focusable elements */ *[tabindex]:focus-visible, input[type="file"]:focus-visible { outline: 0.125rem solid #4d65ff; outline-offset: 0.125rem; } /* Get rid of top margin on first element in any rich text element */ .w-richtext > :not(div):first-child, .w-richtext > div:first-child > :first-child { margin-top: 0 !important; } /* Get rid of bottom margin on last element in any rich text element */ .w-richtext>:last-child, .w-richtext ol li:last-child, .w-richtext ul li:last-child { margin-bottom: 0 !important; } /* Prevent all click and hover interaction with an element */ .pointer-events-off { pointer-events: none; } /* Enables all click and hover interaction with an element */ .pointer-events-on { pointer-events: auto; } /* Create a class of .div-square which maintains a 1:1 dimension of a div */ .div-square::after { content: ""; display: block; padding-bottom: 100%; } /* Make sure containers never lose their center alignment */ .container-medium,.container-small, .container-large { margin-right: auto !important; margin-left: auto !important; } /* Make the following elements inherit typography styles from the parent and not have hardcoded values. Important: You will not be able to style for example "All Links" in Designer with this CSS applied. Uncomment this CSS to use it in the project. Leave this message for future hand-off. */ /* a, .w-input, .w-select, .w-tab-link, .w-nav-link, .w-dropdown-btn, .w-dropdown-toggle, .w-dropdown-link { color: inherit; text-decoration: inherit; font-size: inherit; } */ /* Apply "..." after 3 lines of text */ .text-style-3lines { display: -webkit-box; overflow: hidden; -webkit-line-clamp: 3; -webkit-box-orient: vertical; } /* Apply "..." after 2 lines of text */ .text-style-2lines { display: -webkit-box; overflow: hidden; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } /* Adds inline flex display */ .display-inlineflex { display: inline-flex; } /* These classes are never overwritten */ .hide { display: none !important; } @media screen and (max-width: 991px) { .hide, .hide-tablet { display: none !important; } } @media screen and (max-width: 767px) { .hide-mobile-landscape{ display: none !important; } } @media screen and (max-width: 479px) { .hide-mobile{ display: none !important; } } .margin-0 { margin: 0rem !important; } .padding-0 { padding: 0rem !important; } .spacing-clean { padding: 0rem !important; margin: 0rem !important; } .margin-top { margin-right: 0rem !important; margin-bottom: 0rem !important; margin-left: 0rem !important; } .padding-top { padding-right: 0rem !important; padding-bottom: 0rem !important; padding-left: 0rem !important; } .margin-right { margin-top: 0rem !important; margin-bottom: 0rem !important; margin-left: 0rem !important; } .padding-right { padding-top: 0rem !important; padding-bottom: 0rem !important; padding-left: 0rem !important; } .margin-bottom { margin-top: 0rem !important; margin-right: 0rem !important; margin-left: 0rem !important; } .padding-bottom { padding-top: 0rem !important; padding-right: 0rem !important; padding-left: 0rem !important; } .margin-left { margin-top: 0rem !important; margin-right: 0rem !important; margin-bottom: 0rem !important; } .padding-left { padding-top: 0rem !important; padding-right: 0rem !important; padding-bottom: 0rem !important; } .margin-horizontal { margin-top: 0rem !important; margin-bottom: 0rem !important; } .padding-horizontal { padding-top: 0rem !important; padding-bottom: 0rem !important; } .margin-vertical { margin-right: 0rem !important; margin-left: 0rem !important; } .padding-vertical { padding-right: 0rem !important; padding-left: 0rem !important; } /* Apply "..." at 100% width */ .truncate-width { width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Removes native scrollbar */ .no-scrollbar { -ms-overflow-style: none; overflow: -moz-scrollbars-none; } .no-scrollbar::-webkit-scrollbar { display: none; } canvas { width: 100% !important; }

Baltic Startup Funding Report

February 2024 update (rounds through H2 2023)

🤝

The Baltic Startup Funding Report by Change Ventures and FIRSTPICK is a semi-annual publication of detailed data about funding rounds for startups in the Baltics, including companies with HQs elsewhere but with a dominant base in Estonia, Latvia, or Lithuania.

To assemble this report, the FIRSTPICK and Change Ventures teams have tracked all the venture funding round news in the region and reached out to founders to gather, in confidence, valuation and other investment terms for pre-seed and seed rounds. As a result, we have transaction data for more than 60% (370) of the pre-seed and seed rounds closed during the past 42 months, so now founders and investors can understand where they stand relative to market transactions.

We are grateful and honored to be trusted by founders with this sensitive data.

Highlights & conclusions

In terms of funded startups per capita, Estonia is a close second to Israel and far ahead of Europe, while the Baltic states together are almost at parity with Europe's best both in terms of funded startups and unicorns per capita.

(function() { var getArraySum = function(a){ var total=0; for(var i in a) { total += a[i]; } return total; } // Vertical Stack Chart var barChartComboDataUnicorns = { labels: ['Israel', 'Estonia', 'Baltics', 'Finland', 'Sweden', 'UK', 'Germany', 'Poland'], datasets: [ { type: 'bar', label: 'Funded startups per m capita', backgroundColor: "#D0C2FF", yAxisID: "bar-y-axis1", data: [517, 421, 180, 215, 193, 191, 52, 27], order: 1, }, { type: 'line', label: "Unicorns per m capita", yAxisID: "bar-y-axis2", fill: false, lineTension: 0, backgroundColor: "#8D70E9", borderColor: "#8D70E9", borderCapStyle: 'round', borderWidth: 3, borderDash: [], borderDashOffset: 0.0, borderJoinStyle: 'miter', pointBorderColor: "#8D70E9", pointBackgroundColor: "#8D70E9", pointBorderWidth: 7, pointHoverRadius: 8, pointHoverBackgroundColor: "#8D70E9", pointHoverBorderColor: "rgba(220,220,220,1)", pointHoverBorderWidth: 2, pointRadius: 3, pointHitRadius: 10, data: [10.0, 5.4, 2.0, 0.9, 2.5, 1.6, 0.7, 0.1], spanGaps: false, order: 0, }, ]}; var ctx = document.getElementById("unicornspercapita2").getContext("2d"); window.myBar = new Chart(ctx, { // type: 'bar', data: barChartComboDataUnicorns, plugins: [ChartDataLabels], options: { title: { display: false, }, legend: { display: true, labels: { fontColor: "#000", fontStyle: '600', } }, tooltips: { mode: 'label', }, responsive: true, maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height scales: { xAxes: [ { stacked: true, fontColor: 'blue', gridLines: { display: false, }, ticks: { fontColor: "#000000", }, offset: true, } ], yAxes: [ { id: "bar-y-axis1", stacked: true, position: 'right', ticks: { display: true, beginAtZero: true, min: 0, fontColor: '#000000', }, gridLines: { display: false }, scaleLabel: { display: false, labelString: 'Startups/m capita', fontColor: '#000000', fontSize: 16, } }, { id: "bar-y-axis2", stacked: true, position: 'left', ticks: { display: true, beginAtZero: true, min: 0, fontColor: '#000000', }, gridLines: { display: false }, scaleLabel: { display: false, labelString: 'Unicorns per m people', fontColor: '#000000', fontSize: 16, } }, ] }, plugins: { datalabels: { display: false, }, } } }); })();

Sources: State of European Tech 2023 & Dealroom.co

Growth investors are back after a year of hesitation and smaller rounds. Nine growth rounds delivered 5 times more capital in H2 2023 compared to H1 2023, rising to over half a billion Euros. Lithuania's startups are now consistently attracting growth stage scale-up rounds.

(function() { const totalizer = { id: 'totalizer', beforeUpdate: chart => { let totals = {} let utmost = 0 chart.data.datasets.forEach((dataset, datasetIndex) => { if (chart.isDatasetVisible(datasetIndex)) { utmost = datasetIndex dataset.data.forEach((value, index) => { totals[index] = (totals[index] || 0) + value }) } }) chart.$totalizer = { totals: totals, utmost: utmost } } }; // Label formatter function const formatter = (value, ctx) => { const otherDatasetIndex = ctx.datasetIndex === 0 ? 1 : 0; const total = ctx.chart.data.datasets[otherDatasetIndex].data[ctx.dataIndex] + value; return `${(value / total * 100).toFixed(0)}%`; }; // Vertical Stack Chart var barChartDataVertical = { labels: ["H1 2019","H2 2019","H1 2020","H2 2020","H1 2021","H2 2021","H1 2022","H2 2022","H1 2023","H2 2023"], datasets: [ { label: 'Pre-seed', backgroundColor: "#8D70E9", yAxisID: "bar-y-axis", data: [7054802,13422431,11599942,12996595,23726087,18274581,19419000,16545750,22771160,14633498], datalabels: { display: false } }, { label: 'Seed', backgroundColor: "#D0C2FF", yAxisID: "bar-y-axis", data: [28820691,36039278,39078371,60935155,44582873,65815271,72071860,54536100,53631200,69219800], datalabels: { display: false } }, { label: 'Series A', backgroundColor: "#634EA3", yAxisID: "bar-y-axis", data: [9810000,60646843,38288947,64709812,55259800,157617201,204148000,81395000,38551362,30700000], datalabels: { display: false } }, { label: "Growth", backgroundColor:"#000", yAxisID: "bar-y-axis", data: [111611751,152300223,122280702,196300000,505828458,734579116,1192499400,174740000,75256000,425650810], datalabels: { display: false } }, { label: 'Total dontshow', data: [0,0,0,0,0,0,0,0,0,0], backgroundColor: 'rgba(0,0,0,0)', datalabels: { backgroundColor: function (context) { return 'transparent'; }, formatter: (value, ctx) => { const total = ctx.chart.$totalizer.totals[ctx.dataIndex]; if (total > 1000000000) { var formattedTotal = numeral(total).format('($0.0a)'); } else { var formattedTotal = numeral(total).format('($0a)'); } return formattedTotal; }, align: 'end', anchor: 'end', display: function (ctx) { return ctx.datasetIndex === ctx.chart.$totalizer.utmost } } } ]}; var ctx = document.getElementById("totalcapitalhighlight2").getContext("2d"); window.myBar = new Chart(ctx, { type: 'bar', data: barChartDataVertical, plugins: [ChartDataLabels, totalizer], options: { title: { display: false, text: "Total capital raised by stage" }, legend: { labels: { filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); }, fontColor: '#000', fontStyle: '600', } }, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { if (data.datasets[tooltipItem.datasetIndex].label == 'Total dontshow') { return ; } else { const formattedTooltipNumber = convertCurrency(tooltipItem.yLabel, 'short'); return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedTooltipNumber; } }, } }, layout: { padding: { top: 20, } }, responsive: true, maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height scales: { xAxes: [{ stacked: true, type: 'category', offset: true, position: 'bottom', ticks: { fontColor: "#000", fontStyle: '400', }, gridLines: { display: false }, }], yAxes: [{ id: "bar-y-axis", stacked: true, scaleLabel: { display: false, labelString: 'Capital raised (€M)', fontColor: "#000", fontSize: 16, }, ticks: { beginAtZero: true, min: 0, fontColor: "#000", // Include a dollar sign in the ticks userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); return formattedValue; } } }] }, plugins: { datalabels: { color: '#000', display: function (context) { return context.chart.isDatasetVisible(context.datasetIndex); }, backgroundColor: function (context) { return context.dataset.backgroundColor; }, borderRadius: 4, font: { // weight: 'bold' } } } } }); })();

Total capital raised by stage

While there is still a massive 3x disparity in valuations between startups raising rounds, median valuations are consistently dropping back down as founders adjust expectations to the reality of the funding market.

(function() { var ctx = document.getElementById("valuationsrising"); var myChart = new Chart(ctx, { type: 'line', data: { labels: ["H1 2019", "H2 2019", "H1 2020", "H2 2020", "H1 2021", "H2 2021", "H1 2022", "H2 2022", "H1 2023", "H2 2023"], datasets: [ { label: "Pre-seed w/o accelerators", fill: false, lineTension: 0, backgroundColor: "#8D70E9", borderColor: "#8D70E9", borderCapStyle: 'round', borderWidth: 3, borderDash: [], borderDashOffset: 0.0, borderJoinStyle: 'miter', pointBorderColor: "#8D70E9", pointBackgroundColor: "#8D70E9", pointBorderWidth: 7, pointHoverRadius: 8, pointHoverBackgroundColor: "#8D70E9", pointHoverBorderColor: "rgba(220,220,220,1)", pointHoverBorderWidth: 2, pointRadius: 3, pointHitRadius: 10, data: [1500000, 2000000, 1850000, 2125000, 2250000, 2600000, 3400000, 4000000, 3550000, 3000000], spanGaps: false, }, { label: "Seed", fill: false, lineTension: 0, backgroundColor: "#D0C2FF", borderColor: "#D0C2FF", borderCapStyle: 'round', borderWidth: 3, borderDash: [], borderDashOffset: 0.0, borderJoinStyle: 'miter', pointBorderColor: "#D0C2FF", pointBackgroundColor: "#D0C2FF", pointBorderWidth: 7, pointHoverRadius: 8, pointHoverBackgroundColor: "#D0C2FF", pointHoverBorderColor: "rgba(220,220,220,1)", pointHoverBorderWidth:2, pointRadius: 3, pointHitRadius: 10, data: [8500000, 7000000, 7475000, 7550000, 9000000, 10000000, 8850000, 8000000, 11750000, 10000000], spanGaps: false, } ] }, plugins: [ChartDataLabels], options: { legend: { display: true, labels: { fontColor: '#000', fontStyle: '600', }, }, tooltips: { callbacks: { label: function(tooltipItem, data) { const formattedTooltipNumber = convertCurrency(tooltipItem.yLabel, 'short'); return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedTooltipNumber; }, } }, responsive: true, maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height scales: { yAxes: [{ scaleLabel: { display: false, labelString: 'Pre-money valuations (€M)', fontColor: '#000', fontSize: 16, }, ticks: { beginAtZero:true, // Include a dollar sign in the ticks userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); return formattedValue; }, fontColor: '#000', }, gridLines: { display:true, lineWidth: 1, } }], xAxes: [{ gridLines: { display:false }, offset: true, ticks: { fontColor: '#000', } }] }, plugins: { datalabels: { backgroundColor: function(context) { return context.dataset.backgroundColor; }, borderRadius: 4, color: 'black', font: { // weight: 'bold' }, align: 'end', anchor: 'end', offset: 8, formatter: (value, ctx) => { const formattedValue = convertCurrencyShorter(value, 'short'); return formattedValue; }, display: 'auto', // avoids overlaping if there isn't enough space } } } }); })();

Median pre-money valuation for pre-seed/seed rounds

01

The Baltic states punch way above their weight, generating funded startups per million inhabitants on par with the UK and the Nordics, with Estonia being a close second to the “startup nation” Israel and far ahead of Europe, while the Baltic states together are almost at parity with Europe's best. In terms of unicorns per million inhabitants, the Baltic states are also catching up fast.

02

Growth rounds are back as the total capital deployed in the Baltic states has almost tripled in H2 2023 versus the prior six months. However, the Series A crunch is still evident, with just four A rounds in each of the last two half-years, making Series A the biggest fundraising hurdle for founders to overcome.

03

Pre-seed and seed capital deployment is stagnant, with pre-seed funding also increasingly concentrated, as investors continue to become more selective and look for maturity and risk reduction. Consequently, the number of pre-seed rounds is down from 58 in H1 2023 to 39 in H2 2023, the lowest it has been in the past 4 years, while the number of seed rounds has remained at a steady level for the past 18 months. More bridge and extension rounds have likely taken place that are undisclosed, as investors fight to keep their portfolio alive.

04

Median pre-seed round size continues to hover around €300k, with a significant disparity between the largest and smallest rounds, consistent with the dispersion of valuations - the most attractive pre-seed startups are attracting much larger and higher priced rounds. The median seed round size has reached €2M, the highest level in 4 years, bouncing back to a two-year trend of consistent increase in round size. However, variation in round size increased even further, with more evidence of stratification in the ability to fundraise, as well as a continuation of bridge and extension round activity.

05

The median pre-seed valuation continues to decrease from a high in H2 2022, dropping to €3M in H2 2023. After the big jump in median valuation for seed rounds in H1 2023, median valuations have pulled back to €10M in H2 2023. The disparity between the upper and lower quartiles for both pre-seed and seed rounds remains at the same level as in H1 2023, reflecting the very large differences between valuations paid for the most sought-after startups and others, plus the preponderance of late seed rounds raised by startups that would have already raised Series A rounds before the cooling of the market.

06

Lots of bridges and extensions drove a growing trend in the use of convertible notes for pre-seed rounds, which jumped to 62% of all pre-seed rounds in 2023 versus only 40% in 2022. Otherwise, round mechanics seem to have been unaffected by the market turmoil.

07

H2 2023 marked a milestone for pre-seed rounds, where the median revenues at closing hit zero - i.e. half of all pre-seed rounds were also pre-revenue rounds. This continues a downward trend of median revenues at pre-seed, reflecting the increasing readiness of pre-seed investors to back companies without revenues. Median monthly revenue traction for seed stage startups has jumped to almost €50k, reflecting the trend that seed investors during 2023 prioritised startups that could demonstrate serious traction.

The Baltic states are a 🦄 unicorn factory

Nord Security is the latest unicorn from the region, adding to the list of success the region has experienced to date, including both bootstrapped and venture-funded unicorns.

Growth rounds are back

In the second half of 2023, pre-seed rounds witnessed a decrease compared to the first half, suggesting a more cautious approach from investors towards early-stage startups. However, seed rounds maintained relative stability, indicating consistent investor confidence in startups with initial market validation. Notably, Series A rounds show continued stagnation with only 8 rounds closed during 2023, down from 21 during the previous year. This persistent low level underscores Series A being the biggest fundraising hurdle for founders to overcome. On the contrary, a positive shift can be seen in the number of later stage and growth rounds in the region, of which there were more than double compared to H1 2023.

We know that bridge and extension rounds have proliferated, many of which are undisclosed, so the actual number of pre-seed and seed rounds is, we believe, somewhat undercounted as we are aware of many, but not all, of these.

(function() { const totalizer = { id: 'totalizer', beforeUpdate: chart => { let totals = {} let utmost = 0 chart.data.datasets.forEach((dataset, datasetIndex) => { if (chart.isDatasetVisible(datasetIndex)) { utmost = datasetIndex dataset.data.forEach((value, index) => { totals[index] = (totals[index] || 0) + value }) } }) chart.$totalizer = { totals: totals, utmost: utmost } } }; // Vertical Stack Chart var barChartDataVertical = { labels: ["H1 2019","H2 2019","H1 2020","H2 2020","H1 2021","H2 2021","H1 2022","H2 2022","H1 2023","H2 2023"], datasets: [ { label: 'Pre-seed', backgroundColor: "#8D70E9", yAxisID: "bar-y-axis", data: [60,64,77,48,65,49,47,40,58,39], datalabels: { display: false } }, { label: 'Seed', backgroundColor: "#D0C2FF", yAxisID: "bar-y-axis", data: [19,26,24,29,23,34,35,23,29,28], datalabels: { display: false } }, { label: 'Series A', backgroundColor: "#634EA3", yAxisID: "bar-y-axis", data: [2,4,7,8,6,12,13,8,4,4], datalabels: { display: false } }, { label: "Growth", backgroundColor:"#fff", yAxisID: "bar-y-axis", data: [4,4,3,4,7,7,11,6,4,9], datalabels: { display: false } }, { label: 'Total dontshow', data: [0,0,0,0,0,0,0,0,0,0,0,0], backgroundColor: 'rgba(0,0,0,0)', datalabels: { backgroundColor: function (context) { return 'transparent'; }, formatter: (value, ctx) => { const total = ctx.chart.$totalizer.totals[ctx.dataIndex]; return total.toLocaleString('en-EN', {}) }, align: 'end', anchor: 'end', display: function (ctx) { return ctx.datasetIndex === ctx.chart.$totalizer.utmost } } } ]}; var ctx = document.getElementById("fundingrounds").getContext("2d"); window.myBar = new Chart(ctx, { type: 'bar', data: barChartDataVertical, plugins: [ChartDataLabels, totalizer], options: { title: { display: false, text: "Number of funding rounds closed" }, legend: { labels: { filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); }, fontColor: '#D0C2FF', fontStyle: "600", fontSize: 16, } }, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { if (data.datasets[tooltipItem.datasetIndex].label == 'Total dontshow') { return ; } else { return data.datasets[tooltipItem.datasetIndex].label + ': ' + tooltipItem.yLabel; } }, } }, layout: { padding: { top: 20, } }, responsive: true, maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height scales: { xAxes: [{ stacked: true, ticks: { fontColor: "#D0C2FF", fontStyle: "bold", }, gridLines: { display: false } }], yAxes: [{ id: "bar-y-axis", stacked: true, ticks: { beginAtZero: true, min: 0, fontColor: "#D0C2FF", fontStyle: "bold", }, gridLines: { display:true, lineWidth: 1, color: 'rgba(208,194,255,0.3)', }, scaleLabel: { display: true, labelString: 'Number of funding rounds closed', fontColor: '#D0C2FF', fontStyle: "normal", fontSize: 16 } }] }, plugins: { datalabels: { color: 'rgba(208,194,255)', display: function (context) { return context.chart.isDatasetVisible(context.datasetIndex); }, backgroundColor: function (context) { return context.dataset.backgroundColor; }, borderRadius: 4, font: { weight: 'bold' } } } } }); })();
Total capital raised by stage
(function() { const totalizer = { id: 'totalizer', beforeUpdate: chart => { let totals = {} let utmost = 0 chart.data.datasets.forEach((dataset, datasetIndex) => { if (chart.isDatasetVisible(datasetIndex)) { utmost = datasetIndex dataset.data.forEach((value, index) => { totals[index] = (totals[index] || 0) + value }) } }) chart.$totalizer = { totals: totals, utmost: utmost } } }; // Label formatter function const formatter = (value, ctx) => { const otherDatasetIndex = ctx.datasetIndex === 0 ? 1 : 0; const total = ctx.chart.data.datasets[otherDatasetIndex].data[ctx.dataIndex] + value; return `${(value / total * 100).toFixed(0)}%`; }; // Vertical Stack Chart var barChartDataVertical = { labels: ["H1 2019","H2 2019","H1 2020","H2 2020","H1 2021","H2 2021","H1 2022","H2 2022","H1 2023","H2 2023"], datasets: [ { label: 'Pre-seed', backgroundColor: "#8D70E9", yAxisID: "bar-y-axis", data: [7054802,13422431,11599942,12996595,23726087,18274581,19419000,16545750,22771160,14633498], datalabels: { display: false } }, { label: 'Seed', backgroundColor: "#D0C2FF", yAxisID: "bar-y-axis", data: [28820691,36039278,39078371,60935155,44582873,65815271,72071860,54536100,53631200,69219800], datalabels: { display: false } }, { label: 'Series A', backgroundColor: "#634EA3", yAxisID: "bar-y-axis", data: [9810000,60646843,38288947,64709812,55259800,157617201,204148000,81395000,38551362,30700000], datalabels: { display: false } }, { label: "Growth", backgroundColor:"#fff", yAxisID: "bar-y-axis", data: [111611751,152300223,122280702,196300000,505828458,734579116,1192499400,174740000,75256000,425650810], datalabels: { display: false } }, { label: 'Total dontshow', data: [0,0,0,0,0,0,0,0,0,0], backgroundColor: 'rgba(0,0,0,0)', datalabels: { backgroundColor: function (context) { return 'transparent'; }, formatter: (value, ctx) => { const total = ctx.chart.$totalizer.totals[ctx.dataIndex]; var formattedTotal = numeral(total).format('($0.0a)'); return formattedTotal; }, align: 'end', anchor: 'end', display: function (ctx) { return ctx.datasetIndex === ctx.chart.$totalizer.utmost } } } ]}; var ctx = document.getElementById("totalcapital").getContext("2d"); window.myBar = new Chart(ctx, { type: 'bar', data: barChartDataVertical, plugins: [ChartDataLabels, totalizer], options: { title: { display: false, text: "Total capital raised by stage" }, legend: { labels: { filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); }, fontColor: '#CEC3FA', fontStyle: '600', } }, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { if (data.datasets[tooltipItem.datasetIndex].label == 'Total dontshow') { return ; } else { const formattedTooltipNumber = convertCurrency(tooltipItem.yLabel, 'short'); return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedTooltipNumber; } }, } }, layout: { padding: { top: 20, } }, responsive: true, maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height scales: { xAxes: [{ stacked: true, type: 'category', offset: true, position: 'bottom', ticks: { fontColor: "#CEC3FA", fontStyle: '600', }, gridLines: { display: false }, }], yAxes: [{ id: "bar-y-axis", stacked: true, scaleLabel: { display: true, labelString: 'Capital raised (€M)', fontColor: "#CEC3FA", fontSize: 16, }, ticks: { beginAtZero: true, min: 0, fontColor: "#CEC3FA", // Include a dollar sign in the ticks userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); return formattedValue; } } }] }, plugins: { datalabels: { color: 'rgba(208,194,255)', display: function (context) { return context.chart.isDatasetVisible(context.datasetIndex); }, backgroundColor: function (context) { return context.dataset.backgroundColor; }, borderRadius: 4, font: { weight: 'bold' } } } } }); })();

Pre-seed startups experienced a dip in total capital raised to €14.6M from €22.7M in H1 2023 as investors continue to become more selective and look for maturity and risk reduction. Seed-stage funding, however, bucked this trend, rising to €69.2M, possibly indicating larger rounds raised at the seed level. Series A funding continued its downward trajectory, settling at €30.7M, in line with its standstill in the number of rounds. In a contrasting move, growth-stage startups saw an increase in funding to €425.7M, more than five times more than in H1 2023. This can be partly attributed to the growing late-stage funding in Lithuania where 2 funding rounds constituted €200M or 47% of total Baltic growth funding.

Wide dispersion in round sizes continues, with pre-seed round sizes stable but seed increasing.

In H2 2023, the dynamics of pre-seed round sizes in the Baltic startup scene showed clear stability, both at the median (€300k) and the continued wide spread between the largest and smallest rounds, reflecting significant differences in the amount of capital that pre-seed teams can attract, even though this variation has reduced somewhat from the heady days of late 2021.

There is a significant disparity between the largest and smallest pre-seed rounds, consistent with the dispersion of valuations.
(function() { var candlestickData = [ { lower: 112323, median: 186991, upper: 250000, }, { lower: 150000, median: 250000, upper: 400000, }, { lower: 100000, median: 131579, upper: 270000, }, { lower: 172000, median: 250000, upper: 450000, }, { lower: 250000, median: 343528, upper: 502500, }, { lower: 212500, median: 400000, upper: 530000, }, { lower: 141000, median: 305000, upper: 566000, }, { lower: 250000, median: 277500, upper: 571900, }, { lower: 200000, median: 300000, upper: 500000, }, { lower: 222500, median: 300000, upper: 490000, } ]; var ctx = document.getElementById('candle7').getContext('2d'); var chart = new Chart(ctx, { data: { labels: ['H1 2019', 'H2 2019', 'H1 2020', 'H2 2020', 'H1 2021', 'H2 2021', 'H1 2022', 'H2 2022', 'H1 2023', 'H2 2023'], datasets: [ { //high end, index: 0 type: 'bar', barPercentage: 0.2, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].median], [candlestickData[1].upper, candlestickData[1].median], [candlestickData[2].upper, candlestickData[2].median], [candlestickData[3].upper, candlestickData[3].median], [candlestickData[4].upper, candlestickData[4].median], [candlestickData[5].upper, candlestickData[5].median], [candlestickData[6].upper, candlestickData[6].median], [candlestickData[7].upper, candlestickData[7].median], [candlestickData[8].upper, candlestickData[8].median], [candlestickData[9].upper, candlestickData[9].median], ], label: 'Upper quartile', order: 1 }, { // top bar, index: 1 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].upper], [candlestickData[1].upper, candlestickData[1].upper], [candlestickData[2].upper, candlestickData[2].upper], [candlestickData[3].upper, candlestickData[3].upper], [candlestickData[4].upper, candlestickData[4].upper], [candlestickData[5].upper, candlestickData[5].upper], [candlestickData[6].upper, candlestickData[6].upper], [candlestickData[7].upper, candlestickData[7].upper], [candlestickData[8].upper, candlestickData[8].upper], [candlestickData[9].upper, candlestickData[9].upper], ], label: 'Top dontshow', order: 0 }, { // median bar, index: 2 type: 'bar', barPercentage: 0.7, borderWidth: 5, minBarLength: 5, backgroundColor: '#000', data: [ [candlestickData[0].median, candlestickData[0].median], [candlestickData[1].median, candlestickData[1].median], [candlestickData[2].median, candlestickData[2].median], [candlestickData[3].median, candlestickData[3].median], [candlestickData[4].median, candlestickData[4].median], [candlestickData[5].median, candlestickData[5].median], [candlestickData[6].median, candlestickData[6].median], [candlestickData[7].median, candlestickData[7].median], [candlestickData[8].median, candlestickData[8].median], [candlestickData[9].median, candlestickData[9].median], ], label: 'Median', order: 0 }, { // bottom bar, index: 3 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#634EA3', data: [ [candlestickData[0].lower, candlestickData[0].lower], [candlestickData[1].lower, candlestickData[1].lower], [candlestickData[2].lower, candlestickData[2].lower], [candlestickData[3].lower, candlestickData[3].lower], [candlestickData[4].lower, candlestickData[4].lower], [candlestickData[5].lower, candlestickData[5].lower], [candlestickData[6].lower, candlestickData[6].lower], [candlestickData[7].lower, candlestickData[7].lower], [candlestickData[8].lower, candlestickData[8].lower], [candlestickData[9].lower, candlestickData[9].lower], ], label: 'Bottom dontshow', order: 0 }, { // low end, index: 4 type: 'bar', barPercentage: 0.2, backgroundColor: '#634EA3', data: [ [candlestickData[0].median, candlestickData[0].lower], [candlestickData[1].median, candlestickData[1].lower], [candlestickData[2].median, candlestickData[2].lower], [candlestickData[3].median, candlestickData[3].lower], [candlestickData[4].median, candlestickData[4].lower], [candlestickData[5].median, candlestickData[5].lower], [candlestickData[6].median, candlestickData[6].lower], [candlestickData[7].median, candlestickData[7].lower], [candlestickData[8].median, candlestickData[8].lower], [candlestickData[9].median, candlestickData[9].lower], ], label: 'Lower quartile', order: 2 } ] }, options: { legend: { display: true, labels: { filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); }, fontColor: '#000', fontStyle: '600', } }, layout: { padding: { top: 20, } }, responsive: true, // Instruct chart js to respond nicely. maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height showLines: false, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { // if index is 1 or 3 (aka the datasets of top and bottom end bars), return nothing if (tooltipItem.datasetIndex == 1 || tooltipItem.datasetIndex == 3) { return; } // if index is 2 or 4 (aka median or lower quartile), make it show the second value of the data, rather than first var showFirstOrSecondValue = 0; if (tooltipItem.datasetIndex == 2 || tooltipItem.datasetIndex == 4) { showFirstOrSecondValue = 1; } var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index][showFirstOrSecondValue]; var formattedValue = convertCurrency(value, 'short'); return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedValue; }, } }, scales: { xAxes: [{ gridLines: { display: false }, offset: true, stacked: true, ticks: { fontColor: "#000", fontStyle: '600', }, }], yAxes: [{ gridLines: { display: true, lineWidth: 1, }, scaleLabel: { display: true, labelString: 'Pre-seed round size (€) excluding accelerator investments', fontColor: "#000", fontSize: 16, }, ticks: { beginAtZero:true, fontColor: "#000", // suggestedMin: 0, //min suggestedMax: 600000, //max userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); return formattedValue; } } }] } } }); })();

H2 2023 observed distinct shifts in seed round financing in the Baltic startup ecosystem. Median investments increased to €2.05M, reflecting an uptick in typical funding round size. Interestingly, the trend of increased variability between the bottom and top quartiles continues. This is likely to reflect the increasing prevalence of late-seed as well as bridge/extension rounds being raised at the seed stage, which mean large differences in round size.

Late-seed, as well as extension and bridge rounds, prevail, driving the seed median round size up.
(function() { var candlestickData = [ { lower: 750000, median: 1300000, upper: 1800000, }, { lower: 762500, median: 1360000, upper: 1968792, }, { lower: 827500, median: 1041225, upper: 2068346, }, { lower: 1100000, median: 1500000, upper: 2000000, }, { lower: 1005583, median: 1300000, upper: 2200000, }, { lower: 1000000, median: 1300000, upper: 2393750, }, { lower: 1000000, median: 1500000, upper: 2068500, }, { lower: 1125000, median: 1850000, upper: 2750000, }, { lower: 1000000, median: 1450000, upper: 2850000, }, { lower: 912500, median: 2050830, upper: 3212500, } ]; var ctx = document.getElementById('candle1').getContext('2d'); var chart = new Chart(ctx, { data: { labels: ['H1 2019', 'H2 2019', 'H1 2020', 'H2 2020', 'H1 2021', 'H2 2021', 'H1 2022', 'H2 2022', 'H1 2023', 'H2 2023'], datasets: [ { //high end, index: 0 type: 'bar', barPercentage: 0.2, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].median], [candlestickData[1].upper, candlestickData[1].median], [candlestickData[2].upper, candlestickData[2].median], [candlestickData[3].upper, candlestickData[3].median], [candlestickData[4].upper, candlestickData[4].median], [candlestickData[5].upper, candlestickData[5].median], [candlestickData[6].upper, candlestickData[6].median], [candlestickData[7].upper, candlestickData[7].median], [candlestickData[8].upper, candlestickData[8].median], [candlestickData[9].upper, candlestickData[9].median], ], label: 'Upper quartile', order: 1 }, { // top bar, index: 1 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].upper], [candlestickData[1].upper, candlestickData[1].upper], [candlestickData[2].upper, candlestickData[2].upper], [candlestickData[3].upper, candlestickData[3].upper], [candlestickData[4].upper, candlestickData[4].upper], [candlestickData[5].upper, candlestickData[5].upper], [candlestickData[6].upper, candlestickData[6].upper], [candlestickData[7].upper, candlestickData[7].upper], [candlestickData[8].upper, candlestickData[8].upper], [candlestickData[9].upper, candlestickData[9].upper], ], label: 'Top dontshow', order: 0 }, { // median bar, index: 2 type: 'bar', barPercentage: 0.7, borderWidth: 5, minBarLength: 5, backgroundColor: '#000', data: [ [candlestickData[0].median, candlestickData[0].median], [candlestickData[1].median, candlestickData[1].median], [candlestickData[2].median, candlestickData[2].median], [candlestickData[3].median, candlestickData[3].median], [candlestickData[4].median, candlestickData[4].median], [candlestickData[5].median, candlestickData[5].median], [candlestickData[6].median, candlestickData[6].median], [candlestickData[7].median, candlestickData[7].median], [candlestickData[8].median, candlestickData[8].median], [candlestickData[9].median, candlestickData[9].median], ], label: 'Median', order: 0 }, { // bottom bar, index: 3 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#634EA3', data: [ [candlestickData[0].lower, candlestickData[0].lower], [candlestickData[1].lower, candlestickData[1].lower], [candlestickData[2].lower, candlestickData[2].lower], [candlestickData[3].lower, candlestickData[3].lower], [candlestickData[4].lower, candlestickData[4].lower], [candlestickData[5].lower, candlestickData[5].lower], [candlestickData[6].lower, candlestickData[6].lower], [candlestickData[7].lower, candlestickData[7].lower], [candlestickData[8].lower, candlestickData[8].lower], [candlestickData[9].lower, candlestickData[9].lower], ], label: 'Bottom dontshow', order: 0 }, { // low end, index: 4 type: 'bar', barPercentage: 0.2, backgroundColor: '#634EA3', data: [ [candlestickData[0].median, candlestickData[0].lower], [candlestickData[1].median, candlestickData[1].lower], [candlestickData[2].median, candlestickData[2].lower], [candlestickData[3].median, candlestickData[3].lower], [candlestickData[4].median, candlestickData[4].lower], [candlestickData[5].median, candlestickData[5].lower], [candlestickData[6].median, candlestickData[6].lower], [candlestickData[7].median, candlestickData[7].lower], [candlestickData[8].median, candlestickData[8].lower], [candlestickData[9].median, candlestickData[9].lower], ], label: 'Lower quartile', order: 2 } ] }, options: { legend: { display: true, labels: { filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); }, fontColor: '#000', fontStyle: '600', } }, layout: { padding: { top: 20, } }, responsive: true, // Instruct chart js to respond nicely. maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height showLines: false, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { // if index is 1 or 3 (aka the datasets of top and bottom end bars), return nothing if (tooltipItem.datasetIndex == 1 || tooltipItem.datasetIndex == 3) { return; } // if index is 2 or 4 (aka median or lower quartile), make it show the second value of the data, rather than first var showFirstOrSecondValue = 0; if (tooltipItem.datasetIndex == 2 || tooltipItem.datasetIndex == 4) { showFirstOrSecondValue = 1; } var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index][showFirstOrSecondValue]; var formattedValue = convertCurrency(value, 'short'); return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedValue; }, } }, scales: { xAxes: [{ gridLines: { display: false }, offset: true, stacked: true, ticks: { fontColor: "#000", fontStyle: '600', }, }], yAxes: [{ gridLines: { display: true, lineWidth: 1, }, scaleLabel: { display: true, labelString: 'Seed round size (€)', fontSize: 16, fontColor: '#000', }, ticks: { beginAtZero:true, fontColor: '#000', // suggestedMin: 0, //min // suggestedMax: 2500000, //max userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); return formattedValue; } } }] } } }); })();

Top teams are still able to command significantly higher valuations.

In H1 2023 the median pre-seed valuation fell again ,to €3M, down from a high of €4M in late 2022. Additionally, the range in valuations, compared to 2022, continues to be wide, with top and bottom quartiles ranging from€2M to €5.5M. The continuing gap between these is indicative of the ability of certain most coveted startups to raise rounds at a premium, compared to industry averages.

The pre-seed valuations continue to drop from their highs
(function() { var candlestickData = [ { lower: 1125000, median: 1500000, upper: 2000000, }, { lower: 1325000, median: 2000000, upper: 2678811, }, { lower: 1060000, median: 1850000, upper: 2850000, }, { lower: 1508687, median: 2125000, upper: 3000000, }, { lower: 1750000, median: 2250000, upper: 3800000, }, { lower: 1500000, median: 2600000, upper: 4000000, }, { lower: 2625000, median: 3400000, upper: 5000000, }, { lower: 2775000, median: 4000000, upper: 4875000, }, { lower: 2275000, median: 3550000, upper: 6266250, }, { lower: 2000000, median: 3000000, upper: 5500000, } ]; var ctx = document.getElementById('candle3').getContext('2d'); var chart = new Chart(ctx, { data: { labels: ['H1 2019', 'H2 2019', 'H1 2020', 'H2 2020', 'H1 2021', 'H2 2021', 'H1 2022', 'H2 2022', 'H1 2023', 'H2 2023'], datasets: [ { //high end, index: 0 type: 'bar', barPercentage: 0.2, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].median], [candlestickData[1].upper, candlestickData[1].median], [candlestickData[2].upper, candlestickData[2].median], [candlestickData[3].upper, candlestickData[3].median], [candlestickData[4].upper, candlestickData[4].median], [candlestickData[5].upper, candlestickData[5].median], [candlestickData[6].upper, candlestickData[6].median], [candlestickData[7].upper, candlestickData[7].median], [candlestickData[8].upper, candlestickData[8].median], [candlestickData[9].upper, candlestickData[9].median], ], label: 'Upper quartile', order: 1 }, { // top bar, index: 1 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].upper], [candlestickData[1].upper, candlestickData[1].upper], [candlestickData[2].upper, candlestickData[2].upper], [candlestickData[3].upper, candlestickData[3].upper], [candlestickData[4].upper, candlestickData[4].upper], [candlestickData[5].upper, candlestickData[5].upper], [candlestickData[6].upper, candlestickData[6].upper], [candlestickData[7].upper, candlestickData[7].upper], [candlestickData[8].upper, candlestickData[8].upper], [candlestickData[9].upper, candlestickData[9].upper], ], label: 'Top dontshow', order: 0 }, { // median bar, index: 2 type: 'bar', barPercentage: 0.7, borderWidth: 5, minBarLength: 5, backgroundColor: '#000', data: [ [candlestickData[0].median, candlestickData[0].median], [candlestickData[1].median, candlestickData[1].median], [candlestickData[2].median, candlestickData[2].median], [candlestickData[3].median, candlestickData[3].median], [candlestickData[4].median, candlestickData[4].median], [candlestickData[5].median, candlestickData[5].median], [candlestickData[6].median, candlestickData[6].median], [candlestickData[7].median, candlestickData[7].median], [candlestickData[8].median, candlestickData[8].median], [candlestickData[9].median, candlestickData[9].median], ], label: 'Median', order: 0 }, { // bottom bar, index: 3 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#634EA3', data: [ [candlestickData[0].lower, candlestickData[0].lower], [candlestickData[1].lower, candlestickData[1].lower], [candlestickData[2].lower, candlestickData[2].lower], [candlestickData[3].lower, candlestickData[3].lower], [candlestickData[4].lower, candlestickData[4].lower], [candlestickData[5].lower, candlestickData[5].lower], [candlestickData[6].lower, candlestickData[6].lower], [candlestickData[7].lower, candlestickData[7].lower], [candlestickData[8].lower, candlestickData[8].lower], [candlestickData[9].lower, candlestickData[9].lower], ], label: 'Bottom dontshow', order: 0 }, { // low end, index: 4 type: 'bar', barPercentage: 0.2, backgroundColor: '#634EA3', data: [ [candlestickData[0].median, candlestickData[0].lower], [candlestickData[1].median, candlestickData[1].lower], [candlestickData[2].median, candlestickData[2].lower], [candlestickData[3].median, candlestickData[3].lower], [candlestickData[4].median, candlestickData[4].lower], [candlestickData[5].median, candlestickData[5].lower], [candlestickData[6].median, candlestickData[6].lower], [candlestickData[7].median, candlestickData[7].lower], [candlestickData[8].median, candlestickData[8].lower], [candlestickData[9].median, candlestickData[9].lower], ], label: 'Lower quartile', order: 2 } ] }, options: { legend: { display: true, labels: { filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); }, fontColor: '#000', fontStyle: '600', } }, layout: { padding: { top: 20, } }, responsive: true, // Instruct chart js to respond nicely. maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height showLines: false, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { // if index is 1 or 3 (aka the datasets of top and bottom end bars), return nothing if (tooltipItem.datasetIndex == 1 || tooltipItem.datasetIndex == 3) { return; } // if index is 3 (aka median), make it show the second value of the data, rather than first var showFirstOrSecondValue = 0; if (tooltipItem.datasetIndex == 2 || tooltipItem.datasetIndex == 4) { showFirstOrSecondValue = 1; } var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index][showFirstOrSecondValue]; var formattedValue = convertCurrency(value, 'short'); return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedValue; }, } }, scales: { xAxes: [{ gridLines: { display: false }, offset: true, stacked: true, ticks: { fontColor: "#000", fontStyle: '600', }, }], yAxes: [{ gridLines: { display: true, lineWidth: 1, }, scaleLabel: { display: true, labelString: 'Pre-money valuation (not incl. accelerator rounds)', fontSize: 16, fontColor: '#000', }, ticks: { beginAtZero:true, fontColor: '#000', // suggestedMin: 0, //min suggestedMax: 5500000, //max userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); return formattedValue; } } }] }, } }); })();

A similar, though even more persistent, trend of valuation disparity is seen in Seed startups, with the top-bottom difference reaching €10M. The median valuation slightly decreased to €10.05M from its earlier peak in 2023 H1. The trend of late seed rounds dominating the market continues, as we see that, on average, larger seed round (Pre-A) rounds and extensions to raise the A round are seen.

Seed valuations taking a step back after reaching an all-time high.
(function() { var candlestickData = [ { lower: 5625000, median: 8500000, upper: 12770540, }, { lower: 4725000, median: 7000000, upper: 8027324, }, { lower: 5750000, median: 7475000, upper: 10500000, }, { lower: 5000000, median: 7550000, upper: 10000000, }, { lower: 6275000, median: 9000000, upper: 11500000, }, { lower: 7500000, median: 10000000, upper: 12625000, }, { lower: 7125000, median: 8850000, upper: 16109000, }, { lower: 6000000, median: 8000000, upper: 11000000, }, { lower: 7000000, median: 11750000, upper: 16600000, }, { lower: 5000000, median: 10000000, upper: 15000000, } ]; var ctx = document.getElementById('candle4').getContext('2d'); var chart = new Chart(ctx, { data: { labels: ['H1 2019', 'H2 2019', 'H1 2020', 'H2 2020', 'H1 2021', 'H2 2021', 'H1 2022', 'H2 2022', 'H1 2023', 'H2 2023'], datasets: [ { //high end, index: 0 type: 'bar', barPercentage: 0.2, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].median], [candlestickData[1].upper, candlestickData[1].median], [candlestickData[2].upper, candlestickData[2].median], [candlestickData[3].upper, candlestickData[3].median], [candlestickData[4].upper, candlestickData[4].median], [candlestickData[5].upper, candlestickData[5].median], [candlestickData[6].upper, candlestickData[6].median], [candlestickData[7].upper, candlestickData[7].median], [candlestickData[8].upper, candlestickData[8].median], [candlestickData[9].upper, candlestickData[9].median], ], label: 'Upper quartile', order: 1 }, { // top bar, index: 1 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].upper], [candlestickData[1].upper, candlestickData[1].upper], [candlestickData[2].upper, candlestickData[2].upper], [candlestickData[3].upper, candlestickData[3].upper], [candlestickData[4].upper, candlestickData[4].upper], [candlestickData[5].upper, candlestickData[5].upper], [candlestickData[6].upper, candlestickData[6].upper], [candlestickData[7].upper, candlestickData[7].upper], [candlestickData[8].upper, candlestickData[8].upper], [candlestickData[9].upper, candlestickData[9].upper], ], label: 'Top dontshow', order: 0 }, { // median bar, index: 2 type: 'bar', barPercentage: 0.7, borderWidth: 5, minBarLength: 5, backgroundColor: '#000', data: [ [candlestickData[0].median, candlestickData[0].median], [candlestickData[1].median, candlestickData[1].median], [candlestickData[2].median, candlestickData[2].median], [candlestickData[3].median, candlestickData[3].median], [candlestickData[4].median, candlestickData[4].median], [candlestickData[5].median, candlestickData[5].median], [candlestickData[6].median, candlestickData[6].median], [candlestickData[7].median, candlestickData[7].median], [candlestickData[8].median, candlestickData[8].median], [candlestickData[9].median, candlestickData[9].median], ], label: 'Median', order: 0 }, { // bottom bar, index: 3 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#634EA3', data: [ [candlestickData[0].lower, candlestickData[0].lower], [candlestickData[1].lower, candlestickData[1].lower], [candlestickData[2].lower, candlestickData[2].lower], [candlestickData[3].lower, candlestickData[3].lower], [candlestickData[4].lower, candlestickData[4].lower], [candlestickData[5].lower, candlestickData[5].lower], [candlestickData[6].lower, candlestickData[6].lower], [candlestickData[7].lower, candlestickData[7].lower], [candlestickData[8].lower, candlestickData[8].lower], [candlestickData[9].lower, candlestickData[9].lower], ], label: 'Bottom dontshow', order: 0 }, { // low end, index: 4 type: 'bar', barPercentage: 0.2, backgroundColor: '#634EA3', data: [ [candlestickData[0].median, candlestickData[0].lower], [candlestickData[1].median, candlestickData[1].lower], [candlestickData[2].median, candlestickData[2].lower], [candlestickData[3].median, candlestickData[3].lower], [candlestickData[4].median, candlestickData[4].lower], [candlestickData[5].median, candlestickData[5].lower], [candlestickData[6].median, candlestickData[6].lower], [candlestickData[7].median, candlestickData[7].lower], [candlestickData[8].median, candlestickData[8].lower], [candlestickData[9].median, candlestickData[9].lower], ], label: 'Lower quartile', order: 2 } ] }, options: { legend: { display: true, labels: { filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); }, fontColor: '#000', fontStyle: '600', } }, layout: { padding: { top: 20, } }, responsive: true, // Instruct chart js to respond nicely. maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height showLines: false, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { // if index is 1 or 3 (aka the datasets of top and bottom end bars), return nothing if (tooltipItem.datasetIndex == 1 || tooltipItem.datasetIndex == 3) { return; } // if index is 3 (aka median), make it show the second value of the data, rather than first var showFirstOrSecondValue = 0; if (tooltipItem.datasetIndex == 2 || tooltipItem.datasetIndex == 4) { showFirstOrSecondValue = 1; } var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index][showFirstOrSecondValue]; var formattedValue = convertCurrency(value, 'short'); return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedValue; }, } }, scales: { xAxes: [{ gridLines: { display: false }, offset: true, stacked: true, ticks: { fontColor: "#000", fontStyle: '600', }, }], yAxes: [{ gridLines: { display: true, lineWidth: 1, }, scaleLabel: { display: true, labelString: 'Pre-money valuation', fontSize: 16, fontColor: '#000', }, ticks: { beginAtZero:true, fontColor: '#000', // suggestedMin: 0, //min suggestedMax: 14000000, //max userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); return formattedValue; } } }] }, } }); })();

Pre-revenue startups are increasingly the norm for pre-seed rounds. Late seed rounds dominated the seed landscape.

In H2 2023, more than half of all pre-seed rounds were closed without having any revenues and the median monthly revenue reached of €0. This reflects the increasing readiness of pre-seed investors to back pre-revenue companies - an ongoing trend in which the median revenues for pre-seed rounds have been gradually decreasing since 2019.

Pre-seed rounds
(function() { var candlestickData = [ { lower: 0, median: 5333, upper: 17000, }, { lower: 255, median: 4000, upper: 12750, }, { lower: 0, median: 1500, upper: 10000, }, { lower: 0, median: 1250, upper: 6600, }, { lower: 0, median: 0, upper: 10000, }, ]; var ctx = document.getElementById('candle5').getContext('2d'); var chart = new Chart(ctx, { data: { labels: ['2019', '2020', '2021', '2022', '2023'], datasets: [ { //high end, index: 0 type: 'bar', barPercentage: 0.2, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].median], [candlestickData[1].upper, candlestickData[1].median], [candlestickData[2].upper, candlestickData[2].median], [candlestickData[3].upper, candlestickData[3].median], [candlestickData[4].upper, candlestickData[4].median], ], label: 'Third quartile', order: 1 }, { // top bar, index: 1 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].upper], [candlestickData[1].upper, candlestickData[1].upper], [candlestickData[2].upper, candlestickData[2].upper], [candlestickData[3].upper, candlestickData[3].upper], [candlestickData[4].upper, candlestickData[4].upper], ], label: 'Top dontshow', order: 0 }, { // median bar, index: 2 type: 'bar', barPercentage: 0.7, borderWidth: 5, minBarLength: 5, backgroundColor: '#fff', data: [ [candlestickData[0].median, candlestickData[0].median], [candlestickData[1].median, candlestickData[1].median], [candlestickData[2].median, candlestickData[2].median], [candlestickData[3].median, candlestickData[3].median], [candlestickData[4].median, candlestickData[4].median], ], label: 'Median', order: 0 }, { // bottom bar, index: 3 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#634EA3', data: [ [candlestickData[0].lower, candlestickData[0].lower], [candlestickData[1].lower, candlestickData[1].lower], [candlestickData[2].lower, candlestickData[2].lower], [candlestickData[3].lower, candlestickData[3].lower], [candlestickData[4].lower, candlestickData[4].lower], ], label: 'Bottom dontshow', order: 0 }, { // low end, index: 4 type: 'bar', barPercentage: 0.2, backgroundColor: '#634EA3', data: [ [candlestickData[0].median, candlestickData[0].lower], [candlestickData[1].median, candlestickData[1].lower], [candlestickData[2].median, candlestickData[2].lower], [candlestickData[3].median, candlestickData[3].lower], [candlestickData[4].median, candlestickData[4].lower], ], label: 'First quartile', order: 2 } ] }, options: { legend: { display: true, labels: { fontColor: '#CEC3FA', fontStyle: '600', filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); } } }, layout: { padding: { top: 0, } }, responsive: true, // Instruct chart js to respond nicely. maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height showLines: false, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { // if index is 1 or 3 (aka the datasets of top and bottom end bars), return nothing if (tooltipItem.datasetIndex == 1 || tooltipItem.datasetIndex == 3) { return; } // if index is 3 (aka median), make it show the second value of the data, rather than first var showFirstOrSecondValue = 0; if (tooltipItem.datasetIndex == 2 || tooltipItem.datasetIndex == 4) { showFirstOrSecondValue = 1; } var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index][showFirstOrSecondValue]; var formattedValue = convertCurrency(value, 'short'); return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedValue; }, } }, scales: { xAxes: [{ gridLines: { display: false }, ticks: { fontColor: '#CEC3FA', fontStyle: '600', }, offset: true, stacked: true, }], yAxes: [{ gridLines: { display: true, lineWidth: 1, color: 'rgba(208,194,255,0.3)', }, scaleLabel: { display: true, labelString: 'Monthly revenues (pre-seed rounds)', fontSize: 16, fontColor: '#CEC3FA', fontStyle: '400', }, ticks: { beginAtZero:true, fontColor: '#CEC3FA', // suggestedMin: 0, //min suggestedMax: 20000, //max userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); return formattedValue; } } }] }, } }); })();

Median monthly revenue traction for seed stage startups in 2023 has jumped to almost €50k, reflecting the trend that seed investors during 2023 prioritized startups that could demonstrate serious traction. Furthermore, the high median revenues have been driven by several companies close to the Series A stage deciding to raise late seed rounds.

Seed rounds
(function() { var candlestickData = [ { lower: 7250, median: 24000, upper: 39250, }, { lower: 25125, median: 40000, upper: 93000, }, { lower: 2000, median: 20000, upper: 45000, }, { lower: 3125, median: 12500, upper: 39000, }, { lower: 9000, median: 48000, upper: 78500, }, ]; var ctx = document.getElementById('candle6').getContext('2d'); var chart = new Chart(ctx, { data: { labels: ['2019', '2020', '2021', '2022', '2023'], datasets: [ { //high end, index: 0 type: 'bar', barPercentage: 0.2, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].median], [candlestickData[1].upper, candlestickData[1].median], [candlestickData[2].upper, candlestickData[2].median], [candlestickData[3].upper, candlestickData[3].median], [candlestickData[4].upper, candlestickData[4].median], ], label: 'Third quartile', order: 1 }, { // top bar, index: 1 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#8D70E9', data: [ [candlestickData[0].upper, candlestickData[0].upper], [candlestickData[1].upper, candlestickData[1].upper], [candlestickData[2].upper, candlestickData[2].upper], [candlestickData[3].upper, candlestickData[3].upper], [candlestickData[4].upper, candlestickData[4].upper], ], label: 'Top dontshow', order: 0 }, { // median bar, index: 2 type: 'bar', barPercentage: 0.7, borderWidth: 5, minBarLength: 5, backgroundColor: '#fff', data: [ [candlestickData[0].median, candlestickData[0].median], [candlestickData[1].median, candlestickData[1].median], [candlestickData[2].median, candlestickData[2].median], [candlestickData[3].median, candlestickData[3].median], [candlestickData[4].median, candlestickData[4].median], ], label: 'Median', order: 0 }, { // bottom bar, index: 3 type: 'bar', barPercentage: 0.5, borderWidth: 5, minBarLength: 5, backgroundColor: '#634EA3', data: [ [candlestickData[0].lower, candlestickData[0].lower], [candlestickData[1].lower, candlestickData[1].lower], [candlestickData[2].lower, candlestickData[2].lower], [candlestickData[3].lower, candlestickData[3].lower], [candlestickData[4].lower, candlestickData[4].lower], ], label: 'Bottom dontshow', order: 0 }, { // low end, index: 4 type: 'bar', barPercentage: 0.2, backgroundColor: '#634EA3', data: [ [candlestickData[0].median, candlestickData[0].lower], [candlestickData[1].median, candlestickData[1].lower], [candlestickData[2].median, candlestickData[2].lower], [candlestickData[3].median, candlestickData[3].lower], [candlestickData[4].median, candlestickData[4].lower], ], label: 'First quartile', order: 2 } ] }, options: { legend: { display: true, labels: { fontColor: '#CEC3FA', fontStyle: '600', filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); } } }, layout: { padding: { top: 0, } }, responsive: true, // Instruct chart js to respond nicely. maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height showLines: false, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { // if index is 1 or 3 (aka the datasets of top and bottom end bars), return nothing if (tooltipItem.datasetIndex == 1 || tooltipItem.datasetIndex == 3) { return; } // if index is 3 (aka median), make it show the second value of the data, rather than first var showFirstOrSecondValue = 0; if (tooltipItem.datasetIndex == 2 || tooltipItem.datasetIndex == 4) { showFirstOrSecondValue = 1; } var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index][showFirstOrSecondValue]; var formattedValue = convertCurrency(value, 'short'); return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedValue; }, } }, scales: { xAxes: [{ gridLines: { display: false }, ticks: { fontColor: '#CEC3FA', fontStyle: '600', }, offset: true, stacked: true, }], yAxes: [{ gridLines: { display: true, lineWidth: 1, color: 'rgba(208,194,255,0.3)', }, scaleLabel: { display: true, labelString: 'Monthly revenues (seed rounds)', fontSize: 16, fontColor: '#CEC3FA', fontStyle: '400', }, ticks: { beginAtZero:true, fontColor: '#CEC3FA', // suggestedMin: 0, //min suggestedMax: 100000, //max userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); return formattedValue; } } }] }, } }); })();

Convertible notes stage a comeback

We have also gathered details of the legal investment form and funding round mechanics for many of the region’s pre-seed and seed rounds closed during the past 5 years.

In 2023, the Baltic funding market experienced a significant shift in its round structure and investment mechanics, deviating from the steady historical pattern. The proportion of rounds closed via equity investment saw a notable decline. For pre-seed rounds, only 38% were closed via equity, a substantial drop from 60% in 2022. Seed rounds also followed this trend, with equity closures falling to 48% from 69% in the previous year. Instead, convertible notes have emerged as the dominant investment type, reflecting founders' preference for quicker and simpler funding methods, minimizing equity round efforts and also utilizing the option to kick the valuation question down the road to the next equity round.

The evolving investor comfort in directly investing in Baltic equity entities can be attributed to the advanced digital governance and e-signature infrastructures in the Baltic states. This is evident in the increased percentage of pre-seed and seed rounds closed within Baltic jurisdictions, rising to 76% in 2023 from 64% in 2022.

Uncapped convertible notes remained uncommon in the region. Valuation caps on pre-seed convertible notes have stabilized at around €3M in 2023 after rising sharply for several years. The mean discount percentages on these notes have stayed within the 15-20% range, with the median consistently at 20%, indicating a stable expectation in investment terms despite the changing market dynamics.

Percent of rounds closed via equity investment (vs. convertible notes)

(function() { // Label formatter function const formatter = (value, ctx) => { const otherDatasetIndex = ctx.datasetIndex === 0 ? 1 : 0; const total = ctx.chart.data.datasets[otherDatasetIndex].data[ctx.dataIndex] + value; return `${(value / total * 100).toFixed(0)}%`; }; // Vertical Stack Chart var barChartDataVertical = { labels: ["2019","2020","2021","2022","2023"], datasets: [ { label: 'Pre-seed', backgroundColor: "#8D70E9", yAxisID: "bar-y-axis", data: [46, 51, 59, 60, 38]}, { label: 'Seed', backgroundColor: "#D0C2FF", yAxisID: "bar-y-axis", data: [77, 64, 76, 69, 49] }, ] }; var ctx = document.getElementById("preseedequity3").getContext("2d"); window.myBar = new Chart(ctx, { type: 'bar', data: barChartDataVertical, plugins: [ChartDataLabels], options: { legend: { display: true, labels: { filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); }, fontColor: '#000', fontStyle: '600', } }, title: { display: false, text: "Total capital raised by stage" }, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { return data.datasets[tooltipItem.datasetIndex].label + ': ' + tooltipItem.yLabel + '%'; }, } }, layout: { padding: { top: 20, } }, responsive: true, maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height scales: { xAxes: [{ stacked: false, type: 'category', offset: true, position: 'bottom', ticks: { fontColor: "#000", fontStyle: '600', }, gridLines: { display: false }, }], yAxes: [{ id: "bar-y-axis", stacked: false, scaleLabel: { labelString: 'Legal form used in % of rounds closed', display: false, fontSize: 16, fontColor: "#000", }, gridLines: { display: true, lineWidth: 1, color: 'rgba(141,112,233,0.3)', }, ticks: { beginAtZero: true, min: 0, fontColor: '#000', // Include a dollar sign in the ticks userCallback: function(value, index, values) { value = value.toString(); value = value.split(/(?=(?:...)*$)/); value = value.join(','); return value + '%'; } } }] }, plugins: { datalabels: { formatter: (value, ctx) => { return value + '%'; }, color: '#000', } } }, }); })();

Valuation caps and discounts:

(function() { var ctx = document.getElementById("meanconvertiblea"); var myChart = new Chart(ctx, { data: { labels: ["2019", "2020", "2021", "2022", "2023"], plugins: [ChartDataLabels], datasets: [ { type: 'line', label: "Mean discount", fill: false, lineTension: 0, backgroundColor: "#8D70E9", borderColor: "#8D70E9", borderCapStyle: 'round', borderWidth: 3, borderDash: [], borderDashOffset: 0.0, borderJoinStyle: 'miter', pointBorderColor: "#8D70E9", pointBackgroundColor: "#8D70E9", pointBorderWidth: 7, pointHoverRadius: 8, pointHoverBackgroundColor: "#8D70E9", pointHoverBorderColor: "rgba(220,220,220,1)", pointHoverBorderWidth: 2, pointRadius: 3, pointHitRadius: 10, data: [18, 16, 15, 18, 17], spanGaps: false, yAxisID: 'A', datalabels: { backgroundColor: function(context) { return context.dataset.backgroundColor; }, borderRadius: 4, color: 'black', font: { // weight: 'bold' }, align: 'end', anchor: 'end', offset: 8, formatter: (value, ctx) => { return value + '%'; } } }, { type: 'bar', yAxisID: 'B', label: "Median cap", fill: false, lineTension: 0, backgroundColor: "#D0C2FF", data: [1225056, 1500000, 3000000, 3555000, 3000000], spanGaps: false, datalabels: { backgroundColor: function(context) { return context.dataset.backgroundColor; }, borderRadius: 4, color: 'black', font: { // weight: 'bold' }, align: 'center', anchor: 'center', // offset: 8, formatter: (value, ctx) => { const formattedValue = convertCurrency(value, 'short'); return formattedValue; } }, } ] }, plugins: [ChartDataLabels], options: { legend: { display: false, }, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { if (tooltipItem.datasetIndex == 0) { return data.datasets[tooltipItem.datasetIndex].label + ': ' + tooltipItem.yLabel + '%'; } else { var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; var formattedValue = convertCurrency(value, 'short'); return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedValue; } }, } }, layout: { padding: { top: 20, } }, responsive: true, maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height scales: { yAxes: [{ id: 'A', scaleLabel: { display: true, labelString: 'from price of qualifying equity round', fontSize: 16, fontColor: "#000", }, ticks: { fontColor: "#000", stepSize: 5, beginAtZero:true, // Include a dollar sign in the ticks userCallback: function(value, index, values) { value = value.toString(); value = value.split(/(?=(?:...)*$)/); value = value.join(','); return value + '%'; } }, gridLines: { display:true, lineWidth: 1, } }, { id: 'B', position: 'right', scaleLabel: { display: true, // labelString: 'from price of qualifying equity round', fontSize: 16, }, ticks: { stepSize: 1000000, beginAtZero:true, fontColor: "#000", userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); return formattedValue; }, // Include a dollar sign in the ticks // userCallback: function(value, index, values) { // value = value.toString(); // value = value.split(/(?=(?:...)*$)/); // value = value.join(','); // return value + '%'; // } }, gridLines: { display:true, lineWidth: 1, color: 'rgba(141,112,233,0.3)', } }, { scaleLabel: { display: true, labelString: 'Mean convertible note discount', fontSize: 16, fontColor: "#000", }, ticks: { display: false, }, gridLines: { display:false, tickMarkLength: 0, } }], xAxes: [{ offset: true, gridLines: { display:false }, ticks: { fontColor: "#000", fontStyle: '600', }, }] }, plugins: { } } }); })();

Number of rounds by jurisdiction (Pre-seed & seed)

(function() { // Label formatter function const formatter = (value, ctx) => { const otherDatasetIndex = ctx.datasetIndex === 0 ? 1 : 0; const total = ctx.chart.data.datasets[otherDatasetIndex].data[ctx.dataIndex] + value; return `${(value / total * 100).toFixed(0)}%`; }; // Vertical Stack Chart var barChartDataVertical = { labels: ["2019","2020","2021","2022","2023"], datasets: [ { label: 'Baltic % of labbeled rounds', backgroundColor: "#8D70E9", yAxisID: "bar-y-axis", data: [46, 71, 77, 64, 76]}, { label: 'Foreign % of labelled rounds', backgroundColor: "#D0C2FF", yAxisID: "bar-y-axis", data: [54, 29, 23, 36, 24] }, ] }; var ctx = document.getElementById("roundsbyjur").getContext("2d"); window.myBar = new Chart(ctx, { type: 'bar', data: barChartDataVertical, plugins: [ChartDataLabels], options: { legend: { display: true, labels: { filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); }, fontColor: '#000', fontStyle: '600', }, }, title: { display: false, text: "Total capital raised by stage" }, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { return data.datasets[tooltipItem.datasetIndex].label + ': ' + tooltipItem.yLabel + '%'; }, } }, layout: { padding: { top: 20, } }, responsive: true, maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height scales: { xAxes: [{ stacked: true, type: 'category', offset: true, position: 'bottom', ticks: { fontColor: "#000", fontStyle: '600' }, gridLines: { display: false }, }], yAxes: [{ id: "bar-y-axis", stacked: true, scaleLabel: { labelString: 'Legal form used in % of rounds closed', display: false, fontSize: 16, fontColor: "#000", }, gridLines: { display: true, lineWidth: 1, color: 'rgba(141,112,233,0.3)', }, ticks: { beginAtZero: true, fontColor: "#000", min: 0, // Include a dollar sign in the ticks userCallback: function(value, index, values) { value = value.toString(); value = value.split(/(?=(?:...)*$)/); value = value.join(','); return value + '%'; } } }] }, plugins: { datalabels: { formatter: (value, ctx) => { return value + '%'; }, color: '#000', } } }, }); })();

Estonia is still a solid leader in funding rounds across the Baltics but Lithuania starts to catch up in growth rounds.

Estonia continues to hold a market leader position in almost all comparative categories, including pre-seed, seed, and series A rounds, where it is mostly unmatched by its Baltic counterparts. A new trend in 2023 H2 can be seen in Lithuania, where the country is leading the market in terms of growth capital and similarly in the number of growth rounds raised. Because of this, the total amount raised between the two countries has more or less equalized.

Estonian seed round valuations are now, on average, more expensive than their Baltic counterparts, with the median Estonian seed startup being more than 35% more expensive than their LV or LT counterparts. However, among pre-seed startups this difference between the valuations is minimal.

As Latvia and Lithuania's early-stage activities grow, we can anticipate a more competitive landscape in the coming years, potentially leading to more significant advances in later funding stages, and emulating Estonia's development pattern.

Pre-seed and seed rounds by country
(function() { const totalizer = { id: 'totalizer', beforeUpdate: chart => { let totals = {} let utmost = 0 chart.data.datasets.forEach((dataset, datasetIndex) => { if (chart.isDatasetVisible(datasetIndex)) { utmost = datasetIndex dataset.data.forEach((value, index) => { totals[index] = (totals[index] || 0) + value }) } }) chart.$totalizer = { totals: totals, utmost: utmost } } }; // Vertical Stack Chart var barChartDataVertical = { labels: ["2019","2020","2021","2022","2023"], datasets: [ { label: 'Estonia', backgroundColor: "#8D70E9", yAxisID: "bar-y-axis", data: [72,79,88,65,67], datalabels: { display: false } }, { label: 'Latvia', backgroundColor: "#D0C2FF", yAxisID: "bar-y-axis", data: [36,36,25,32,40], datalabels: { display: false } }, { label: 'Lithuania', backgroundColor: "#000000", yAxisID: "bar-y-axis", data: [61,63,58,48,47], datalabels: { display: false } }, { label: 'Total dontshow', data: [0,0,0,0,0,0,0,0,0,0,0,0], backgroundColor: 'rgba(255,255,255,0)', datalabels: { backgroundColor: function (context) { return 'transparent'; }, formatter: (value, ctx) => { const total = ctx.chart.$totalizer.totals[ctx.dataIndex]; return total.toLocaleString('en-EN', {}) }, align: 'end', anchor: 'end', display: function (ctx) { return ctx.datasetIndex === ctx.chart.$totalizer.utmost } } } ]}; var ctx = document.getElementById("countryroundspreandseed").getContext("2d"); window.myBar = new Chart(ctx, { type: 'bar', data: barChartDataVertical, plugins: [ChartDataLabels, totalizer], options: { title: { display: false, text: "Number of funding rounds closed" }, legend: { labels: { filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); }, fontColor: '#000', fontStyle: '600', } }, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { if (data.datasets[tooltipItem.datasetIndex].label == 'Total dontshow') { return ; } else { return data.datasets[tooltipItem.datasetIndex].label + ': ' + tooltipItem.yLabel; } }, } }, layout: { padding: { top: 20, } }, responsive: true, maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height scales: { xAxes: [{ stacked: true, ticks: { fontColor: "#000", fontStyle: '600', }, gridLines: { display: false } }], yAxes: [{ id: "bar-y-axis", stacked: true, ticks: { beginAtZero: true, min: 0, fontColor: "#000", }, gridLines: { display:true, lineWidth: 1, color: 'rgba(141,112,233,0.3)', }, scaleLabel: { display: true, labelString: 'Number of pre-seed and seed rounds by country', fontColor: '#000', fontSize: 16 } }] }, plugins: { datalabels: { color: 'rgba(0,0,0)', display: function (context) { return context.chart.isDatasetVisible(context.datasetIndex); }, backgroundColor: function (context) { return context.dataset.backgroundColor; }, borderRadius: 4, font: { weight: 'bold' } } } } }); })();
Median pre-seed valuation by country w/o accelerators
(function() { var seedAndPreSeedDataOne = { datasets: [{ label: 'Estonia', backgroundColor: '#8D70E9', // stack: 'Stack 0', xAxisID: 'A', data: [ 1900000, 3000000, 2000000, 4000000, 3400000, ] }, { label: 'Latvia & Lithuania', backgroundColor: '#D0C2FF', // stack: 'Stack 1', xAxisID: 'A', data: [ 1450000, 1800000, 2700000, 3100000, 3000000, ] }] }; var ctx = document.getElementById('seedAndPreSeedChart8feb').getContext('2d'); var seedAndPreSeedChart8feb = new Chart(ctx, { type: 'bar', data: seedAndPreSeedDataOne, plugins: [ChartDataLabels], options: { legend: { display: true, labels: { fontColor: '#000', fontStyle: '600', }, }, responsive: true, // Instruct chart js to respond nicely. maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height showLines: false, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; var formattedValue = convertCurrency(value, 'short'); //var formattedValue = value + ' deals'; return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedValue; }, } }, scales: { xAxes: [ { id: 'A', gridLines: { display: false }, offset: true, // stacked: true, ticks: { fontColor: '#000', fontStyle: '600' }, labels: ["2019", "2020", "2021", "2022", "2023"], } ], yAxes: [{ // stacked: true, gridLines: { display: true, lineWidth: 1, color: 'rgba(141,112,233,0.3)', }, scaleLabel: { display: true, labelString: 'Median pre-seed valuation by country w/o accelerators', fontSize: 16, fontColor: '#000', }, ticks: { beginAtZero:true, // suggestedMin: 0, //min // suggestedMax: 350, //max // max: 350, userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); //const formattedValue = value; return formattedValue; }, fontColor: '#000', } }] }, plugins: { datalabels: { // backgroundColor: function(context) { // return context.dataset.backgroundColor; // }, borderRadius: 4, color: 'black', font: { weight: 'bold' }, align: 'end', anchor: 'end', // offset: 8, formatter: (value, ctx) => { const formattedValue = convertCurrency(value, 'short'); //const formattedValue = value; return formattedValue; }, } } } }); })();
Series A and growth rounds, by country
(function() { const totalizer = { id: 'totalizer', beforeUpdate: chart => { let totals = {} let utmost = 0 chart.data.datasets.forEach((dataset, datasetIndex) => { if (chart.isDatasetVisible(datasetIndex)) { utmost = datasetIndex dataset.data.forEach((value, index) => { totals[index] = (totals[index] || 0) + value }) } }) chart.$totalizer = { totals: totals, utmost: utmost } } }; // Vertical Stack Chart var barChartDataVertical = { labels: ["2019","2020","2021","2022","2023"], datasets: [ { label: 'Estonia', backgroundColor: "#8D70E9", yAxisID: "bar-y-axis", data: [9,13,16,26,13], datalabels: { display: false } }, { label: 'Latvia', backgroundColor: "#D0C2FF", yAxisID: "bar-y-axis", data: [1,4,7,4,2], datalabels: { display: false } }, { label: 'Lithuania', backgroundColor: "#000000", yAxisID: "bar-y-axis", data: [4,5,9,8,6], datalabels: { display: false } }, { label: 'Total dontshow', data: [0,0,0,0,0,0,0,0,0,0,0,0], backgroundColor: 'rgba(0,0,0,0)', datalabels: { backgroundColor: function (context) { return 'transparent'; }, formatter: (value, ctx) => { const total = ctx.chart.$totalizer.totals[ctx.dataIndex]; return total.toLocaleString('en-EN', {}) }, align: 'end', anchor: 'end', display: function (ctx) { return ctx.datasetIndex === ctx.chart.$totalizer.utmost } } } ]}; var ctx = document.getElementById("countryrounds").getContext("2d"); window.myBar = new Chart(ctx, { type: 'bar', data: barChartDataVertical, plugins: [ChartDataLabels, totalizer], options: { title: { display: false, text: "Number of funding rounds closed" }, legend: { labels: { filter: function(item, chart) { // Logic to remove a particular legend item goes here return !item.text.includes('dontshow'); }, fontColor: '#000', fontStyle: '600', } }, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { if (data.datasets[tooltipItem.datasetIndex].label == 'Total dontshow') { return ; } else { return data.datasets[tooltipItem.datasetIndex].label + ': ' + tooltipItem.yLabel; } }, } }, layout: { padding: { top: 20, } }, responsive: true, maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height scales: { xAxes: [{ stacked: true, ticks: { fontColor: "#000", fontStyle: '600', }, gridLines: { display: false } }], yAxes: [{ id: "bar-y-axis", stacked: true, ticks: { beginAtZero: true, min: 0, fontColor: "#000", }, gridLines: { display:true, lineWidth: 1, color: 'rgba(141,112,233,0.3)', }, scaleLabel: { display: true, labelString: 'Number of Series A and growth rounds by country', fontColor: '#000', fontSize: 16 } }] }, plugins: { datalabels: { color: 'rgba(0,0,0)', display: function (context) { return context.chart.isDatasetVisible(context.datasetIndex); }, backgroundColor: function (context) { return context.dataset.backgroundColor; }, borderRadius: 4, font: { weight: 'bold' } } } } }); })();
Median seed valuation by country
(function() { var seedAndPreSeedDataTwo = { datasets: [{ label: 'Estonia', backgroundColor: '#8D70E9', // stack: 'Stack 0', xAxisID: 'A', data: [ 7000000, 7550000, 9345167, 8600000, 13750000, ] }, { label: 'Latvia & Lithuania', backgroundColor: '#D0C2FF', // stack: 'Stack 1', xAxisID: 'A', data: [ 7000000, 7625000, 10000000, 8122500, 9900000, ] }] }; var ctx = document.getElementById('seedAndPreSeedChart8feb2').getContext('2d'); var seedAndPreSeedChart8feb2 = new Chart(ctx, { type: 'bar', data: seedAndPreSeedDataTwo, plugins: [ChartDataLabels], options: { legend: { display: true, labels: { fontColor: '#000', fontStyle: '600' }, }, responsive: true, // Instruct chart js to respond nicely. maintainAspectRatio: false, // Add to prevent default behaviour of full-width/height showLines: false, tooltips: { mode: 'label', callbacks: { label: function(tooltipItem, data) { var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; var formattedValue = convertCurrency(value, 'short'); //var formattedValue = value + ' deals'; return data.datasets[tooltipItem.datasetIndex].label + ': ' + formattedValue; }, } }, scales: { xAxes: [ { id: 'A', gridLines: { display: false }, offset: true, // stacked: true, ticks: { fontColor: '#000', fontStyle: '600' }, labels: ["2019", "2020", "2021", "2022", "2023"], } ], yAxes: [{ // stacked: true, gridLines: { display: true, lineWidth: 1, color: 'rgba(141,112,233,0.3)', }, scaleLabel: { display: true, labelString: 'Median seed valuation by country', fontSize: 16, fontColor: '#000', }, ticks: { beginAtZero:true, // suggestedMin: 0, //min // suggestedMax: 350, //max // max: 350, userCallback: function(value, index, values) { const formattedValue = convertCurrency(value, 'short'); //const formattedValue = value; return formattedValue; }, fontColor: '#000', } }] }, plugins: { datalabels: { // backgroundColor: function(context) { // return context.dataset.backgroundColor; // }, borderRadius: 4, color: 'black', font: { weight: 'bold' }, align: 'end', anchor: 'end', // offset: 8, formatter: (value, ctx) => { const formattedValue = convertCurrency(value, 'short'); //const formattedValue = value; return formattedValue; }, } } } }); })();

Baltic founders, want this 📈 report to get better next time?

Then please share your detailed round data with us at hello@firstpick.vc. We promise to keep it confidential 🔒.