# Cross-border PDV gate — NO→EU/HR Stripe pretplate, FINAL (MC #106637, 2026-08-02)

Agent ID: finverge-106637 (finalization pass, follows finverge-106637 08-01 draft)
Verdict: GO-WITH-CONDITIONS (B2B path) — CEO already approved this verdict 2026-08-02
(`CEO-DECISION-B2B-ONLY-2026-08-02.md`). This document finalizes the underlying
analysis, re-verifies every material claim against live sources, and answers
the 5 specific points from the team-lead brief. It does not reopen the
CEO decision.

# MC #106637 — Cross-border VAT gate: FINAL memo
ALAI Holding AS (Norway) → Bilko Stripe subscriptions → EU/HR customers

## 0. What this document is and is not

This is a **finalization**, not a rewrite. The 2026-08-01 draft
(`crossborder-vat-gate-2026-08-01.md`, 376 lines) already did the primary
legal-mechanism analysis, read the shipped code
(`HrReverseChargeBilling.kt`, `StripeService.kt`, `register/page.tsx`), and
cited primary sources. That draft's conclusions are **confirmed, not
contradicted**, by today's re-verification pass, with **one factual
correction** (§1 below) and expanded, concrete Stripe Tax configuration
detail (§4 below), per the team-lead's five specific asks.

**CEO decision already on record (2026-08-02):** B2B-only GO. Reverse
charge (Art. 44 / čl. 17) already in shipped code. B2C blocked pending hard
attestation gate — that build is in progress in parallel under **MC #106644**
(owned by codecraft, in_progress as of this writing), not part of this
memo's scope. OSS registration is **not needed while B2C stays blocked**.

## 1. CORRECTION to 08-01 draft: Croatian VAT registration threshold

The 08-01 draft cites "40,000 EUR/year" as the Croatian VAT-registration
threshold for micro-businesses (paušalci) three times (§2, §5, §6 riskiest
assumption). **This figure is stale.** Verified today via web search
(5 independent Croatian sources, all reporting the same figure — ekonos.hr,
womeninadria.com, informator.hr, finacro.hr, rtcsuite.com, 2026-08-02):
the mandatory PDV-system entry threshold was **raised from 40,000 EUR to
60,000 EUR**, effective as part of the 2025/2026 paušalni-obrt tax reforms.

**Why this doesn't change the legal conclusion, but does change the risk
picture:** Article 44/čl. 17 place-of-supply and the reverse-charge
mechanism depend on the buyer's status as a **"taxable person"** (economic
activity, per EU VAT Directive Art. 9), **not** on whether that buyer is
actually VAT-registered. A paušalac below the registration threshold is
still a taxable person for B2B place-of-supply purposes even though they
hold no PDV broj. This is standard EU VAT doctrine and is exactly the
premise the 08-01 draft's "riskiest assumption" flagged for the licensed
advisor to confirm — that ask is **unchanged and still open**, and if
anything **more relevant** now: with the threshold raised to 60,000 EUR, a
larger share of Bilko's realistic paušalac/obrt customer base will be
non-PDV-registered than the draft assumed under the old 40,000 EUR figure.
**Action: correct "40,000 EUR" to "60,000 EUR" everywhere it appears if the
08-01 draft is quoted verbatim elsewhere (e.g. #106644's task description
already cites it once — flag to codecraft for consistency, not a blocker).**

## 2. Re-verification of 08-01's core claims (2026-08-02 pass)

