Customers only
1/ account A paid order, nothing elseA review is tied to one paid account. Next to it you see the product, the purchase date and how the account ended, including the reason.
Programs
Compare the four programsCompany
Talk to usEvery payout on a public ledger, each one with a certificate you can verify.
Guides, rule explainers and platform updates, written by the desk.
Open roles across trading, risk, support and engineering.
Support, partnerships and press — one form, answered by people.
What changed on the platform and in the rules, dated and public.
Only a customer who bought an account can write one. They sign it with their own device, its fingerprint goes into Bitcoin, and next to each review you see how the account really ended. Dolvero can reply, but cannot quietly change a thing. Verify it yourself, right here.
From purchase to Bitcoin
Review platforms ask you to trust them. We built this so that you do not have to: every step leaves a trace you can recompute yourself, without our server.
A review is tied to one paid account. Next to it you see the product, the purchase date and how the account ended, including the reason.
The customer signs the exact text with a passkey (fingerprint, Face ID). Only they hold the key, so Dolvero cannot write a review in their name.
Every review carries the fingerprint of the previous one. A daily fingerprint of the whole ledger goes into Bitcoin. Deleting or editing anything breaks the chain, visibly.
Dolvero can reply. Editing a reply is always a new version; the old one stays, struck through. Hiding a review leaves its hashes and the reason in place.
The Trustpilot case · October 2026
Dolvero’s reviews lived on Trustpilot, like everyone else’s. In October 2026 we checked every review written about Dolvero since May against the EU’s public DSA transparency database, where every removal by a platform leaves a record.
Receipts: the EU records on XWhat Trustpilot removed
Source: the European Commission’s DSA transparency database, content removal records reported by the platform. Percentages are the share of reviews deleted within each group.
Praise from an Indian trader: deleted. Criticism from an Indian trader: deleted too. It did not matter what they said. It mattered who was saying it.
These were not bots. They were traders from across India who bought an account with their own money, traded it, some got funded and some got paid, and then sat down and wrote a few honest lines in their own English. Within a day or two, gone.
best in the industrydeleted
my payout came fastdeleted
a bad experiencedeleted too
India has one of the largest and fastest growing trading communities in the world. And a review platform used by the whole industry treats their voice as suspicious by default. A trader is a trader. An Indian trader’s experience counts exactly as much as anyone else’s, good or bad.
Whether your voice stays is not decided by a passport, a filter or us. One thing decides it: that you really bought an account. That holds for praise and for criticism, for every trader, from anywhere.
The ledger
Audit
The “Verify in your browser” button on every review recomputes the hashes on your side: the sha256 of the signed text, the ledger leaf, the path to the daily root and the passkey signature. None of it relies on our server.
ots verify <day>.root.ots, the .root file (32 raw bytes) via &what=root.leaf = sha256(0x00 ‖ "dolvero.leaf.v1" ‖ salt ‖ sha256(payload)), node = sha256(0x01 ‖ left ‖ right). A depth-16 tree with random padding, one seal a day, also on a day with no records. Neither the root nor the paths reveal how many records there are.// independent check of one recordconst {createHash} = require('crypto');
const h = (...p) => createHash('sha256').update(Buffer.concat(p)).digest();
const canon = v => Array.isArray(v) ? '[' + v.map(canon).join(',') + ']'
: v && typeof v === 'object' ? '{' + Object.keys(v).sort().map(k => JSON.stringify(k) + ':' + canon(v[k])).join(',') + '}'
: JSON.stringify(v);
const feed = await (await fetch('https://dolvero.com/trust-feed.json')).json();
const r = feed.reviews.find(x => x.leaf && x.leaf.sealed);
const payload = canon({v: 1, kind: 'review', review: JSON.parse(r.payload), signature: r.signature});
let node = h(Buffer.from([0]), Buffer.from('dolvero.leaf.v1'), Buffer.from(r.leaf.salt, 'hex'), h(Buffer.from(payload)));
for (const s of r.leaf.path) node = s.side === 'L'
? h(Buffer.from([1]), Buffer.from(s.hash, 'hex'), node)
: h(Buffer.from([1]), node, Buffer.from(s.hash, 'hex'));
console.log(node.toString('hex') === r.leaf.root ? 'root matches' : 'MISMATCH');The rules are published, the engine is the same for everyone, and every payout is on the record.