NASDAQ:DLO DLocal Limited

ISIN: KYG290181018
US$14.96
+5.5% since 16 Aug 2026
2026-09-11 · Signal v6

Changes since last report — vs 16 Aug 2026 (US$14.17)

Signals unchanged at HOLD / BUY / BUY. Price +5.5% to US$14.96. The Q2 print landed three days before the last report and its effects are now visible in consensus, in the take rate, and in the share register.

Two corrections to my own 16 August report, before anything else.

The prior report also flagged its own weakness — that its consensus EPS predated the 13 August print. That has resolved favourably: consensus has risen to US$1.14373 from US$1.08[3].

DISCLAIMER: This is a quantitative framework for educational purposes only. It is not financial advice. Always do your own research and consult a licensed financial advisor before making investment decisions.

DLocal Limited

dLocal is a cross-border payments processor built for the places the large global processors find awkward. Global merchants — streaming platforms, marketplaces, ride-hailing, SaaS — want to collect money in Brazil, Mexico, Nigeria, Egypt and thirty-odd other emerging markets, where payment happens through local cards, bank transfers, cash vouchers and wallets rather than international credit cards. dLocal holds the licences and the local rails, takes a percentage of the volume it moves, and handles both collection and payout. Its distinctive position is regulatory and operational rather than technological: a single integration reaching corridors that would each otherwise require their own licence, bank relationships and compliance regime.

HorizonSignalComposite ScoreConfidenceKey Driver
Short-term (1–3 mo)HOLD6660%tape is constructive but unconfirmed on volume — the Technical entry group is shut
Medium-term (6–12 mo)BUY6860%13.08× forward against a 19.63× warranted multiple — the Attractive band
Long-term (3–5 yr)BUY6760%secular EM payments volume, net cash, 41% ROE — against a falling take rate
Next update: 2026-09-25 — +14d standing ceiling, which is the governing rule here. Dated events inside the window (CPI on 11 Sep, FOMC 16 Sep, BoJ 18 Sep) are recurring macro releases and are NOT scheduling triggers for a Medium macro-sensitivity sector; Q3 earnings on 18 Nov 2026 is the only company-specific dated event and it is far outside the window.
Table of Contents
1Five-Pillar Scorecard2Hard Gates & Do-Not-Buy Status3Pillar Detail: Business Quality4Pillar Detail: Valuation Attractiveness5Pillar Detail: Underlying Drivers6Pillar Detail: Economic Alignment7Pillar Detail: Entry/Exit Timing8Economic Event Risk9Multi-Timeframe Technical Analysis10Price Chart (6-Month Daily)11Scenario Summary12Entry / Exit Rules13Position Sizing Context14Calibration Snapshot15Data Sources & Methodology
1

Five-Pillar Scorecard

Five independent scores — each 0–100 with its own confidence. The three fundamental pillars (Quality / Valuation / Timing) set the base BUY/HOLD/SELL via the Decision Matrix; the two context pillars (Underlying Drivers, Economic Alignment) then amplify a BUY to STRONG BUY or a SELL to STRONG SELL when both corroborate.

Business Quality

62
high-growth, margins conceding
conf 62%

Valuation Attractiveness

80
attractive (0.67× warranted)
conf 68%

Entry/Exit Timing

62
improving, unconfirmed
conf 60%

Underlying Drivers

68
Tailwind (EM volume), price conceded
conf 60%

Economic Alignment

58
Contrarian
conf 60%
2

Hard Gates & Do-Not-Buy Status

Binary safety checks — any TRIGGERED gate is a hard cap regardless of the scores above; CAUTION gates are sizing notes.
⚠️
Take-rate compression
TPV +92% against revenue +55.8%, so the take rate fell 2.78% to 2.26%. Q2 EPS missed by one cent while revenue beat by 9.6%. Operating margin 16.1% against 22.3%. Not a Gate-4 accounting flag — the disclosure is clean and the cause is competitive pricing, not presentation. It is the single most important thing to watch.
⚠️
Sponsor supply overhang
General Atlantic sold 9,842,559 shares at US$13.60 on 17 Aug, a 21.1% cut leaving 36,814,136[2]. Do-Not-Buy Trigger 4 requires three or more C-suite insiders disposing of over a quarter of their holdings; a private-equity sponsor unwinding a 2021-vintage position is a different signal and the trigger does not fire. It is still real supply, and a considered seller took US$13.60 when the stock is now US$14.96.
⚠️
Regulatory / Binary (Gate 5)
No dated decision, takeover or antitrust action pending, so the gate does not fire. dLocal carries chronic elevated regulatory and FX-convertibility risk across LatAm, Nigeria and Egypt — a standing condition rather than a binary event, which is precisely why it sits as a caution and not a gate.
⚠️
Concentration and competition
Merchant concentration alongside credible price competition is precisely what the take-rate line is measuring. Ebanx, Adyen and Stripe are pressing the core corridors and large merchants can insource once a corridor reaches scale. Recorded as its own caution rather than folded into the take-rate entry, because it is the cause and that one is the symptom.
✅
Financial distress (Gate 1)
Corporate net cash of roughly US$339m — NOT the US$807m a total-cash reading gives, because most of the balance is merchant float held against trade payables. Debt-to-equity 12.5%, current ratio 1.25, ROE 41.3%, a dividend covered at a 28.5% payout[9]. Comfortably clear even on the corrected, smaller figure.
✅
Valuation ceiling (Gate 3)
Ratio 0.670 against a 1.40 threshold, and actual 13.08× against a 33× Information Technology guardrail. Both arms are far from binding, and the analyst-target arm is clear too — price US$14.96 sits below even the US$15.00 low target.
Gate summary — nothing triggered, four cautions. No hard gate fires and no Do-Not-Buy trigger fires. The cautions are one story told four ways: dLocal is buying growth with price, a founding sponsor is selling into that growth, and it operates in jurisdictions where the rules can change. None of those caps the signal; together they are why this is a Half-Size conviction rather than a full one.
3

Pillar Detail: Business Quality

A deep dive into the Quality score: business economics, moat, ROIC and the industry benchmark.
Business Quality — Pillar Score
Exceptional volume growth and 41% ROE, on a smaller corporate cash pile than first published — against a take rate falling 35bp a year on the gross-profit basis
62
conf 62%

Lifecycle & sector: a high-growth emerging-market payments processor, GICS Information Technology but economically an EM payments business — so it is scored on TPV growth, take-rate stability, FCF conversion and geographic concentration rather than on software multiples.

The growth is real and it is accelerating. Q2 2026 revenue was US$399.66M, +55.8% year on year, on total payment volume of US$17.7bn, +92%[1]. Revenue beat consensus by 9.6%. Return on equity is 41.3% and the balance sheet is genuinely strong — but not as strong as I first published. Total cash is US$874.2m against US$67.4m of debt[9], and it would be easy to call that US$0.8bn of net cash. It is not. Most of that balance is merchant float — money dLocal is holding on its customers' behalf against trade payables, not money it can spend. On the basis my own August report established (corporate cash US$369.1m of US$794.9m total, a 46.4% corporate share), corporate cash today is roughly US$406m and corporate net cash roughly US$339m. It pays a dividend on a 28.5% payout, which is unusual at this growth rate and says something real about cash conversion.

I got this wrong in the first draft of this report, and the audit caught it. I published 'roughly US$0.91bn of net cash', backed out of the data provider's enterprise value. That provider figure nets total cash, including the float — and my own August report had already worked that out and restruck the numbers on corporate cash. I reversed a correction I had previously got right, in the flattering direction, on a report whose opening paragraph corrects two other errors. The overstatement was about US$571m, and it feeds the Quality score below.

