Otto Ruoppi
Otto Ruoppi, 20, from Finland ➤ 1.FSV Mainz 05, since 2025 ➤ Attacking Midfield ➤ Market value: €1.00m ➤ * 31/01/2006 in Kuopio, Finland

Info
Biographical card, current club and contract facts. Empty fields mean the source did not publish that value.
- Club
- Mainz
- League
- Bundesliga
- Position
- Midfield - Attacking Midfield
- Shirt
- #20
- Age
- 20
- Date of birth
- 31/01/2006
- Height
- 1,80m
- Foot
- right
- Citizenship
- Finland
- Joined
- 02/02/2026
- Contract until
- 30/06/2030
- Market value
- €1.00m
- Career fees
- €1.30m
Statistics
Career totals from Transfermarkt: this season, then by competition and by club. Minutes and cards appear when the source recorded them.
This season
| Season | Competition | Apps | Min | G | A | YC | RC |
|---|---|---|---|---|---|---|---|
| 26/27 | Bundesliga | 1 | 22 | 0 | 0 | 0 | 0 |
| 26/27 | DFB-Pokal | 1 | 28 | 0 | 1 | 0 | 0 |
| 2026 | Veikkausliiga | 15 | 1293 | 4 | 3 | 0 | 0 |
| 2026 | Liigacup | 1 | 90 | 0 | 0 | 1 | 0 |
| 2026 | Suomen Cup | 3 | 253 | 1 | 1 | 0 | 0 |
By competition
| Competition | Apps | G | A |
|---|---|---|---|
| Veikkausliiga | 58 | 13 | 8 |
| Kakkonen - Group A | 26 | 1 | 0 |
| Ykkösliiga | 22 | 2 | 1 |
| Liigacup | 15 | 3 | 1 |
| Veikkausliiga Championship Group | 14 | 2 | 5 |
| Suomen Cup | 14 | 2 | 3 |
| Conference League | 8 | 0 | 0 |
| A-pojat SM-sarja Qualification | 5 | 2 | 0 |
| Ykkösliiga Promotion Group | 5 | 0 | 0 |
| Europa League Qualifying | 4 | 0 | 1 |
| Champions League Qu. | 4 | 1 | 0 |
| UECL Qualifying | 4 | 2 | 0 |
| Bundesliga | 1 | 0 | 0 |
| DFB-Pokal | 1 | 0 | 1 |
| Ykkösliiga Playoff | 1 | 0 | 0 |
By club
| Club | Apps | G | A |
|---|---|---|---|
| KuPS | 119 | 23 | 18 |
| Mikkelin | 30 | 2 | 1 |
| KuPS II | 15 | 1 | 0 |
| KuFu-98 | 11 | 0 | 0 |
| KuPS U20 | 5 | 2 | 0 |
| Mainz | 2 | 0 | 1 |
Transfers
Recorded moves between clubs, with fee and market value on the day of the deal when the source has them.
| Date | Season | From | To | Fee | Market value |
|---|---|---|---|---|---|
| 30/06/2026 | 25/26 | KuPS | Mainz | End of loan | €1.00m |
| 03/02/2026 | 25/26 | Mainz | KuPS | loan transfer | €600k |
| 02/02/2026 | 25/26 | KuPS | Mainz | €1.30m | €600k |
| 31/12/2023 | 23/24 | Mikkelin | KuPS | End of loan | €25k |
| 13/04/2023 | 22/23 | KuPS | Mikkelin | loan transfer | €25k |
| 01/01/2022 | 21/22 | KuPS U20 | KuPS | - | - |
National
Senior and youth national-team spells: caps, goals, shirt number and whether the player is still in the current pool.
| Team | Caps | Goals | Shirt | Debut | Status |
|---|---|---|---|---|---|
| Finland U16 | 7 | 1 | 10 | 2021-08-25 | Former international |
| Finland U17 | 15 | 2 | 10 | 2022-06-29 | Former international |
| Finland U18 | 4 | 1 | 10 | 2023-11-15 | Former international |
| Finland U19 | 10 | 0 | 10 | 2023-09-08 | Former international |
| Finland U21 | 9 | 3 | 17 | 2025-09-04 | Current international |
Market value
Current and peak Transfermarkt valuations, plus the history of changes by club and age. Rankings are relative to the current squad, league and position group.
- Current
- €1.00m
- Highest
- €1.00m · 15/06/2026
- Last change
- 15/06/2026
| Date | Age | Club | Value |
|---|---|---|---|
| 15/04/2022 | 16 | Kuopion Palloseura | €25k |
| 25/07/2022 | 16 | Kuopion Palloseura | €25k |
| 27/10/2022 | 16 | Kuopion Palloseura | €25k |
| 07/04/2023 | 17 | Kuopion Palloseura | €25k |
| 30/06/2023 | 17 | Mikkelin Palloilijat | €25k |
| 24/11/2023 | 17 | Mikkelin Palloilijat | €25k |
| 10/05/2024 | 18 | Kuopion Palloseura | €100k |
| 06/09/2024 | 18 | Kuopion Palloseura | €200k |
| 28/11/2024 | 18 | Kuopion Palloseura | €200k |
| 05/05/2025 | 19 | Kuopion Palloseura | €200k |
| 02/09/2025 | 19 | Kuopion Palloseura | €400k |
| 20/11/2025 | 19 | Kuopion Palloseura | €600k |
| 15/06/2026 | 20 | Kuopion Palloseura | €1.00m |
xG Statistics
Otto Ruoppi's xG Statistics block is an Understat shot model for the 2026 season. It does not replace goals and assists — it explains them. xG and xA ask whether the chances were good enough; xGChain and xGBuildup show how often the player was on the ball in moves that became shots. Use minutes as the denominator: a large xG in 80 minutes is a hot streak, the same xG over 1,200 minutes is a role. Figures are rounded to two decimals and stay empty when Understat has no match for this player.
| Season | League | Club | Apps | Min | G | xG | npxG | A | xA | Sh | KP | xGChain |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026 | Bundesliga | Mainz 05 | 2 | 22 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.02 |
What the columns mean
Read this table as chance quality, not as a scoreboard. A player can outscore xG (finishing well) or lag behind it (missed sitters). Compare rows only when minutes are in the same range.
Apps· Appearances- Matches in which the player was used in this league season, including substitute minutes.
Min· Minutes- Total minutes on the pitch. Useful when comparing output: 1 goal in 90 minutes is not the same as 1 goal in 800.
G· Goals- Goals credited to the player in the Understat shot model for that season.
xG· Expected goals- The quality of shots the player took, expressed as the number of goals an average finisher would score from the same chances. A 0.30 xG shot is a chance that goes in about 3 times in 10.
npxG· Non-penalty xG- Expected goals with penalties removed. This is the cleaner read of open-play and set-piece finishing, because a penalty is usually ~0.76 xG by itself.
A· Assists- Goals that followed the player's last pass. Actual assists, not the model.
xA· Expected assists- The xG value of shots that came directly from the player's key passes. High xA with few assists usually means teammates missed good chances.
Sh· Shots- Total shots recorded by Understat, including blocked and off-target attempts.
KP· Key passes- Passes that led to a shot. This is the volume behind xA.
xGChain· xG chain- Team xG from possessions the player touched. It captures involvement in build-up, not only the shot or the last pass. A midfielder who starts attacks can rank high here without scoring.
xGBuildup· xG buildup- The same possession xG, but excluding the shot-taker and the assist. This is the purest 'how much did this player help create the chance before the final ball' number.
NPG· Non-penalty goals- Goals scored from open play or set pieces, excluding penalties.







