I want to prove the following result:
$G$ is a finite, abelian group acting faithfully on a finite set $X$. If the action is transitive then show $|G| = |X|$.
A proof of this result has been given here, but I have attempted this question in an alternative way, and something must be wrong since I have not used all the parts of the question, namely that $G$ is abelian. However, I can't see what is wrong with the proof.
Attempt at proof
Since $G$ is transitive, $\forall x, y \in X, \exists g \in G$ such that $g(x) = y$.
So, since $G$ and $X$ are finite, we must require that $|G| \geq |X|$, as illustrated:
Now suppose $|G| > |X|$. Then this means $\forall x \in X$ (specifically with $x$ not the identity), $ \exists$ $ g, h \in G$ such that $g(x) = h(x)$ by pigeonhole principle, with $g \neq h$.
So $h^{-1}g(x) = x$, so $h^{-1}g = e$ since $G$ acts faithfully, and we have assumed $x$ is not the identity. But then $g = h$, which is a contradiction.
Therefore $|G| = |X|$.
I don't think this is right, since I have not used $G$ is abelian, but I can't see what is wrong with this. Where is the error?

Your error is in the conclusion of $h^{-1}(g(x))=x$ implying that $h^{-1}g=e$. Take for example $g=(1,2)$ and $h=(1,2,3)$.
More abstractly, the problem is in quantifying $h$. You have $\forall g\forall x\exists h$,that is $h$ depends on $x$, and thus you cannot deduce that from a statement for one particular $x$ it would follow for all.