And the price of that growth is measurable. I measure the take rate as gross profit ÷ TPV — the same basis my August report used, so the series is comparable: FY24 1.15% · FY25 0.99% · Q2 2025 1.07% · Q1 2026 0.84% · Q2 2026 0.72%. It declines in every period shown and is about a third lower year on year. I am deliberately NOT calling that ‘three consecutive quarterly declines’: the series mixes annual with quarterly observations and skips Q3 and Q4 2025, because no tool in the stack returns quarterly TPV and I did not retrieve those quarters from the releases. Only one adjacent quarter-on-quarter pair (0.84 to 0.72) is actually evidenced. (On a revenue ÷ TPV basis the same quarters read 2.78% to 2.26%, a milder-looking −19%. I am naming the basis because switching between them is exactly the kind of quiet reframing this report criticises elsewhere.) Operating margin went with it: 16.05% against 22.3%. The clearest tell is that EPS missed by one cent while revenue beat by 9.6%[1]. Volume is being bought with price, and it has reached the bottom line.

Industry benchmark — EM Payments (TPV growth + take-rate stability): 58/100. The framework asks for both legs. One is exceptional and one is deteriorating, which is the middle band by construction, not a fudge.

Competitive Environment

Who it competes with. In its core LatAm corridors dLocal faces Ebanx (private, the closest like-for-like in Brazil and Mexico), Adyen and Stripe moving down-market into emerging corridors, Nuvei, and — increasingly — the merchants themselves, as large global platforms build direct local acquiring once a corridor reaches scale. In Africa the field includes Flutterwave and Paystack (Stripe-owned).

Share trajectory: gaining volume, conceding price. That is not a characterisation, it is what 92% TPV growth alongside a 35-basis-point take-rate decline on the gross-profit basis (52bp on revenue ÷ TPV) means arithmetically. dLocal is winning corridors and wallet share; it is paying for them in pricing. The moat-erosion vector is straightforward: its advantage is regulatory and operational — licences, local rails, payout complexity in places large processors find unattractive — and that advantage decays as each corridor matures and the economics become worth someone else’s while.

Net effect on the moat. Switching costs trimmed to 55 and cost advantage to 52: an integrated payments provider is genuinely sticky, but a merchant that has already integrated once can integrate again, and repricing is evidence that at least some are threatening to. Pricing power is the weakest dimension at 45 — a business raising volume by conceding rate does not have it. Moat 58, threat level elevated.

Quality 62 — down four against 16 August, and I am going to resist decomposing that 4-point fall, because it cannot honestly be done. The prior report published a different build — it had no balance-sheet term at all — so there is no term-by-term bridge between its 66 and this 62. What I can say precisely: the EM Payments benchmark is unchanged at 58 versus 16 August (it went 58 to 62 and back to 58 within this run’s own drafts, a round trip worth nothing against the prior report), so none of the fall is attributable to it. Separately and on a different baseline, 2.0 points of this pillar are corrections relative to THIS report’s own first draft — the balance sheet on the overstated cash (1.2 points) and the benchmark round trip (0.8). Against 16 August, the business-attributable portion of the fall is at least 2.8 points.

Quality build, and what moves it. EM Payments benchmark 58 (20%) · growth and scale 82 (20%) · margin trajectory 44 (20%) · balance sheet and cash conversion 70 (15%) · moat 58 (15%) · management and capital allocation 60 (10%) = 11.60 + 16.40 + 8.80 + 10.50 + 8.70 + 6.00 = 62.00, rounding to 62. Two sub-scores moved this run and both are corrections rather than news: the balance sheet falls 78 to 70 on the corrected corporate cash, and the EM Payments benchmark returns to 58 — the value the prior report gave it on the same gross-profit basis — because the 62 it briefly carried was an artifact of measuring the take rate on revenue instead. Both of those movements are within this run; neither is a bridge to the prior report’s 66, which was built from different terms.

Sensitivity: the Decision Matrix returns BUY at 62, 63, 65 and 68 against this valuation and timing. Crossing 65 changes the row label from Medium to High, but not the signal. What it does change is the anchor: below 65 the risk add-on is +1.0% rather than zero, which is why the warranted multiple in §4 is 19.63× and not 22.84×.
4

Pillar Detail: Valuation Attractiveness

Sector-appropriate multiples, FCF yield, reverse-DCF implied growth, embedded optionality, and the analyst-consensus cross-check.
Valuation Attractiveness — Pillar Score
Attractive — 13.08× forward against 19.63× warranted, ratio 0.670
80
conf 68%

The anchor. Discount rate r = 4.95% ten-year[5] + 4.50% equity risk premium + 1.0% risk add-on (Quality 62 is below the 65 line) = 10.45%. Near growth is capped at the secular bucket’s 15% — consensus implies far more, and the 25% haircut still exceeds the cap, so the cap binds. Terminal growth 3%.

That gives a warranted forward multiple of 19.63×. The actual forward multiple is US$14.96 ÷ US$1.144 = 13.08×[3], so the ratio is 0.670 — comfortably inside the Attractive band. The Information Technology guardrail of 33× is nowhere near binding.

Two separate things pushed the warranted multiple down, and they should not be conflated. The ten-year rising from 4.63% to 4.95% takes it from 24.09× to 22.84×. The remaining 22.84× to 19.63× is not rates — it is the risk add-on switching on because Quality fell below 65, which is to say it is the corrected cash balance in §3 arriving in the valuation.

And the ratio got worse, not better. On a like-for-like corrected basis it went 0.546 to 0.670 — about 23% more expensive than a month ago. Consensus EPS rising to US$1.144 helped, but not enough to offset a higher discount rate and a lower Quality score. An earlier draft of this report said the ratio improved. It did not, and the error ran in the flattering direction.

What the anchor alone implies, stated plainly. 19.63× on US$1.144 is US$22.45 a share. I am not publishing that as fair value. The analyst panel’s median is US$18.50 and its high is US$21.00[3]; a single discounted-cash-flow anchor on a business whose take rate is falling 35bp a year on the gross-profit basis deserves less confidence than its arithmetic implies. Fair value is set at US$18.50, the consensus median. The gap between that and US$22.45 is the reason the band is Attractive rather than Fair, and it is also the reason the valuation confidence is 68% rather than higher.

The relative lenses — four of five, and the fifth is missing

Valuation 80 — the Attractive band. On EV/EBITDA 14.26× and EV/Revenue 2.58× against 55.8% revenue growth and net cash, this is not a demanding price. The question this report keeps returning to is not whether it is cheap; it is whether the take rate stabilises.

5

Pillar Detail: Underlying Drivers

The dominant external force the stock is tethered to, scored 0–100. A context pillar: it does not change the base signal — it feeds amplification (tailwind ≥65 can lift BUY→STRONG BUY; headwind ≤35 can push SELL→STRONG SELL).
Primary Driver
Emerging-market digital payment volume
68
Tailwind (≥ 65) — amplification eligible, but blocked by a Headwind economy

The driver is emerging-market digital payment volume — the secular shift of LatAm and African commerce onto cards, wallets and local rails, and global merchants needing someone to collect in those corridors. On volume the driver is working about as well as it can: TPV +92%[1].

But the driver has a second face, and this report is the one where it shows. The same corridor maturity that creates the volume also invites competition, which is what the take rate is measuring. A driver that delivers volume while compressing price is not an unambiguous tailwind.

Macro cross-currents. EM Equities read short Underweight, medium Neutral, long Overweight[6] — the long leg is the one that matters for a structural EM story. The dollar is Neutral near-term and Underweight long, which helps: a weaker dollar eases the FX-convertibility strain that is dLocal’s chronic operational risk.

Drivers 68 — a Tailwind by score, down two. It clears the 65 amplification threshold. It does not get to amplify anything, because the economy does not agree — see below.

6

Pillar Detail: Economic Alignment

How the current economic climate sits relative to this stock, read from the latest Macro-Economic report. Classifies the macro pressure (Tailwind / Neutral / Headwind) — the second amplification input — and frames a long entry as Trend-Following or Contrarian with a 0–100 conviction.
Stance · Pressure
Contrarian · Headwind
58
conviction

The 9 September macro report has the regime as energy-shock stagflation at 48%, with Technology (XLK) Underweight on all three horizons and US Tech (QQQ) short Strong Underweight[6]. dLocal is not in the macro watchlist, so its GICS sector maps to XLK and the pressure is Headwind.

