         }
         
     }
+    
+    /**
+     Deletes a client from the Harvest API.
+     
+     - parameter client: The client to delete in the API
+     - parameter completion: The closure to call with potential errors
+     - requires: `identifier` on the client object as a minimum
+     - note: You will not be able to delete a client if they have assosciated projects or invoices
+     */
+    public func delete(client: Client, completion: (error: ErrorType?) -> ()) {
+        
+        guard let clientIdentifier = client.identifier else {
+            completion(error: ClientError.MissingIdentifier)
+            return
+        }
+        
+        requestController.delete("clients/\(clientIdentifier)") { (response: TSCRequestResponse?, error: NSError?) in
+            
+            if let _error = error {
+                
+                if let responseStatus = response?.status where responseStatus == 400 {
+                    completion(error: ClientError.HasProjectsOrInvoices)
+                    return
+                }
+                
+                completion(error: _error)
+                return
+            }
+            
+            if let responseStatus = response?.status where responseStatus == 200 {
+                completion(error: nil)
+                return
+            }
+            
+            completion(error: ClientError.UnexpectedResponseCode)
+        }
+        
+    }
 }
 
 /** An enum detailing the errors possible when dealing with client data */

    case MissingIdentifier
    /** We got an unexpected response */
    case UnexpectedResponseCode
}
        }
    }
    
    //MARK - Modifying Clients
    
    /**
     Updates a client in the API. Any properties set on the client object will be sent to the server in an attempt to overwrite them. Not all properties are modifyable but Harvest does not make it clear which are so for now it will attempt all of them
