diff --git a/enterprise/backend/src/metabase_enterprise/billing/billing.clj b/enterprise/backend/src/metabase_enterprise/billing/billing.clj
index ae6219dcaf39882c335917026a05d409623a1521..2acba02e0d1a09a0813dfa8dee314cfb8c8f7801 100644
--- a/enterprise/backend/src/metabase_enterprise/billing/billing.clj
+++ b/enterprise/backend/src/metabase_enterprise/billing/billing.clj
@@ -4,10 +4,13 @@
    [cheshire.core :as json]
    [clj-http.client :as http]
    [clojure.core.memoize :as memoize]
+   [clojure.string :as str]
    [compojure.core :as compojure :refer [GET]]
+   [java-time.api :as t]
    [metabase.api.common :as api]
    [metabase.public-settings.premium-features :as premium-features]
    [metabase.util :as u]
+   [metabase.util.date-2.parse :as u.date.parse]
    [metabase.util.i18n :as i18n]
    [toucan2.core :as t2])
   (:import
@@ -31,6 +34,26 @@
             {:content nil})))
    :ttl/threshold (u/hours->ms 5)))
 
+(defn- valid-thru []
+  (some->> (premium-features/premium-embedding-token)
+           premium-features/fetch-token-status
+           :valid-thru
+           u.date.parse/parse
+           (t/format "MMMM d, YYYY")))
+
+(defn billing-status
+  "Returns content that powers the billing page in certain circumstances."
+  []
+  (let [max-users (premium-features/max-users-allowed)
+        ;; There is a defsetting for user count, but it is only updated every 5 minutes, and this should be exactly up
+        ;; to date here:
+        total-users (t2/count :model/User :is_active true, :type :personal)]
+    {:version "v1"
+     :content [{:name "Users included in your plan" :value max-users :format "integer" :display "value"}
+               {:name "Users available" :value (- max-users total-users) :format "integer" :display "value"}
+               {:name "Token expiration date" :value (valid-thru) :format "string" :display "value"}
+               {:name "Plan" :value "Metabase Enterprise Airgap" :format "string" :display "value"}]}))
+
 (api/defendpoint GET "/"
   "Get billing information. This acts as a proxy between `metabase-billing-info-url` and the client,
    using the embedding token and signed in user's email to fetch the billing information."
@@ -38,6 +61,8 @@
   (let [token    (premium-features/premium-embedding-token)
         email    (t2/select-one-fn :email :model/User :id api/*current-user-id*)
         language (i18n/user-locale-string)]
-    (fetch-billing-status* token email language)))
+    (if (and token (str/starts-with? token "airgap_"))
+      (billing-status)
+      (fetch-billing-status* token email language))))
 
 (api/define-routes)
diff --git a/enterprise/backend/test/metabase_enterprise/billing/billing_test.clj b/enterprise/backend/test/metabase_enterprise/billing/billing_test.clj
index 81fa7c743d1d207c1645855bf157deb8d538c5a4..d498dcd0f1ad9aa1e769daf94c69613b9fdec6e6 100644
--- a/enterprise/backend/test/metabase_enterprise/billing/billing_test.clj
+++ b/enterprise/backend/test/metabase_enterprise/billing/billing_test.clj
@@ -5,17 +5,19 @@
 
 (deftest fetch-billing-status-test
   (testing "Passes through billing status fetched from server"
-    (binding [http/request (fn [& _]
-                             {:status 200
-                              :body   "{\"version\":\"v1\",\"content\":null}"})]
-      (is (= {:version "v1"
-              :content nil}
-             (mt/user-http-request :rasta :get 200 "/ee/billing"))))))
+    (mt/with-temporary-setting-values [premium-embedding-token nil]
+      (binding [http/request (fn [& _]
+                               {:status 200
+                                :body   "{\"version\":\"v1\",\"content\":null}"})]
+        (is (= {:version "v1"
+                :content nil}
+               (mt/user-http-request :rasta :get 200 "/ee/billing")))))))
 
 (deftest fetch-billing-status-error-test
   (testing "When receiving a non json result consume the error and return an empty content blob"
-    (binding [http/request (fn [& _]
-                             {:status 404
-                              :body   "error"})]
-      (is (= {:content nil}
-             (mt/user-http-request :crowberto :get 200 "/ee/billing"))))))
+    (mt/with-temporary-setting-values [premium-embedding-token nil]
+      (binding [http/request (fn [& _]
+                               {:status 404
+                                :body   "error"})]
+        (is (= {:content nil}
+               (mt/user-http-request :crowberto :get 200 "/ee/billing")))))))