The Neutral-to-Headwind change is mostly a RE-MAPPING, and saying otherwise would mislead. The macro report’s own 12 August watchlist row classified dLocal under Financials (XLF), and my 16 August report used XLF deliberately — for the macro row and for relative strength. Financials reads N/N/N on 9 September. dLocal dropped out of the 9 September watchlist, so the GICS sector map now governs and Information Technology maps to XLK at U/U/U[6]. The pressure did not deteriorate for this name; the mapping moved. No amplification was available on either mapping — Neutral blocks it as surely as Headwind — so the signal is untouched either way.

I apply the sector map because Step 11b says to when a name is not in the watchlist, and because carving out an exception on the grounds that a label is inconvenient is how a mapping stops meaning anything. But the tech call is about US mega-cap concentration and AI earnings quality, and a Uruguayan payments processor at 13× forward earnings has little to do with it. The mismatch is recorded, not corrected.

Pressure Headwind, stance Contrarian, conviction 58 — fading a headwind is justified here on valuation washout and an improving long-horizon EM signal, but not on oversold conditions, because it is not oversold. The consequence is concrete: a Headwind pressure blocks amplification, so this cannot be a STRONG BUY however well the driver scores.

Source: sector map (GICS Information Technology → XLK) · Macro report 2026-09-09

7

Pillar Detail: Entry/Exit Timing

The risk-reward framework, relative strength vs SPY and the sector ETF, the macro overlay, news-derived sentiment, and the catalyst cluster.
Entry/Exit Timing — Pillar Score
Above a rising 50-DMA, but the August breakout faded on thin volume
62
conf 60%

The higher timeframes are constructive and the tape underneath them is not. Monthly and weekly are both uptrends; daily reads weakening and hourly is a downtrend[8]. Price sits 1.1% above a rising 50-DMA of US$14.80 and 11.1% above the 200-DMA of US$13.47[7].

The volume is the problem. The LAST volume-backed close above the 50-DMA was 21 August at US$15.17 on 1.72× the 20-day average. Since then the move has faded: a closing high of US$15.78 on 3 September, a close below the 50-DMA at US$14.66 on 9 September, and 11 September traded 0.22× average volume[7]. Higher-timeframe volume ratios run 0.35-0.5[8]. A trend that holds on thin volume is not the same as a trend that is confirmed.

Relative strength is genuinely good. DLO returned +18.0% over twelve weeks against +2.1% for the S&P 500 and +0.9% for XLK — +15.9pp and +17.0pp of relative strength. But four-week momentum is only +1.4% — the outperformance was earned in July and August, not in the last month.

Timing 62, up one. Improving, not confirmed — and that distinction is what caps the short horizon below.

8

Economic Event Risk

High-impact macro releases in the next 14 days that could swing this stock, plus the last 7 days of surprises.

Upcoming events (next 14 days)

DateEventImpactForecastPreviousRelevant?Why
2026-09-25Next scheduled Donatien reviewCompany-specific——✅ Yes+14d standing ceiling
2026-09-11US CPI (August) — LANDED TODAYHighcore +0.2%core +0.3% ACTUAL✅ YesCore ran hot; traders raised Fed-hike odds for the following week and the 10-Y sits at 4.95%. The ten-year is the single input the whole anchor keys off.
2026-09-16FOMC rate decisionHighhike priced—✅ YesA hike would compress the warranted multiple further. IT is Medium macro-sensitivity, so this is a sizing note, not a WAIT-FOR-EVENT override.
2026-09-18Bank of Japan decisionMedium——⚠ MediumGlobal duration; feeds the same rate channel
2026-11-18dLocal Q3 2026 resultsHigh——✅ YesThe take-rate line is the number that matters, not revenue
9

Multi-Timeframe Technical Analysis

Trend, RSI and breakout status across monthly / weekly / daily / hourly / 15-minute, with a confluence verdict.
TimeframeTrendDirectionRSIMACDKey S/RBreakoutVol
MonthlyUptrendBullish46.4+S: 13.47 R: 16.78Resistance break0.35x
WeeklyUptrendBullish56.5+S: 14.00 R: 15.78Resistance break0.40x
DailyWeakeningNeutral47.5flatS: 14.66 R: 15.78None0.50x
HourlyDowntrendBearish46.7−S: 14.66 R: 15.16None1.60x
15-minUptrendNeutral52.7flatS: 14.91 R: 15.16None4.48x
10

Price Chart (6-Month Daily)

A 6-month daily close line with SMA50 and key support/resistance — the visual companion to the MTF table.
11

Scenario Summary

Bull / Base / Bear 12-month price paths with triggers and probability weights.

Bull US$23.00 (25%)

The take rate stabilises near 2.2% as the corridor mix matures, TPV growth stays above 50%, and operating leverage finally shows — revenue growth outrunning the pricing give-back. The multiple re-rates toward the panel high as the market stops treating every basis point of take rate as a structural decline. This is the case where volume growth was worth the price paid for it.

Base US$18.50 (50%)

Growth stays strong and the take rate keeps grinding down at a decelerating pace. Earnings grow, but more slowly than volume, and the stock works toward the analyst median rather than the anchor. This is the consensus path and it still delivers a respectable return from here.

Bear US$11.50 (25%)

Take-rate compression accelerates rather than decelerates as Ebanx, Adyen and Stripe press the core corridors and large merchants insource — the competitive trigger, and the one the moat analysis says is live. Compounded by an FX or regulatory event in Nigeria, Egypt or Argentina, or further sponsor supply. Earnings stop growing while volume still does, which is the worst version of this business model.

Probability-weighted value US$17.88 against US$14.96, about 19.5% of upside. The base case is deliberately set at the analyst median rather than at the anchor’s US$22.45: on a business whose central uncertainty is the direction of its own pricing, the discounted-cash-flow number is the least reliable of the estimates available, however precise it looks.

12

Entry / Exit Rules

Three independent entry paths (Fundamental · Technical · Catalyst) and three exit triggers (Stop-Loss · Thesis · Profit-Target). Any one entry path is a valid entry — the more that agree, the larger the position the conviction ladder suggests. Exits are graded by severity, not count.

How to read this — the Conviction Ladder

The three entry groups are alternative paths to a buy, not a checklist. A group counts only when all its sub-conditions hold. How many groups are satisfied sets the suggested size — it does not gate whether you may enter: 1 group = Half-Size (a valid starter/scale-in), 2 = Full-Size, 3 = Over-Size (highest conviction); 0 = Wait (no path open yet). A strong overall signal can still read Wait here when the stock is well above its entry zones — that flags "good business, no entry edge right now," not a contradiction. Exits are graded by severity of what is live, not by a count: a hard stop is an Exit on its own.
Entry conviction: Half-Size1 of 3 groups met — one path open — starter / scale-in

Fundamental — MET

Open. Price is below fair value on every lens available, and the driver clears the threshold.
✅ Price US$14.96 below fair value US$18.50 (consensus median)
✅ No earnings within 7 days (Q3 due 18 Nov 2026)
✅ Underlying-Driver score >= 50 (68)

Technical — not MET

Shut on volume. The one confirmed break was 21 August and it has since faded.
⛔ Close above the 50-DMA (US$14.80) on >1.5x the 20-day average volume — last on 21 Aug, 11 Sep traded 0.22x
⛔ Or a tested bounce off weekly support with a higher low — 9 Sep closed BELOW the 50-DMA
✅ RSI 35-65 (daily 47.5)

Catalyst — not MET

Nothing dated inside the window.
⛔ A dated catalyst within 30 days — Q3 earnings are 18 Nov 2026
· Volume > 2x the 20-day average on the confirmation

Forecast: Fundamental: already met and likely to stay met — it would take roughly a 24% rally to close it. Technical: the reachable one. It needs a close above the 50-DMA on more than 1.5× average volume; price is already 1.1% above it, so this is a volume problem rather than a price problem, and volume on this name arrives with news. Forecast confidence: Moderate within 4-8 weeks, and High that the Q3 print on 18 November resolves it one way or the other. Catalyst: opens 18 November. The practical read: the next genuine decision point is the Q3 print, and it is the take-rate line that matters, not the revenue line.

Exit action: Holdno exit trigger is live — hold the position

Stop-Loss — not LIVE

Not live — price is 13% above the stop.
⛔ Close below US$13.20 (beneath the 200-DMA) for two sessions

Thesis Invalidation — not LIVE

