Possibly related via ablaut to Proto-Slavic*viti(“to turn, to curve”), *vojь(“turn, twist”), ultimately from Proto-Indo-European*weh₁y-(“to twist, to weave”). Nearly exact match is Sanskritवयति(vayati, “to spin, to weave”) from standard thematic Proto-Indo-European*wéh₁y-e-ti, however, this etymology is inconsistent with the o-grade of the Slavic verb.
Only the antiquity of South Slavic descendants is certain. On this account, Georgiev does not exclude borrowing from Oghur, from Proto-Turkic*ōy-(“to carve, to peck”) (whence Turkishoymak(“to cut”)).
Vasmer, Max (1964–1973) “ваять”, in Oleg Trubachyov, transl., Этимологический словарь русского языка [Etymological Dictionary of the Russian Language] (in Russian), Moscow: Progress
Georgiev, Vladimir I., editor (1971), “вая, ваям”, in Български етимологичен речник [Bulgarian Etymological Dictionary] (in Bulgarian), volume 1 (А – З), Sofia: Bulgarian Academy of Sciences Pubg. House, →ISBN, page 124