using Stripe; namespace Bit.Core.Billing.Extensions; public static class UpcomingInvoiceOptionsExtensions { /// /// Attempts to enable automatic tax for given upcoming invoice options. /// /// /// The existing customer to which the upcoming invoice belongs. /// The existing subscription to which the upcoming invoice belongs. /// Returns true when successful, false when conditions are not met. public static bool EnableAutomaticTax( this UpcomingInvoiceOptions options, Customer customer, Subscription subscription) { if (subscription != null && subscription.AutomaticTax.Enabled) { return false; } // We might only need to check the automatic tax status. if (!customer.HasRecognizedTaxLocation() && string.IsNullOrWhiteSpace(customer.Address?.Country)) { return false; } options.AutomaticTax = new InvoiceAutomaticTaxOptions { Enabled = true }; options.SubscriptionDefaultTaxRates = []; return true; } }