diff --git a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
index efeed08..2b496c0 100644
--- a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
+++ b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
@@ -113,7 +113,7 @@
 
     if (!VoicemailComponent.get(getContext())
         .getVoicemailClient()
-        .isVoicemailDonationEnabled(getContext(), phoneAccountHandle)) {
+        .isVoicemailDonationAvailable(getContext())) {
       getPreferenceScreen().removePreference(donateVoicemailSwitchPreference);
     }
 
diff --git a/java/com/android/voicemail/VoicemailClient.java b/java/com/android/voicemail/VoicemailClient.java
index d033369..050286a 100644
--- a/java/com/android/voicemail/VoicemailClient.java
+++ b/java/com/android/voicemail/VoicemailClient.java
@@ -128,6 +128,9 @@
    */
   boolean isVoicemailTranscriptionAvailable(Context context);
 
+  /** @return if the voicemail donation feature is available. */
+  boolean isVoicemailDonationAvailable(Context context);
+
   /** @return if the voicemail donation setting has been enabled by the user. */
   boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account);
 
diff --git a/java/com/android/voicemail/impl/VoicemailClientImpl.java b/java/com/android/voicemail/impl/VoicemailClientImpl.java
index 14fa1d8..2add59e 100644
--- a/java/com/android/voicemail/impl/VoicemailClientImpl.java
+++ b/java/com/android/voicemail/impl/VoicemailClientImpl.java
@@ -136,6 +136,22 @@
   }
 
   @Override
+  public boolean isVoicemailDonationAvailable(Context context) {
+    if (!isVoicemailTranscriptionAvailable(context)) {
+      LogUtil.i("VoicemailClientImpl.isVoicemailDonationAvailable", "transcription not available");
+      return false;
+    }
+
+    TranscriptionConfigProvider provider = new TranscriptionConfigProvider(context);
+    if (!provider.isVoicemailDonationAvailable()) {
+      LogUtil.i("VoicemailClientImpl.isVoicemailDonationAvailable", "feature disabled by config");
+      return false;
+    }
+
+    return true;
+  }
+
+  @Override
   public boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account) {
     return isVoicemailTranscriptionAvailable(context)
         && VisualVoicemailSettingsUtil.isVoicemailDonationEnabled(context, account);
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java b/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
index 5da4503..f4996a0 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
@@ -75,9 +75,9 @@
         .getLong("voicemail_transcription_get_transcript_poll_interval_millis", 1000L);
   }
 
-  public boolean isVoicemailDonationEnabled() {
+  public boolean isVoicemailDonationAvailable() {
     return ConfigProviderBindings.get(context)
-        .getBoolean("voicemail_transcription_donation_enabled", false);
+        .getBoolean("voicemail_transcription_donation_available", false);
   }
 
   @Override
diff --git a/java/com/android/voicemail/stub/StubVoicemailClient.java b/java/com/android/voicemail/stub/StubVoicemailClient.java
index 0fe533e..fe06324 100644
--- a/java/com/android/voicemail/stub/StubVoicemailClient.java
+++ b/java/com/android/voicemail/stub/StubVoicemailClient.java
@@ -76,6 +76,11 @@
   }
 
   @Override
+  public boolean isVoicemailDonationAvailable(Context context) {
+    return false;
+  }
+
+  @Override
   public boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account) {
     return false;
   }
