VAT and Sales Tax for .NET SaaS, Done Right
Tax is where naive SaaS billing quietly breaks. Here is how to get EU cross-border VAT, US sales tax, and historical invoice integrity right in a .NET SaaS — with real Granit code.
Tax is where naive SaaS billing quietly breaks. Here is how to get EU cross-border VAT, US sales tax, and historical invoice integrity right in a .NET SaaS — with real Granit code.
Recurring EU billing does not require a US payment gateway. Here is how a provider-agnostic design collects a finalized invoice over SEPA — no Stripe, no Mollie, no Cloud Act exposure — and stays retry-safe end to end.
Turning a client IP into a city has two answers in .NET — a local MaxMind database or a remote lookup API — and each hides a trap. Here is the honest trade-off between offline speed and online freshness, the GDPR problem nobody mentions, and how to run both behind one resolver.
FAPI 2.0 is the security profile required by Open Banking, healthcare APIs, and government identity systems. Most teams think conformance takes months. Granit's OpenIddict server, BFF, and resource server implement every requirement — one flag enables the full profile.
Shipping to the EU means opt-in. Shipping to California means opt-out. Shipping to Brazil means opt-in again. Most teams hardcode GDPR and call it done. Here is how Granit resolves the right consent model automatically — per tenant, per request, without a line of conditional logic in your application code.
Stop sprinkling CreatedAt assignments across repositories and IsDeleted = false across queries. Five interceptors and one global filter make compliance the default — and ExecuteUpdate the only thing left to watch for.
Wire Serilog, OpenTelemetry and the Grafana LGTM stack into a .NET 10 app in one call. Structured logs, distributed traces, metrics — all OTLP, all sovereign.
Enterprise customers ask for a SOC 2 Type 2 report before signing. Here is how Granit's modules map to the five Trust Service Criteria — and what the framework cannot replace.
NIS 2 is now law across the EU. Here is what it requires from your .NET stack — and how Granit's supply chain pipeline and embedded security modules cover the key obligations out of the box.
Physical deletion breaks audit trails, conflicts with legal holds, and fails on append-only systems. Crypto-shredding solves all three: destroy the key, and the ciphertext becomes random noise. Here is how Granit implements it.
GDPR compliance is not a checkbox. It is an architectural constraint that must be enforced at the framework level. Here is how Granit implements data minimization, right to erasure, and pseudonymization by default.