Skip to content

Missing tax category "O" (Outside Scope of Tax) for third-country B2B services — only numeric VAT % supported #390

Description

@aaronspring

I think for invoices for non-EU clients, the German VAT shouldn't be 0 bot outside of scope. to be fixed in XML and human-readable PDF.

claude:

Context
As a German Freiberufler (§18 EStG) invoicing a US-based client for B2B services,
the correct place of supply under §3a (2) UStG is the recipient's country (USA).
This means the transaction is not "zero-rated" but entirely "outside the scope of
German VAT" — a distinct category under EN16931 (UNTDID 5305 code "O", with
VATEX-EU-O as the exemption reason), separate from code "Z" (zero-rated, still
taxable at 0%).

Current behavior
The contract/invoice settings only expose a numeric "VAT %" field. Setting this
to 0 causes tuttle to generate a Factur-X invoice with:
ram:ApplicableTradeTax
ram:CategoryCodeZ</ram:CategoryCode>
ram:RateApplicablePercent0</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>

Expected behavior
A way to select "Outside Scope of Tax" (category O) as distinct from
"zero-rated" (category Z), so the generated Factur-X XML correctly reflects
non-EU B2B service invoices per §3a (2) UStG / Art. 44 VAT Directive.

Environment
tuttle v3.13.2, Factur-X/ZUGFeRD output via python-drafthorse

Reference
https://developer.vertexinc.com/einvoicing/docs/en-16931-services-outside-scope-of-tax

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions