"Clear and invalidate timer by handle" doesn't work

Active means the Handle has received a timer (same as your definition of valid) but not executed yet. The moment it executed it will be not active anymore except if it is looping. This is I believe what you wanted.

0 false false

3 true true

3.001 false true

13 false true

13.001 false false

IsValid is used for object reference check. IsTimerActiveByHandle is used if the Timer Handle is valid (active). Try it in your case.

Also I think your are confusing the name ClearAnd Invalidate TimerByHandle. Name should
have been ClearAnd Deactivate TimerHandle for consistency.