| Result | W–L | Date | Tournament | Tier | Surface | Partner | Opponents | Score |
|---|
| Win | 1–0 | Jul 2003 | Spain F15,Gandia | Futures | Clay | Jordi Marse-Vidri | Karim Maamoun
Rui Machado | 6–7(1–7), 7–6(8–6), 6–4 |
| Win | 2–0 | Aug 2003 | Spain F16,Dénia | Futures | Clay | Jordi Marse-Vidri | Zeng Shaoxuan
Zhu Ben-Qiang | 3–6, 6–3, 6–3 |
| Loss | 2–1 | Jun 2004 | Spain F9,Tenerife | Futures | Hard | Ivan Esquerdo-Andreu | Javier Genaro-Martinez
Komlavi Loglo | 4–6, 6–3, 1–6 |
| Win | 3–1 | Jun 2004 | Spain F10,La Palma | Futures | Hard | Daniel Monedero-Gonzalez | Jose-Pablo Serna-Perez
Juan-Miguel Such-Perez | walkover |
| Loss | 3–2 | Aug 2004 | Segovia, Spain | Challenger | Hard | Iván Navarro | Igor Kunitsyn
Vladimir Voltchkov | 6–3, 3–6, 2–6 |
| Loss | 3–3 | Oct 2004 | France F19,La Roche-sur-Yon | Futures | Hard | Igor Zelenay | Xavier Audouy
Jean-François Bachelot | 6–3, 1–6, 2–6 |
| Win | 4–3 | Oct 2004 | France F20,Rodez | Futures | Hard | Alessandro Motti | Gilles Simon
Cyril Spanelis | 6–2, 6–2 |
| Win | 5–3 | Nov 2004 | Spain F31,Gran Canaria | Futures | Clay | Carles Reixach Itoiz | Antonio Baldellou-Esteva
Germán Puentes Alcañiz | 6–3, 7–6(8–6) |
| Loss | 5–4 | Jul 2005 | Spain F15,Elche | Futures | Clay | Pablo Santos González | Pablo Andújar
Jun Kato | 5–7, 1–4 ret. |
| Loss | 5–5 | Sep 2005 | Spain F22,Oviedo | Futures | Clay | Cesar Ferrer-Victoria | Esteban Carril-Caso
Gabriel Trujillo Soler | 2–6, 2–6 |
| Win | 6–5 | Mar 2006 | Great Britain F3,Sunderland | Futures | Hard | Alessandro Motti | Jean-François Bachelot
Aisam Qureshi | 6–3, 6–4 |
| Win | 7–5 | Apr 2006 | Spain F10,Loja | Futures | Clay | Jordi Marse-Vidri | Dušan Karol
Morgan Phillips | 4–6, 7–6(7–4), ret. |
| Loss | 7–6 | May 2006 | Telde, Spain | Challenger | Clay | David Marrero | Adam Chadaj
Michael Ryderstedt | 7–5, 3–6, [7–10] |
| Loss | 7–7 | Jul 2006 | Mantova, Italy | Challenger | Clay | Alessandro Motti | Pablo Andújar
Marcel Granollers | 3–6, 7–5, [7–10] |
| Loss | 7–8 | Aug 2006 | Trani, Italy | Challenger | Clay | Alessandro Motti | Leonardo Azzaro
Daniele Giorgini | 4–6, 6–3, [6–10] |
| Loss | 7–9 | Oct 2006 | Spain F33,Córdoba | Futures | Hard | Miguel Ángel López Jaén | Alexandros Jakupovic
Carles Poch Gradin | 6–2, 6–7(6–8), 4–6 |
| Loss | 7–10 | Jun 2007 | France F8,Blois | Futures | Clay | David Marrero | Adrian Mannarino
Josselin Ouanna | 2–6, 1–6 |
| Win | 8–10 | Sep 2007 | Cherkassy, Ukraine | Challenger | Clay | Santiago Ventura | Sergey Bubka
Alexander Kudryavtsev | 6–2, 7–6(7–4) |
| Loss | 8–11 | Oct 2007 | Tarragona, Spain | Challenger | Clay | Pablo Andújar | Marcel Granollers
Santiago Ventura | 4–6, 6–7(3–7) |
| Win | 9–11 | Mar 2008 | Meknes, Morocco | Challenger | Clay | Alberto Martín | Mikhail Elgin
Yuri Schukin | 6–4, 6–7(2–7), [10–6] |
| Win | 10–11 | Apr 2008 | Saint Brieuc, France | Challenger | Clay | Adrian Cruciat | Yu Xinyuan
Zeng Shaoxuan | 4–6, 6–4, [10–4] |
| Win | 11–11 | May 2008 | Telde, Spain | Challenger | Clay | Daniel Gimeno Traver | Miguel Ángel López Jaén
José Antonio Sánchez de Luna | 6–3, 6–1 |
| Win | 12–11 | Aug 2008 | Timişoara, Romania | Challenger | Clay | Rubén Ramírez Hidalgo | Adrian Cruciat
Florin Mergea | 3–6, 6–4, [11–9] |
| Win | 13–11 | Sep 2008 | Brașov, Romania | Challenger | Clay | David Marrero | Carles Poch Gradin
Pablo Santos González | 6–4, 6–3 |
| Loss | 13–12 | Mar 2009 | Marrakech, Morocco | Challenger | Clay | Alberto Martín | Rubén Ramírez Hidalgo
Santiago Ventura | 3–6, 6–7(5–7) |
| Loss | 13–13 | May 2010 | Alessandria, Italy | Challenger | Clay | Marco Crugnola | Ivan Dodig
Lovro Zovko | 4–6, 4–6 |
| Win | 14–13 | Jul 2010 | Arad, Romania | Challenger | Clay | Sergio Perez-Perez | Franko Škugor
Ivan Zovko | 6–4, 6–1 |
| Win | 15–13 | Jul 2010 | Poznań, Poland | Challenger | Clay | Rui Machado | James Cerretani
Adil Shamasdin | 6–2, 6–3 |
| Win | 16–13 | Sep 2010 | Seville, Spain | Challenger | Clay | Santiago Ventura | Nikola Ćirić
Guillermo Olaso | 6–2, 7–5 |
| Win | 17–13 | Oct 2010 | Napoli, Italy | Challenger | Clay | Simone Vagnozzi | Andreas Haider-Maurer
Bastian Knittel | 1–6, 7–6(7–5), [10–6] |
| Win | 18–13 | Oct 2010 | Santiago, Chile | Challenger | Clay | Rubén Ramírez Hidalgo | Nikola Ćirić
Goran Tošić | 6–4, 6–2 |
| Loss | 18–14 | Oct 2010 | São Paulo, Brazil | Challenger | Clay | Rui Machado | Franco Ferreiro
André Sá | 6–3, 6–7(2–7), [8–10] |
| Win | 19–14 | May 2011 | Zagreb, Croatia | Challenger | Clay | Rubén Ramírez Hidalgo | Mate Pavić
Franko Škugor | 6–2, 7–6(12–10) |
| Win | 20–14 | Sep 2011 | Seville, Spain | Challenger | Clay | Rubén Ramírez Hidalgo | Gerard Granollers
Adrián Menéndez Maceiras | 6–4, 6–7(4–7), [13–11] |
| Win | 21–14 | Mar 2012 | Marrakech, Morocco | Challenger | Clay | Martin Kližan | Íñigo Cervantes
Federico Delbonis | 6–3, 1–6, [12–10] |
| Win | 22–14 | Mar 2015 | Guangzhou, China | Challenger | Hard | Aleksandr Nedovyesov | Fabrice Martin
Purav Raja | 6–2, 7–5 |
| Win | 23–14 | Aug 2015 | Manerbio, Italy | Challenger | Clay | Flavio Cipolla | Gero Kretschmer
Alexander Satschko | 7–6(7–5), 3–6, [11–9] |
| Loss | 23–15 | Aug 2018 | Cordenons, Italy | Challenger | Clay | Andrej Martin | Denys Molchanov
Igor Zelenay | 6–3, 3–6, [9–11] |