1. A computer-implemented method for authenticating a user, comprising: receiving, at a server, an authentication credential of the user; validating the authentication credential; receiving, through a programmatic interface at the server, a user code generated by a code generation unit at a user device, wherein: the user code comprises a predetermined number of characters, and the user code was generated at a first time based on an application of a hashing algorithm to a user value and a user counter, the user value being obtained from the user device; computing, at the server, a server code in response to the received user code at a second time, the computing comprising: obtaining a server value and a server counter; and applying the hashing algorithm to the server value and the server counter to generate the server code; comparing the user code to the server code to determine that the user code corresponds to the server code; validating the user code when the first time is within a threshold time period of the second time; and executing a function of the programmatic interface, after the user code is validated.