# Tax and Fees

Zavvion Events stores fee and tax components separately.

Example supported by `CheckoutCalculator`:

- Ticket net: GBP 100.00
- Ticket tax at 20%: GBP 20.00
- Customer ticket gross: GBP 120.00
- Platform service fee at 10% of ticket net: GBP 10.00
- Tax on platform service fee at 20%: GBP 2.00
- Platform receives: GBP 12.00
- Organiser receives ticket gross: GBP 120.00 before Stripe processing fee impact
- Customer pays total: GBP 132.00

Fee rules can be percentage, fixed per order, or fixed per ticket, with optional minimum and maximum fee values. Tax rules are configurable by country/region and component: ticket, merchandise, donation, platform fee, or service fee.

## Scoped order-total tiers

The existing global country fee remains the final fallback. Platform administrators may additionally configure organiser-specific or event-specific tiers. Checkout resolves them in this order:

1. Matching event tier.
2. Matching organiser tier for the event country and currency.
3. Existing global country fee.
4. Zero fee only when no global fee exists.

Tier thresholds use the server-calculated, post-discount order subtotal before the platform fee. This subtotal includes ticket, merchandise, and donation amounts plus their applicable taxes. The fee itself and its tax are excluded, avoiding a circular calculation. Once a tier is selected, the existing fee calculation remains unchanged; for example, a percentage fee still applies to ticket net.

Thresholds are stored in integer minor units and both bounds are inclusive. For GBP 10.00 through GBP 100.00, store `1000` through `10000`. A `> GBP 100.00` tier begins at `10001` with no upper bound. Active tiers in the same scope cannot overlap. A gap falls through to the next scope and ultimately the global fee.