Not live, but one of the three conditions is now half-written.
⛔ A further quarter-on-quarter take-rate decline on the gross-profit basis (Q2 2026: 0.72%), confirmed against a retrieved quarterly TPV series
⛔ Operating margin below 14% (Q2: 16.05%, on the 64.161M operating income the data tool returns)
⛔ A regulatory or FX-convertibility event in a major corridor

Profit-Target — not LIVE

Not live — price is below the base target.
⛔ Price US$14.96 at or above the US$18.50 base target

Where the return comes from. Not from a re-rating to the anchor. From earnings growing into a multiple of 13.08× while the take rate finds a floor. If it does not find one, the multiple is not the thing that was wrong.

What would make this a STRONG BUY. Two things, and both must hold: the economic pressure turning from Headwind to Tailwind (the macro report moving Technology off Underweight), and the valuation staying out of the Full band. The valuation arm is comfortably satisfied today; the macro arm is not, and it is not in this company’s control.

What would take this to HOLD or lower. A third consecutive quarter of take-rate decline at this pace; operating margin below 14%; a close below US$13.20, which is under the 200-DMA; or a regulatory or convertibility event in a major corridor.

The honest summary. This is a genuinely fast-growing, cash-generative, net-cash business at 13× forward earnings with ten analysts and a bullish consensus, and I would rather own it than not. It is also conceding half a point of take rate a year, has just had its sponsor sell a fifth of a large position below today’s price, and sits in a sector the macro report rates Underweight across every horizon. A BUY on the two longer horizons at half size — not a table-thumper, and not a trade for this week.

Imagine you act at the current price of US$14.96 · as of 2026-09-11

What if you bought now?

You are risking about 12% to the hard stop to gain 20% on the probability-weighted path.

What you are risking. The stop sits at US$13.20, 11.7% below here and beneath the 200-DMA. The bear case is US$11.50, -23%, and it is not exotic: it is simply take-rate compression continuing at the pace shown. You would also be buying with the Technical entry group SHUT — the tape is above a rising 50-DMA but on 0.22x volume, so you are not being paid to wait for confirmation, you are choosing not to.

What you are gaining. The base case is US$18.50 (24%) and the bull US$23.00 (54%). You start collecting a 1.3% dividend on a 28.5% payout immediately, and you own the optionality that the take rate finds a floor — which is the entire bull case and costs nothing extra at this price.

The read: acting now is defensible at half size. Waiting for the 18 November print materially improves the information — it is the quarter that tells you whether the take rate is stabilising — and costs you only the gap between here and wherever it opens.

What if you sold now?

You would be giving up the base-case upside to protect against a compression trend that has not yet broken the thesis.

What you are giving up. US$18.50 base and US$23.00 bull, the dividend, and a business compounding volume at 92%. You would be selling at 13.08x forward against a 19.63x warranted multiple — below fair value on the anchor, on the consensus median, and on the panel's own low target.

What you are protecting. Nothing mechanical: no exit trigger is live. The stop is 13% away, no thesis-invalidation condition has fired, and the price is below the profit target. You would be protecting against the risk that the take-rate decline shown continues and deepens.

The read: there is no mechanical reason to sell here. This is a hold-or-accumulate zone, and the accumulate half is what the conviction ladder is rationing.

13

Position Sizing Context

Illustrative portfolio math (not advice) translating conviction into an allocation given risk-per-share and volatility.
Position note. One entry group is met — the Fundamental path — so the conviction ladder reads Half-Size. The Technical group is shut on volume and the Catalyst group is shut until 18 November. A half position now with the balance on either a volume-confirmed reclaim of the 50-DMA or the Q3 print is what this scorecard supports.
14

Calibration Snapshot

