diff --git a/bin/ngcp-create_customer b/bin/ngcp-create_customer
index 90d86e6..d7e4821 100755
--- a/bin/ngcp-create_customer
+++ b/bin/ngcp-create_customer
@@ -53,6 +53,8 @@ sub main {
     my $res = $client->request("POST", $uri, \%data);
     print $res->result."\n";
 
+    exit !$res->is_success;
+
     return;
 }
 
diff --git a/bin/ngcp-create_domain b/bin/ngcp-create_domain
index 3318eb3..8209f73 100755
--- a/bin/ngcp-create_domain
+++ b/bin/ngcp-create_domain
@@ -10,7 +10,6 @@ use Readonly;
 Readonly my @required => qw(domain);
 
 my $opts = {
-    domain => $ARGV[0],
     reseller_id => 1,
     skip_xmpp => 0,
     skip_sip => 0,
@@ -28,6 +27,12 @@ GetOptions( $opts,
 
 sub check_params {
     my @missing;
+    foreach my $arg (@ARGV) {
+        if ($arg =~ /^[^-]/) {
+            $opts->{domain} = $arg;
+            last;
+        }
+    }
     foreach my $param (@required) {
         push @missing, $param unless $opts->{$param};
     }
@@ -55,6 +60,8 @@ sub main {
     my $res = $client->request("POST", $uri, \%data);
     print $res->result."\n";
 
+    exit !$res->is_success;
+
     return;
 }
 
diff --git a/bin/ngcp-create_subscriber b/bin/ngcp-create_subscriber
index 8b630d8..70d54a9 100755
--- a/bin/ngcp-create_subscriber
+++ b/bin/ngcp-create_subscriber
@@ -56,7 +56,7 @@ sub main {
     my $uri = '/api/subscribers/';
     my %data = map { $_ => $opts->{$_} }
                     qw(customer_id username password webpassword);
-    $data{primary_number} = join '', @{$opts}{qw(cc ac sn)};
+    $data{primary_number} = { map { $_ => $opts->{$_} } @{$opts}{qw(cc ac sn)} };
     $data{administrative} = $opts->{admin};
     my $client = new NGCP::API::Client;
     $client->set_verbose($opts->{verbose});
@@ -70,6 +70,8 @@ sub main {
     my $res = $client->request("POST", $uri, \%data);
     print $res->result."\n";
 
+    exit !$res->is_success;
+
     return;
 }
 
diff --git a/bin/ngcp-delete_domain b/bin/ngcp-delete_domain
index 547bab0..c8eadae 100755
--- a/bin/ngcp-delete_domain
+++ b/bin/ngcp-delete_domain
@@ -65,6 +65,8 @@ sub main {
     my $res = $client->request("DELETE", $uri, \%data);
     print $res->result."\n";
 
+    exit !$res->is_success;
+
     return;
 }
 
diff --git a/bin/ngcp-get_customer b/bin/ngcp-get_customer
index 5842fd1..6b78128 100755
--- a/bin/ngcp-get_customer
+++ b/bin/ngcp-get_customer
@@ -48,6 +48,8 @@ sub main {
     $res->is_success ? print $res->decoded_content."\n"
                      : print $res->result."\n";
 
+    exit !$res->is_success;
+
     return;
 }
 
diff --git a/bin/ngcp-sound_set b/bin/ngcp-sound_set
index c207c5d..1eb2fc4 100755
--- a/bin/ngcp-sound_set
+++ b/bin/ngcp-sound_set
@@ -48,6 +48,8 @@ sub main {
     $res->is_success ? print $res->content."\n"
                      : print $res->result."\n";
 
+    exit !$res->is_success;
+
     return;
 }
 
diff --git a/bin/ngcp-terminate_customer b/bin/ngcp-terminate_customer
index cf58aa0..66ddc76 100755
--- a/bin/ngcp-terminate_customer
+++ b/bin/ngcp-terminate_customer
@@ -49,6 +49,8 @@ sub main {
     my $res = $client->request("PATCH", $uri, $data);
     print $res->result."\n";
 
+    exit !$res->is_success;
+
     return;
 }
 
diff --git a/bin/ngcp-terminate_subscriber b/bin/ngcp-terminate_subscriber
index f8cd0f4..27f6592 100755
--- a/bin/ngcp-terminate_subscriber
+++ b/bin/ngcp-terminate_subscriber
@@ -64,6 +64,8 @@ sub main {
     my $res = $client->request("PATCH", $uri, $data);
     print $res->result."\n";
 
+    exit !$res->is_success;
+
     return;
 }