diff --git a/acceptance/07-delete-server.go b/acceptance/07-delete-server.go
new file mode 100644
index 0000000..8d05e8e
--- /dev/null
+++ b/acceptance/07-delete-server.go
@@ -0,0 +1,56 @@
+package main
+
+import (
+	"fmt"
+	"flag"
+	"github.com/rackspace/gophercloud"
+)
+
+var quiet = flag.Bool("quiet", false, "Quiet operation for acceptance tests.  $? non-zero if problem.")
+var region = flag.String("r", "DFW", "Datacenter region")
+
+func main() {
+	provider, username, password := getCredentials()
+	flag.Parse()
+
+	auth, err := gophercloud.Authenticate(provider, gophercloud.AuthOptions{
+		Username: username,
+		Password: password,
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	servers, err := gophercloud.ServersApi(auth, gophercloud.ApiCriteria{
+		Name:      "cloudServersOpenStack",
+		Region:    *region,
+		VersionId: "2",
+		UrlChoice: gophercloud.PublicURL,
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	ss, err := servers.ListServers()
+	if err != nil {
+		panic(err)
+	}
+
+	n := 0
+	for _, s := range ss {
+		if len(s.Name) < 10 {
+			continue
+		}
+		if s.Name[0:10] == "ACPTTEST--" {
+			err := servers.DeleteServerById(s.Id)
+			if err != nil {
+				panic(err)
+			}
+			n++
+		}
+	}
+
+	if !*quiet {
+		fmt.Printf("%d servers removed.\n", n)
+	}
+}
diff --git a/interfaces.go b/interfaces.go
index b50fdf3..6d9b3c7 100644
--- a/interfaces.go
+++ b/interfaces.go
@@ -23,6 +23,7 @@
 	ListServers() ([]Server, error)
 	ServerById(id string) (*Server, error)
 	CreateServer(ns NewServer) (*NewServer, error)
+	DeleteServerById(id string) error
 
   // Images
 
diff --git a/servers.go b/servers.go
index 29a1fc5..30aa959 100644
--- a/servers.go
+++ b/servers.go
@@ -69,6 +69,18 @@
 	return s, err
 }
 
+// See the CloudServersProvider interface for details.
+func (gsp *genericServersProvider) DeleteServerById(id string) error {
+	url := gsp.endpoint + "/servers/" + id
+	err := perigee.Delete(url, perigee.Options{
+		MoreHeaders: map[string]string{
+			"X-Auth-Token": gsp.access.AuthToken(),
+		},
+		OkCodes: []int{204},
+	})
+	return err
+}
+
 // RaxBandwidth provides measurement of server bandwidth consumed over a given audit interval.
 type RaxBandwidth struct {
 	AuditPeriodEnd    string `json:"audit_period_end"`