Machine-readable snapshot of every score, level and signal, saved alongside the HTML so the next run can compute deltas.
{
  "ticker": "DLO",
  "date": "2026-09-11",
  "version": "v6",
  "brand": "dLocal",
  "company": "DLocal Limited",
  "currency": "USD",
  "exchange": "NASDAQ",
  "exchange_ticker": "NASDAQ:DLO",
  "isin": "KYG290181018",
  "api_ticker": "DLO",
  "analysis_status": "donatien-pick",
  "lifecycle_stage": "high_growth",
  "sector": "Information Technology",
  "gics_sector": "Information Technology",
  "price_at_rating": 14.955,
  "signal_short": "HOLD",
  "signal_medium": "BUY",
  "signal_long": "BUY",
  "primary_signal": "BUY",
  "short_signal": "HOLD",
  "short_hold_reason": "technical_pending",
  "short_entry_confirmed": false,
  "short_cap_reason": "Technical entry group UNMET. The LAST volume-backed close above the 50-DMA was 21 Aug 2026 at $15.17 on 1.72x the 20-day average; the move has faded since \u2014 price sits 1.1% above a 50-DMA of $14.80 on 0.22x volume, and closed BELOW it on 9 Sep. Catalyst group UNMET: next earnings 18 Nov 2026 is outside the 30-day window. Medium and Long are unaffected.",
  "base_signal_short": "BUY",
  "base_signal_medium": "BUY",
  "base_signal_long": "BUY",
  "quality_score": 62,
  "valuation_score": 80,
  "timing_score": 62,
  "driver_score": 68,
  "quality_confidence": 62,
  "valuation_confidence": 68,
  "timing_confidence": 60,
  "overall_confidence": 60,
  "composite_short": 66,
  "composite_medium": 68,
  "composite_long": 67,
  "economic_alignment_stance": "Contrarian",
  "economic_alignment_conviction": 58,
  "economic_alignment_pressure": "Headwind",
  "economic_alignment_source": "sector-map",
  "macro_report_date": "2026-09-09",
  "val_band": "attractive",
  "warranted_multiple": 19.63,
  "actual_multiple": 13.08,
  "warranted_ratio": 0.67,
  "val_multiple_basis": "clean forward P/E \u2014 price divided by the FY2027 consensus diluted EPS of US$1.14373 (n=10, post-print). BOTH SIDES FORWARD: the warranted multiple below is the forward form (trailing 26.26x divided by 1+g_near), not the trailing one.",
  "eps_forward": 1.14373,
  "eps_trailing": 0.68,
  "trailing_pe": 21.99,
  "discount_rate_r": 10.45,
  "risk_free_10y": 4.95,
  "g_near": 15.0,
  "g_term": 3.0,
  "nonop_pct_of_net_income": 5.3,
  "clean_pe": 13.08,
  "clean_peg": null,
  "fair_value_est": 18.5,
  "target_price": 18.5,
  "stop_loss": 13.2,
  "scenario_base_target": 18.5,
  "scenario_bull_target": 23.0,
  "scenario_bear_target": 11.5,
  "probability_weighted_target": 17.88,
  "entry_groups_met": 1,
  "entry_conviction": "Half-Size",
  "exit_groups_live": 0,
  "exit_action": "Hold",
  "hard_gate_state": "caution",
  "gates_triggered": [],
  "gates_caution": [
    "Take-rate compression (Gate 4 adjacent, not triggered) \u2014 measured on the GROSS PROFIT basis the prior report used, so the series is comparable: FY24 1.15% / FY25 0.99% / Q2 2025 1.07% / Q1 2026 0.84% / Q2 2026 0.72%. Declining in every period shown, and about a third lower year on year. (On a revenue-over-TPV basis the same quarters read 2.78% to 2.26%, a milder-looking -19%; the basis is named because switching between them quietly is the reframing this report criticises elsewhere.) Q2 EPS MISSED by US$0.01 while revenue BEAT by 9.6%: the compression reaches the bottom line. Operating margin 16.05% against 22.30% a year ago, on the 64.161M operating income the data tool returns.",
    "Sponsor supply overhang \u2014 General Atlantic sold 9,842,559 shares at an average execution price of US$13.60 on 17 Aug 2026, a 21.1% cut leaving 36,814,136. Do-Not-Buy Trigger 4 requires three or more C-suite insiders disposing of over a quarter of their holdings within 60 days outside a 10b5-1 plan; a private-equity sponsor's 13D/A satisfies none of those legs, and dLocal is a foreign private issuer exempt from Section 16 reporting, so routine insider filings do not exist to check. It is still real supply.",
    "Regulatory / Binary (Gate 5) \u2014 CAUTION, not triggered. No dated decision pending, but dLocal carries chronic elevated regulatory and FX-convertibility risk across its LatAm, Nigeria and Egypt corridors.",
    "Concentration and competition \u2014 merchant concentration plus credible price competition is what the take-rate line is measuring; competitive_threat_level remains elevated."
  ],
  "do_not_buy_triggers": [],
  "moat_score": 58,
  "competitive_share_trajectory": "gaining volume, conceding price",
  "competitive_threat_level": "elevated",
  "industry_benchmark_name": "EM Payments: TPV growth + take-rate stability",
  "industry_benchmark_value": "TPV +92% to US$17.7bn; take rate (gross profit / TPV) 1.07% -> 0.72%, about -33% year on year, declining in every period shown",
  "industry_benchmark_score": 58,
  "analyst_consensus_target": 18.7,
  "analyst_target_high": 21.0,
  "analyst_target_low": 15.0,
  "analyst_target_upside_pct": 25.0,
  "analyst_coverage_count": 10,
  "analyst_grades_consensus": "strong_buy",
  "analyst_bullish_pct": 90.0,
  "recent_upgrades_30d": 0,
  "recent_downgrades_30d": 0,
  "relative_strength_vs_spy": 15.9,
  "relative_strength_vs_sector": 17.0,
  "next_update_date": "2026-09-25",
  "next_update_basis": "+14d standing ceiling, which is the governing rule here. Dated events inside the window (CPI on 11 Sep, FOMC 16 Sep, BoJ 18 Sep) are recurring macro releases and are NOT scheduling triggers for a Medium macro-sensitivity sector; Q3 earnings on 18 Nov 2026 is the only company-specific dated event and it is far outside the window.",
  "prior_report": "calibration-DLO-20260816-1430.json",
  "prior_primary": "BUY",
  "changes_note": "Signals unchanged at HOLD/BUY/BUY; price +5.5% to US$14.955 since 16 Aug. Q2 2026 (13 Aug): revenue US$399.7M +55.8% YoY beat consensus by 9.6%, TPV +92% to US$17.7bn, but EPS MISSED by US$0.01; on the gross-profit basis the 16 Aug report used, the take rate fell 1.07% -> 0.72%. Consensus forward EPS rose to US$1.14373 from US$1.08. THIS RUN CORRECTS TWO ERRORS IN THE 16 AUG REPORT: its warranted multiple 27.70x was the TRAILING form scored against a FORWARD actual (forward was 24.09x, ratio 0.546 not 0.475 \u2014 an error in the flattering direction; band and signal unchanged), and next earnings is 18 Nov not 11 Nov. AND IT CORRECTS TWO ERRORS IN ITS OWN FIRST DRAFT, both caught by the independent audit: (1) the General Atlantic sale price was published as US$13.91, which is that day's CLOSING price \u2014 the 13D/A says US$13.60 average execution; (2) '~US$0.91bn net cash' was backed out of provider EV and silently reversed the prior report's correct merchant-float finding \u2014 corporate net cash is roughly US$339m, an overstatement of about US$571m. That correction propagates: Quality 66 -> 62. That 4-point fall is NOT decomposable term by term: the 16 Aug report published a different build with no balance-sheet term. The EM Payments benchmark is unchanged at 58 versus 16 Aug (it went 58 -> 62 -> 58 within this run), so none of the fall is attributable to it, and the business-attributable portion is at least 2.8 points. Separately, 2.0 points of this pillar are corrections relative to THIS run first draft, risk add-on +0.0% -> +1.0%, r 9.45% -> 10.45%, warranted forward 22.84x -> 19.63x, ratio 0.57 -> 0.67. Still Attractive, signals unchanged.",
  "delta_vs_prior": "vs calibration-DLO-20260816-1430.json. quality 66 -> 62. valuation 78 -> 80. timing 61 -> 62. driver 70 -> 68. economic alignment 62 -> 58. price 14.17 -> 14.955. warranted_ratio 0.475 -> 0.67. next_update 2026-08-31 -> 2026-09-25. base target 17.45 -> 18.5. bull target 21 -> 23. bear target 10.75 -> 11.5. relative strength vs SPY -6.6 -> 15.9. relative strength vs sector -5.5 -> 17. moat 60 -> 58. overall confidence 62 -> 60. probability-weighted target set to 17.875 (absent in the prior report). scenario weights set to {'bull': 25, 'base': 50, 'bear': 25} (absent in the prior report). gates_caution 1 -> 4 (added Take-rate compression (Gate 4 adjacent, not triggered) \u2014 measured on the GROSS PROFIT basis the prior report used, so the series is comparable: FY24 1.15% / FY25 0.99% / Q2 2025 1.07% / Q1 2026 0.84% / Q2 2026 0.72%. Declining in every period shown, and about a third lower year on year. (On a revenue-over-TPV basis the same quarters read 2.78% to 2.26%, a milder-looking -19%; the basis is named because switching between them quietly is the reframing this report criticises elsewhere.) Q2 EPS MISSED by US$0.01 while revenue BEAT by 9.6%: the compression reaches the bottom line. Operating margin 16.05% against 22.30% a year ago, on the 64.161M operating income the data tool returns.; Sponsor supply overhang \u2014 General Atlantic sold 9,842,559 shares at an average execution price of US$13.60 on 17 Aug 2026, a 21.1% cut leaving 36,814,136. Do-Not-Buy Trigger 4 requires three or more C-suite insiders disposing of over a quarter of their holdings within 60 days outside a 10b5-1 plan; a private-equity sponsor's 13D/A satisfies none of those legs, and dLocal is a foreign private issuer exempt from Section 16 reporting, so routine insider filings do not exist to check. It is still real supply.; Regulatory / Binary (Gate 5) \u2014 CAUTION, not triggered. No dated decision pending, but dLocal carries chronic elevated regulatory and FX-convertibility risk across its LatAm, Nigeria and Egypt corridors.; Concentration and competition \u2014 merchant concentration plus credible price competition is what the take-rate line is measuring; competitive_threat_level remains elevated.; removed Gate 5 - Regulatory / Binary Event: CAUTION, not triggered. No pending FDA-style decision, takeover or antitrust action, so the gate does not fire - but dLocal carries chronic elevated regulatory risk across its LatAm/Nigeria corridors, which is a standing elevated risk rather than a dated binary event, and is why the overall gate state is caution rather than clear.). Carried without change: signal_short, signal_medium, signal_long, val_band, entry_conviction, entry_groups_met, short_entry_confirmed, exit_action, hard_gate_state, analysis_status, industry benchmark score, competitive share trajectory, exit_groups_live. NOTE: PASS at HOLD/BUY/BUY, Q62 V80 T62, ratio 0.67 Attractive, donatien-pick retained.",
  "lint": {
    "exit": 0,
    "assertions": 67,
    "errors": 0,
    "warnings": 0,
    "could_not_run": [],
    "at": "2026-09-11T13:38",
    "report": "DLO_Signal_v6_20260911_1900.html"
  },
  "carried_verbatim": [
    "competitive_share_trajectory"
  ],
  "carried_verbatim_note": "competitive_share_trajectory carries \"gaining volume, conceding price\" unchanged from 16 Aug. Checked and, for the first time, QUANTIFIED this run rather than re-asserted: TPV +92% to US$17.7bn against revenue +55.8% means the take rate fell from 2.78% to 2.26%, and Q2 EPS missed by US$0.01 while revenue beat by 9.6%. The wording is identical because the conclusion is identical; the evidence behind it is new.",
  "cite_audit": {
    "round": 1,
    "rows": 1,
    "supported": 1,
    "not_supported": 0,
    "partial": 0,
    "census_sha256": "6e183b9aa59526163d2045e24cf7c38cef71852b6c0e05efec46166057fe5dab",
    "at": "2026-09-11T21:00",
    "disposition": "COVERAGE LIMITATION \u2014 and this run PROVED the gate is undersized. The detector returned a near-empty census on an 85KB report with 12 sources and 11 citations, and BOTH source-contradicting figures the Layer-2 auditor found (the General Atlantic sale price and Q2 operating income) passed it. Registered as P0 CENSUS-UNDERCOUNT in data/improvement-debt.json. Read these counts as covering almost nothing; the fabrication sweep on this report was done by a human auditor, not by this gate."
  },
  "corporate_net_cash_usd_m": 339.0,
  "corporate_cash_note": "CORRECTED after audit. The first draft published '~US$0.91bn of net cash', backed out of provider enterprise value (4.401 \u2212 3.491). That silently reversed the 16 Aug report's own correct finding: provider EV nets TOTAL cash, most of which is MERCHANT FLOAT held against trade payables and is not dLocal's money to spend. Restated on the basis that report established \u2014 corporate cash was US$369.1m of US$794.9m total, a 46.4% corporate share. Applying that share to today's US$874.2m total cash gives corporate cash of roughly US$406m and, less US$67.4m of debt, corporate NET cash of roughly US$339m. The first draft overstated it by about US$571m. This is an ESTIMATE carried on the prior report's ratio, not a figure read off a 30 Jun balance sheet \u2014 no balance-sheet endpoint is available in the data layer.",
  "layer1_self_audit": "Data pulls: income statement (8 quarters), ratios, yahoo quote, MTF, raw OHLCV 259 sessions auto_adjust off, analyst panel + grades, news 45d, macro state 9 Sep. FAILED: get_economic_series(DGS10) and get_key_economic_indicators both empty; get_earnings_calendar HTTP 401 \u2014 all three recorded in \u00a715 and substituted from named secondary sources. Data-basis traps checked: earnings-quality decomposition run (non-operating 5.3% of net income, under the 15% threshold, so reported and clean multiples agree); share count reconciled (market cap \u00f7 price \u2248 292m \u2248 reported); MERCHANT FLOAT trap \u2014 missed in the first draft and corrected here. Carried-forward diff: competitive_share_trajectory re-examined and quantified; systemic_tail_inherited restated below rather than dropped.",
  "systemic_tail_inherited": false,
  "systemic_tail_note": "Restated rather than dropped. The 9 Sep macro carries a narrowing-breadth concentration tail, but DLO is not in that cohort: it is not a top-weight index constituent, its earnings carry no AI-related non-operating gains (non-operating income is 5.3% of net income), and at 13.08x forward it is not a multiple levered to the AI trade. Cohort membership requires more than being classified Information Technology.",
  "scenario_probabilities": {
    "bull": 25,
    "base": 50,
    "bear": 25
  },
  "threshold_fragility": "Ratio 0.666 in the ATTRACTIVE band, whose upper edge is 0.80. Reaching it would need the warranted multiple to fall from 19.63x to 16.34x, which at this growth and terminal rate needs r above roughly 12.2% \u2014 a ten-year yield near 7.7%. It survives every rate path in view: at a 5.50% ten-year the ratio is 0.70 and at 6.00% it is 0.73, both still Attractive. The valuation band is NOT the fragile part of this report. Quality is: at 62 it sits THREE POINTS BELOW the 65 line that separates Medium from High, and crossing it would switch the risk add-on from +1.0% to zero and lift the warranted multiple from 19.63x to 22.84x. Two sub-scores moved the pillar this run, both corrections, which is why the build is published in full.",
  "post_audit_fixes_round1": "BLOCKER-1 the General Atlantic sale price was published as US$13.91, which is that day's CLOSING price; the 13D/A says US$13.60 AVERAGE EXECUTION. I took it from a search summary instead of the filing. Corrected in all four places; the argument strengthens, since the sponsor sold lower than stated. BLOCKER-2 'roughly US$0.91bn of net cash' was backed out of provider EV and silently reversed the 16 Aug report's own correct merchant-float finding. Restated on the basis that report established (corporate cash US$369.1m of US$794.9m total, a 46.4% corporate share): corporate cash ~US$406m, corporate NET cash ~US$339m \u2014 an overstatement of ~US$571m, disclosed in a callout. MAJOR-1 the published Quality build summed to 64.0 not 65; with the balance-sheet sub-score corrected 78->70 it now sums to 62.8 -> Q63, and the propagation is carried through in full: risk add-on +0.0->+1.0%, r 9.45->10.45%, warranted forward 22.84->19.63x, ratio 0.57->0.67 (still Attractive), composites 68/70/70->67/69/68, Quality band High->Medium. Signals unchanged. MAJOR-2 the take rate is restated on the GROSS PROFIT basis the prior report used, with its series (FY24 1.15 / FY25 0.99 / Q2'25 1.07 / Q1'26 0.84 / Q2'26 0.72 = declining in every period shown; NOTE the \"three consecutive declines\" phrasing used in this round-1 log was SUPERSEDED in round 2 as unsupported), and the revenue-basis figures are shown alongside with the switch named. MAJOR-3 the corrected prior ratio is 0.546 (prior actual 13.15 over the corrected prior warranted 24.09), not 0.543 which mixed periods. MAJOR-4 operating income is 64.161M and the margin 16.05%, matching the cited tool and the ratios note. MAJOR-5 SS14 re-rendered last from the final calibration, with the real census hash and the coverage disposition intact. MAJOR-6 the Neutral->Headwind change is now disclosed as largely a RE-MAPPING: the macro's own 12 Aug row classified DLO under Financials (XLF) at N/N/N, DLO left the 9 Sep watchlist, so the GICS map now governs \u2014 and no amplification was available on either mapping. MAJOR-7 CPI is dated 11 Sep (the report date) with the actual core print, and FOMC/BoJ added. MAJOR-8 the header price box, the what-if box and SS5's driver name/label all rendered EMPTY and are now populated; the SS12 key-contract guard that should have caught this was itself mis-listed and now derives its allowed keys from the renderer. MINORS: eps_trailing 0.68 / trailing P/E 21.99; relative strength restated as +15.9pp vs SPY and +17.0pp vs XLK; prior-cal source filename; nonop restored to 5.3; scenario probabilities recorded; systemic_tail_inherited restated rather than dropped; threshold_fragility and layer1_self_audit published. THREE-AXIS SWEEP caught three surviving siblings after the primary fixes \u2014 the changes box still said 13.91, SS12 still said 16.4%, and the Gate 1 card still said US$0.91bn.",
  "audit_route_note": "Round 1: SendMessage to the SAME auditor \u2014 Round 1 by a fresh agent, as required for a first round. The artifact was patched, not rebuilt \u2014 the auditor confirmed every load-bearing analytical call survived re-derivation \u2014 so report-audit.md L51 routes back to the SAME auditor, which retains context and re-checks only what moved.. Verdict FAIL (2 blockers, 8 majors, 12 minors). Round 2: SendMessage to the SAME auditor \u2014 Round 2 findings were two incomplete closures plus three defects the fix round itself introduced. Patched, not rebuilt, so the same auditor continues.. Verdict FAIL (2 blockers, 4 majors, 6 minors). Round 3: SendMessage to the SAME auditor \u2014 One blocker and one major, both propagation rather than analysis; signals unmoved on either branch. Patched, same auditor continues.. Verdict FAIL (1 blocker, 1 major, 2 minors). Round 4: SendMessage to the SAME auditor \u2014 One major and one minor, both prose trailing regenerated arithmetic; nothing analytical in play. Same auditor continues.. Verdict FAIL (0 blockers, 1 major, 1 minor). Round 5: SendMessage to the SAME auditor \u2014 One major, a baseline-mixing defect in the delta narrative. No recomputation, no signal implication. Same auditor.. Verdict FAIL (0 blockers, 1 major, 0 minors). Round 6: SendMessage to the SAME auditor \u2014 One blocker and one major, both CREATED by round 5's fix pass. Same auditor.. Verdict FAIL (1 blocker, 1 major, 0 minors). Round 7: SendMessage to the SAME auditor \u2014 PASS. Seven rounds. Two round-1 MINORs logged rather than fixed, per the auditor, and registered as P2 with this report as the dated instance.. Verdict PASS (0 blockers, 0 majors, 0 minors).",
  "valuation_score_note": "Valuation 80, up 2 from 78, while the ANCHOR moved AGAINST the name (ratio 0.546 -> 0.670 on a like-for-like corrected basis). Stated explicitly because the two directions disagree. The anchor carries 40% of the pillar, but both 0.546 and 0.670 sit deep inside the same Attractive band (<=0.80), so the band contribution barely moves. The +2 comes from the relative lenses: the consensus target rose 18.35 -> 18.70 with coverage at n=10, and the grades distribution went from 69% bullish to 90% (3 Strong Buy / 6 Buy / 1 Hold) with a UBS upgrade and no downgrades. If the ratio had crossed 0.80 the band would have governed and the score would have fallen regardless of the panel.",
  "post_audit_fixes_round2": "BLOCKER-A, introduced by round 1's own fix round and the worst of them: SS4 still read '0.0% risk add-on (Quality 63 clears the 65 line) = 9.45%' while printing 19.63x in the next sentence - 63 does not clear 65, the add-on is +1.0% and r is 10.45%. I updated the calibration and not the prose, so the report contradicted itself on the single change the round was built around. Also in that paragraph: the 24.09->19.63 move was attributed wholly to the ten-year when rates alone take it to 22.84x and the rest is the risk add-on (i.e. the Quality downgrade), and the claim 'the ratio still improved' was FALSE - it deteriorated 0.546 -> 0.670 on a like-for-like basis, about 23% more expensive, and the error ran in the flattering direction. All three corrected and the deterioration is now stated plainly. BLOCKER-B: SS15 Data Sources was never swept, so the provenance block still carried all three retracted figures - ga-sale US$13.91, ratios 'implying roughly US$0.91bn of net cash', q2-print operating income 65.591M - meaning each citation contradicted the claim it certified. All corrected, each with a note naming the superseded value; ust10y's 'ahead of CPI' also fixed. MAJOR-A: 'three consecutive quarterly declines' was unsupported - the series mixes annual with quarterly and skips Q3/Q4 2025, and only one adjacent pair (0.84->0.72) is evidenced. Narrowed to 'declines in every period shown' with the gap in the evidence stated, and SS12's trigger, the what-if box and the sell-side text all reconciled to that. MAJOR-B: gates_caution[0] and industry_benchmark_value never left the first draft - both were revenue-basis with the 16.4% margin, and they propagate into SS14, delta_vs_prior and the live watchlist tooltip. Restated on the GP basis with 16.05%, and industry_benchmark_score returned 62 -> 58, the prior run's value on the same basis, since there is no case for a 4-point rise in a run whose finding is further deterioration. MAJOR-C: the changes box said 'Quality -1' when it is -3 and never mentioned the US$571m cash overstatement that drove it. MAJOR-D: the Valuation +2 against a worsening anchor is now explained explicitly in the box and in a new valuation_score_note - both ratios sit deep in the same Attractive band so the band contribution barely moves, and the +2 comes from the consensus target and a 90%-bullish panel. MINORS: relative strength restated in the prose as +15.9pp vs SPY and +17.0pp vs XLK; 'the one volume-backed close' -> 'the LAST'; 15.78 named as a close not an intraday high; PEG disclosed as absent with the 45%-of-weight arithmetic; next_update_basis reconciled to SS8; the threshold_fragility garble ('two points above') corrected to TWO POINTS BELOW with the add-on consequence; the '-3 of which two points' arithmetic restated as the real 1.2 points.",
  "post_audit_fixes_round3": "BLOCKER: industry_benchmark_score was adopted at 58 in the prose and the calibration while the Quality build line still computed its 12.40 term on 62 \u2014 the same failure mode as rounds 1 and 2, a value changed everywhere except the arithmetic that consumes it. Fixed at the root rather than by editing the total: the Quality build is now a DATA STRUCTURE in the builder, and the callout text, quality_score and the three composites all render from it, with an assert that refuses the build if the published score does not equal the computed one. Resolved on branch (a) as recommended: 11.60 + 16.40 + 8.80 + 10.50 + 8.70 + 6.00 = 62.00 -> Q62, composites 66/68/67, propagated to the lock and the watchlist pill. Signals unchanged HOLD/BUY/BUY; 62 and 63 are both Medium so the add-on, r, the warranted multiple, the ratio and the matrix row are all untouched, and the published sensitivity already covered 62. MAJOR: three live '52bp' figures were orphaned by the basis switch \u2014 the pillar-score header, the Share-trajectory sentence carrying the moat conclusion, and the SS4 anchor paragraph. All now read 35bp on the gross-profit basis, with '(52bp on revenue / TPV)' stated where the comparison is useful. The pillar header also dropped its pre-correction 'net cash' framing. MINORS: the round-1 fix log's 'three consecutive declines' is marked SUPERSEDED in place rather than rewritten; threshold_fragility restated to three points below the 65 line.",
  "rounding_note": "composite_short is 66 from a raw 66.5. That is Python round() on an exact .5 \u2014 banker's rounding \u2014 and it is what scripts/build_stock_report.py derive_composites produces, so the published value is self-consistent with the deriver. Do NOT \"correct\" it to 67 on a later pass.",
  "pwt_rounding_note": "The \u00a714 embed shows probability_weighted_target 17.88 where this file holds 17.875. BY DESIGN: the builder derives and displays the rounded value, and the embed is a RENDERING of the calibration, not a second copy of it. Degrading the stored precision to match a display rounding would be the wrong direction. Adjudicated with the Layer-2 auditor in round 4 and closed; do not re-raise.",
  "post_audit_fixes_round4": "MAJOR: the score regenerated and the delta NARRATIVE did not \u2014 four sites said 'minus three' / 'down three' against a 66 to 62 move, and the decomposition claimed only 1.2 points were corrections. Fixed at the root, as with the build last round: PRIOR is now loaded from cal['prior_report'] and delta(), delta_word() and delta_sign() GENERATE the quantifiers, while CORR_PTS derives the correction share from the two moved sub-scores at their weights ((78-70)*0.15 + (62-58)*0.20 = 2.0). The changes box now renders 'Quality -4', SS3 renders 'down four' and '2.0 of those 4 points are CORRECTIONS rather than business news', and both trace to the same two expressions. changes_note endpoint corrected to 'Quality 66 -> 62'. threshold_fragility corrected to 'Two sub-scores moved the pillar this run, both corrections'. MINOR: the SS4 anchor sentence was the surviving 52bp site and my first replace SILENTLY NO-OPPED (zero occurrences, reported as done) because the wording differed \u2014 caught by counting before writing, then line-targeted. Also recorded two by-design notes so later passes do not 're-correct' them: rounding_note explains composite_short 66 is Python banker's rounding of an exact 66.5 and matches the deriver, and pwt_rounding_note records the auditor's adjudication that the SS14 embed showing 17.88 against a stored 17.875 is a rendering, not a second copy, and closed. VERIFICATION METHOD CHANGED this round on the auditor's instruction: every claim re-read against the BUILT HTML rather than against the intent, which is how the no-op and the surviving SS3 sentence were both caught.",
  "post_audit_fixes_round5": "MAJOR: CORR_PTS was an INTRA-RUN figure (this report's first draft -> final) printed as a share of an INTER-RUN delta (66 on 16 Aug -> 62). Verified the auditor's decisive proof directly: the 16 Aug calibration records industry_benchmark_score = 58, so this run's 58 -> 62 -> 58 is a ROUND TRIP worth zero against the prior report, and its 0.8 points cannot be part of a 66->62 fall; and the 16 Aug build had entirely different terms (moat, ROIC percentile, capital allocation, skin-in-game, NO balance-sheet term), so the 4-point fall cannot be decomposed against it at all. The error ran FLATTERING \u2014 it booked half the fall as self-correction when the business-attributable portion versus 16 Aug is at least 2.8 points. Fixed by separating the baselines rather than adjusting the number: SS3 now declines to decompose the 4-point fall and says why, states that the benchmark is UNCHANGED at 58 versus 16 Aug so none of the fall is attributable to it, and reports the 2.0 points separately and explicitly as corrections relative to THIS report's own first draft. The builder constant is renamed CORR_PTS_VS_FIRST_DRAFT with the baseline in the name and a comment recording both proofs, so the mixing cannot recur silently. Also dropped the changes box's 'most of that is a correction' \u2014 2.0 of 4 is half, not most, even on the arithmetic that was wrong. ADJACENCY CHECKED as instructed: the neighbouring build callout's 'two sub-scores moved this run, both corrections' is true within the run and now says so explicitly, so it cannot be read as a claim about the 66->62 delta.",
  "post_audit_fixes_round6": "BLOCKER: my round-5 rewrite of SS3 dropped the f-prefix from the build callout, so {QB_LIST} and {QB_TERMS} rendered as LITERAL TOKENS while {QB_SCORE} substituted - a PARTIAL substitution, which is why it read as plausible prose instead of crashing. The effect was the worst available: it deleted the per-term Quality build and its arithmetic from the published report, which is the exact artifact rounds 3, 4 and 5 existed to make auditable and the thing QUALITY_BUILD was introduced to guarantee. Lint, preflight, stale_text and figure_set all passed it. Fixed, and then fixed as a CLASS: PLACEHOLDER-LEAK now runs inside build_stock_report.py against BOTH the built HTML and the spec (the leak was upstream, already in the spec), and fails the build with the surrounding context. Proven by injection: it catches the exact defect. The auditor supplied the regex and had already verified zero false positives against the inline chart JavaScript and the CSS on this artifact. MAJOR: the changes box read 'the benchmark leg is unchanged at 58 against 16 August, so the fall is not the business' - my replacement text had joined to the original sentence's tail and INVERTED the meaning. A benchmark that did not move does not explain the fall, which makes MORE of it business-attributable, not less. It also replaced the flattering claim removed in round 5 with a different sentence meaning the same flattering thing, which is item 3 of my own new fix-round procedure failing on the sentence it was written for. Now reads 'NONE of the fall is attributable to it - which makes MORE of it business-attributable, not less. On the evidence available at least 2.8 of the 4 points are the business.' VERIFICATION: both fixes confirmed by READING the built file as text rather than through the pipeline, per the auditor's closing instruction - the tokens were visible in plain prose and needed no tool to see.",
  "post_audit_fixes_round7": "No fixes required \u2014 the auditor verified the round-6 blocker and major closed, re-derived every build term independently, walked the spec tree to confirm the three placeholder tokens appear at exactly one path (the audit-log field that necessarily quotes them, not any rendered surface), and found nothing further. Recording the PASS because lint derives the round count from these keys and a PASS that logged nothing would leave the count and the ledger disagreeing. THE FINDING THAT OUTLIVES THIS REPORT: both round-1 BLOCKERs were caught by the AUDITOR, not by a gate \u2014 the claim census returned a single row on an 85KB report and both source-contradicting figures passed it. The clean gate state on this report must NOT be read as evidence the fabrication sweep works; it does not, and CENSUS-UNDERCOUNT is registered P0 and blocks the next run."
}
15

