Vetox capabilities
Vito — the economy, transactions and public API
Vito — an account-scoped currency that follows a member across servers, a searchable ledger, and a 9-endpoint REST API with 5 scopes and an npm SDK.
- Key
- VX-006
- Section
- Vetox capabilities
- Read
- 14 min
- Checked
- 30 August 2026
What it is
Vito is a single balance attached to a Discord account, not a server, so it follows the member everywhere. Two recurring faucets, one one-off, plus peer transfers and third-party credits. Spent on cosmetics and player-versus-player stakes. Every outbound movement carries a settlement fee that is destroyed rather than collected, and a REST API lets outside developers move it.
The problem it solves
Server-scoped currencies reset every time a member joins a new community. Effort in one server buys nothing in the next, which makes the currency a per-server loyalty token rather than money.
There is a second problem, and it is the one most bot economies do not acknowledge. A bot-run economy that pays a treasury has an incentive to inflate. If the operator takes a cut of transaction volume, the operator wants more volume, and the design decisions follow the incentive rather than the players.
And on the developer side: someone running a Discord-adjacent shop, game or service wants to charge users in a currency they already hold, without building a payment stack, a wallet and a fraud model. The alternatives are a real-money processor with the compliance weight that carries, or an in-house currency nobody has a balance in.
How it works
Every movement writes a ledger row carrying both parties, the direction, the amount, the reason, the timestamp, and the balance immediately after. That last column is the reconciliation mechanism: a skipped value means something moved that is not listed.
Transfers are atomic. The debit and the credit are wrapped in a database transaction, and both the in-app and API paths are protected by a durable idempotency anchor against at-least-once message redelivery. No partial failure can lose Vito.
The fee is a burn, not revenue. The sender is debited the full amount, the receiver is credited the amount after fee, and the difference is simply the difference — it is never added to any account. The platform holds no treasury and takes no cut, so it has no stake in transaction volume. Amounts of 5 Vito or less are fee-free entirely, and credits into an account are always fee-free.
A four-digit wallet PIN protects every spend, stored as a one-way hash over a keyed digest. Three wrong attempts lock the wallet atomically and send an email. Reset is a six-digit emailed code, valid ten minutes, resendable every 90 seconds, with five attempts before it is voided.
The PIN is never typed in Discord. This is a security design decision rather than a UI one, and it produces one unambiguous rule for members: anyone asking for your PIN inside Discord is committing fraud. A rule with no exceptions is a rule people can actually follow.
The API
Nine versioned endpoints under /public/vito/v1/*, authenticated with a project key and authorised
by five named scopes.
Money-moving calls do not settle from the API call itself. A charge creates a pending
confirmation and returns a URL; nothing moves until the user approves it with their wallet PIN on
vetox.io. The confirmation window is ten minutes.
The consequence is worth stating plainly: a leaked deduct key cannot take anything. The seller never handles the buyer’s PIN and cannot debit an account silently.
When a charge names an originating guild, that guild’s own bot DMs the buyer a product card with a link button to the PIN page. A closed DM never blocks the purchase, because the buyer already has the URL from the API response.
Credits are the exception. Crediting a user from the project owner’s own balance is synchronous, has no PIN step, and settles inside the same call — there is nothing to protect the user from when someone is giving them money.
What is configurable
Nothing per server. The economy is global.
Faucets
| Source | Amount |
|---|---|
| Daily reward | 5–7 base, × the membership multiplier × an escalating streak multiplier |
| Daily-reward cycle bonus | Flat +10 on the seventh claim of a cycle |
| Bot-listing vote | 2–3 base, × the membership multiplier |
| Profile completeness | One-time flat 250, deliberately not multiplied |
| Peer transfer | Whatever the sender sends, minus the fee |
| Third-party credit | Fee-free, funded from the merchant’s own balance |
Sinks
| Item | Price |
|---|---|
| Solid name colour | 1,000 |
| Two-stop gradient name | 4,000 |
| Three-stop gradient name | 7,000 |
| Custom colour — single, gradient, three-stop | 2,000 / 5,000 / 9,000 |
| Fonts | Free by default, then 2,500–12,000 |
| Profile backgrounds | 0–500, across 31 items |
| Rank backgrounds | 42–140, across 46 items |
| Cosmetic badges | 800 common, 1,500 rare, across 360 items |
| Prize Match stake | Agreed between the two players |
Colours are owned per surface — the same swatch on the name, the profile XP bar and the rank XP bar is three separate purchases. Everything Vito buys is cosmetic. Nothing in the shop confers an advantage over another member, which is the constraint that keeps an earned currency from becoming a pay-to-win one.
Fees and transfer limits
| Membership | Settlement fee | Daily transfers |
|---|---|---|
| Normal | 7% | 20 |
| Silver | 7% | 40 |
| Gold | 7% | 60 |
| Platinum | 6% | 80 |
| Diamond | 5% | 100 |
The ledger
/dashboard/vito-transactions is a paginated table with server-side search across the whole
ledger, not just the visible page. A single typed term is matched against the note, an exact
amount with commas stripped, a transaction ID, a Discord ID against both parties, and counterparty
names resolved through a separate lookup.
Name resolution is capped at 200 candidate accounts, because a common given name prefix-matches thousands and every one would land in the query.
API project settings
| Setting | Default and bound |
|---|---|
| Scopes | Any subset of the five |
| Webhook callback URLs | Up to 5, HTTPS only, 256 characters each |
| IP allowlist | Up to 20 entries; empty means unrestricted |
| Allowed guild IDs | Up to 100; empty means unrestricted |
| Max amount per transaction | 1,000,000 by default |
| Max daily volume | 10,000,000 by default |
| Rate-limit tier | Derived from the owner’s membership, see below |
The five scopes: balance:read, transfer:create, deduct:create, credit:create,
transactions:read.
The nine endpoints:
| Method | Path | Scope |
|---|---|---|
| GET | /v1/auth/verify | Any |
| POST | /v1/auth/rotate-key | Any |
| GET | /v1/balance/:discordId | balance:read |
| POST | /v1/deduct | deduct:create |
| POST | /v1/add | credit:create |
| POST | /v1/transfer | transfer:create |
| GET | /v1/transactions | transactions:read |
| GET | /v1/transactions/:id | transactions:read |
| GET | /v1/webhooks/events | transactions:read |
Webhooks: five event types — confirmation completed, failed, expired, cancelled, and credit completed. Delivery uses a transactional outbox, so a committed state change always has a durable pending delivery row. Signatures are HMAC-SHA256 with a timestamp, five retries with exponential backoff, and a 300-second default replay tolerance.
Rotation is graceful. Both the API key and the webhook signing secret rotate with a 24-hour dual-credential window. During a secret rotation the API emits a second signature signed with the previous secret, so a verifier that accepts any valid signature never sees a failed delivery.
Idempotency is anchored in durable storage rather than a cache, keyed per project, with a 24-hour window. A stale in-flight reservation self-heals after a two-minute lease; a genuine duplicate returns a distinct conflict code rather than silently double-charging.
An official Node SDK, @vetox-bot/vito, wraps all nine endpoints plus webhook signature
verification with a constant-time compare.
Tier availability
Gated on Membership, not on Server Premium.
| Capability | Normal | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|
| Holding and earning Vito | Yes | Yes | Yes | Yes | Yes |
| Earning multiplier | 1.0× | 1.25× | 1.5× | 2.0× | 3.0× |
| Settlement fee | 7% | 7% | 7% | 6% | 5% |
| Daily transfers | 20 | 40 | 60 | 80 | 100 |
| The cosmetic shop — all 360 badges and every colour | Yes | Yes | Yes | Yes | Yes |
| API access | — | Yes | Yes | Yes | Yes |
| API rate limit, per minute | — | 180 | 180 | 600 | 600 |
| API rate limit, per hour | — | 5,000 | 5,000 | 15,000 | 15,000 |
Nothing in the shop is tier-locked. A free account can buy anything a Diamond account can; it takes longer.
API access is gated at Silver, $2.99 a month — both for applying for a key and for making any authenticated call. A single IP is capped at half the project’s per-minute budget, floored at 30, so one misbehaving client cannot consume a project’s whole allowance.
Commands
/coins with two subcommands — balance and gift — plus /vito for transfers.
A transfer initiated in Discord opens a confirmation, and the PIN is entered on the website. There is no command that spends Vito without a confirmation step, by design.
Dashboard surface
| Route | Purpose |
|---|---|
/dashboard/vito-transactions | The searchable ledger |
/dashboard/purchases | Purchase and payment-request history |
/confirm/vito/:token | The PIN confirmation page every API charge routes through |
/dashboard/membership | Where the multiplier, fee rate and API access are set |
Public leaderboards cover the richest accounts, and the shop surfaces sit alongside the profile.
Permissions required
None in Discord. Vito is account-scoped and grants nothing in any server.
For the API: a Silver membership or above, an approved project, accepted terms, and the right scope on the key. Membership is re-checked on every authenticated call rather than only at provisioning, so a lapsed subscription stops the key rather than leaving it live.
What it connects to
- Membership sets the multiplier, the fee rate, the daily transfer allowance and the API rate limit. It is the single gate on the whole developer surface.
- The daily reward is the primary faucet, and the streak cycle is what makes it a habit rather than a claim.
- Badges are the largest sink at 360 items, and the showcase makes them visible.
- Profiles display the balance, the badges and the purchased cosmetics.
- Games and Prize Matches stake Vito player against player. There is no house, no random-outcome gambling against the platform, and no cut taken. Battle Pass draws on the same currency — see the progression reference.
- Payment requests connect the API back into Discord — the originating guild’s bot delivers the product card.
The chain: Daily reward → Vito → Badges and cosmetics, and
Vito → the API → third-party products → payment requests → back into Discord.
Who it is for
Members active across several communities, where a per-server currency would reset with every new server.
Developers building Discord-adjacent products — a shop, a game, a service — who want to charge in a currency users already hold. Silver at $2.99 a month is the entry price, and the confirmation model means a customer never has to trust the seller with credentials.
Server operators get Vito for free as an engagement layer they do not administer. Prize Matches and games stake it, and nobody has to configure an economy.
Practical use cases
A third-party shop that charges in Vito. The shop calls deduct with a product card and a guild
ID. The buyer gets a DM from the server’s own bot and a confirmation page. They enter their PIN on
vetox.io; the webhook fires; the shop fulfils. The shop never touched a credential.
A game rewarding its players. A credit call funded from the developer’s own balance, synchronous, no PIN, no fee. A leaderboard prize paid in currency the winner can spend on cosmetics anywhere.
Reconciling a balance that looks wrong. The ledger’s balance-after column makes continuity checkable by eye, and server-side search across the whole history finds a transaction by amount, counterparty name, Discord ID or note.
A developer scaling up. Silver for the key, then Platinum when 180 requests a minute becomes the constraint — which also drops the settlement fee from 7% to 6%.
How it compares
Two separate comparisons, because Vito is two things.
As an economy
| Product | Scope | Who is the house | Sells currency for money? |
|---|---|---|---|
| Vito | Cross-server, per account | Nobody — the fee is burned | No, in either direction, and no cut is taken |
| UnbelievaBoat | Per server | The bot — slots at 2× with an 11.1% win chance | No; premium sells caps and cosmetics |
| Dank Memer | Global per account, two currencies | The bot, plus a documented transaction tax | Yes — gems $6.99–$99.99, and subscriptions grant 2.5M–35M coins outright |
| OwO | Per account | The bot | No on the store |
| Mudae | Per server | No house casino found | No — it sells earn-rate multipliers instead |
| Pokétwo | Two currencies | None — player-run gambling is against its rules | Yes, and it is the business model — shards from 500 for $5 up to 15,000 for $100 |
| Points | Per server | — | No — 25 free shop items against 200 premium |
| Mimu | Server plus global currency | — | — |
| Cakey Bot | Per server — work, beg, rob plus 1v1 mini-games | — | — |
Dank Memer leads on depth of economy simulation — market, trading, farms, fishing, pets, two currencies — and Pokétwo on a single game done extremely well. Both are better games than anything built on a cross-server wallet, and neither is trying to be a wallet.
Two facts about the category are worth a reader knowing, and both come from the vendors’ own pages. Two products publish rules forbidding players from doing exactly what the vendor does — Dank Memer bans trading its currency for real money, Pokétwo bans trading items for external currencies, and both sell currency themselves. And Dank Memer is the only observed case of a platform taking a cut of player-to-player value and then selling exemption from it, with a no-tax perk on its paid tier.
Vito’s shape is the inverse of both: no currency sale in either direction, no house, and the fee destroyed rather than collected. A cross-server user wallet has no equivalent in this set — every economy examined is per-server. The nearest analogue found anywhere in the research is GBBOT’s GBCoin, a global cross-server currency, and it is free. That scope is worth carrying: economy searches in this research were framed around per-server currency, so this is a claim about the products examined rather than about the market.
As a developer API
At least twelve competitors publish an API, and the count rose on every pass. “Vetox has an API and others don’t” is a dead claim, and so is “nobody else has scopes or an SDK”. The full cross-vendor inventory is in which Discord bots publish a developer API.
| Vito | Kiai | sesh | RoWifi | Bloxlink | Statbot | Xenon | Lurkr | Tatsu | Amari | UnbelievaBoat | Points | GBBOT | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Endpoints | 9 | Scoped | ~10 | 7 | 3 | Grouped | 4 | 6 | 9 | 6 | 19 | 8 | ~30 |
| Scopes | 5 named | 5 named permissions, bitfield | None — guild-bound token | None | None — per-server keys | None — keys tied to one guild | None | Per-server grants | None | None | None | None | None |
| Rate limit published | Yes | Yes | 300/min read, 60/min write | 5/sec | No | Exists, not published | None, no headers | 1,500/min | 60/min | 60/min | 20/s | — | — |
| Webhooks | Yes, signature-verified | No | Yes — 19 events, HMAC-SHA256, delivery history | No | No | No | No | No | No | No | No | No | 9 events, HMAC-SHA256, idempotency and retry |
| SDK | Published npm package | Official npm SDK | No | No | No | No | No | No | No | No | Official JS client | No | No |
| Self-serve keys | Yes | Yes | Yes | Yes | Yes | Yes | No — granted to two partners | Yes | Yes | Google Form, up to 24 hours | Yes | Yes | No key or OAuth support yet |
| Price of access | Silver, $2.99 | Free tier documented | $24.99/mo | Free tier appears to include it | Not stated | Requires all five upgrades — $14.95/mo | Partner-only | Free | Free | Free | Free | Premium-gated | — |
RoWifi and Lurkr lead on API quality, on different axes. RoWifi is versioned with a published deprecation ladder, publishes its rate limit, has write endpoints with real effects outside Discord, and puts a consent gate on reverse lookup — a better privacy posture than its larger competitor’s. Lurkr offers 1,500 requests a minute, full CRUD, per-server grants defaulting to deny, key expiry, and an OpenAPI spec with a Swagger UI. sesh leads on webhooks with nineteen event types and queryable delivery history, and it costs $24.99 a month. UnbelievaBoat has the most endpoints in the games domain at nineteen, with an OpenAPI spec and an official JS client.
Kiai reached nearly the same authorisation design from a different direction, and it deserves naming rather than eliding. It publishes five named permissions as a bitfield — Levels, Multipliers, Export, Denylist and Rewards — with a per-endpoint scope table, per-server authorisation, published rate limits and an official npm SDK. Anyone writing that scopes and an SDK together are unique to one product has not checked.
Most of the rest substitute a single guild-bound token for scopes — sesh, Statbot, Bloxlink and
RoWifi all bind the credential to a guild — and an npm sweep across every vendor in this research
found exactly two vendor-maintained SDKs among the competitors, kiai.js and unb-api.
What is genuinely different about the Vito API is narrower and more useful: it is an API on a platform that also runs the moderation, tickets and levelling, so an integration reaches the whole server rather than one bot’s data — and the user-side PIN confirmation, which has no analogue in this set because no other API here moves an end user’s balance on a third party’s authority in the first place.
Sources
Checked
- docs.vetox.io — Vito (opens in a new tab)
- docs.vetox.io — Vito API (opens in a new tab)
- docs.vetox.io — Vito transactions (opens in a new tab)
- @vetox-bot/vito on npm (opens in a new tab)
- UnbelievaBoat API documentation (opens in a new tab)
- Dank Memer — rules (opens in a new tab)
- Pokétwo (opens in a new tab)
- sesh — API manual (opens in a new tab)
- Points — API reference (opens in a new tab)
- GBBOT — API and webhooks (opens in a new tab)
- Kiai — API and kiai.js reference (opens in a new tab)
- Cakey Bot — premium (opens in a new tab)