Paul Caddis was born in Irvine, North Ayrshire,[3] on 19 April 1988 and attended St Joseph's Academy in Kilmarnock.
[15] In August 2010, Caddis and fellow Celtic youth team graduate Simon Ferry joined English League One club Swindon Town for an undisclosed fee.
Despite Risser's return to fitness, manager Paolo di Canio decided to name Caddis as captain for the remainder of the season.
[19] He was ever-present for most of the season, missing a handful of games in March and April – including the Football League Trophy final defeat – due to an ankle injury.
[25] When Birmingham right-back Neal Eardley injured a knee just before the end of the summer transfer window, the club made a further bid for Caddis, who had remained out of favour at Swindon.
[26] He became a regular in the side, and scored his first goals for Birmingham on 30 November in the first half of the league match at Barnsley, with a 25-yard (23 m) drive and a penalty.
[29] Caddis missed only one match in all competitions in 2014–15[30] – his 48 appearances were more than any of his teammates; he was the regular penalty-taker,[31] and he captained the team when Paul Robinson was unavailable.
[32] The Birmingham Mail rated him one of the best attacking full backs in the division, praising his "delivery, support play and ability with a dead ball", and suggested that his assertiveness in defence was starting to improve.
[31] In 2015–16, Caddis lost the team captaincy to Michael Morrison, and was not an automatic selection at right back,[33] but he still started 37 of the 46 league matches.
[34] At the start of the 2016–17 season, manager Gary Rowett told Caddis he would not be involved with the first team until his fitness levels were good enough[35] – an assessment with which the player disagreed.
[37] In January 2017, new manager Gianfranco Zola told Caddis he rated him behind Jonathan Spector and the youngster Josh Dacres-Cogley, but that if he wanted to stay at Birmingham and fight for his place it was his decision.
[44] Following a trial spell during which manager Tony Mowbray assessed the player's fitness, Caddis signed a two-year contract with another League One club, Blackburn Rovers, in July 2017.
[47] Caddis joined Bradford City of League One on trial in October 2018 after injuries left the club without a fit right back.
[49] He made his debut the following day, playing the whole of a 1–1 draw away to Peterborough United that put an end to the team's six-match losing streak.
[54] He made his first appearance the following day as the third of three stoppage-time substitutes in a 3–2 win away to Salford City that took Swindon top of the table,[55] and soon established himself as a regular in the starting eleven.
[60] In March 2013, he was called into the senior squad as a late replacement to cover for the injured Russell Martin for the World Cup qualifier away to Serbia,[61] but remained an unused substitute.
[63] On 20 April 2023, Caddis was appointed as manager of National League North club Hereford, signing a two-year contract and officially taking charge from 1 May.