diff --git a/data/src/main/java/org/cryptomator/data/cloud/s3/S3ClientFactory.java b/data/src/main/java/org/cryptomator/data/cloud/s3/S3ClientFactory.java
index 4765af68..e46659a3 100644
--- a/data/src/main/java/org/cryptomator/data/cloud/s3/S3ClientFactory.java
+++ b/data/src/main/java/org/cryptomator/data/cloud/s3/S3ClientFactory.java
@@ -45,15 +45,8 @@ class S3ClientFactory {
 
 		MinioClient.Builder minioClientBuilder = MinioClient.builder();
 
-		if (cloud.s3Endpoint() != null) {
-			minioClientBuilder.endpoint(cloud.s3Endpoint());
-		} else {
-			minioClientBuilder.endpoint("https://s3.amazonaws.com");
-		}
-
-		if (cloud.s3Region() != null) {
-			minioClientBuilder.region(cloud.s3Region());
-		}
+		minioClientBuilder.endpoint(cloud.s3Endpoint());
+		minioClientBuilder.region(cloud.s3Region());
 
 		OkHttpClient.Builder httpClientBuilder = new OkHttpClient() //
 				.newBuilder() //
@@ -67,7 +60,10 @@ class S3ClientFactory {
 			httpClientBuilder.cache(cache).addInterceptor(provideOfflineCacheInterceptor(context));
 		}
 
-		return minioClientBuilder.credentials(decrypt(cloud.accessKey(), context), decrypt(cloud.secretKey(), context)).httpClient(httpClientBuilder.build()).build();
+		return minioClientBuilder //
+				.credentials(decrypt(cloud.accessKey(), context), decrypt(cloud.secretKey(), context)) //
+				.httpClient(httpClientBuilder.build()) //
+				.build();
 	}
 
 	private static Interceptor provideOfflineCacheInterceptor(final Context context) {
diff --git a/presentation/src/main/java/org/cryptomator/presentation/presenter/S3AddOrChangePresenter.kt b/presentation/src/main/java/org/cryptomator/presentation/presenter/S3AddOrChangePresenter.kt
index fc94ce3f..e066851d 100644
--- a/presentation/src/main/java/org/cryptomator/presentation/presenter/S3AddOrChangePresenter.kt
+++ b/presentation/src/main/java/org/cryptomator/presentation/presenter/S3AddOrChangePresenter.kt
@@ -35,14 +35,10 @@ class S3AddOrChangePresenter @Inject internal constructor( //
 		if (displayName.isEmpty()) {
 			statusMessage = getString(R.string.screen_s3_settings_msg_display_name_not_empty)
 		}
-		if (endpoint.isNullOrEmpty() && region.isNullOrEmpty()) {
+		if (endpoint.isNullOrEmpty() || region.isNullOrEmpty()) {
 			statusMessage = getString(R.string.screen_s3_settings_msg_endpoint_and_region_not_empty)
 		}
 
-		if (!endpoint.isNullOrEmpty() && region.isNullOrEmpty()) {
-			statusMessage = getString(R.string.screen_s3_settings_msg_endpoint_set_and_region_empty)
-		}
-
 		if (statusMessage != null) {
 			Toast.makeText(context(), statusMessage, Toast.LENGTH_SHORT).show()
 		} else {
diff --git a/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/S3AddOrChangeFragment.kt b/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/S3AddOrChangeFragment.kt
index 8438ce78..8805a072 100644
--- a/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/S3AddOrChangeFragment.kt
+++ b/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/S3AddOrChangeFragment.kt
@@ -1,9 +1,7 @@
 package org.cryptomator.presentation.ui.fragment
 
 import android.os.Bundle
-import android.view.View
 import android.view.inputmethod.EditorInfo
-import com.google.android.material.switchmaterial.SwitchMaterial
 import org.cryptomator.generator.Fragment
 import org.cryptomator.presentation.R
 import org.cryptomator.presentation.model.S3CloudModel
@@ -15,10 +13,8 @@ import kotlinx.android.synthetic.main.fragment_setup_s3.bucketEditText
 import kotlinx.android.synthetic.main.fragment_setup_s3.createCloudButton
 import kotlinx.android.synthetic.main.fragment_setup_s3.displayNameEditText
 import kotlinx.android.synthetic.main.fragment_setup_s3.endpointEditText
-import kotlinx.android.synthetic.main.fragment_setup_s3.ll_custom_s3
 import kotlinx.android.synthetic.main.fragment_setup_s3.regionEditText
 import kotlinx.android.synthetic.main.fragment_setup_s3.secretKeyEditText
-import kotlinx.android.synthetic.main.fragment_setup_s3.toggleCustomS3
 import timber.log.Timber
 
 @Fragment(R.layout.fragment_setup_s3)
@@ -42,16 +38,6 @@ class S3AddOrChangeFragment : BaseFragment() {
 		}
 
 		showEditableCloudContent(s3CloudModel)
-
-		toggleCustomS3.setOnClickListener { switch ->
-			toggleUseAmazonS3((switch as SwitchMaterial).isChecked)
-		}
-	}
-
-	private fun toggleUseAmazonS3(checked: Boolean) = if (checked) {
-		ll_custom_s3.visibility = View.GONE
-	} else {
-		ll_custom_s3.visibility = View.VISIBLE
 	}
 
 	private fun showEditableCloudContent(s3CloudModel: S3CloudModel?) {
@@ -61,17 +47,8 @@ class S3AddOrChangeFragment : BaseFragment() {
 			accessKeyEditText.setText(decrypt(s3CloudModel.accessKey()))
 			secretKeyEditText.setText(decrypt(s3CloudModel.secretKey()))
 			bucketEditText.setText(s3CloudModel.s3Bucket())
-
+			endpointEditText.setText(s3CloudModel.s3Endpoint())
 			regionEditText.setText(s3CloudModel.s3Region())
-
-			if (it.s3Endpoint().isNotEmpty()) {
-				toggleCustomS3.isChecked = false
-				ll_custom_s3.visibility = View.VISIBLE
-				endpointEditText.setText(s3CloudModel.s3Endpoint())
-			} else {
-				toggleCustomS3.isChecked = false
-				ll_custom_s3.visibility = View.VISIBLE
-			}
 		}
 	}
 
@@ -94,11 +71,14 @@ class S3AddOrChangeFragment : BaseFragment() {
 		val bucket = bucketEditText.text.toString().trim()
 		val displayName = displayNameEditText.text.toString().trim()
 
-		if (toggleCustomS3.isChecked) {
-			s3AddOrChangePresenter.checkUserInput(accessKey, secretKey, bucket, null, regionEditText.text.toString().trim(), cloudId, displayName)
-		} else {
-			s3AddOrChangePresenter.checkUserInput(accessKey, secretKey, bucket, endpointEditText.text.toString().trim(), regionEditText.text.toString().trim(), cloudId, displayName)
-		}
+		s3AddOrChangePresenter.checkUserInput( //
+			accessKey, //
+			secretKey, //
+			bucket, //
+			endpointEditText.text.toString().trim(), //
+			regionEditText.text.toString().trim(), //
+			cloudId, //
+			displayName)
 	}
 
 	fun hideKeyboard() {
diff --git a/presentation/src/main/res/layout/fragment_setup_s3.xml b/presentation/src/main/res/layout/fragment_setup_s3.xml
index 15e6c1f2..9fd9cc1d 100644
--- a/presentation/src/main/res/layout/fragment_setup_s3.xml
+++ b/presentation/src/main/res/layout/fragment_setup_s3.xml
@@ -78,6 +78,21 @@
 
 		</com.google.android.material.textfield.TextInputLayout>
 
+		<com.google.android.material.textfield.TextInputLayout
+			android:layout_width="match_parent"
+			android:layout_height="wrap_content">
+
+			<com.google.android.material.textfield.TextInputEditText
+				android:id="@+id/endpointEditText"
+				android:layout_width="match_parent"
+				android:layout_height="wrap_content"
+				android:hint="@string/screen_s3_settings_endpoint_label"
+				android:imeOptions="flagNoPersonalizedLearning"
+				android:maxLines="1"
+				android:singleLine="true" />
+
+		</com.google.android.material.textfield.TextInputLayout>
+
 		<com.google.android.material.textfield.TextInputLayout
 			android:layout_width="match_parent"
 			android:layout_height="wrap_content">
@@ -93,39 +108,6 @@
 
 		</com.google.android.material.textfield.TextInputLayout>
 
-		<com.google.android.material.switchmaterial.SwitchMaterial
-			android:id="@+id/toggleCustomS3"
-			android:layout_width="wrap_content"
-			android:layout_height="wrap_content"
-			android:layout_marginTop="16dp"
-			android:checked="true"
-			android:text="@string/screen_s3_settings_amazon_s3_text" />
-
-		<LinearLayout
-			android:id="@+id/ll_custom_s3"
-			android:layout_width="match_parent"
-			android:layout_height="wrap_content"
-			android:layout_marginTop="16dp"
-			android:orientation="vertical"
-			android:visibility="gone">
-
-			<com.google.android.material.textfield.TextInputLayout
-				android:layout_width="match_parent"
-				android:layout_height="wrap_content">
-
-				<com.google.android.material.textfield.TextInputEditText
-					android:id="@+id/endpointEditText"
-					android:layout_width="match_parent"
-					android:layout_height="wrap_content"
-					android:hint="@string/screen_s3_settings_endpoint_label"
-					android:imeOptions="flagNoPersonalizedLearning"
-					android:maxLines="1"
-					android:singleLine="true" />
-
-			</com.google.android.material.textfield.TextInputLayout>
-
-		</LinearLayout>
-
 		<Button
 			android:id="@+id/createCloudButton"
 			style="?android:textAppearanceSmall"
diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml
index ff3ebacd..48ee8bb1 100644
--- a/presentation/src/main/res/values/strings.xml
+++ b/presentation/src/main/res/values/strings.xml
@@ -193,8 +193,7 @@
 	<string name="screen_s3_settings_msg_access_key_not_empty">Access Key can\'t be empty</string>
 	<string name="screen_s3_settings_msg_secret_key_not_empty">Secret Key can\'t be empty</string>
 	<string name="screen_s3_settings_msg_bucket_not_empty">Bucket can\'t be empty</string>
-	<string name="screen_s3_settings_msg_endpoint_and_region_not_empty">Endpoint and Region can\'t be empty</string>
-	<string name="screen_s3_settings_msg_endpoint_set_and_region_empty">If Endpoint is set, Region must be set too</string>
+	<string name="screen_s3_settings_msg_endpoint_and_region_not_empty">Endpoint or Region can\'t be empty</string>
 
 	<!-- ## screen: enter vault name -->
 	<string name="screen_enter_vault_name_title" translatable="false">@string/screen_vault_list_action_create_new_vault</string>