**To:** Rosa Van den Berg
**From:** Yuki Tanaka
**Re:** Follow-up findings — timing vs. structural gaps, refund concentration, customer definitions, B2B materiality

**1. Portfolio revenue gap is timing, not a hole.** *(Order-to-payment match rate by age; Payment capture lag by method)* Match rate climbs from 83.4% at 8-14 days old to 95.4% by 61-90 days and settles at 98.9-100.1% from 91 days on. The mid-range dip traces cleanly to payment method: bank transfer averages **15.7 days to capture** (only 61.1% done within 14 days) vs instant capture for card/wallet/credit. **Confident:** the permanent, non-timing floor is ~1-2%, not 20-40%.

**2. Refund/payout traceability gap is concentrated by size, not a broken process.** *(Late-refund concentration; Late-refund share of own volume)* Top 4 merchants are 70.8% of all late-processed refunds (Cragsley 36.2%, Ampfeld 15.3%, Marrowby & Vane 13.0%, Studio Vrij 6.3%), and Cragsley's late-refund rate (94.2% of its own refunds) is only modestly above the 83.7% company average — in the same range as several peers (Velvet Ash 94.3%, Cinder Peak 93.7%). **Confident:** this is "our biggest merchant generates the most volume," not "Cragsley is uniquely broken." **Still open:** the underlying traceability gap (refunds landing in a payout after the original has settled) is real company-wide and needs an engineering fix regardless of concentration.

**3. No pre-existing company-wide "customer" definition to adopt.** *(Existing customer/audience definitions)* Segments and cohorts are per-merchant marketing tools, not a Tidewick-wide count. The closest operational analog is the "Lapsed 90 days" segment several merchants already run, which validates recency-of-order as the right concept — just on a 90-day window, not 12 months. **Recommendation:** keep our two numbers (9,640 ever-purchased, 6,159 trailing-12-month), since nothing else exists to defer to; note the 90-day convention as a possible alternate threshold.

**4. Found and fixed a real bug — B2B wholesale is bigger than last week's number, and the bug is a genuine currency-handling risk.** *(Diagnose zero-value B2B tenants; Corrected revenue by B2B tenant; EUR join bug scope; Final receivables aging)* Six of nine B2B tenants showed exactly €0 revenue last week because a query inner-joined `exchange_rates` for EUR→EUR, which has no identity row — silently dropping every EUR-denominated tenant. Confirmed and quantified: that pattern would **zero out €3.10M (100%) of 2025 EUR revenue**, the single largest currency segment, while every other currency showed ~0% shortfall. With it fixed, 8 of the 9 B2B tenants alone are **37.0% of 2025 company revenue** — up from last week's 38.9% estimate based on industry labels, and likely higher still (see caveat). Corrected open receivables: **€80,205 total, 93.1% not yet due, 6.4% at 1-30 days overdue, 0.4% at 31-60 days, nothing beyond 60 days** — a healthy book, not a distress signal.

**Caveat:** one tenant, Kontor24 Bürobedarf, still didn't appear in the final corrected pull despite having 264 real orders and 258 captured payments in 2025 — unresolved, likely a second small bug, so the true B2B share is probably slightly above 37%. I don't fully trust the 9-tenant total is complete yet. Separately, Castell Fasteners' invoice detail reconciles reasonably with Merchant Success's €5,080 figure once you isolate genuinely-overdue invoices (~€3,450 of the €14,481 total open) — the residual gap looks like snapshot timing, not a real inconsistency.

**Next steps:** (1) get engineering to add a permanent EUR/EUR identity row to `exchange_rates` (or a standard conversion helper) so this bug class can't recur in other reports; (2) chase why Kontor24 dropped out and get a complete B2B total; (3) have Merchant Success confirm Castell Fasteners' overdue figure against a matching snapshot date; (4) open a ticket on refund-to-payout traceability — size and concentration are now understood, but the data model still can't point to which payout absorbed a given refund.