Data Sources & Methodology

Audit trail of every data source: fully available (✓), fallback (⚠), or failed (✗), plus provenance-based confidence haircuts.
Data Source Status
✓
dLocal Q2 2026 results, released 13 Aug 2026 (SEC 6-K; get_income_statement) Quarter to 30 Jun 2026: revenue US$399.664M, operating income US$64.161M (the tool’s operatingIncome/EBIT; an earlier draft used 65.591M), net income US$54.638M, diluted EPS US$0.18. Prior-year quarter: revenue US$256.458M, operating income US$57.180M, diluted EPS US$0.14. Revenue beat consensus by 9.6% while EPS missed by US$0.01. TPV US$17.7bn, +92% year on year.
✓
General Atlantic Schedule 13D/A, filed 17 Aug 2026 General Atlantic sold 9,842,559 Class A shares in open market transactions at an AVERAGE EXECUTION PRICE of US$13.60, a 21.10% reduction, leaving 36,814,136 shares. A private-equity sponsor unwinding, not a C-suite disposal. NOTE: an earlier draft of this report published US$13.91, which is DLO’s closing price that day — the filing figure is US$13.60.
✓
Analyst panel for DLO, 11 Sep 2026 (get_yahoo_analyst_targets, get_price_target_consensus, get_grades_consensus) n=10. Mean US$18.70, median US$18.50, high US$21.00, low US$15.00. Distribution 3 Strong Buy / 6 Buy / 1 Hold; consensus strong_buy, recommendation mean 1.5. Forward EPS consensus US$1.14373 (n=10) — ABOVE the US$1.08 the 16 Aug report used, which predated the print.
✓
Analyst grade actions for DLO (get_stock_grades), to 11 Sep 2026 UBS upgraded Neutral to Buy on 1 Jul 2026. Truist maintained Buy 27 Aug, 24 Jul and 27 May; Goldman Sachs maintained Buy 31 Jul. No downgrades in the window.
✓
US 10-year Treasury yield, 11 Sep 2026 (Trading Economics; Fed H.15) 4.95%, easing 2bp on the day, the most elevated since 2023. August CPI printed ON the report date (11 Sep) with core +0.3% against a +0.2% forecast, and traders raised Fed-hike odds for the following week. The 16 Aug report anchored on 4.63%.
✓
Donatien Macro-Economic report, 9 Sep 2026 (MacroDriver-state-20260909.json) Regime: energy-shock stagflation, 48%. Technology (XLK) Underweight on all three horizons. US Tech (QQQ) short Strong Underweight / medium Underweight / long Neutral. EM Equities (EEM) short Underweight / medium Neutral / long Overweight. USD short Neutral / medium Neutral / long Underweight. DLO is not in the macro watchlist, so the sector map is used.
✓
Yahoo Finance daily OHLCV for DLO, 259 sessions to 11 Sep 2026 Raw unadjusted closes used for every moving-average claim. Close US$14.955. 50-DMA US$14.80 and rising; 200-DMA US$13.47. 20-day average volume 2,591,528. The single volume-backed close above the 50-DMA was 21 Aug at US$15.17 on 1.72x; 9 Sep closed BELOW the 50-DMA at US$14.66; 11 Sep traded 577,954 shares, 0.22x average.
✓
Multi-timeframe analysis for DLO (get_multi_timeframe_analysis), 11 Sep 2026 Monthly uptrend RSI 46.4; weekly uptrend RSI 56.5; daily WEAKENING RSI 47.5; hourly downtrend. Confluence bullish. Volume ratios 0.35-0.5 on the higher timeframes — the trend is intact but unconfirmed by volume.
✓
get_financial_ratios / get_yahoo_quote for DLO, 11 Sep 2026 Market cap US$4.401bn; enterprise value US$3.491bn. The provider EV nets TOTAL cash of US$874.2m, most of which is MERCHANT FLOAT held against trade payables and is not dLocal’s money to spend — so it does NOT imply US$0.91bn of usable net cash, and an earlier draft of this report wrongly said it did. Corporate net cash is roughly US$339m (see §3). ROE 41.3%, operating margin 16.05%, net margin 15.04%. EV/EBITDA 14.26, EV/Revenue 2.58, P/B 7.97. Dividend yield 1.3% on a 28.5% payout. Beta 0.87. 52-week range US$10.64-16.78.
✓
Donatien prior calibration, calibration-DLO-20260816-1430.json (16 Aug 2026) Price US$14.17, HOLD/BUY/BUY, Q66 V78 T61 D70, val_band attractive, warranted_multiple 27.7 with actual 13.15 giving ratio 0.475, fair value US$17.45, next earnings recorded as 11 Nov 2026. Used to verify the deltas and the two corrections this run makes.
⚠
Next earnings date for DLO (investor.dlocal.com / Investing.com), checked 11 Sep 2026 Q3 2026 results expected 18 Nov 2026. PARTIAL: get_earnings_calendar returned HTTP 401 (invalid FMP key), so this is a secondary source rather than the data tool.
✗
get_economic_series(DGS10) and get_key_economic_indicators FAILED and NOT used. Both returned empty payloads on 11 Sep 2026. The 10-year yield was sourced from Trading Economics and the Fed H.15 release instead — see the ust10y entry.
DISCLAIMER: This is a quantitative framework for educational purposes only. It is not financial advice. Always do your own research and consult a licensed financial advisor before making investment decisions.