Avalara.AvaTax.SoapClient
16.8.2
dotnet add package Avalara.AvaTax.SoapClient --version 16.8.2
NuGet\Install-Package Avalara.AvaTax.SoapClient -Version 16.8.2
<PackageReference Include="Avalara.AvaTax.SoapClient" Version="16.8.2" />
<PackageVersion Include="Avalara.AvaTax.SoapClient" Version="16.8.2" />
<PackageReference Include="Avalara.AvaTax.SoapClient" />
paket add Avalara.AvaTax.SoapClient --version 16.8.2
#r "nuget: Avalara.AvaTax.SoapClient, 16.8.2"
#:package Avalara.AvaTax.SoapClient@16.8.2
#addin nuget:?package=Avalara.AvaTax.SoapClient&version=16.8.2
#tool nuget:?package=Avalara.AvaTax.SoapClient&version=16.8.2
Avalara AvaTax SOAP Client
Avalara.AvaTax.Adapter — the SOAP (ASMX) client for the AvaTax service.
Platform: .NET Framework 2.0 or later, Windows only. This library uses ASMX SOAP
(System.Web.Services), MSMQ (System.Messaging) and COM interop, none of which exist on
.NET Core / .NET 5+.
What's new in 16.8.1
Adds Profile.ClientSupportMultiTax, which tells the service that your client understands
multi-tax responses. It is sent as the ClientSupportMultiTax element of the Profile SOAP
header and defaults to false, so nothing changes until you opt in.
using Avalara.AvaTax.Adapter.TaxService;
TaxSvc svc = new TaxSvc();
svc.Profile.Client = "MyIntegration,1.0";
svc.Profile.ClientSupportMultiTax = true; // opt in
The resulting SOAP header:
<Profile xmlns="http://avatax.avalara.com/services">
<Name>...</Name>
<Client>MyIntegration,1.0</Client>
<Adapter>...</Adapter>
<Machine>...</Machine>
<ClientSupportMultiTax>true</ClientSupportMultiTax>
</Profile>
Because the element is optional in the service contract (minOccurs="0"), older services
and stored payloads that omit it still deserialize correctly, defaulting to false.
Upgrading from 16.8.0
This is a drop-in upgrade. AssemblyVersion remains 16.8.0.0, so existing direct
references and binding redirects keep working without changes — only
AssemblyFileVersion moves to 16.8.1.0. The release adds the property above and removes
no public API. In particular:
TaxTypeand every other enum keep their exact numeric values, so values you have persisted to a database or serialized to disk continue to mean the same thing.- Password-related API (
RequestSecurity.Password,UsernameToken.Password,CompanyReturn.EfilePassword) is unchanged.
One small caveat carried over from source changes made after 16.8.0 shipped:
- Members of
Avalara.AvaTax.Adapter.LogService.LogLevelwere re-cased fromDEBUG,INFO,WARNING,ERROR,FATAL,NONEtoDebug,Info,Warning,Error,Fatal,None. The numeric values are unchanged, so only source that names them needs updating. Note the separateAvalara.AvaTax.Adapter.LogLevelenum still uses the original upper-case names. - The
LogSvc.LogMessage(string, LogLevel, string)overload was removed.
Configuration
This package does not ship an Avalara.AvaTax.Adapter.dll.config. Add the following to
your application's config file and supply your own values:
<configSections>
<sectionGroup name="AvaTax">
<section name="ServiceConfig" type="Avalara.AvaTax.Adapter.XmlSerializerSectionHandler, Avalara.AvaTax.Adapter" />
<section name="RequestSecurity" type="Avalara.AvaTax.Adapter.XmlSerializerSectionHandler, Avalara.AvaTax.Adapter" />
</sectionGroup>
</configSections>
<AvaTax>
<ServiceConfig>
<Url>https://avatax.avalara.net/</Url>
<RequestTimeout>300</RequestTimeout>
</ServiceConfig>
<RequestSecurity>
<Account>YOUR_ACCOUNT_NUMBER</Account>
<License>YOUR_LICENSE_KEY</License>
</RequestSecurity>
</AvaTax>
Never commit real account or license values to source control.
License
Apache License 2.0. Full text: https://www.apache.org/licenses/LICENSE-2.0
Third-party components
This assembly statically includes Apache log4net (https://logging.apache.org/log4net/), Copyright The Apache Software Foundation, also licensed under the Apache License 2.0. Its types appear in this assembly as an implementation detail and are not supported API.
Support
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET Framework | net is compatible. |
This package has no dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Avalara.AvaTax.SoapClient:
| Package | Downloads |
|---|---|
|
SuperiorAcumaticaPackage
Dependencies required to compile the SuperiorAcumaticaSolution for Acumatica 2026 R1 Build 26.100.0175 |
GitHub repositories
This package is not used by any popular GitHub repositories.
FIX RELEASE. Upgrade if you are on 16.8.1, particularly if you set
Profile.ClientSupportMultiTax = true.
16.8.1 could not read the responses its own MultiTax opt-in produces. TaxDetail/TaxType is
declared as xs:string by the service contract, but this SDK deserialized it into a closed
enum, so a tax type the enum did not list - "RentalLeasing", for example - threw
"Instance validation error: 'RentalLeasing' is not a valid value for ProxyTaxType" and
failed the ENTIRE tax calculation, not just the affected line. 16.8.2 reads it as a string,
so unrecognized tax types can no longer break a response.
* TaxDetail.TaxType (the TaxType enum) still reports every value it has always reported. A
tax type this release predates now reports None instead of throwing.
* NEW TaxDetail.TaxTypeName returns the tax type exactly as the service sent it. Read this
if you need the precise value; it is never lossy.
* NEW TaxDetail.TaxTypeGroupId, TaxSubTypeId, IsFee and TaxTypeId. The service was already
sending these and the SDK was discarding them.
The same defect is fixed in three other enums, which likewise rejected values the contract
declares. Each one aborted a whole response:
* DocumentType gains CustomsInvoice and CustomsOrder.
* TaxOverrideType gains DeriveTaxable and OutOfHarbor.
* LocationType gains GoodsPlaceOrServiceRendered and Import.
Existing members keep their numbers, so anything you have persisted still means the same
thing.
DROP-IN from 16.8.0 and 16.8.1: AssemblyVersion remains 16.8.0.0, so direct references and
binding redirects keep working; only AssemblyFileVersion moves, to 16.8.2.0. COM callers are
unaffected - new members are appended, so existing DispIds do not move. Regenerate the type
library only if you want to call the new members.
One deliberate change to the public surface, for callers of the Proxies plumbing namespace
rather than the documented API: ProxyTaxDetail.TaxType is now a string rather than a
ProxyTaxType. Code bound to it needs recompiling. Avalara.AvaTax.Adapter.TaxService.TaxDetail,
which is what virtually all integrations use, loses nothing.
See the included README.md for usage and a configuration reference.