Skip to content

F1 Responses — what Cristina delivered, what is still open

Companion to f1-vat-oss-brief.md. Tracks the answers Cristina + accountant deliver against the three asks (1: VAT identity, 2: per-category VAT rates, 3: certified PT invoicing system) and the fourth question (EU OSS).

Status: 2026-05-06 — first round of responses received from Cristina. Asks 1 + 2 partially delivered; Ask 3 hint requires clarification; Ask 4 (OSS) untouched. Engineering can proceed with the booking flow plan (#024) without per-line VAT; full per-line VAT computation in payment-service still gated on the per-category mapping below.


Ask 1 — Company VAT identity ✅ DELIVERED

Field Value
Legal company name Experiências100Fim, Unipessoal Lda
NIPC 517694263
Registered address (sede) Estrada de Santa Luzia, 239, 4900-408, Viana do Castelo
NIF de IVA (assumed = NIPC; explicit "VAT-active regime" confirmation TBD with TOC)
Bank account (IBAN) PT50 0033 0000 4570 8823 6430 5 (Millennium BCP — BCOMPTPL)
NIB 0033 0000 45708823643 05
SWIFT BCOMPTPL
Certified accountant (TOC) name Paulo Bandeira (Viana do Castelo)
Certified accountant email cnnorte@cnnorte.mail.pt
Certified accounting platform TOC online (programa oficial de contabilidade certificado)

Outstanding for Ask 1

  • [ ] Confirm Experiências100Fim is in the Regime Normal de IVA (VAT-active). Likely yes given company is operating, but worth explicit confirmation from Paulo Bandeira so engineering knows the activation date for backdating-tolerant invoice numbering.

What engineering does with this

  • Stripe live business profile (Cristina-side dashboard config — operator action) populated with company name, NIPC, address.
  • Embed legal identity into invoice template once invoicing system lands (Plan #025-ish).
  • Bank account → reconciliation feed (out of payment-service scope; finance-tooling concern).

Ask 2 — VAT rate per service category ⚠️ PARTIALLY DELIVERED

What Cristina delivered (PT VAT rates background)

Rate Region Where it applies
23% Continente (standard / taxa normal) Most professional services — Cristina explicitly confirmed this is the standard for the platform
13% Continente (intermediate / taxa intermédia) Restauração e bebidas (excluding alcohol, sodas, sparkling water — those pay 23%); certain foods; wines; agricultural products; round-trip transport tickets
12% Madeira (intermediate variant) Same scope as 13% Continente
9% Açores (intermediate variant) Same scope as 13% Continente
6% (NOT MENTIONED in Cristina's response) Plan #020 brief flagged 6% as the reduced rate for hotel accommodation + transport in some regions — Cristina did not address whether it applies to her catalog.

Source: Lista II do Código do IVA (CIVA).

What is still missing — the per-category map for the Portugal Odyssey catalog

Cristina delivered the background (which rates exist + when they apply in general) but did not map them to the actual service categories in the partner-service catalog. Engineering still needs a row-per-service-category table answering "for THIS service the platform sells, which PT VAT rate applies?".

Reasonable defaults engineering can apply until the explicit map arrives (TOC sanity-check recommended):

Service category (provisional) PT VAT rate (provisional)
Tour operators / guided activities 23%
Wine-tasting experiences (in mainland) 23% (the activity); food/wine consumed during a meal would be 13% — but if delivered as the activity itself, treat as 23%
Surf lessons 23%
Restaurant meals included in an Experience (mainland) 13%
Restaurant meals (Madeira) 12%
Restaurant meals (Açores) 9%
Hotel accommodation (mainland) TBC — likely 6% but Cristina didn't confirm
Hotel accommodation (Madeira / Açores) TBC — regional variants apply
Inter-city transfer (mainland) TBC — round-trip is 13%; one-way may be 23%; actual rate depends on rail vs road; needs TOC clarification
Platform booking fee / commission 23% (general services)

Outstanding for Ask 2

  • [ ] Confirm 6% rate applicability: hotel accommodation? Specific transport types? Anything else in the Portugal Odyssey catalog that qualifies?
  • [ ] Confirm 13% vs 23% split for in-Experience consumption: if a tour package includes a wine-tasting where wine is served, is the wine line at 13% (food/beverage) or 23% (activity)? TOC call.
  • [ ] Round-trip vs one-way transport: Cristina mentioned "passagens de ida e volta" qualify for intermediate rate. Need TOC clarification on whether one-way transfers or single-leg services qualify too.
  • [ ] Madeira / Açores coverage: confirm whether Portugal Odyssey will list Experiences in those regions at MVP launch. If yes, regional variants must be in the map; if not, engineering can defer that subset.

What engineering does with this

  • Today (Plan #024 scope unchanged): payment-service uses default tax_code='txcd_99999999' (general services / PT 23%) per Slice D2. Booking flow ships with this stub.
  • Once full map arrives: partner-service catalog gains a tax_code field per service; payment-service DEFAULT_TAX_CODE becomes a per-line lookup against the catalog. Tracked as a separate workstream (likely a future plan, not Plan #024).

Ask 3 — Certified PT invoicing system ❓ AMBIGUOUS — needs clarification

Cristina's response mentioned "TOC online" as the programa oficial de contabilidade certificado — Portuguese for "certified official accounting program". This is most likely the TOConline platform from Cegid (well-known PT accounting + invoicing SaaS).

The ambiguity

TOConline is both an accounting platform AND a certified invoicing system. So "TOC online" might mean:

  • (a) Just the accountant's working software — Paulo Bandeira uses it to file Modelo 1 / quarterly returns / SAFT-PT submissions on Cristina's behalf. In which case Ask 3 (invoicing system pick) is still open, and Cristina needs to choose how Portugal Odyssey will issue customer-facing invoices (Moloni / InvoiceXpress / Vendus / TOConline-via-API / something else).
  • (b) The full invoicing pipeline too — TOConline issues the customer-facing facturas via its API, and the accountant uses the same platform end-to-end. In which case Ask 3 is answered: integrate with TOConline's API.

Outstanding for Ask 3

  • [ ] Clarify scope of "TOC online" with Cristina + Paulo Bandeira: is this the invoicing system Portugal Odyssey will use to issue customer invoices, or just the accounting back-office?
  • [ ] If TOConline is the answer: get API credentials (sandbox + live); confirm AT-certification status under Experiências100Fim's NIPC; engineering integrates payment_intent.succeeded webhook → TOConline POST /invoices (separate plan, ~Plan #025 invoicing integration).
  • [ ] If TOConline is just accounting: still need the invoicing system pick — see Plan #020 F1 brief §Ask 3 for the candidate list (Moloni / InvoiceXpress / Vendus / Primavera / Pennylane / Holded).

What engineering does with this (today, regardless of resolution)

  • Nothing in Plan #024. Booking flow ships without invoicing integration; Stripe receipt suffices for sandbox + early launch. Invoicing integration is a successor plan (~Plan #025).

Ask 4 — EU OSS ⏳ STILL OPEN

Not addressed in Cristina's first round. Still requires the TOC discussion described in f1-vat-oss-brief.md §4 ("the discussion to have with the TOC").

Outstanding for Ask 4

  • [ ] Cristina + Paulo Bandeira call covering: place-of-supply rules for in-Portugal experiences delivered to EU customers; whether platform commission/booking-fee component qualifies separately; recommendation on Union Scheme OSS registration timing.
  • [ ] If OSS registration recommended → Cristina registers via Portal das Finanças → Serviços → "Balcão Único — Regime UE".

What engineering does with this

  • Nothing today. OSS affects how invoices are itemised and aggregated in quarterly returns, not how PaymentIntents are created. Plan #024 ships unchanged.

Plan #024 impact summary

Aspect Pre-F1 Post-F1 (this round)
Per-line VAT computation in payment-service Deferred to v2 Still deferred to v2 (per-category map missing)
DEFAULT_TAX_CODE stub in payment-service Stays Stays
bookings.billing_* columns Already in Slice A migration spec Unchanged — billing fields still collected forward-compat
Plan #024 slice count / critical path 10 slices, A→B→C→D→E→F→J critical Unchanged
Plan #024 readiness for DRAFT → READY Gated on F1 review Ready to transition (this F1 round doesn't shift scope)

Bottom line: Plan #024 is unblocked. F1 round 1 doesn't change the engineering plan. The remaining F1 items (per-category map, TOConline clarification, OSS) are all separate workstreams that don't gate booking-flow engineering.


Update 2026-05-06 — Business model decision LOCKED as Model 3

After review of cash-flow trade-offs (RNAVT registration ~€2-4k/year fixed costs vs pre-revenue startup constraint), Model 3 (marketplace facilitator) chosen for MVP launch. Migration to Model 1 (regime especial das agências de viagens) planned once revenue justifies. Full analysis in temp/cristina-modelo-3-vs-1-cash-flow.md.

What this changes

  • Per-category VAT mapping (Ask 2): now mostly moot. Each partner declares their own VAT in the partner-service catalog (their tax_code per service). PO's tax surface = commission revenue only.
  • TOC online (Ask 3): still relevant for PO's commission invoicing, but lower priority. Each partner uses their own invoicing system to bill the customer directly.
  • EU OSS (Ask 4): still open. PO's commission may qualify as a digital service for OSS purposes; Paulo to confirm.
  • F2 IDD insurance: no longer applies — under Model 3, PO doesn't sell insurance (the partner does, if bundled).

Engineering side

payment-service currently uses separate charges + transfers (MoR pattern, Plan #020). For Model 3 launch, needs Slice C-prime: switch paymentIntents.create to use transfer_data.destination + application_fee_amount. Roughly half a day's work. Queued for next session.

All Plan #024 (Booking Flow) slices remain model-agnostic.

Updated Cristina-side action items

  1. Stripe live business profile setup (operator-side; not blocked)
  2. Forward temp/cristina-modelo-3-vs-1-cash-flow.md excerpt to Paulo Bandeira (TOC) for confirmation of: (a) Modelo 3 for MVP recommendation, (b) partners' factura emission practices, (c) OSS guidance
  3. Confirm Stripe sandbox account is set up (for STRIPE_SECRET_KEY_QUAL provisioning)

Operator action items (Cristina-side, not engineering)

The following can be actioned independently while engineering executes Plan #024:

  1. Stripe live business profile — populate dashboard with NIPC + address now.
  2. Confirm VAT-active status with Paulo Bandeira (likely yes).
  3. Per-service-category VAT rate map — sit with Paulo Bandeira; produce the spreadsheet outlined in f1-vat-oss-brief.md §Ask 2.
  4. TOConline scope clarification — is it the invoicing system or just accounting?
  5. EU OSS discussion with Paulo Bandeira (place-of-supply + commission scheme + Union Scheme registration).

None of these block Plan #024 engineering. They block live launch with real customers.