> ## Documentation Index
> Fetch the complete documentation index at: https://zenskar.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Tax engine comparison

A plan, contract, or product's **Tax** feature has three **Tax Type** options:
**Manual**, **Avalara**, and **Anrok**. This page covers what each supports,
how they differ, and how Zenskar's mechanics work for each. For setup steps,
see [Avalara AvaTax](/docs/20240301/third-party-integrations/tax-automation/avalara-avatax) and
[Anrok](/docs/20240301/third-party-integrations/tax-automation/anrok).

## The comparison

### Manual vs Avalara

| | Manual | Avalara |
| :- | :- | :- |
| What you set on the feature | A flat percentage | An Avalara tax code |
| Rate | The percentage you enter | Computed from the tax code, the ship-from and ship-to addresses, and your Avalara nexus |
| Tax detail on the invoice | The single percentage, applied to the line | Avalara's state, county, city, and special-jurisdiction amounts, summed into the line's tax |
| Addresses | Not used | Required. Behavior on an address Avalara can't resolve is configurable: fail generation, ignore tax if non-taxable, or ignore tax and generate |
| Customer exemption | Not applicable | `exempt_tax`, `tax_exemption_number`, and `entity_use_code` are sent on every transaction |
| Draft and preview | Calculated locally | Calls Avalara for an estimate each time the amount is shown |
| On approval | Nothing leaves Zenskar | Recorded as a committed AvaTax transaction |
| Credit notes | The percentage is reversed locally | A refund is reported against the original transaction |
| One connection covers | Not applicable | One Zenskar business entity and one Avalara company |
| Availability | Always available | Available to any organization |

### Manual vs Anrok

| | Manual | Anrok |
| :- | :- | :- |
| What you set on the feature | A flat percentage | An Anrok tax category, picked live from your connected Anrok account (no Zenskar-side category or mapping step) |
| Rate | The percentage you enter | Computed from the tax category, the addresses, and your Anrok nexus |
| Tax detail on the invoice | The single percentage, applied to the line | Anrok's per-jurisdiction (nexus-level) amounts, summed into the line's tax |
| Addresses | Not used | Required. Behavior on an address Anrok can't resolve is fixed: always ignore tax and generate the invoice |
| Customer exemption | Not applicable | The customer's tax ID is sent on every transaction; a valid EU VAT ID triggers reverse charge. No exemption-number field; exemptions are set directly in Anrok, found by searching for the customer there by name or email (the internal ID Zenskar sends isn't shown anywhere in Zenskar's UI) |
| Draft and preview | Calculated locally | Calls Anrok for an estimate each time the amount is shown |
| On approval | Nothing leaves Zenskar | Recorded as an Anrok transaction (no separate commit step) |
| Credit notes | The percentage is reversed locally | A full credit note negates the original transaction; a partial one is a new, negative, pro-rated transaction |
| One connection covers | Not applicable | One Zenskar business entity and one Anrok account |
| Availability | Always available | Enabled only for organizations Zenskar has turned it on for; otherwise shown disabled, marked "coming soon" |

You can mix all three: set the tax feature to Manual on some plans, contracts,
or products, Avalara on others, and Anrok on others.

## Mechanics and constraints

| Constraint | Detail |
| :- | :- |
| Anrok is gated | The Anrok card under Integrations is always shown, but enabled only for organizations Zenskar has turned it on for; otherwise it's disabled and marked "coming soon." Avalara has no such gate. |
| One connection, one entity | Both engines bind one connection to one Zenskar business entity (and, for Avalara, one company). Billing another entity through the same engine needs another connection. |
| Disconnecting the connected engine blocks affected invoices | Any plan, contract, or product whose Tax feature still names the disconnected engine fails invoice generation outright, with an actionable error naming the engine, not a silent zero-tax fallback. Reconnect the engine, or change the Tax feature to Manual or the other connected engine, then re-publish and regenerate. |
| Anrok needs a resolvable product per line | A tax feature Anrok can't attach to a single product (for example, on a bundle) is refused when the plan or contract is published. Avalara has no equivalent restriction. |
| Multiple Anrok connections don't fully work yet | If more than one Anrok connection exists, the Tax Category picker used across the product and pricing UI reads categories from only the first one created. |
| Silent zero tax is the most common failure for both engines | Same underlying reason: a jurisdiction you haven't registered for. Avalara returns \$0 tax with no error; Anrok marks the line "not collecting." See each engine's own page for the specific warning. |

## Where to go next

| Engine | Setup guide |
| :- | :- |
| Avalara | [Avalara AvaTax](/docs/20240301/third-party-integrations/tax-automation/avalara-avatax): connect Avalara and assign a tax code. |
| Anrok | [Anrok](/docs/20240301/third-party-integrations/tax-automation/anrok): connect Anrok and assign a tax category. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.