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_codefield per service; payment-serviceDEFAULT_TAX_CODEbecomes 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.succeededwebhook → TOConlinePOST /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¶
- Stripe live business profile setup (operator-side; not blocked)
- Forward
temp/cristina-modelo-3-vs-1-cash-flow.mdexcerpt to Paulo Bandeira (TOC) for confirmation of: (a) Modelo 3 for MVP recommendation, (b) partners' factura emission practices, (c) OSS guidance - Confirm Stripe sandbox account is set up (for
STRIPE_SECRET_KEY_QUALprovisioning)
Operator action items (Cristina-side, not engineering)¶
The following can be actioned independently while engineering executes Plan #024:
- Stripe live business profile — populate dashboard with NIPC + address now.
- Confirm VAT-active status with Paulo Bandeira (likely yes).
- Per-service-category VAT rate map — sit with Paulo Bandeira; produce the spreadsheet outlined in
f1-vat-oss-brief.md§Ask 2. - TOConline scope clarification — is it the invoicing system or just accounting?
- 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.