diff --git a/frontend/src/components/admin/usage/UsageTable.vue b/frontend/src/components/admin/usage/UsageTable.vue
index 364a3072e6..26565f28ad 100644
--- a/frontend/src/components/admin/usage/UsageTable.vue
+++ b/frontend/src/components/admin/usage/UsageTable.vue
@@ -497,7 +497,7 @@
{{ t('usage.rate') }}
- {{ formatMultiplier(tooltipData?.rate_multiplier || 1) }}x
+ {{ formatMultiplier(tooltipData?.rate_multiplier ?? 1) }}x
{{ t('usage.original') }}
diff --git a/frontend/src/components/admin/usage/__tests__/UsageTable.spec.ts b/frontend/src/components/admin/usage/__tests__/UsageTable.spec.ts
index d915fa4c42..0b06dd80d3 100644
--- a/frontend/src/components/admin/usage/__tests__/UsageTable.spec.ts
+++ b/frontend/src/components/admin/usage/__tests__/UsageTable.spec.ts
@@ -225,6 +225,22 @@ describe('admin UsageTable tooltip', () => {
expect(wrapper.get('[data-testid="native-compaction-badge"]').text()).toBe('Compaction')
})
+ it.each([
+ [0, '0.0x'],
+ [0.5, '0.50x'],
+ [undefined, '1.00x'],
+ ])('shows the stored user rate %s in cost details', async (rate, expected) => {
+ const wrapper = mount(UsageTable, {
+ props: { data: [{ ...baseImageRow, rate_multiplier: rate }], loading: false, columns: [] },
+ global: { stubs: { DataTable: DataTableStub, EmptyState: true, Icon: true, Teleport: true } },
+ })
+ const triggers = wrapper.findAll('.group.relative')
+ await triggers[triggers.length - 1].trigger('mouseenter')
+ const rateLabel = wrapper.get('.fixed').findAll('span').find(span => span.text() === 'Rate')!
+ expect(rateLabel.element.parentElement?.textContent).toContain(expected)
+ wrapper.unmount()
+ })
+
it('shows service tier and billing breakdown in cost tooltip', async () => {
const row = {
request_id: 'req-admin-1',