diff --git a/backend/internal/service/openai_gateway_record_usage_test.go b/backend/internal/service/openai_gateway_record_usage_test.go index 5aa4db8a..7a636afa 100644 --- a/backend/internal/service/openai_gateway_record_usage_test.go +++ b/backend/internal/service/openai_gateway_record_usage_test.go @@ -895,14 +895,16 @@ func TestOpenAIGatewayServiceRecordUsage_UsesRequestedModelAndUpstreamModelMetad require.Equal(t, 1, userRepo.deductCalls) } -func TestOpenAIGatewayServiceRecordUsage_BillsMappedRequestsUsingUpstreamModelFallback(t *testing.T) { +func TestOpenAIGatewayServiceRecordUsage_BillsMappedRequestsUsingRequestedModel(t *testing.T) { usageRepo := &openAIRecordUsageLogRepoStub{inserted: true} userRepo := &openAIRecordUsageUserRepoStub{} subRepo := &openAIRecordUsageSubRepoStub{} svc := newOpenAIRecordUsageServiceForTest(usageRepo, userRepo, subRepo, nil) usage := OpenAIUsage{InputTokens: 20, OutputTokens: 10} - expectedCost, err := svc.billingService.CalculateCost("gpt-5.1-codex", UsageTokens{ + // Billing should use the requested model ("gpt-5.1"), not the upstream mapped model ("gpt-5.1-codex"). + // This ensures pricing is always based on the model the user requested. + expectedCost, err := svc.billingService.CalculateCost("gpt-5.1", UsageTokens{ InputTokens: 20, OutputTokens: 10, }, 1.1) diff --git a/backend/internal/service/openai_gateway_service.go b/backend/internal/service/openai_gateway_service.go index a72a86ac..0a959615 100644 --- a/backend/internal/service/openai_gateway_service.go +++ b/backend/internal/service/openai_gateway_service.go @@ -4153,9 +4153,6 @@ func (s *OpenAIGatewayService) RecordUsage(ctx context.Context, input *OpenAIRec } billingModel := forwardResultBillingModel(result.Model, result.UpstreamModel) - if result.BillingModel != "" { - billingModel = strings.TrimSpace(result.BillingModel) - } serviceTier := "" if result.ServiceTier != nil { serviceTier = strings.TrimSpace(*result.ServiceTier) diff --git a/backend/internal/service/usage_log_helpers.go b/backend/internal/service/usage_log_helpers.go index 57c51540..a7bcae99 100644 --- a/backend/internal/service/usage_log_helpers.go +++ b/backend/internal/service/usage_log_helpers.go @@ -21,8 +21,8 @@ func optionalNonEqualStringPtr(value, compare string) *string { } func forwardResultBillingModel(requestedModel, upstreamModel string) string { - if trimmedUpstream := strings.TrimSpace(upstreamModel); trimmedUpstream != "" { - return trimmedUpstream + if trimmed := strings.TrimSpace(requestedModel); trimmed != "" { + return trimmed } - return strings.TrimSpace(requestedModel) + return strings.TrimSpace(upstreamModel) }