Result | W–L | Date | Tournament | Tier | Surface | Partner | Opponents | Score |
Loss | 0–1 | Sep 2013 | Canada F9, Markham | Futures | Hard (i) | Andrew Ochotta | Sekou Bangoura
Evan King | 3–6, 2–6 |
Win | 1–1 | Feb 2014 | USA F5, Sunrise | Futures | Clay | Daniel Garza | Marc Rath
Nicolas Reissig | 7–6(7–4), 6–4 |
Loss | 1–2 | Jun 2014 | Canada F3, Richmond | Futures | Hard | Brayden Schnur | Rik de Voest
Matt Seeberger | 7–5, 5–7, [5–10] |
Win | 2–2 | Jul 2014 | Canada F5, Saskatoon | Futures | Hard | Brayden Schnur | Mousheg Hovhannisyan
Alexander Sarkissian | 6–2, 6–3 |
Win | 3–2 | Aug 2014 | Mexico F10, Puebla | Futures | Hard | Chris Letcher | Adrián Fernández
Lázaro Navarro-Batles | 6–3, 6–4 |
Win | 4–2 | Oct 2014 | USA F29, Brownsville | Futures | Hard | Luis David Martínez | Mikhail Fufygin
Vitali Reshetnikov | 7–6(7–3), 7–6(7–3) |
Loss | 4–3 | Feb 2015 | Dallas, USA | Challenger | Hard (i) | Luis Patiño | Denys Molchanov
Andrey Rublev | 4–6, 6–7(5–7) |
Win | 5–3 | Feb 2015 | Guatemala F1, Guatemala City | Futures | Hard | Manuel Sánchez | Kevin Jack Carpenter
Collin Johns | 6–3, 6–2 |
Loss | 5–4 | Feb 2015 | El Salvador F1, Santa Tecla | Futures | Clay | Keith-Patrick Crowley | Marcelo Arévalo
Luis David Martínez | 4–6, 4–6 |
Loss | 5–5 | Mar 2015 | Nicaragua F1, Managua | Futures | Hard | Keith-Patrick Crowley | Juan Sebastián Gómez
Julio Peralta | 3–6, 3–6 |
Win | 6–5 | Apr 2015 | USA F13, Little Rock | Futures | Hard | Keith-Patrick Crowley | Eric Quigley
Matt Seeberger | 6–3, 1–6, [10–7] |
Win | 7–5 | May 2015 | Mexico F1, Morelia | Futures | Hard | Luis David Martínez | Oscar Fabian Matthews
Hunter Nicholas | 6–2, 7–6(7–0) |
Win | 8–5 | May 2015 | Mexico F4, Córdoba | Futures | Hard | Keith-Patrick Crowley | Iván Endara
Luis David Martínez | 6–4, 6–3 |
Win | 9–5 | Oct 2015 | USA F29, Mansfield | Futures | Hard | Eric Quigley | Liam Broady
Ashley Fisher | 7–5, 6–3 |
Win | 10–5 | Oct 2015 | USA F30, Houston | Futures | Hard | Deiton Baughman | Adam Gustavsson
David Warren | 6–2, 6–0 |
Loss | 10–6 | May 2016 | Mexico F3, Mexico City | Futures | Hard | Luis Patiño | Iván Endara
Roberto Quiroz | w/o |
Win | 11–6 | May 2016 | Mexico F4, Morelia | Futures | Hard | Luis Patiño | Alejandro Mendoza
Federico Zeballos | 6–3, 6–2 |
Win | 12–6 | Jun 2016 | USA F19, Buffalo | Futures | Clay | Kaichi Uchida | Farris Fathi Gosea
Tim Kopinski | 6–2, 6–3 |
Win | 13–6 | Jun 2016 | USA F20, Rochester | Futures | Clay | Gavin van Peperzeel | Damon Gooch
Kaichi Uchida | 7–6(7–5), 6–2 |
Loss | 13–7 | Sep 2016 | Canada F6, Calgary | Futures | Hard | José Statham | Stefanos Tsitsipas
Tim van Rijthoven | 4–6, 6–2, [11–13] |
Win | 14–7 | Sep 2016 | Canada F7, Toronto | Futures | Clay | Rhyne Williams | Hunter Reese
Jackson Withrow | 7–5, 6–4 |
Win | 15–7 | Sep 2016 | Canada F8, Toronto | Futures | Hard | Rhyne Williams | Juan Carlos Manuel Aguilar
Benjamin Sigouin | 6–3, 6–3 |
Win | 16–7 | Oct 2016 | USA F31, Houston | Futures | Hard | Rhyne Williams | Hunter Reese
Jackson Withrow | 6–3, 6–3 |
Win | 17–7 | Dec 2016 | USA F39, Waco | Futures | Hard (i) | Farris Fathi Gosea | Juan Manuel Benítez Chavarriaga
Julian Lenz | 7–5, 6–3 |
Loss | 17–8 | Apr 2017 | San Luis Potosí, Mexico | Challenger | Clay | Adrián Menéndez Maceiras | Roberto Quiroz
Caio Zampieri | 4–6, 2–6 |
Loss | 17–9 | Jun 2017 | Spain F16, Huelva | Futures | Clay | Alex Lawson | Pedro Bernardi
Guilherme Clezar | 6–4, 4–6, [9–11] |
Loss | 17–10 | Jul 2017 | Gatineau, Canada | Challenger | Hard | Vincent Millot | Bradley Klahn
Jackson Withrow | 2–6, 3–6 |
Loss | 17–11 | Oct 2017 | Las Vegas, USA | Challenger | Hard | Dennis Novikov | Brydan Klein
Joe Salisbury | 3–6, 6–4, [3–10] |
Win | 18–11 | Nov 2017 | USA F38, Columbus | Futures | Hard (i) | Luis David Martínez | Luke Bambridge
Edward Corrie | 3–6, 7–6(7–2), [10–7] |
Loss | 18–12 | Jan 2018 | USA F1, Los Angeles | Futures | Hard | Luke Bambridge | Martin Redlicki
Karue Sell | 4–6, 3–6 |
Win | 19–12 | Jan 2018 | USA F2, Long Beach | Futures | Hard | Luke Bambridge | Collin Altamirano
Alexander Lebedev | 6–3, 6–2 |
Win | 20–12 | Sep 2018 | Tiburon, USA | Challenger | Hard | Luke Saville | Gerard Granollers Pujol
Pedro Martínez | 6–3, 6–2 |
Loss | 20–13 | Nov 2018 | Champaign, USA | Challenger | Hard (i) | Luis David Martínez | Matt Reid
John-Patrick Smith | 4–6, 6–4, [8–10] |
Loss | 20–14 | Mar 2019 | Zhangjiagang, China, P.R. | Challenger | Hard | Sriram Balaji | Max Purcell
Luke Saville | 2–6, 6–7(5–7) |
Loss | 20–15 | Jun 2019 | Columbus, USA | Challenger | Hard (i) | Donald Young | Roberto Maytín
Jackson Withrow | 7–6(7–4), 6–7(2–7), [5–10] |
Loss | 20–16 | Jul 2019 | Gatineau, Canada | Challenger | Hard | Dennis Novikov | Alex Lawson
Marc Polmans | 4–6, 6–3, [7–10] |
Win | 21–16 | Nov 2019 | Knoxville, United States | Challenger | Hard (i) | Adrián Menéndez Maceiras | Bradley Klahn
Sem Verbeek | 7–6(8–6), 4–6, [10–5] |
Win | 22–16 | Jan 2020 | Ann Arbor, USA | Challenger | Hard | Robert Galloway | Nicolás Barrientos
Alejandro Gómez | 4–6, 6–4, [10–8] |
Loss | 22–17 | Sep 2020 | Sibiu, Romania | Challenger | Clay | Robert Galloway | Hunter Reese
Jan Zieliński | 4–6, 2–6 |
Win | 23–17 | Aug 2021 | Warsaw, Poland | Challenger | Clay | Miguel Ángel Reyes-Varela | Piotr Matuszewski
Vladyslav Manafov | 6–4, 6–4 |
Loss | 23–18 | Sep 2021 | Cassis, France | Challenger | Hard | Miguel Ángel Reyes-Varela | Sriram Balaji
Ramkumar Ramanathan | 4–6, 6–3, [6–10] |
Loss | 23–19 | Oct 2021 | Santiago, Chile | Challenger | Clay | Miguel Ángel Reyes-Varela | Evan King
Max Schnur | 6–3, 6–7(3–7), [14–16] |
Loss | 23–20 | Nov 2021 | Knoxville, USA | Challenger | Hard (i) | Miguel Ángel Reyes-Varela | Malek Jaziri
Blaž Rola | 6–3, 3–6, [5–10] |
Loss | 23–21 | Nov 2021 | Puerto Vallarta, Mexico | Challenger | Hard | Miguel Ángel Reyes-Varela | Gijs Brouwer
Reese Stalder | 4-6, 4-6 |
Win | 24–21 | Mar 2022 | Monterrey, Mexico | Challenger | Hard | Austin Krajicek | Robert Galloway
John-Patrick Smith | 6-0, 6-3 |
Win | 25–21 | Jul 2022 | Indianapolis, USA | Challenger | Hard (i) | Hunter Reese | Purav Raja
Divij Sharan | 7–6(7–3), 3–6, [10–7] |
Win | 26–21 | Nov 2022 | Champaign, USA | Challenger | Hard (i) | Robert Galloway | Ezekiel Clark
Alfredo Perez | 3–6, 6–3, [10–5] |
Loss | 26–22 | Jan 2023 | Nonthaburi, Thailand | Challenger | Hard | Robert Galloway | Marek Gengel
Adam Pavlásek | 6–7(4–7), 4–6 |
Win | 27–22 | Feb 2023 | Cleveland, USA | Challenger | Hard (i) | Robert Galloway | Ruben Gonzales
Reese Stalder | 3–6, 7–5, [10–6] |
Loss | 27–23 | Sep 2023 | Columbus, USA | Challenger | Hard (i) | Guido Andreozzi | Robert Cash
James Trotter | 4–6, 6–2, [7–10] |
Win | 28–23 | Jun 2024 | Tyler, USA | Challenger | Hard | James Trotter | Andrés Andrade
Abdullah Shelbayh | 7–6(7–3), 6–4 |