How to stop an application using the mobile network The kindle app on my android phone does not allow me to disable download over mobile (i.e. set it to only download over wifi).

Is there any way I can do this externally? i.e. via another app or settings or something.

I am led to believe it is available in some of the android mods but I'm currently on default android for my Galaxy S3.
If your device is running at least Android 4.0 (or higher), you can tell the system to forbid an app the use of "background data" (i,e, upload/download stuff which you didn't explicitely trigger manually). For this, go to Settings → Data Usage, and you will see a screen like the first one below:

 
Data Usage / Restrict background data (click images for larger variants)

I'm pretty sure you've already turned "Mobile data" to its "on" position. Now tick the "Set mobile data limit" checkbox. Next you need to define your limits; if you don't want any "global limits", you can use "fake values" here – e.g. setting the red bar to 10 GB, and the orange bar to 8 GB.

Having that done, scroll the app list on the bottom to find the app you wish to restrict – in your case, the Kindle app. Tap that entry to open it, and again scroll to the end of the screen. There you will find another check-box labeled "restrict background data" (see second screenshot) – check it, and you're done: the Kindle app should no longer use mobile data without you actively telling it so.