Invalid Invali Inval

05AB1E, 10 8 bytes

.pžmâ€JR

Explanation

.p        # get prefixes of input
  žmâ     # cartesian product with [9..0]
     €J   # join each
       R  # reverse

Try it online!

Saved 2 bytes thanks to Adnan


Javascript (ES6), 53 47 bytes

f=(s,n=0)=>s&&s+n+f(n-9?s:s.slice(0,-1),++n%10)

Saved 6 bytes thanks to Peanut & Neil

Output: all words as a single string with no separator.

Example

var f=(s,n=0)=>s&&s+n+f(n-9?s:s.slice(0,-1),++n%10)

document.getElementsByTagName('div')[0].innerHTML = f('INVALID')
<div style="word-wrap:break-word"></div>


Perl, 29 bytes

Includes +1 for -n

Run with input on STDIN:

perl -nE '/^.+(?{map{say$&.$_}0..9})^/' <<< PERL

Just the code:

/^.+(?{map{say$&.$_}0..9})^/