You should be using get_term_link
instead, also for consistencys sake and to future proof, use get_terms
instead of get_categories
. Both work on categories/tags and all custom taxonomies.
Also check for the return of a WP_Error object ( returned when an invalid or nonexistent term is passed )