Published verdictRanking snapshot 3 November 2026
Divly leads by 3 points
Divly scores 3 points above Waltio, led by record portability.
Why, term by termDivly leads on 1 of 4 published criteria; Waltio on 0. The terms sum to the gap.
TermDivlyWaltioWeightPoints
Record portability6/104/104.8+2.5for Divly+1.3 of 32
Net of the terms+2.5
Criteria roundingThe criteria block is rounded to whole points before it is spread+0.1
Reproduced gap+2.6
Published gapAfter score rounding and bounds — see the note below7875+3.0
Weight is in points of the 86-point weighted total. Points are score points of the gap between the two.
DivlyScore 78The European filing specialist: one served table naming K4/SRU, Anlage SO, SA108, 2086, PIT-38 and Modelo D-100 across fourteen jurisdictions, a Skatteverket-native SRU upload, a per-disposal 'applied_rule_for_disposal' column proving s.104 same-day/30-day matching ran, and an in-app tax-year selector that defaults to 2025 as the CURRENT year - undercut by a EUR 39 headline that buys only 100 transactions, a delivered ledger that never states the acquisition date of the lot it matched, no closing-position output in any jurisdiction, and a 2021 Terms document that never mentions the 'lifetime access ... forever' its help centre promises.Strength: Named form output — 9/10Watch-out: Four one-way doors, none of them on the page you buy from, and two of them invisible without reading Divly's own shipped code. (1) THE PRICE YOU SEE IS THE 100-TRANSACTION PRICE - CONFIRMED AT THE SOURCE. https://divly.com/en/pricing advertises Essential at '39' 'EUR', but that is the first cell of a four-column ladder wired into the page's own inline script. From the served source on 2026-08-19: 'const pricingMatrix = { 0: [0, 39, 99, 599], 1: [0, 99, 199, 699], 2: [0, 199, 399, 799], 3: [0, 399, 699, 999] };'. The mapping is not inferred - the bracket buttons carry it: '<button class="transaction-btn active" data-index="0" onclick="updatePricing(0)">Up to 100</button>', then data-index 1 'Up to 1,000', 2 'Up to 10,000', 3 'Up to 100,000'; the script ends with 'updatePricing(0);' and the server-rendered spans read '<span id="price-essential">39</span>'. EUR 39 buys 'Up to 100' transactions for the year. At 'Up to 1,000' Essential is EUR 99; at 'Up to 10,000' EUR 199; at 'Up to 100,000' EUR 399 - and Full Service starts at EUR 599, not the EUR 499 this repo's catalog row records. Anyone with a routine DCA habit is in the 1,000+ bracket and pays 2.5x the headline. (2) ONCE YOU DOWNLOAD, YOU CANNOT UNBUY, AND THE TERMS AND THE HELP CENTRE DISAGREE. Terms: 'It is not possible to get a refund if you have downloaded a file from the tax report section in the platform.' - flat, unqualified. https://help.divly.com/en/articles/8233489-can-i-request-a-refund ('February 3, 2026') sets three requirements - 'You make the request within 14 days of purchasing the service.' / 'The reason for refund is related to a bug or issue that Divly is unable to resolve within a reasonable time frame.' / 'You have not downloaded any tax reports.' - and then adds a fourth: 'This does not apply if the issue is related to the tax report.' So the help centre carves out the commonest case while the binding contract does not; the Terms govern, and the disagreement is the finding. Either way, dissatisfaction that is not a Divly bug is not a refund reason. Worse, the Terms purport to cancel the EU statutory withdrawal right within the same clause that grants it, under the heading 'Your right to terminate the Agreement pre-maturely': 'If you are a consumer, you have the right to withdraw from this Agreement without giving any reason within 14 days.' ... and, four sentences later, 'Since this is a Service we will not, if you withdraw from this Agreement, refund any payments we received from you.' (3) THE PRICING PAGE IS NOT THE WHOLE PRICE LIST - three charges exist that it never shows, all read from Divly's own app bundle (plugin_v23.js, downloaded 2026-08-19). A per-hour overage on the top tier, stated in the help centre: Full Service 'includes 4 hours of work by the Divly Expert. In most cases this is enough, however if extra hours are required they will be charged at 150 EUR per hour.' A priority-service add-on with a four-figure fallback: 'get_priority_service_price:function(){return this.pricing_info&&this.pricing_info.priority_service_price?this.pricing_info.priority_service_price:1e3}'. And an early-bird tier system fetched at checkout: 'fetch_early_bird_tiers:async function(){try{const e=await(await fetch(Fe+"/client/get_early_bird_tiers")).json();'. (4) A TIER THE PRICING PAGE SELLS IS HARDCODED AS UNBUYABLE. The same bundle contains 'is_sold_out_tier_value:function(t){return typeof t!="string"?!1:t.replace("-EARLY","").toUpperCase().startsWith("SECOND_100000")}' and, in the checkout handler, 'if(t.some(e=>this.is_sold_out_tier_value(e.tier))){alert("Sold out tier cannot be purchased.");return}'. In the same file 'THIRD_' resolves to 'Full Service', so 'SECOND_' is the second paid tier, Peace of Mind - the one https://divly.com/en/pricing still advertises at EUR 699 for the 'Up to 100,000' bracket. Whether the server also refuses the sale is unestablished; what is established is that Divly's own client blocks it. (5) THE 'lifetime access ... forever' PROMISE YOU ARE RELYING ON lives in a help article, not the contract; the contract is stamped 'Updated by Synch: 22 September 2021', never mentions it, and reserves account deletion. (6) IF YOU ARE GERMAN, THE STALE PAGE IS THE MARKETING ONE, NOT THE PRODUCT. https://divly.com/en/guides/crypto-taxes-in-germany ('Jan. 15, 2026') still says 'You have a €600 exemption limit on crypto profits.' while the help article ('July 7, 2026') says 'If you exceed the €1000 exemption limit (€600 for tax years 2023 and earlier), the full amount of gains is taxable.' The app itself renders the correct figure - the German tax widget in plugin_v23.js computes the exemption as 'C(a.year>=2024?1e3:600)'. So the number you FILE is right; the number you'd PLAN with off the guide is two years stale.WaltioScore 75The deepest named-form work in this category outside the US — Form 2086 and 3916-bis with boxes 8UU/3AN/3BN/3CN/5KU/5JG, Anlage SO with Zeile numbers and the ELSTER path, Italy's Quadro RT/RW and Spain's casilla 1804 — with the lot-matching rule enforced rather than offered as a picker in all five core markets; then it rents the record back, because the transaction export sits two tiers above the tier that produced the report, no new report can be generated once the calendar year ends, and a previous tax year can only be bought if you also hold an active subscription for the current one.Strength: Named form output — 9/10Watch-out: That the 39€ you paid buys a window, not a record — and all four sentences below were re-fetched and matched character-exact on 2026-08-19. Three served sentences compose into one trap: 'At the end of the subscription (end of calendar year), it is no longer possible to generate new reports.' (help.waltio.com/en/articles/4915779), 'To purchase access for a previous tax year, you must have an active subscription for the current year.' (.../5830168), and, on the transaction export, 'This feature is available only for Smart and Unlimited plans.' (.../6014877). So a Lite or Starter buyer who files, cancels, and is asked in 2028 to re-derive 2025 for an audit or an amended return cannot regenerate it, cannot buy 2025 on its own — they must first re-subscribe for whatever the then-current year is, then pay the 2025 tier fee on top, priced on 2025's own transaction count because 'each fiscal year is evaluated independently' (.../5444696) — and never had the raw transaction export at all, because that sits two tiers up at 249€. The article that looks like it should rescue the buyer does not: 'Obtaining a Tax Report for Previous Years' says 'If your subscription allows it, click "All documents" to download the tax documents for the selected year.' The Terms compound it: they are a 'seasonal subscription with automatic renewal' that says nothing about post-lapse access to a purchased year, and instead say 'The User must keep backups of their data.'