diff --git a/uc_coupon.module b/uc_coupon.module
index 352f129..54c26e3 100644
--- a/uc_coupon.module
+++ b/uc_coupon.module
@@ -389,9 +389,29 @@ function uc_coupon_get_bulk_code($coupon, $id) {
 }
 
 /**
- * Load a coupon (single or bulk) from the supplied code.
+ * Finds the coupon associated with a given code.
+ * @param $code
+ *   The code to search for.
+ * @return
+ *   A fully loaded coupon object.
  */
 function uc_coupon_find($code) {
+  $coupons = module_invoke_all('uc_coupon_find', $code);
+  $coupons = array_filter($coupons);
+  if (count($coupons) > 0) {
+    return array_pop($coupons);
+  }
+  else {
+    return FALSE;
+  }
+}
+
+/**
+ * Implements hook_uc_coupon_find().
+ *
+ * Load a coupon (single or bulk) from the supplied code.
+ */
+function uc_coupon_uc_coupon_find($code) {
   // Look for matching single coupon first.
   $coupon = db_fetch_object(db_query("SELECT cid FROM {uc_coupons} WHERE code = '%s' AND status = 1 AND bulk = 0 AND valid_from < %d AND (valid_until = 0 OR valid_until > %d)", $code, time(), time()));
   if ($coupon) {
