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):
- 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). - 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.
- 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. tax_behavior: Set toexclusiveon 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, wheretax_behaviordetermines whether the €12 sticker price is VAT-inclusive or not across different destination-country VAT rates.- 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.ktlogic 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. - 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: stillblocked/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.