Your end stops should probably be set at the MIN position on all axis. If they are next to your motors, than this sounds like you are at the correct positions.
1) Check your hardware. The GCode command M119 is very helpful. It will tell you the current status of all endstops. You can MANUALLY trigger an endstop, send M119, and see that it is reported as pressed. If you do not get the correct results, something is wrong with your wiring. If your wiring is wrong, nothing else will make sense. Check each switch first this way and you can be confident your switches are functional.
2) There are many settings in your Configuration.h file (assuming you are using the Marlin firmware) that apply to endstops. Many of these govern the behavior you are seeing.
For example:
#define min_software_endstops false // If true, axis won't move to coordinates less than HOME_POS.
#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below.
Define whether or not you can move your device past the minimum and maximum positions allowed by the endstops.
There is an entire section labeled thus:
//===========================================================================
//=============================Mechanical Settings===========================
//===========================================================================
That provides many settings for endstops. This is the place to start to understand what is happening, assuming everything is wired up correctly.
Good luck,
-Matt