| Result | W–L |    Date    | Tournament | Tier | Surface | Partner | Opponents | Score | 
|---|
| Loss | 0–1 | Sep 2012 | Netherlands F7, Wierden  | Futures | Clay |     Elroy Middendorp |     Victor Baluda      Yannick Ebbinghaus | 3–6, 2–6 | 
| Win | 1–1 | Jun 2014 | Netherlands F2, Alkmaar  | Futures | Clay |     Niels Lootsma  |     Jordi Muñoz Abreu      Mark Vervoort  | 6–0, 3–6, [10–7] | 
| Win | 2–1 | Jul 2014 | Netherlands F4, Middelburg  | Futures | Clay |     Niels Lootsma |     Jelle Sels      Vincent Van Den Honert | 6–4, 6–2 | 
| Loss | 2–2 | Aug 2014 | Denmark F2, Copenhagen  | Futures | Clay |     Niels Lootsma |     Isak Arvidsson      Thomas Kromann  | 5–7, 6–7(2–7) | 
| Loss | 2–3 | Oct 2014 | France F22, Saint-Dizier  | Futures | Hard (i) |     Niels Lootsma |     Rémi Boutillier      Elie Rousset | 2–6, 6–4, [3–10] | 
| Loss | 2–4 | Nov 2014 | Norway F2, Oslo  | Futures | Hard (i) |     Darren Walsh |     Ivan Sabanov      Matej Sabanov  | 6–4, 3–6, [4–10] | 
| Loss | 2–5 | Dec 2014 | Qatar F6, Doha  | Futures | Hard |     Richard Gabb |     Adam Chadaj      Adam Majchrowicz  | 6–7(4–7), 6–4, [4–10] | 
| Win | 3–5 | Feb 2015 | Germany F3, Kaarst  | Futures | Carpet (i) |     Adam Majchrowicz |     Wesley Koolhof      Matwé Middelkoop  | 6–3, 6–4 | 
| Win | 4–5 | Feb 2015 | Germany F4, Nußloch  | Futures | Carpet (i) |     Adam Majchrowicz |     Denis Kapric     Lukas Ruepke | 6–4, 3–6, [10–5] | 
| Loss | 4–6 | Feb 2015 | Italy F1, Sondrio  | Futures | Hard (i) |     Niels Lootsma |     Francesco Borgo     Laurynas Grigelis  | 2–6, 6–3, [7–10] | 
| Win | 5–6 | Feb 2015 | Italy F2, Trento  | Futures | Carpet (i) |     Niels Lootsma |     Sam Barry      Viktor Galović  | 7–6(7–2), 6–4 | 
| Loss | 5–7 | Jul 2015 | Netherlands F4, Amstelveen  | Futures | Clay |     Niels Lootsma |     Deiton Baughman      Eduardo Dischinger  | 6–2, 2–6, [6–10] | 
| Loss | 5–8 | Jul 2015 | Germany F7, Kassel  | Futures | Clay |     Adam Hubble  |     Alexandar Lazov      Karim-Mohamed Maamoun  | 2–6, 7–5, [8–10] | 
| Win | 6–8 | Aug 2015 | Belgium F8, Middelkerke  | Futures | Hard |     Ariel Behar  |     Sander Gillé      Joran Vliegen  | 6–7(1–7), 6–4, [10–7] | 
| Win | 7–8 | Sep 2015 | France F18, Mulhouse  | Futures | Hard (i) |     Adam Majchrowicz |     Moritz Baumann     Yannick Hanfmann  | Walkover | 
| Win | 8–8 | Sep 2015 | France F19, Plaisir  | Futures | Hard (i) |     Adam Majchrowicz |     Evan King      Anderson Reed  | 6–4, 6–4 | 
| Win | 9–8 | Oct 2015 | France F21, Nevers  | Futures | Hard (i) |     Niels Lootsma |     Jonathan Eysseric      Tom Jomby | 6–4, 7–5 | 
| Win | 10–8 | Oct 2015 | France F22, Saint-Dizier | Futures | Hard (i) |     Niels Lootsma |     Ronan Joncour     Gonçalo Oliveira  | 7–5, 7–6(10–8) | 
| Win | 11–8 |  Nov 2015  |  Mouilleron-le-Captif, France | Challenger | Hard (i) |     Adam Majchrowicz |     Aliaksandr Bury      Andreas Siljeström  | 6–3, 5–7, [10–8] | 
| Win | 12–8 | Nov 2015 | Czech Republic F7, Jablonec nad Nisou  | Futures | Carpet (i) |     Adam Majchrowicz |     Niels Desein      Libor Salaba | 6–3, 6–4 | 
| Win | 13–8 |  May 2016  |  Ostrava, Czech Republic | Challenger | Clay |     Tristan-Samuel Weissborn  |     Lukáš Dlouhý      Hans Podlipnik-Castillo  | 7–6(10–8), 6–7(4–7), [10–5] | 
| Loss | 13–9 |  May 2016  |  Rome, Italy | Challenger | Clay |     Tristan-Samuel Weissborn |     Bai Yan      Li Zhe  | 3–6, 6–3, [9–11] | 
| Win | 14–9 |  May 2016  |  Heilbronn, Germany | Challenger | Clay |     Tristan-Samuel Weissborn |     Nikola Mektić      Antonio Šančić  | 6–3, 6–4 | 
| Loss | 14–10 |  Oct 2016  |  Mons, Belgium | Challenger | Hard (i) |     Wesley Koolhof |     Julian Knowle      Jürgen Melzer  | 6–7(4–7), 6–7(4–7) | 
| Win | 15–10 |  Oct 2016  |  Brest, France | Challenger | Hard (i) |     Mateusz Kowalczyk  |     Marco Chiudinelli      Luca Vanni  | 6–7(2–7), 6–3, [10–5] | 
| Win | 16–10 |  Sep 2017  |  Como, Italy | Challenger | Clay |     Antonio Šančić |     Aliaksandr Bury     Kevin Krawietz  | 7–6(7–1), 6–2 | 
| Win | 17–10 |  Oct 2017  |  Ortisei, Italy | Challenger | Hard (i) |     Antonio Šančić |     Jeremy Jahn     Edan Leshem  | 6–2, 5–7, [13–11] | 
| Win | 18–10 |  Oct 2017  | Brest, France (2) | Challenger | Hard (i) |     Antonio Šančić |     Scott Clayton      Divij Sharan  | 6–4, 7–5 | 
| Win | 19–10 |  Nov 2017  |  Eckental, Germany | Challenger | Carpet (i) |     Roman Jebavý  |     Ken Skupski      Neal Skupski  | 6–2, 6–4 | 
| Loss | 19–11 |  Nov 2017  |  Bratislava, Slovakia | Challenger | Hard (i) |     Antonio Šančić  |     Ken Skupski     Neal Skupski | 7–5, 3–6, [8–10] | 
| Win | 20–11 |  Nov 2017  |  Brescia, Italy | Challenger | Carpet (i) |     Sander Gillé |     Luca Margaroli      Tristan-Samuel Weissborn  | 6–2, 6–3 | 
| Loss | 20–12 |  Nov 2017  |  Andria, Italy | Challenger | Carpet (i) |     Sander Gillé |     Lorenzo Sonego      Andrea Vavassori  | 6–3, 3–6, [10–7] | 
| Loss | 20–13 |  Jan 2018  |  Koblenz, Germany | Challenger | Hard (i) |     Antonio Šančić |     Romain Arneodo      Tristan-Samuel Weissborn | 7–6(7–4), 5–7, [6–10] | 
| Loss | 20–14 |  Jan 2018  |  Rennes, France | Challenger | Hard (i) |     Antonio Šančić  |     Sander Gillé     Joran Vliegen | 3–6, 7–6(7–1), [7–10] | 
| Win | 21–14 |  Mar 2018  |  Saint Brieuc, France | Challenger | Hard (i) |     Tristan-Samuel Weissborn  |     Luke Bambridge      Joe Salisbury  | 4–6, 6–1, [10–7] | 
| Win | 22–14 |  May 2018  |  Braga, Portugal | Challenger | Clay |     Adil Shamasdin  |     Ariel Behar     Miguel Ángel Reyes-Varela  | 6–2, 6–1 | 
| Win | 23–14 |  Jan 2019  |  Rennes, France | Challenger | Hard (i) |     Tristan-Samuel Weissborn  |     David Pel      Antonio Šančić  | 6–4, 6–4 | 
| Loss | 23–15 |  Mar 2019  |  Pau, France | Challenger | Hard (i) |     Tristan-Samuel Weissborn  |     Scott Clayton      Adil Shamasdin | 6–7(4–7), 7–5, [8–10] | 
| Loss | 23–16 |  Apr 2019  |  Taipei, Taiwan | Challenger | Hard (i) |     Tristan-Samuel Weissborn  |     Sriram Balaji      Jonathan Erlich  | 3–6, 2–6 | 
| Win | 24–16 |  Apr 2019  |  Nanchang, China | Challenger | Clay (i) |     Tristan-Samuel Weissborn  |     Alex Bolt      Akira Santillan  | 6–2, 6–4 | 
| Win | 25–16 |  Jul 2019  |  Tampere, Finland | Challenger | Hard |     David Pel |     Ivan Nedelko      Alexander Zhurbin  | 6–0, 6–2 | 
| Win | 26–16 |  Jul 2019  |  Segovia, Spain | Challenger | Hard |     David Pel |     Orlando Luz      Felipe Meligeni Alves  | 6–4, 7–6(7–3) | 
| Win | 27–16 |  Sep 2019  |  Mallorca, Spain | Challenger | Hard |     David Pel |     Karol Drzewiecki      Szymon Walków  | 7–5, 6–4 | 
| Loss | 27–17 |  Sep 2019  |  Cassis, France | Challenger | Hard |     David Pel |     André Göransson      Sem Verbeek  | 6–7(6–8), 6–4, [9–11] | 
| Loss | 27–18 |  Oct 2019  |  Mouilleron-le-Captif, France | Challenger | Hard |     David Pel |     Jonny O'Mara      Ken Skupski  | 1–6, 4–6 | 
| Loss | 27–19 |  Nov 2019  |  Eckental, Germany | Challenger | Hard (i) |     Roman Jebavy  |     Ken Skupski      John-Patrick Smith  | 6-7(2–7), 4–6 | 
| Loss | 27–20 |  Nov 2019  |  Ortisei, Italy | Challenger | Hard (i) |     David Pel |     Nikola Cacic      Antonio Sancic  | 7-6(7–5), 6-7(3–7), [7-10] | 
| Win | 28–20 |  Feb 2020  |  Koblenz, Germany | Challenger | Hard (i) |     David Pel |     Julian Lenz      Yannick Maden  | 7–6(7–4), 7–6(7–3) | 
| Win | 29–20 |  Aug 2020  |  Prague, Czech Republic | Challenger | Clay |     David Pel |     André Göransson      Gonçalo Oliveira  | 7–5, 7–6(7–5) | 
| Loss | 29–21 |  June 2021  |  Bratislava, Slovakia | Challenger | Clay |     Luis David Martínez  |     Denys Molchanov      Aleksandr Nedovyesov  | 6-7(5–7), 1–6 | 
| Loss | 29–22 |  Jan 2022  |  Quimper, France | Challenger | Hard (i) |     David Pel |     Albano Olivetti      David Vega Hernández  | 6-3, 4–6, [8-10] | 
| Loss | 29–23 |  Feb 2022  |  Turin, Italy | Challenger | Hard (i) |     David Pel |     Ruben Bemelmans      Daniel Masur  | 6-3, 3–6, [8-10] | 
| Win | 30–23 |  Mar 2022  |  Saint-Brieuc, France | Challenger | Hard (i) |     David Pel |     Jonathan Eysseric      Robin Haase  | 6-3, 6–3 | 
| Win | 31–23 |  May 2022  |  Mauthausen, Austria | Challenger | Clay |     David Pel |     Johannes Härteis      Benjamin Hassan  | 6-4, 6–3 | 
| Loss | 31–24 |  Jun 2022  |  Lyon, France | Challenger | Clay |     David Pel |     Romain Arneodo      Jonathan Eysseric  | 5-7, 6–4, [4-10] | 
| Win | 32–24 |  Oct 2022  |  Mouilleron-le-Captif, France | Challenger | Hard (i) |     David Pel |     Purav Raja      Divij Sharan  | 6–7(1–7), 7–6(8–6), [10–6] | 
| Win | 33–24 |  Jan 2023  |  Oeiras, Portugal | Challenger | Hard (i) |     David Pel |     Patrik Niklas-Salminen      Bart Stevens  | 6–3, 7–6(7–3) | 
| Loss | 33–25 |  May 2023  |  Francavilla al Mare, Italy | Challenger | Clay |     Petros Tsitsipas  |     Nicolás Barrientos      Ariel Behar  | 6–7(1–7), 6–3, [6–10] | 
| Loss | 33–26 |  Sep 2023  |  Istanbul, Turkey | Challenger | Hard |     Aisam-ul-Haq Qureshi  |     Luke Johnson      Skander Mansouri  | 6–7(3–7), 3–6 | 
| Win | 34–26 |  Sep 2023  |  Rennes, France | Challenger | Hard |     David Pel |     Antoine Escoffier      Niki Kaliyanda Poonacha  | 6–3, 6–2 | 
| Loss | 34–27 |  Jan 2024  |  Ottignies-Louvain-la-Neuve, Belgium | Challenger | Hard |     Sem Verbeek  |     Luke Johnson      Skander Mansouri  | 5–7, 3–6 | 
| Win | 35–27 |  Feb 2024  |  Koblenz, Germany | Challenger | Hard |     Sem Verbeek  |     Jakob Schnaitter      Mark Wallner  | 6–4, 6–2 | 
| Loss | 35–28 |  Feb 2024  |  Tenerife, Spain | Challenger | Hard |     Sem Verbeek  |     Petr Nouza      Patrik Rikl  | 4–6, 6–4, [9–11] | 
| Win | 36–28 |  Mar 2024  |  Tenerife, Spain | Challenger | Hard |     Sem Verbeek  |     Marco Bortolotti      Sergio Martos Gornes  | 6–4, 6–4 | 
| Win | 37–28 |  Mar 2024  |  Lugano, Switzerland | Challenger | Hard (i) |     Sem Verbeek  |     Constantin Frantzen      Hendrik Jebens  | 6–7(11–9), 7–6(1–7), [10–8] | 
| Loss | 37–29 |  May 2024  |  Francavilla al Mare, Italy | Challenger | Clay |     Matwe Middelkoop  |     Théo Arribagé      Vlad Victor Cornea  | 6–7(1–7), 6–7(7–9) | 
| Win | 38–29 |  Jul 2024  |  Braunschweig,   Germany | Challenger | Clay |     Robin Haase |     Sriram Balaji      Gonzalo Escobar  | 4–6, 6–4, [10–8] | 
| Win | 39–29 |  Aug 2024  |  Porto, Portugal | Challenger | Hard |       Luke Johnson  |     Joshua Paris      Ramkumar Ramanathan  | 6-3, 6-2 | 
| Win | 40–29 |  Sep 2024  |  Rennes, France | Challenger | Clay |     Gregoire Jacq  |     Antoine Escoffier      Joshua Paris | 6–4, 6–2 | 
| Win | 41–29 |  Sep 2024  |  Saint-Tropez, France | Challenger | Hard |     Luke Johnson |     André Göransson     Sem Verbeek | 3–6, 6–3, [10–4] | 
| Win | 42–29 |  Apr 2025  |  Monza, Italy | Challenger | Clay |     Luke Johnson |     Filippo Romano      Jacopo Vasamì  | 6–1, 6–1 |