The only free and comprehensive online etymological dictionary of the Spanish language
haber (Verb) "to have"
12th cent. Old Spanish aver. The spelling change from aver to haber was a modern modification to more closely reflect the original Latin. Used only in the auxiliary sense since the 15th cent., supplanted as a lexical verb by tener. From Latin habere "to have," "to hold." From Proto-Italic *χab-ē 'id.' From Proto-Indo-European *ghh1b-(e)i̯- 'id.' The phonology of this word is exceptional as the presence of *b was rare in Proto-Indo-European.
Indo-European
Romance
Asturian haber, Portuguese haver, Galician haber, Catalan haver, French avoir, Italian avere, Aromanian amu, Romanian avea, Sardinian àere

Less explicable is Spanish he, from Latin habeo "I have," as the loss of the final -o is unexpected and Penny (2002) concludes was due to apocopation by analogy with words like buen and mal.