All claims below were re-checked today, independently of the 08-01 session,
specifically looking for any 2026 EU VAT rule change that could invalidate
the earlier conclusion (per team-lead's explicit "provjeri post-cutoff
pravila EU VAT-a za 2026" instruction).

**ViDA (VAT in the Digital Age) — does not affect this gate in 2026.**
[POTVRĐENO: web search, multiple corroborating sources incl. EU Commission
taxation-customs.ec.europa.eu/taxation/vat/vat-digital-age_en] ViDA was
formally adopted by the EU Council in March 2025 and is in phased
implementation. 2026 is described as the "go-live year for **national**
e-invoicing mandates" (Croatia's Fiscalization 2.0 is one such national
mandate, see below) — the EU-wide pillars (Single VAT Registration,
platform-economy deemed-supplier rules, Digital Reporting Requirements)
roll out **2027–2030**, not 2026. One search result cited a specific
"Implementing Regulation 2026/1869" (July 2026, OSS technical/data-exchange
standards) — this is a technical/administrative standard, not a change to
who must register or the €0 threshold; it does **not** alter §2 of the
08-01 draft. **Net effect: no change to the B2B/OSS analysis.**

**OSS non-Union scheme threshold — confirmed still €0, no change for
2026.** [POTVRĐENO: web search, taxravens.com + EU Commission's own ViDA
page explicitly confirming "ViDA reforms... do not introduce a registration
threshold for non-EU service providers"] Free choice of Member State of
Identification confirmed (fluentcart.com). Quarterly filing with mandatory
nil returns even at zero B2C sales confirmed (scalemetrics.ai) — worth
flagging operationally: **if OSS registration is ever triggered, it comes
with an ongoing quarterly filing obligation even in quarters with no B2C
sales**, not a one-time setup cost. This strengthens the case for keeping
B2C hard-blocked (per #106644) rather than registering "just in case."

**Croatia Fiscalization 2.0 scope — confirmed out of scope for ALAI, with
a stronger source than 08-01 had.** [POTVRĐENO: web search, KPMG —
"Foreign entities that are VAT-registered in Croatia but not established
are currently out of scope for the mandatory B2B e-invoicing and
fiscalization requirements"] The 08-01 draft's citation (VATit.com) reached
the same conclusion but flagged a second source (Marosa) as unverified
because its URL 404'd. Today's KPMG source is independently corroborating
and higher-authority, so this closes that residual doubt: **ALAI's own
outbound subscription invoice is not subject to Croatia's 2026 e-invoicing
mandate**, confirmed twice over now (not established in HR; not
VAT-registered in HR either, so doubly out of scope even under the
"VAT-registered but not established" carve-out KPMG describes).

**Article 44 B2B mechanism, Norwegian § 6-22 export exemption, VIES
scope — no 2026 changes found.** No search result today surfaced any
statutory amendment to EU VAT Directive Art. 44/Art. 9, HR Zakon o PDV-u
čl. 17, or Norwegian merverdiavgiftsloven § 6-22 taking effect in 2026.
These remain decades-stable provisions; the 08-01 draft's EUR-Lex and
Lovdata citations were re-checked for reachability today
(EUR-Lex: HTTP 202, i.e. reachable/processing, not an error — content
delivery network behavior, not a broken link).

## 3. Direct answers to the five points (team-lead brief)

**(1) Place of taxation, B2B SaaS NO→EU, reverse charge Art. 44/čl. 196 —
confirmed applies.** ALAI Holding AS (Norway, non-EU, no EU establishment)
supplying SaaS to an HR business customer (taxable person under Art. 9,
regardless of PDV-registration status — see §1 above) is taxed at the
customer's place of establishment (Art. 44). The customer self-accounts
Croatian PDV at 25% via reverse charge (čl. 17 st. 1 Zakona o PDV-u,
transposing Art. 196 — the article that specifically assigns liability to
the recipient in a reverse-charge scenario, complementing Art. 44's
place-of-supply rule). ALAI charges no VAT line. This is exactly what
`HrReverseChargeBilling.kt` already implements.

**(2) OSS/MOSS (non-Union scheme) registration — NO, not needed now;
becomes mandatory from the first B2C sale.** Confirmed €0 threshold,
confirmed not required while sales are 100% B2B (per CEO's B2B-only
decision + #106644's hard gate in progress). If/when CEO later approves
B2C, OSS non-Union registration in one EU member state must be completed
**before** the first such consumer charge — there is no grace period or
threshold buffer.

**(3) Invoice with/without VAT for HR B2B customer + mandatory
notations — WITHOUT VAT, with mandatory reverse-charge notation.**
Already implemented: no PDV line; reverse-charge footer text citing čl.
17 st. 1 Zakona o PDV-u and Art. 44 of Directive 2006/112/EC; buyer's OIB
as a custom field; ALAI's Norwegian org.nr as issuer identity; EUR
currency; no HR PDV broj (correct, since ALAI is not HR-VAT-registered).
This matches HR Zakon o PDV-u čl. 79 mandatory content for reverse-charge
invoices — confirmed already correct in the 08-01 code review, not
re-litigated here since no statutory change was found.

**(4) What Stripe Tax handles automatically for a non-EU entity, and
concrete configuration — see §4 below (expanded from 08-01 draft per this
brief's explicit request for "KONKRETNA konfiguracija").**

**(5) Minimal compliant setup for the first euro this month, B2B-only gate
— already achievable with zero additional VAT-mechanism work.** The
legal/invoice/reporting mechanism is done (§3). The one outstanding
build item is the **hard B2C gate** (business attestation checkbox), which
is **already in progress as MC #106644**, not part of this memo's
deliverable. Once #106644 ships and is verified, there is no remaining
blocker to the first real B2B charge from this memo's perspective.

## 4. Stripe Tax — concrete configuration (if/when turned on)

**Current state, reconfirmed today:** `grep -rn "automatic_tax\|AutomaticTax"`
finding from 08-01 stands — no Stripe Tax product usage in the codebase.
The hand-rolled `HrReverseChargeBilling` mechanism is what's live. Per
§4 of the 08-01 draft, this is **arguably better suited** to Bilko's actual
customer base (OIB-based, not VIES-VAT-ID-based) than Stripe Tax's default
flow — that assessment stands.

**Doc URLs re-verified reachable today (HTTP 200, `curl -L`, 2026-08-02):**
- https://stripe.com/docs/tax/set-up (registration/origin-address setup)
- https://stripe.com/docs/tax/zero-tax (how Stripe Tax applies 0%/reverse-charge line items)
- https://stripe.com/docs/tax/registering (adding tax registrations per jurisdiction)
- https://stripe.com/docs/billing/customer/tax-ids (customer Tax ID collection/storage)
- https://stripe.com/docs/tax/checkout/tax-ids (Tax ID Element in Checkout, incl. VIES validation)

**Concrete config steps, if/when Stripe Tax is turned on (not required for
first B2B euro, but this is the "what would it look like" answer the brief
asked for):**
1. **Origin address:** Set to ALAI Holding AS's Norwegian registered
   address in the Stripe Dashboard Tax settings (`docs.stripe.com/tax/set-up`)
   — this tells Stripe Tax the supply originates from Norway (non-EU).
2. **Tax registrations:** Add **zero** EU registrations while B2B-only
   (none needed — reverse charge doesn't require ALAI to hold an EU VAT
   number). If/when B2C is approved, add the single OSS non-Union
   registration (one Member State of choice) as a registration entry so
   Stripe Tax knows to calculate destination-country VAT on B2C
   transactions specifically, leaving B2B transactions on reverse charge.
3. **Tax ID collection:** Enable "Tax ID collection" on Checkout
   (`docs.stripe.com/tax/checkout/tax-ids`) for the B2B flow as a
   **supplement**, not a replacement, to the existing OIB field — this
   would catch the subset of HR customers who *are* PDV-registered and
   have a VIES-checkable VAT number, giving Stripe's real-time VIES
   validation as a second evidence layer on top of the checksum-validated
   OIB the app already collects. Non-PDV-registered paušalci would still
   rely on the OIB-only path since they have no VAT ID to enter.
4. **`tax_behavior`:** Set to `exclusive` on Bilko's Price objects (VAT
   calculated on top of the listed price, not included) — standard for
   B2B SaaS where the reverse-charge amount is zero anyway; matters more
   once/if B2C OSS pricing is added, where `tax_behavior` determines
   whether the €12 sticker price is VAT-inclusive or not across different
   destination-country VAT rates.
5. **Automatic reverse-charge application:** Once a customer has a valid
   EU VAT ID on file (from step 3), Stripe Tax auto-applies reverse charge
   and adds the legally required notation — this would run **in addition
   to**, not instead of, the current `HrReverseChargeBilling.kt` logic
   unless that Kotlin code is explicitly retired in favor of Stripe Tax;
   **recommend keeping the current hand-rolled logic as primary** given
   point (4)'s OIB-coverage advantage, and treating Stripe Tax (if enabled
   later) as a monitoring/registration-threshold dashboard layer, not a
   replacement — consistent with the 08-01 draft's §4 recommendation.
6. **Not Stripe Tax's job, still ALAI's:** completing the actual OSS
   government-facing registration and quarterly return filing (Stripe Tax
   calculates; it does not register or file on ALAI's behalf); ongoing
   re-validation of stored VAT IDs after initial entry (Stripe does not
   auto-revalidate); Croatian Fiscalization 2.0 XML transmission to FINA
   (moot for ALAI, confirmed out of scope in §2 above).

**Bottom line on Stripe Tax: not required to accept the first B2B euro.**
The shipped `HrReverseChargeBilling` mechanism is legally sufficient on
its own for the B2B-only launch. Turning on Stripe Tax becomes worth
revisiting if/when (a) B2C is approved and OSS registration happens, or
(b) transaction volume grows enough that automated threshold-monitoring
across jurisdictions has more value than the operational cost of running
two tax-notation systems side by side.

## 5. What remains for a statsautorisert/vanjski savjetnik

**Kept intentionally minimal per CEO's 2026-08-02 decision** ("CEO
odlucuje kad" on timing) — this is unchanged from the 08-01 draft's single
focused question, restated with the corrected threshold figure:

> "Za hrvatske paušalce i obrte koji NISU u sistemu PDV-a (prag sada
> **60.000 EUR**, ne 40.000 kako je ranije navedeno), a kupuju SaaS
> pretplatu od norveške firme (ALAI Holding AS) — vrijedi li i dalje B2B
> mehanizam prijenosa porezne obveze (čl. 17 st. 1 Zakona o PDV-u), ili
> takav kupac treba tretirati kao potrošača (B2C, OSS neusklađena shema)?"

Recommend bundling this into the same bokfører/porezni savjetnik session
already required by **MC #106338** (currently `blocked`, `awaiting_forge`,
per live `mc.js show 106338` check today — same status as 08-01, no
progress since, unrelated root cause: that task is a past-filing MVA
correction, not a bearing on whether Bilko can accept its first B2B
Stripe charge today). **This is a soft condition, not a blocker** — per
the CEO's own framing in the decision record, this is scheduled at the
CEO's discretion, not gating the B2B-only launch.

Nothing else in this memo requires external advisor sign-off. The Art.
44/§6-22/Fiscalization-2.0-scope conclusions are all decades-stable law or
independently corroborated by 2+ authoritative sources each (EUR-Lex/
Lovdata primary text plus KPMG/EU Commission secondary corroboration),
re-verified live today.

## 6. Recommendation (unchanged from CEO-approved 08-01 verdict)

**GO** for B2B-only Stripe checkout — no new legal or technical blocker
found in this finalization pass. **CONDITION** (already being built,
#106644): hard B2C gate before allowing any consumer signup. **CONDITION**
(soft, CEO-timed): one bokfører/savjetnik question on the paušalac
taxable-person edge case, bundled with #106338. **CORRECTION** applied:
Croatian VAT threshold is 60,000 EUR, not 40,000 EUR — does not change the
verdict, only the risk-sizing context.

**Verdict: GO-WITH-CONDITIONS.** Same as 08-01, confirmed on re-verification.

## Sources verified today (2026-08-02)

- Croatian PDV threshold correction (60,000 EUR, was 40,000 EUR) — web
  search, 5 corroborating sources: ekonos.hr, womeninadria.com,
  informator.hr, finacro.hr, rtcsuite.com [POTVRĐENO: multi-source
  corroboration, no primary Porezna uprava text independently re-fetched
  this session — flagged medium-high confidence, consistent across all 5
  independent results, worth a primary-source Porezna uprava citation if
  this figure is used outside this memo]
- ViDA implementation timeline — web search, EU Commission
  taxation-customs.ec.europa.eu/taxation/vat/vat-digital-age_en cited
  directly stating no non-EU threshold introduced [POTVRĐENO]
- OSS non-Union €0 threshold, free MS choice, quarterly nil-return
  obligation — web search, taxravens.com, fluentcart.com, scalemetrics.ai
  [POTVRĐENO: multi-source, consistent with EU Commission's own OSS portal
  cited in 08-01 draft]
- Croatia Fiscalization 2.0 scope (foreign non-established suppliers out
  of scope) — web search, KPMG [POTVRĐENO: higher-authority corroboration
  of 08-01's VATit.com citation]
- Stripe Tax doc URLs — direct curl -L reachability check, 2026-08-02,
  all HTTP 200: docs.stripe.com/tax/set-up,
  docs.stripe.com/tax/zero-tax, docs.stripe.com/tax/registering,
  docs.stripe.com/billing/customer/tax-ids,
  docs.stripe.com/tax/checkout/tax-ids
- EUR-Lex Directive 2006/112/EC (consolidated) — curl re-check today,
  HTTP 202 (reachable, CDN processing response, not an error)
- MC #106338 status — direct `node ~/system/tools/mc.js show 106338`,
  2026-08-02: still `blocked`/`awaiting_forge`, no change since 08-01
  citation, confirms bundling recommendation is still actionable-pending
- MC #106644 status — direct `node ~/system/tools/mc.js show 106644`,
  2026-08-02: `in_progress`, owner codecraft, confirms the B2C hard-gate
  build referenced throughout this memo is real and underway, not a
  hypothetical future task

## Inherited sources (from 08-01 draft, not re-fetched today, no
contradicting information found)

See full list in `crossborder-vat-gate-2026-08-01.md` §Sources — EU VAT
Directive 2006/112/EC, EU Commission OSS overview, EU Commission VIES,
Lovdata § 6-22, Stripe customer Tax IDs docs. All remain valid; no 2026
statutory change found for any of them in today's pass.

## Code/file evidence (unchanged locations, not re-read line-by-line today
since no code changes occurred between 08-01 and this finalization;
CEO decision file confirms no additional code work was commissioned by
this memo beyond what #106644 is already doing)

- `/Users/makinja/business/ALAI-Holding-AS/products/Bilko/.claude/worktrees/codecraft-106632-p0/apps/api/src/main/kotlin/no/alai/bilko/billing/HrReverseChargeBilling.kt`
- `/Users/makinja/business/ALAI-Holding-AS/products/Bilko/.claude/worktrees/codecraft-106632-p0/apps/api/src/main/kotlin/no/alai/bilko/billing/StripeService.kt`
- `/Users/makinja/business/ALAI-Holding-AS/products/Bilko/.claude/worktrees/codecraft-106632-p0/apps/web/app/(auth)/register/page.tsx`
- `~/system/evidence/106637/crossborder-vat-gate-2026-08-01.md` (prior draft, superseded in verdict-support role by this file, not deleted — full analysis lives there)
- `~/system/evidence/106637/CEO-DECISION-B2B-ONLY-2026-08-02.md` (CEO approval record, authoritative on the go/no-go decision)

## Boundaries of this memo

This is a Finverge (finance/payments) memo, not a formal legal opinion.
Every claim above is either primary-source-verified (EUR-Lex, Lovdata,
Stripe docs — reachability-checked) or corroborated by 2+ independent
secondary sources found via live web search today. The one item still
appropriately routed to a licensed advisor is the narrow paušalac/
non-PDV-registered "taxable person" question in §5 — everything else in
this memo is decided, not pending. **NOT declaring this task `done`** —
that determination belongs to John/team-lead per the operating protocol;
this document is the requested finalized deliverable.