diff --git a/enterprise/server/routes/billing.py b/enterprise/server/routes/billing.py
index 5688cd94e3..1d52b54ffb 100644
--- a/enterprise/server/routes/billing.py
+++ b/enterprise/server/routes/billing.py
@@ -417,7 +417,7 @@ async def success_callback(session_id: str, request: Request):
session.commit()
return RedirectResponse(
- f'{request.base_url}settings?checkout=success', status_code=302
+ f'{request.base_url}settings/billing?checkout=success', status_code=302
)
@@ -444,6 +444,21 @@ async def cancel_callback(session_id: str, request: Request):
session.merge(billing_session)
session.commit()
+ # Redirect credit purchases to billing screen, subscriptions to LLM settings
+ if (
+ billing_session.billing_session_type
+ == BillingSessionType.DIRECT_PAYMENT.value
+ ):
+ return RedirectResponse(
+ f'{request.base_url}settings/billing?checkout=cancel',
+ status_code=302,
+ )
+ else:
+ return RedirectResponse(
+ f'{request.base_url}settings?checkout=cancel', status_code=302
+ )
+
+ # If no billing session found, default to LLM settings (subscription flow)
return RedirectResponse(
f'{request.base_url}settings?checkout=cancel', status_code=302
)
diff --git a/enterprise/tests/unit/test_billing.py b/enterprise/tests/unit/test_billing.py
index 9947e32479..e35577e431 100644
--- a/enterprise/tests/unit/test_billing.py
+++ b/enterprise/tests/unit/test_billing.py
@@ -288,7 +288,8 @@ async def test_success_callback_success():
assert response.status_code == 302
assert (
- response.headers['location'] == 'http://test.com/settings?checkout=success'
+ response.headers['location']
+ == 'http://test.com/settings/billing?checkout=success'
)
# Verify LiteLLM API calls
diff --git a/frontend/src/routes/settings.tsx b/frontend/src/routes/settings.tsx
index 3b3feb605f..6c88ab7526 100644
--- a/frontend/src/routes/settings.tsx
+++ b/frontend/src/routes/settings.tsx
@@ -91,9 +91,7 @@ function SettingsScreen() {
}
>
{t(text)}
- {isSaas && to === "/settings" && (
-
- )}
+ {isSaas && to === "/settings" && }
))}