 
          | Season | League | Team | A | G | Assists | Y/YR/R | MP | 
|---|---|---|---|---|---|---|---|
| 2025 | Copa Sudamericana |  Junior FC | 1 | 0 | 0 | 0/0/0 | 85 | 
| 2025 | Primera A |  Junior FC | 26 | 1 | 3 | 1/0/0 | 2037 | 
| 2024 | Primera A |  Junior FC | 42 | 6 | 2 | 3/0/0 | 3202 | 
| 2024 | Copa Colombia |  Junior FC | 2 | 0 | 0 | 0/0/0 | 87 | 
| 2024 | Superliga |  Junior FC | 2 | 0 | 0 | 0/0/0 | 27 | 
| 2024 | Copa Libertadores |  Junior FC | 7 | 0 | 0 | 0/0/0 | 453 | 
| 2023 | Major League Soccer |  Portland Timbers | 17 | 1 | 3 | 0/0/0 | 742 | 
| 2023 | Leagues Cup |  Portland Timbers | 2 | 0 | 0 | 0/0/1 | 5 | 
| 2022 | Major League Soccer |  Portland Timbers | 34 | 4 | 2 | 6/0/0 | 2782 | 
| 2022 | US Open Cup |  Portland Timbers | 1 | 0 | 0 | 0/0/0 | 24 | 
| 2021 | Major League Soccer |  Portland Timbers | 34 | 7 | 5 | 1/0/0 | 2710 | 
| 2021 | CONCACAF Champions League |  Portland Timbers | 4 | 3 | 0 | 0/0/0 | 329 | 
| 2020 | Major League Soccer |  Portland Timbers | 24 | 4 | 3 | 1/0/0 | 1438 | 
| 2019 | Campeonato Mineiro 1 |  Atlético Mineiro | 8 | 1 | 1 | 0/0/0 | 581 | 
| 2019 | Copa Libertadores |  Atlético Mineiro | 8 | 0 | 0 | 0/0/0 | 410 | 
| 2019 | Copa Sudamericana |  Atlético Mineiro | 8 | 3 | 0 | 1/0/0 | 314 | 
| 2019 | Brazil Cup |  Atlético Mineiro | 4 | 2 | 0 | 0/0/0 | 360 | 
| 2019 | Campeonato Brasileiro Série A |  Atlético Mineiro | 18 | 3 | 0 | 0/0/0 | 1269 | 
| 2018 | Campeonato Brasileiro Série A |  Atlético Mineiro | 22 | 1 | 5 | 1/0/0 | 1854 | 
| 2018 | Campeonato Mineiro 1 |  Atlético Mineiro | 18 | 1 | 0 | 1/0/0 | 1537 | 
| 2018 | Copa Libertadores |  Junior FC | 6 | 2 | 3 | 1/0/0 | 496 | 
| 2018 | Primera A |  Junior FC | 11 | 3 | 1 | 1/0/0 | 983 | 
| 2018 | Campeonato Brasileiro Série A |  Grêmio | 1 | 0 | 0 | 0/0/0 | 90 | 
| 2017 | Copa Colombia |  Junior FC | 5 | 0 | 0 | 0/0/0 | 385 | 
| 2017 | Primera A |  Junior FC | 16 | 1 | 1 | 0/0/0 | 1235 | 
| 2017 | Copa Sudamericana |  Junior FC | 8 | 2 | 0 | 0/0/0 | 710 | 
| 2016/2017 | CONCACAF Champions League |  Monterrey | 3 | 1 | 0 | 0/0/0 | 270 | 
| 2016/2017 | Liga MX |  Monterrey | 34 | 3 | 6 | 0/0/0 | 1891 | 
| 2016/2017 | Copa MX |  Monterrey | 6 | 4 | 0 | 0/0/0 | 417 | 
| 2015 | Copa Colombia |  Atlético Nacional | 2 | 0 | 0 | 0/0/0 | 0 | 
| 2015 | Primera A |  Atlético Nacional | 24 | 5 | 0 | 1/0/0 | 0 | 
| 2014/2015 | Liga MX |  Monterrey | 11 | 1 | 0 | 0/0/0 | 0 | 
| 2014 | Copa Colombia |  Deportes Tolima | 6 | 5 | 0 | 1/0/0 | 0 | 
| 2014 | Primera A |  Deportes Tolima | 35 | 11 | 0 | 1/0/1 | 0 | 
| 2013 | Primera A |  Deportes Tolima | 41 | 10 | 0 | 4/0/0 | 0 | 
| 2013 | Copa Libertadores |  Deportes Tolima | 8 | 1 | 1 | 0/0/0 | 0 | 
| 2012 | Primera A |  Deportes Tolima | 40 | 7 | 0 | 4/0/0 | 0 | 
| 2012 | Copa Colombia |  Deportes Tolima | 4 | 0 | 0 | 0/0/0 | 0 | 
| 2012 | Copa Sudamericana |  Deportes Tolima | 2 | 0 | 0 | 0/0/0 | 0 | 
| 2011 | Primera A |  Deportes Tolima | 6 | 0 | 0 | 0/0/0 | 0 | 
| 2011 | Primera A: Clausura |  Deportes Tolima | 6 | 0 | 0 | 0/0/0 | 155 | 
| 2011 | Copa Colombia |  Deportes Tolima | 9 | 0 | 0 | 0/0/0 | 0 | 
| 2011 | Primera A: Clausura |  Junior FC | 11 | 3 | 1 | 1/0/0 | 983 | 
| 2010 | Primera A |  Deportes Tolima | 3 | 0 | 0 | 0/0/0 | 0 | 
| Total: | 580 | 96 | 37 | 29/0/2 | 27861 | 
| From | To | Date | Amount | 
|---|---|---|---|
|  Junior FC |  Portland Timbers | 01/01/2024 | N/a | 
|  Portland Timbers |  Atlético Mineiro | 10/01/2020 | N/a | 
|  Atlético Mineiro |  Junior FC | 14/06/2018 | 5.1M € | 
|  Junior FC |  Monterrey | 01/07/2017 | N/a | 
|  Monterrey |  Dorados | 01/07/2016 | N/a | 
|  Dorados |  Monterrey | 01/01/2016 | Loan | 
|  Atlético Nacional |  Monterrey | 01/07/2015 | Loan | 
|  Monterrey |  Deportes Tolima | 01/01/2015 | N/a |