diff --git a/lib/stripe_mock/api/client.rb b/lib/stripe_mock/api/client.rb
index <HASH>..<HASH> 100644
--- a/lib/stripe_mock/api/client.rb
+++ b/lib/stripe_mock/api/client.rb
@@ -3,8 +3,10 @@ module StripeMock
   def self.client; @client; end
 
   def self.start_client(port=4999)
+    return @client unless @client.nil?
+
     alias_stripe_method :request, StripeMock.method(:redirect_to_mock_server)
-    @client = Client.new(port)
+    @client = StripeMock::Client.new(port)
     @state = 'remote'
     @client
   end
diff --git a/spec/server_spec.rb b/spec/server_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/server_spec.rb
+++ b/spec/server_spec.rb
@@ -73,6 +73,12 @@ describe 'StripeMock Server' do
   end
 
 
+  it "doesn't create multiple clients" do
+    result = StripeMock.start_client
+    expect(result.__id__).to eq(@client.__id__)
+  end
+
+
   it "raises an error when client is stopped" do
     expect(@client).to be_a StripeMock::Client
     expect(@client.state).to eq('ready')
Don't create new clients when calling start_client multiple times