Search code examples
intuit-partner-platformquickbooks-online

Can't add TaxService to QBO with .NET SDK


How do I create a tax rate in QBO using API v3 and the TaxService resource? When I try to add it the same way as I would any other object, Visual Studio gives me this error: "The type 'Intuit.Ipp.Data.TaxService' cannot be used as type parameter 'T' in the generic type or method Intuit.Ipp.DataService.DataService.Add(T)'. There is no implicit reference conversion from 'Intuit.Ipp.Data.TaxService' to 'Intuit.Ipp.Data.IEntity'."

Here's the code:

Intuit.Ipp.Data.TaxService ts = new Intuit.Ipp.Data.TaxService();
// Populate fields here...
DataService ds = new DataService(ServiceContext);
Intuit.Ipp.Data.TaxService newTs = ds.Add<Intuit.Ipp.Data.TaxService>(ts);

Solution

  • Use GlobalTaxService endpoint and JSON format only. Try this code:

    GlobalTaxService taxSvc = new GlobalTaxService(context);
                Intuit.Ipp.Data.TaxService taxCodetobeAdded = new Data.TaxService();
                taxCodetobeAdded.TaxCode = "taxC_" + Guid.NewGuid().ToString("N");
    
                QueryService<TaxAgency> taxagency = new QueryService<TaxAgency>(context);
                TaxAgency taxagencyResult = taxagency.ExecuteIdsQuery("select * from TaxAgency").FirstOrDefault<TaxAgency>();                          
    
    
    
                List<TaxRateDetails> lstTaxRate = new List<TaxRateDetails>();
                TaxRateDetails taxdetail1 = new TaxRateDetails();
                taxdetail1.TaxRateName = "taxR1_" + Guid.NewGuid().ToString("N");
                taxdetail1.RateValue = 3m;
                taxdetail1.RateValueSpecified = true;
                taxdetail1.TaxAgencyId = taxagencyResult.Id.ToString();
                taxdetail1.TaxApplicableOn = TaxRateApplicableOnEnum.Sales;
                taxdetail1.TaxApplicableOnSpecified = true;
                lstTaxRate.Add(taxdetail1);
    
                TaxRateDetails taxdetail2 = new TaxRateDetails();
                taxdetail2.TaxRateName = "taxR2_" + Guid.NewGuid().ToString("N");
                taxdetail2.RateValue = 2m;
                taxdetail2.RateValueSpecified = true;
                taxdetail2.TaxAgencyId = taxagencyResult.Id.ToString();
                taxdetail2.TaxApplicableOn = TaxRateApplicableOnEnum.Sales;
                taxdetail2.TaxApplicableOnSpecified = true;
                lstTaxRate.Add(taxdetail2);
    
                //TaxRateDetails taxdetail3 = new TaxRateDetails();
                //taxdetail3.TaxRateName = "rate298";
                //taxdetail3.TaxRateId = "2";
    
                //lstTaxRate.Add(taxdetail3);
    
                taxCodetobeAdded.TaxRateDetails = lstTaxRate.ToArray();
    
                Intuit.Ipp.Data.TaxService taxCodeAdded = taxSvc.AddTaxCode(taxCodetobeAdded);