diff --git a/components/usage/pkg/apiv1/billing.go b/components/usage/pkg/apiv1/billing.go index 6e3971bca9a8c1..fe7ce866df5249 100644 --- a/components/usage/pkg/apiv1/billing.go +++ b/components/usage/pkg/apiv1/billing.go @@ -64,19 +64,20 @@ func (s *BillingService) FinalizeInvoice(ctx context.Context, in *v1.FinalizeInv return nil, status.Errorf(codes.InvalidArgument, "Missing InvoiceID") } - invoice, err := s.stripeClient.GetInvoice(ctx, in.GetInvoiceId()) + invoice, err := s.stripeClient.GetInvoiceWithCustomer(ctx, in.GetInvoiceId()) if err != nil { logger.WithError(err).Error("Failed to retrieve invoice from Stripe.") return nil, status.Errorf(codes.NotFound, "Failed to get invoice with ID %s: %s", in.GetInvoiceId(), err.Error()) } - subscription := invoice.Subscription - if subscription == nil { - logger.Error("No subscription information available for invoice.") - return nil, status.Errorf(codes.Internal, "Failed to retrieve subscription details from invoice.") + customer := invoice.Customer + if customer == nil { + logger.Error("No customer information available for invoice.") + return nil, status.Errorf(codes.Internal, "Failed to retrieve customer details from invoice.") } + logger = logger.WithField("stripe_customer", customer.ID).WithField("stripe_customer_name", customer.Name) - teamID, found := subscription.Metadata[stripe.AttributionIDMetadataKey] + teamID, found := customer.Metadata[stripe.AttributionIDMetadataKey] if !found { logger.Error("Failed to find teamID from subscription metadata.") return nil, status.Errorf(codes.Internal, "Failed to extra teamID from Stripe subscription.") diff --git a/components/usage/pkg/stripe/stripe.go b/components/usage/pkg/stripe/stripe.go index 17842635e04f22..12afd66362f747 100644 --- a/components/usage/pkg/stripe/stripe.go +++ b/components/usage/pkg/stripe/stripe.go @@ -227,7 +227,7 @@ func (c *Client) GetUpcomingInvoice(ctx context.Context, customerID string) (*In }, nil } -func (c *Client) GetInvoice(ctx context.Context, invoiceID string) (*stripe.Invoice, error) { +func (c *Client) GetInvoiceWithCustomer(ctx context.Context, invoiceID string) (*stripe.Invoice, error) { if invoiceID == "" { return nil, fmt.Errorf("no invoice ID specified") } @@ -235,7 +235,7 @@ func (c *Client) GetInvoice(ctx context.Context, invoiceID string) (*stripe.Invo invoice, err := c.sc.Invoices.Get(invoiceID, &stripe.InvoiceParams{ Params: stripe.Params{ Context: ctx, - Expand: []*string{stripe.String("data.subscriptions")}, + Expand: []*string{stripe.String("customer")}, }, }) if err != nil {