# FortiBlox Documentation
URL: /docs
> Complete documentation for FortiBlox products and services — Honey Badger and Explorer for the X1 blockchain ecosystem.
# FortiBlox Documentation
Welcome to the comprehensive documentation for FortiBlox products and services on the X1 blockchain.
## Our Services
## Quick Start Guides
## Popular Resources
### Honey Badger
* **[Telegram Bot](https://t.me/HoneyBadgerCoreBot)** - Launch the trading bot on Telegram
* **[Trading Dashboard](https://honeybadger.fortiblox.com)** - Access the web dashboard
* **[Copy Trading](/docs/honeybadger/copy-trading)** - Mirror successful traders
* **[Token Sniping](/docs/honeybadger/sniping)** - Snipe new token launches
### Explorer
* **[Account Lookup](/docs/explorer/accounts/account-lookup)** - Search wallet addresses
* **[Gas Tracker](/docs/explorer/analytics/gas-tracker)** - Network gas insights
***
*FortiBlox - Professional X1 blockchain infrastructure and services*
---
# Accounts & Addresses
URL: /docs/explorer/accounts
> Look up any X1 address to see its balance, token holdings, transaction history, and NFTs.
# Accounts & Addresses
Every wallet, token account, and program on X1 has an **address**. Paste any address into search — or open one from a transaction — to see everything about it.
## What an Account Page Shows
### Balances
* The account's **XNT balance**
* **Portfolio value** — an estimate of total holdings
* **Stake** — any **Active Stake** and **Inactive Stake** the account holds
### Token Holdings
Every token the account holds, with amounts. Use **Hide Spam** to filter out unwanted or junk tokens, so you only see what matters.
### Account Activity
A full **transaction history** for the address, showing each transaction's **hash**, **slot**, fee, and **last activity** time. You can:
* **Expand** a row to see more detail
* **Export CSV** to download the history
* Filter out spam and noise
The activity view updates **live**, so new transactions appear as they happen.
### NFTs
Any NFTs the account owns are shown with their artwork and collection.
### Programs & Rent
For program or data accounts you'll also see details like **data size**, **rent status**, and the **programs** involved.
## Looking Up Any Address
1. Copy an address (from a wallet, a transaction, or anywhere).
2. Paste it into the search bar.
3. You land on that account's page instantly.
## Your Own Wallet
Want a richer, personalized view of your own wallet — net worth over time, DeFi positions, staking rewards, and P\&L? Connect your wallet and open the [Portfolio](/docs/explorer/portfolio-overview) instead.
> **Tip:** The account page is address-agnostic — you can inspect *any* wallet on X1, not just your own. Great for researching a token deployer or a validator's operator wallet.
---
# API Access
URL: /docs/explorer/api-access
> Access FortiBlox Explorer data programmatically through the REST API.
# API access
Everything you see in the explorer is also available programmatically, so you can build your own dashboards, bots, and integrations on top of X1 data.
## Getting started
Browse the interactive **[API docs](/api-docs)** in the explorer to see the available endpoints and try them live. The API covers the same data the explorer uses, including:
## Using the API
* Endpoints return JSON and can be called from any language.
* Responses mirror what the explorer displays, so what you build stays consistent with the UI.
* For higher volume or production use, reach out through **[Support](/docs)** to discuss access tiers.
The full, always-current endpoint list lives in the **[interactive API docs](/api-docs)** inside the explorer — start there to explore and test requests.
---
# Ask X1 (Forti)
URL: /docs/explorer/ask-x1
> Ask X1 is a built-in AI companion that answers questions about live X1 blockchain data in plain English.
# Ask X1 — your on-chain companion
**Ask X1** is the chat companion in the bottom-right corner of the explorer, powered by **Forti**. Ask it anything about X1 in plain English and it answers using real, live on-chain data.
> Hi, I'm Forti — your X1 Blockchain companion. Ask me about validators, tokens, staking, NFTs, the network, or anything on the explorer.
## What you can ask
Forti understands natural-language questions across the whole explorer:
## How it answers
* **Grounded in real data.** Forti reads the same live on-chain data the explorer shows — it doesn't make numbers up. If there's no data for something, it says so rather than guessing.
* **Readable answers.** It turns raw addresses and on-chain records into plain-English explanations, with clickable cards for the validators, tokens, and programs it mentions.
* **Remembers your conversation.** Follow-up questions keep the context of what you were just asking about.
## Good to know
Ask X1 is **read-only** and **informational**. It explains on-chain data — it is **not financial advice**, and it can never move funds or make transactions. Always do your own research before making decisions.
To use it, click the Forti icon in the bottom-right corner, type your question, and press Enter.
---
# Blocks
URL: /docs/explorer/blocks
> Browse blocks as they're produced and read the details of any block on X1.
# Blocks
A **block** is a batch of transactions confirmed together by the validator that was leader for that slot. The Blocks page shows them live as the network produces them.
## The Blocks List
Go to **Blocks** in the top navigation for a real-time list. Each entry shows:
* **Slot** — the block's position in the chain
* **Block Hash** — its unique identifier
* **Validator** — the leader that produced it
* **Transactions** — how many transactions it contains
* **Reward** — the reward earned for producing it
* **Size** and **Gas Used** — how full the block was
* **Time** — when it was produced
New blocks stream in at the top automatically.
## Opening a Block
Click any block (or search its slot number) to open its detail page. There you'll see:
* The block's **slot**, **hash**, and **parent** block
* The **validator** that produced it
* The **timestamp** and **block height**
* The full **list of transactions** in the block
From there you can click straight through to any transaction to inspect it.
## Reading Block Timing
X1 produces blocks quickly, so the list updates constantly. The time column tells you how recently each block landed — handy for confirming the network is healthy and current.
> **Tip:** Want the bigger picture instead of individual blocks? The [Analytics](/docs/explorer/network-analytics) area shows block production and network throughput over time.
---
# Connecting Your Wallet
URL: /docs/explorer/connect-wallet
> Connect an X1 Wallet or Backpack to view your portfolio and stake — the explorer stays read-only otherwise.
# Connecting your wallet
Connecting a wallet unlocks the personal features of the explorer — your **portfolio**, your **transaction history**, and **staking** — all tied to your own address. It's optional: you can explore everything else without connecting.
## Supported wallets
## How to connect
1. Click **Connect Wallet** (top-right of the explorer).
2. Pick **X1 Wallet** or **Backpack** from the list.
3. Approve the connection in your wallet's popup.
Once connected, you'll see your address and net worth in the header, and the **Portfolio** and **Staking** areas become personalized to you.
## What connecting enables
* **Portfolio** — your net worth, token holdings, NFTs, DeFi positions, and full transaction history
* **Staking** — delegate XNT to a validator and track your rewards
**The explorer stays read-only.** Connecting only lets the explorer *read* your public on-chain data to show your portfolio. It can never move your funds — any action that touches your assets (like staking) always requires you to approve it in your own wallet first.
## Disconnecting
Click your address in the header and choose **Disconnect** at any time. Your data isn't stored — the view simply clears.
---
# DeFi & XDEX
URL: /docs/explorer/defi-xdex
> Explore liquidity pools and DeFi activity on X1 through the XDEX view.
# DeFi & XDEX
The **DeFi** area surfaces on-chain decentralized-finance activity on X1, centered on **XDEX** — the X1 automated market maker (AMM).
## The XDEX View
Open **DeFi → XDEX** to see the DEX landscape:
* **Active LP Pools** — liquidity pools currently on X1
* **Pool Coverage** — how much of the DEX is represented
* **Active Stakers** — participants providing liquidity
* Per-pool details: the **pool** pair, **price**, and **reserves** (Reserve A / Reserve B)
## Reading a Pool
Each pool represents a trading pair backed by two token reserves. The **reserves** tell you how much of each token backs the pool, and the **price** reflects the ratio between them. Larger reserves generally mean deeper liquidity and less slippage on trades.
## Following Swaps
DEX swaps you find here connect back to the [transaction view](/docs/explorer/transactions) — open any swap to see the exact tokens and amounts that moved.
> **Note:** Some DeFi analytics are still being expanded, and the XDEX view may show a development notice on certain panels while coverage grows. Pool listings and reserves reflect real on-chain state.
---
# 🏛️ Delegation Program
URL: /docs/explorer/delegations
> See which validators receive stake from the X1 Delegation Program, how much, and the criteria a validator must meet to qualify.
# 🏛️ Delegation Program
The **Delegations** page (`/delegations`) shows the **X1 Delegation Program** — the foundation-run stake pool that delegates XNT to validators who meet the network's health and performance standards.
## What it shows
Each validator in the program is listed with:
* **Program stake** — the amount delegated to this validator *through* the Delegation Program.
* **Self / community stake** — the validator's own stake plus delegations that don't come from the program.
* **Total stake** — the sum of everything staked to the validator.
* **Commission**, **skip rate**, and **status** — the performance signals used to judge eligibility.
A visual breakdown lets you compare how the program's stake is distributed across validators at a glance.
## Eligibility criteria
To receive Delegation Program stake, a validator must meet **all** of these on-chain criteria:
* **Active** — currently voting and producing blocks.
* **Commission ≤ 10%** — keeps costs low for the pool.
* **Self-stake ≥ 2 XNT** — the operator has skin in the game.
* **Total stake ≤ 10M XNT** — keeps stake from concentrating.
* **Vote credits ≥ 97%** — reliably voting.
* **Skip rate ≤ 10% above the network average** — consistently producing blocks.
Membership status comes from the foundation's authoritative delegation records, shown alongside an independent on-chain check of whether each validator currently meets the criteria — so you can see both the official status and the live picture.
This page is informational — it reflects how the foundation allocates program stake. To stake your **own** XNT to any validator, see [Staking](/docs/explorer/staking).
---
# Gas & Fees
URL: /docs/explorer/gas-and-fees
> Understand X1 transaction fees and priority fees with the FortiBlox Explorer Gas Tracker.
# Gas & fees
X1 fees are low, but knowing the current rates helps you set the right priority fee when the network is busy. The **Gas Tracker** shows live fee data straight from recent blocks.
## What the Gas Tracker shows
* **Avg Fee** — the typical base fee per transaction right now
* **Min Fee** / **Max Fee** — the range seen in recent blocks
* **Priority Fee** — the extra fee that gets a transaction included faster (shown as **Avg**, **Min**, and **Max Priority**)
## How fees work on X1
Every transaction pays a small **base fee**. When you want faster inclusion during busy periods, you can add a **priority fee** — a tip that incentivizes validators to pick up your transaction sooner. Priority fees are measured per unit of compute.
Most of the time the standard fee is more than enough. Only raise your priority fee when the tracker shows fees climbing and you need a time-sensitive transaction to land quickly.
## Where to find it
Open **Gas Tracker** from the navigation, or check the **Fee Tracker** under **Analytics** for fee trends over time.
---
# Getting Started
URL: /docs/explorer/getting-started
> First steps with FortiBlox Explorer — navigate the X1 blockchain, search anything, and find your way around.
# Getting Started with FortiBlox Explorer
FortiBlox Explorer is your window into the **X1 blockchain**. Look up any address, transaction, block, token, validator, or program — and go deeper with portfolio tracking, staking, validator analytics, and an AI assistant.
Everything here is **read-only** unless you choose to connect a wallet. You can browse the entire chain without signing in.
## Opening the Explorer
Head to the Explorer and you'll land on the **Dashboard** — a live overview of the X1 network: recent blocks, latest transactions, network activity, and key stats. The network selector at the top confirms you're on **Mainnet**.
## The Top Navigation
The main menu gives you quick access to every area:
* **Dashboard** — live network overview
* **Blocks** — the latest blocks as they're produced
* **Transactions** — the live transaction feed
* **Assets** — tokens and NFTs on X1
* **Validators** — the validator directory and detail pages
* **Analytics** — network stats, TPS, fees, XNT tokenomics, and more
* **Portfolio** — track a wallet's holdings, activity, staking, and P\&L
## Searching for Anything
At the top of every page is the **universal search bar**. Paste in almost anything and the Explorer figures out what it is and takes you to the right page:
* A **wallet address**
* A **transaction signature**
* A **block** number
* A **token** mint
* A **validator**
* A **program**
See [Search](/docs/explorer/search) for tips.
## What You Can Do
* **Explore** blocks, transactions, and accounts in detail
* **Track tokens** — prices, holders, supply, and transfers
* **Research validators** — performance, commission, APR, and rewards
* **Stake** your XNT and watch your rewards accrue per epoch
* **Manage a portfolio** — net worth, assets, DeFi, transactions, and NFTs
* **Ask Forti**, the built-in AI assistant, questions in plain English
## Do You Need to Connect a Wallet?
No — browsing is fully open. **Connecting a wallet** simply unlocks personalized views (your portfolio and staking). The Explorer never takes custody of your funds. See [Connecting Your Wallet](/docs/explorer/connect-wallet) when you're ready.
> **Tip:** Bookmark the addresses and validators you care about by searching them — you can jump straight back anytime.
---
# Introduction
URL: /docs/explorer/intro
> A companion guide to the FortiBlox Explorer — explore the X1 blockchain, track your portfolio, stake, and more.
# FortiBlox Explorer
FortiBlox Explorer is the blockchain explorer for the **X1** network. Use it to search the chain, read transactions, track tokens and NFTs, browse validators, stake your XNT, and follow your whole portfolio in one place — all with live, on-chain data.
This guide is a companion to the Explorer: it walks through each area and shows you how to get the most out of it. You don't need an account to explore, and connecting a wallet is optional — it only unlocks your personal views (portfolio and staking).
## What you can do
Search any address, transaction, block, token, validator, or program — and read it in plain language.
Net worth, holdings, staking, DeFi, and a full transaction history for any wallet.
Delegate to a validator, watch your rewards accrue each epoch, and unstake when you want.
Ask questions about the network in plain English — the built-in assistant answers from live data.
## How this guide is organized
* **Getting started** — the basics: navigation, search, and connecting a wallet.
* **Explore** — blocks, transactions, accounts, tokens, DeFi, and programs.
* **Validators & staking** — the validator directory, validator profiles, how to stake, and reading your rewards.
* **Portfolio** — your net worth, assets, transactions, DeFi/staking positions, and multi-wallet views.
* **NFTs** — collections, rarity, and individual NFTs.
* **Analytics** — network health, XNT tokenomics, and gas/fees.
* **Tools** — Ask X1, and API access for developers.
## A note on data
Everything in the Explorer is sourced from the X1 blockchain. When a value can't be priced or isn't available yet, the Explorer shows that honestly (for example, "unpriced" instead of a made-up number) rather than guessing.
The Explorer is **read-only**. Even when you connect a wallet, it never moves your funds — any action that touches your assets (like staking) always goes through your wallet's own approval.
Ready? Start with [Getting started](/docs/explorer/getting-started).
---
# Network Analytics
URL: /docs/explorer/network-analytics
> Track X1 network health, validator distribution, TPS, and consensus on the FortiBlox Explorer.
# Network analytics
The **Network Stats** and **Analytics** sections give you a live, at-a-glance view of the health and shape of the X1 network.
## Network health
The network overview shows the vital signs of X1:
* **Active Validators** — validators currently producing and voting
* **Delinquent** — validators that have fallen behind
* **TPS** — transactions per second the network is processing
* **Supply** — total and circulating XNT
## Validator distribution
X1's decentralization is easy to read at a glance:
## Deeper analytics
The **Analytics** menu breaks the network down further:
* **Network Consensus** — real-time consensus and voting health
* **Block Production** — how blocks are being produced across validators
* **Transaction Activity** — volume and type of on-chain activity over time
* **Validator Map** — an interactive world map of validators and their stake
Each view updates continuously, so what you see reflects the network right now.
---
# NFTs
URL: /docs/explorer/nfts
> Browse X1 NFT collections, explore rarity rankings, and view individual NFTs on the FortiBlox Explorer.
# NFTs
The **NFTs** section lets you browse every NFT collection on X1, dig into a collection's items and rarity, and view any individual NFT with its traits and owner.
## Browsing collections
Open **NFTs** from the top navigation to see all collections. Each collection card shows:
* **Items** — how many NFTs are in the collection
* **Owners** — how many unique wallets hold them
* **Verified** — a badge on collections that are verified
Use the sort control to reorder the grid:
## Inside a collection
Click any collection to open its page. Here you can:
* **Search items** by name or mint address
* **Sort by rarity** to surface the rarest pieces
* See each item's **rarity rank** and its image
* Switch between **compact** and **large** card layouts
Rarity is calculated from how uncommon each NFT's traits are across the collection, so a lower **Rank** means a rarer NFT.
## Viewing a single NFT
Open any item to see its full detail page:
* The **image** (or video, for animated NFTs)
* Its **traits** / attributes
* Its **rarity rank** within the collection
* The current **owner**
**Revealed collections update automatically.** When a collection reveals its art on-chain (for example a timed drop that flips from a placeholder to the final artwork), the explorer picks up the change on its own — no manual refresh needed.
---
# Assets & Holdings
URL: /docs/explorer/portfolio-assets
> See every token and NFT an X1 wallet holds, with live USD valuation, in the Portfolio Assets tab.
# Assets & Holdings
The **Assets** tab lists everything a wallet holds — tokens and NFTs — with a USD value for each. Open it from **Portfolio → Assets**.
## Holdings list
Each holding shows:
* **Token or NFT** — its logo, symbol, and name.
* **Balance** — how many units the wallet holds.
* **Price** — the current unit price, when one is known.
* **Value** — the balance multiplied by the price, in USD.
Holdings are ordered by USD value, so the wallet's most valuable positions are at the top.
## Priced vs. unpriced
Not every token on X1 has a market price. The explorer is honest about this:
* **Priced** — a token with a known market price shows a USD value.
* **Unpriced** — a token with no reliable price shows a dash instead of a dollar amount. It's still listed and counted in your holdings; it just isn't given a made-up value.
This keeps your net worth trustworthy: an unpriced token never inflates or distorts your total.
## Tokens and NFTs together
The Assets tab includes both fungible tokens and NFTs the wallet owns. NFTs appear with their collection and item name (for example, a numbered item from a collection). For a richer NFT experience — collection stats, rarity, and artwork — use the dedicated **NFTs** tab (**Portfolio → NFTs**) or the explorer's main **/nfts** section.
## Allocation
Your holdings feed the **Allocation** breakdown on the Dashboard tab, which shows what share of your net worth each asset represents. If a large share sits in a single token, you'll see it clearly there.
---
# DeFi & Staking Rewards
URL: /docs/explorer/portfolio-defi-staking
> View your staking positions and per-epoch staking rewards, with historical USD, in the Portfolio DeFi tab.
# DeFi & Staking Rewards
The **DeFi** tab shows a wallet's staking activity: what it has delegated, and the rewards it has earned. Open it from **Portfolio → DeFi**. It has two sub-tabs: **Positions** and **Rewards**.
## Positions
The **Positions** sub-tab lists each of the wallet's stake accounts:
* **Validator** — the validator the stake is delegated to (its name when known, otherwise its vote address).
* **Amount** — how much XNT is in the stake account.
* **Status** — **Active** (earning rewards) or **Deactivating** (in the cooldown before it can be withdrawn).
At the top you'll see the **Total Staked** and the number of **Active Stakes**.
## Rewards
The **Rewards** sub-tab shows your staking rewards **per epoch** — the same "Rewards by Epoch" view used on validator pages, but for your wallet across all of its stake accounts.
For each epoch you can see:
* **Reward earned** that epoch, in XNT.
* **USD value** at that epoch's own historical price — so it reflects what the reward was worth when you earned it, not today.
* **Cumulative rewards** building up over time.
Hover the chart for a per-epoch breakdown, including the value in USD and the running total. This makes it easy to see how your staking income has grown epoch over epoch.
## Where the numbers come from
Everything here reflects real on-chain staking data. Rewards are the inflation rewards your stake accounts actually earned each epoch. A wallet with no stake accounts simply shows an empty state — nothing is estimated or invented.
## Related
* To **start staking**, see the [Staking guide](/docs/explorer/staking) or open a validator's **Stake** page.
* For a single validator's own rewards and performance, see its [validator detail page](/docs/explorer/validators).
---
# Activity, Positions & Multi-Wallet
URL: /docs/explorer/portfolio-multiwallet
> Follow live wallet activity, review open positions, and combine multiple wallets into one Portfolio view.
# Activity, Positions & Multi-Wallet
Beyond holdings and history, the Portfolio includes three more views for a fuller picture.
## Activity
The **Activity** tab (**Portfolio → Activity**) is a live feed of the wallet's most recent on-chain activity. Where the Transactions tab is built for browsing and filtering full history, Activity is a streaming, at-a-glance view of what's happening now — new transfers and events as they land.
## Open Positions
The **Open Positions** tab (**Portfolio → Open Positions**) surfaces the wallet's current market positions — what it currently holds as active positions rather than its full transaction history. Use it to quickly see where the wallet stands right now.
## Multi-Wallet
The **Multi-Wallet** tab (**Portfolio → Multi-Wallet**) lets you combine several wallets into a single aggregated Portfolio. This is useful if you spread activity across multiple addresses and want one consolidated view of:
* Combined **net worth** across all added wallets.
* Combined **holdings** and **staking**.
Add the wallets you want to track together, and the Portfolio totals reflect the whole set instead of a single address.
## Tips
* Every Portfolio tab works for **any** address via **Look Up**, not just a connected wallet — so you can inspect any public wallet on X1.
* Values are read-only. The Portfolio shows and explains a wallet; it never initiates transfers.
---
# Portfolio Overview
URL: /docs/explorer/portfolio-overview
> Track any X1 wallet's net worth, holdings, staking, and history in one place with the FortiBlox Explorer Portfolio.
# Portfolio Overview
The **Portfolio** is your all-in-one view of an X1 wallet: what it holds, what it's worth, what's staked, and everything it has done. Open it from the **Portfolio** link in the top navigation, or go to **/portfolio**.
## Loading a wallet
There are two ways to view a portfolio:
* **Connect Wallet** — connect your own wallet (X1 Wallet or Backpack) to view your live portfolio.
* **Look Up** — paste any X1 address into the lookup box to view that wallet's public portfolio (read-only, no connection needed).
Either way the Portfolio is read-only — it never moves funds. Connecting simply tells the explorer which wallet to show.
## The header
At the top of every Portfolio tab you'll see a summary bar:
* **Net Worth** — the total USD value of everything the wallet holds (available balance + staked + tokens).
* **Available** — the spendable XNT balance and its USD value.
* **Staked** — the total XNT delegated to validators and its USD value.
* **XNT Price** — the current price of XNT.
Values that can be priced show a USD figure; anything without a known market price is left unpriced rather than showing a fake value.
## Tabs
The Portfolio is organized into tabs:
| Tab | What it shows |
| ------------------ | ---------------------------------------------------------- |
| **Dashboard** | Net worth, allocation, and net-worth-over-time at a glance |
| **Analytics** | Profit & loss, realized/unrealized gains, and cost basis |
| **Assets** | Every token and NFT the wallet holds, with USD valuation |
| **DeFi** | Your staking positions and per-epoch staking rewards |
| **Transactions** | Full transaction history with filters and columns |
| **Activity** | A live feed of recent on-chain activity |
| **NFTs** | The wallet's NFT collection |
| **Open Positions** | Current market positions |
| **Multi-Wallet** | Combine several wallets into one view |
## Dashboard tab
The **Dashboard** is the landing view. It brings together:
* **Net worth** with the available vs. staked split.
* **Allocation** — a breakdown of net worth by asset (for example, XNT staked, XNT available, and each token), shown by share of total USD value.
* **Net Worth Over Time** — a chart of the wallet's value across selectable ranges (24H, 1W, 1M, 1Y, ALL). This values the native XNT balance at the XNT price so you can see how the position has moved.
## Analytics tab
The **Analytics** tab focuses on performance:
* **Profit & Loss (P\&L)** — how the wallet's holdings have gained or lost value.
* **Realized vs. unrealized** — gains already locked in versus gains still on paper.
* **Cost basis** — what the holdings were acquired for, used to compute P\&L.
Use the Analytics tab when you care about *performance*; use the Dashboard when you just want the current picture.
---
# Transaction History
URL: /docs/explorer/portfolio-transactions
> Browse, filter, and understand a wallet's full transaction history with historical USD pricing in the Portfolio Transactions tab.
# Transaction History
The **Transactions** tab is a complete, filterable history of a wallet's activity, with the USD value of each transaction at the time it happened. Open it from **Portfolio → Transactions**.
## Filtering
Narrow the list with:
* **Type filters** — **All**, **Received**, **Sent**, **Swaps**, **Transfers**, **Approvals**.
* **Date range** — pick a start and end date to focus on a period.
* **Search** — search by token, mint, or transaction signature.
## Reading a row
Each transaction is shown as a row with aligned columns:
* **Type** — an icon for the kind of transaction (transfer, swap, etc.). A failed transaction is flagged with a warning marker.
* **Token** — the token involved, with its logo and symbol.
* **Amount** — the signed amount (a green **+** for incoming, a red **−** for outgoing).
* **USD value** — the value in USD **at the time of the transaction**, with the historical unit price shown in parentheses. Because it uses the price on that day, it reflects what the transfer was actually worth then — not today's price.
* **Fee** — the network fee paid, in XNT.
* **Counterparty** — the other party in the transfer, shown as **from …** or **to …** and linked to that account.
* **Programs** — the on-chain programs the transaction touched.
* **Slot** — the slot the transaction landed in, linked to the transaction detail.
* **Time** — when it happened, with a link to the full transaction and the data source.
Transactions are grouped by day (Today, Yesterday, and dated sections) so it's easy to scan.
## "Unpriced" transactions
If a token had no known price at the time of a transaction, its USD column reads **unpriced** rather than showing a fabricated value. The transfer amount is still shown — only the dollar figure is withheld.
## Loading more
The list loads in pages. Scroll to the bottom and use **Load more** to fetch older history. When you reach the end you'll see a count and an "end of history" note.
---
# Programs
URL: /docs/explorer/programs
> Browse the on-chain programs powering X1 and inspect any program's activity and details.
# Programs
**Programs** are the on-chain code (smart contracts) that run on X1 — the token program, the DEX, staking, and everything apps are built on. The Explorer helps you find them and understand what they do.
## The Programs Directory
Open **Programs** for a list of programs active on X1. Each entry shows:
* The **program** name (a friendly label when known) and its ID
* **Category** — what kind of program it is
* **Activity Score** and **Success rate** — how active and reliable it is
* **Recent activity** and **Last active** time
* **Signers** — how many distinct accounts interact with it
Programs with recognizable identities show a **friendly name** instead of a raw address, so you can tell at a glance what you're looking at.
## A Program's Page
Click a program (or search its ID) to open its detail page:
### Overview
* The program **name**, **category**, and **deployment** info
* **Data Size** and **Bytecode Hash**
### Activity Stats
* **Avg Compute Units** and **Avg Fee / Tx** — how heavy its transactions are
* **Fee per CU**
* Success vs **Failed** transaction counts
* **Last Activity**
## Why This Is Useful
When a transaction lists a program you don't recognize, look it up here to learn what it is and how active it is. A high **success rate** and steady **activity** are good signs the program is healthy and widely used.
> **Tip:** Not sure what a program does? Ask **Forti**, the built-in [AI assistant](/docs/explorer/ask-x1) — it can explain a program in plain English.
---
# Universal Search
URL: /docs/explorer/search
> Paste an address, transaction, block, token, validator, or program — the Explorer routes you to the right page automatically.
# Universal Search
The search bar sits at the top of every page. It's **type-aware**: you don't have to tell it what you're looking for — paste a value and it detects the kind and takes you there.
## What You Can Search
| Paste this… | You land on… |
| ---------------------------------- | ---------------------------------------------------------- |
| A wallet **address** | the account page with balances, tokens, activity, and NFTs |
| A **transaction signature** | the full transaction breakdown |
| A **block** number | that block's details |
| A **token** mint | the token page — price, holders, supply, transfers |
| A **validator** (vote or identity) | the validator detail page |
| A **program** ID | the program page |
## How to Use It
1. Click the search bar (or use the search shortcut).
2. Paste or type your value.
3. The Explorer resolves it and navigates automatically.
## Tips
* **Partial names work** for tokens and validators — start typing a name and pick from the suggestions.
* **Both validator keys work** — you can search a validator by its vote account *or* its identity (node) key.
* If a value could match more than one thing, you'll see options to choose from.
* Not sure what you have? Paste it anyway — the placeholder says it best: *"Search anything… we'll figure it out."*
> **Tip:** Searching is the fastest way to return to an address or validator you were watching — no need to keep a separate list.
---
# 🥩 Staking XNT
URL: /docs/explorer/staking
> Delegate your XNT to a validator to earn staking rewards — step by step, plus how to track and unstake.
# 🥩 Staking XNT
Staking lets you earn rewards by delegating your XNT to a validator that secures the X1 network. Your tokens stay in your control the whole time — you're only delegating them, never giving them away.
The staking page lives at `/staking`, or `/stake/` when you arrive from a specific validator.
## How staking works
* You **delegate** XNT to a validator of your choice.
* The validator earns rewards each epoch and pays them to its delegators, minus its **commission**.
* Rewards **accrue automatically** — there's nothing to claim manually.
* You can **unstake** at any time; your XNT becomes withdrawable after a short cooldown.
## How to stake
You'll need a connected wallet with XNT. See [Connecting Your Wallet](/docs/explorer/connect-wallet).
1. **Connect your wallet** using the button in the top right.
2. Open a validator's page and choose the **Stake** tab (or go to `/staking`).
3. **Enter an amount** to stake. You can also tap **25% / 50% / 75% / 100%** to use a portion of your available balance.
4. Check the **minimum stake** requirement shown below the field and that you have enough XNT left for network fees.
5. Click **Stake** and approve the transaction in your wallet.
Your new stake begins **activating** and starts earning once it's fully active (this takes a short warm-up period).
## The staking tabs
A validator's staking page has four tabs:
* **Stake** — the delegation form plus your existing stake accounts with this validator.
* **Analytics** — the validator's real numbers: APR, vote performance, network share, and its rank among all validators. (These reflect live on-chain data, not estimates.)
* **History** — your on-chain staking activity with this validator.
* **Rewards** — your per-epoch staking rewards. See [Staking Rewards](/docs/explorer/staking-rewards).
## Understanding the numbers
* **APR** — your estimated annual return after the validator's commission.
* **Commission** — the percentage the validator keeps before paying rewards.
* **Network Share / Rank** — how large this validator is relative to the whole network.
* **Delegators** — the real number of accounts staking with this validator.
## Unstaking
To stop staking, open your stake account and choose **Unstake**. The stake enters a **deactivation cooldown** before the XNT becomes withdrawable. The exact wait depends on how far the current epoch has progressed — the explorer shows you an estimated time. Once cooldown completes, you can withdraw your XNT back to your wallet.
Staking rewards and APR vary with network conditions and the validator's performance. Nothing here is financial advice — always do your own research before delegating.
---
# 🎁 Staking Rewards
URL: /docs/explorer/staking-rewards
> Track the rewards you earn from staking — per epoch, valued at the time they were earned, with a running cumulative total.
# 🎁 Staking Rewards
Once you're staking, the **Rewards** tab shows exactly what you've earned — the same per-epoch view used for validators, but scoped to *your* stake.
You'll find it on the staking page (`/staking` → **Rewards**) and inside the [Portfolio](/docs/explorer/portfolio-overview) DeFi section.
## How rewards work
* Rewards are paid **every epoch** to everyone delegating to a validator.
* They **accrue automatically** — there's nothing to claim.
* The validator's **commission** is taken out before rewards reach you; the amounts shown are what you actually received.
* Rewards compound as your active stake grows.
## Reading your rewards
Each epoch in the Rewards tab shows:
* **Epoch** — the epoch the reward was earned in.
* **Amount** — the XNT you earned that epoch.
* **USD at the time** — the reward valued at the XNT price on that epoch's own day, so the dollar amount reflects what it was worth when earned (not today's price).
* **Cumulative** — a running total of everything you've earned.
Hover any point on the chart to see the exact reward, the price used, and your cumulative total up to that epoch.
If your Rewards tab looks empty right after you start staking, that's expected — rewards appear once your stake has been active through a completed epoch.
## Rewards across all your stakes
In the [Portfolio](/docs/explorer/portfolio-overview), the Rewards view aggregates rewards across **every** validator you delegate to, so you can see your total staking income in one place rather than validator by validator.
---
# Tokens
URL: /docs/explorer/tokens
> Browse tokens on X1 and dig into any token's price, holders, supply, and transfers.
# Tokens
The **Assets → Tokens** area lists tokens on X1 and lets you drill into any one of them.
## The Token List
Open **Tokens** for a sortable directory. Across the top you'll see summary stats like **Active Tokens**, **Total Holders**, **Avg Holders**, and **Avg Price**. For each token the list shows its name, **market cap**, price, and holder counts.
You can:
* **Filter by Token Type** to narrow the list
* Adjust **Columns** to show the data you care about
* Sort to find the top tokens by your chosen metric
## A Token's Page
Click any token (or search its mint address) to open its detail page:
### Market
* Current **price** and a **chart** (hover the chart to read values at a point in time)
* **Market cap** and **liquidity**
### Supply & Authorities
* **Balance/supply** and **decimals**
* Whether it's **Initialized**, and its **Freeze Authority** status (Active / Disabled) — useful for spotting whether a token can be frozen
### Holders
* The **Holders** count and top holders
* **Concentration** — how much supply the largest holders control
* **Holder Snapshots** over time
### Activity
* Recent **transfers** and transaction activity, with **Avg Transaction Size** and **Last Activity**
Use **Hide Spam** to keep the view clean.
## Reading Concentration & Authorities
Two quick signals when researching a token:
* **Freeze Authority: Disabled** means no one can freeze holders' tokens.
* Low **Concentration** (supply spread across many holders) is generally healthier than a few wallets holding most of it.
> **Tip:** Follow a token's transfers to see how it's moving, or jump to a holder's [account page](/docs/explorer/accounts) to research who they are.
---
# Transactions
URL: /docs/explorer/transactions
> Read any X1 transaction — status, fees, balance changes, token transfers, instructions, and logs — and learn to decode a swap.
# Transactions
Every action on X1 — a transfer, a swap, a stake — is a **transaction**. The Explorer shows you exactly what each one did.
## The Live Feed
Go to **Transactions** for a stream of recent activity across the network. Click any row (or search a transaction **signature**) to open its full detail page.
## Reading a Transaction
The transaction page is organized top to bottom:
### Overview
* **Signature** — the transaction's unique ID
* **Status** — **Success** or **Failed**
* **Timestamp** — when it was confirmed
* **Confirmation Status** — e.g. *finalized*
* **Slot** — the block it landed in
* **Transaction Fee** and **Fee per CU** (fee per compute unit)
* **Compute Units** consumed
* **Transaction Version**
### Account Balance Changes
A table of every account the transaction touched, showing the **XNT change** (how much each balance went up or down) and the **post balance**. The **fee payer** and **signer** are marked. This is the quickest way to see who paid and who received.
### Token Balances
If the transaction moved tokens (not just XNT), you'll see each token account's **change** and **post balance**, with the token's name — so you can read exactly which tokens moved and by how much.
### Instructions
The actual steps the transaction performed, each showing the **program** that ran it and its inputs. Recognized programs show a friendly name; unrecognized ones show their program ID.
### Inner Instructions
Steps that programs triggered *inside* other steps (for example, a DEX program calling the token program to move funds). These are nested under the instruction that invoked them.
### Program Logs
The messages programs emitted while running — useful for understanding what happened and confirming success.
## Worked Example: Reading a Swap
Say you open a transaction and the logs show `Instruction: SwapBaseInput`. Here's how to read it:
1. **Account Balance Changes** show a small XNT movement and the fee.
2. **Token Balances** show one token going **down** on your account and another going **up** — that's the swap.
3. **Inner Instructions** reveal the token transfers the DEX made on your behalf (a "TransferChecked" in each direction).
4. The **amounts** in the inner instructions are the exact quantities swapped.
Put together: you traded X of one token for Y of another, paid a small fee, and the transaction succeeded.
> **Tip:** Amounts are shown in real token units (already adjusted for decimals) — so a value like `0.131801618` means that many tokens, not raw units.
---
# 📋 Validator Details
URL: /docs/explorer/validator-details
> Read a validator's full profile — performance, commission, real APR, per-epoch rewards with historical USD, stake breakdown, and its delegators.
# 📋 Validator Details
Clicking any validator opens its detail page (`/validators/`) — a full profile of how that validator performs and earns. The page is organized into three tabs: **Stake**, **Rewards**, and **Performance**.
## Overview
At the top you'll find the validator's identity and headline stats:
* **Name & address** — the validator's name and vote account.
* **Status** — Active or Delinquent.
* **Commission** — the cut the validator takes from rewards.
* **APR** — the estimated annual reward rate, derived from real recent on-chain rewards. When there isn't enough reward history yet, it's shown with an **"est."** label so you always know whether the number is measured or estimated.
* **Overall Score** — a summary of the validator's reliability.
## 💰 Rewards by Epoch
The **Rewards** tab shows the validator's inflation rewards for each epoch:
* **Per-epoch amount** — XNT earned that epoch.
* **Historical USD** — each epoch's reward valued at the XNT price on that epoch's own day (not today's price), so the dollar figures reflect what the rewards were actually worth when earned.
* **Cumulative** — a running total of rewards over time.
Hover any epoch on the chart to see its exact reward, the price used, and the cumulative total to that point.
## 🥧 Stake Breakdown
The **Stake** tab breaks the validator's total stake into three buckets so you can see where its stake comes from:
* **Foundation** — stake delegated by the X1 foundation program.
* **Self-stake** — stake the validator operator has committed themselves.
* **Community** — stake delegated by everyday users like you.
## 👥 Delegators
A paginated list of the accounts delegating to this validator, with each delegator's staked amount. Named accounts show their name; others show their address.
## 📈 Vote Performance History
The **Performance** tab shows how consistently the validator has voted over recent epochs — a key signal of reliability. Steady, high vote performance means the validator is earning full rewards and passing them on to delegators.
Ready to delegate to this validator? Use the **Stake** button to open the [staking flow](/docs/explorer/staking).
---
# 🌍 Validator Map
URL: /docs/explorer/validator-map
> See where X1 validators are located around the world and how the network is distributed geographically.
# 🌍 Validator Map
The **Validator Map** (`/validator-map`) plots the X1 validator network on an interactive world map, so you can see how geographically distributed — and therefore resilient — the network is.
## What it shows
* **Validator locations** — each validator that reports a location is placed on the map.
* **Geographic distribution** — a quick visual of how spread out (or concentrated) the network is across regions.
* **Upcoming leaders** — a sense of which validators are next in line to produce blocks.
## Map & list views
Use the toggle to switch between:
* **Map view** — the interactive global map.
* **List view** — the same validators in a sortable list.
Geographic diversity matters: a network spread across many regions is more resilient to outages than one concentrated in a single location. Click any validator to open its [detail page](/docs/explorer/validator-details).
---
# 🛡️ Validators Directory
URL: /docs/explorer/validators
> Browse every validator securing the X1 network — stake, commission, APR, vote performance, and status — and find the right one to delegate to.
# 🛡️ Validators Directory
The **Validators** page (`/validators`) is the complete directory of validators securing the X1 network. Use it to compare validators and pick one to stake with.
## What you'll see
Each validator row shows the essentials at a glance:
| Column | What it means |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Name** | The validator's name (or a shortened address if unnamed). |
| **Status** | **Active** validators are producing blocks and voting; **Delinquent** validators have stopped voting recently. |
| **Stake** | Total XNT delegated to this validator. |
| **Commission** | The percentage the validator keeps from staking rewards before paying delegators. |
| **APR** | The estimated annual reward rate for delegators, based on recent on-chain rewards. |
| **Vote Performance** | How reliably the validator is voting on blocks — higher is better. |
| **Cumulative Stake** | This validator's stake plus every validator ranked above it, as a share of the whole network. It's a decentralization signal: the fewer validators it takes to reach 33%, the more concentrated the network. |
## Finding a validator
* **Search** by name or address using the search box at the top.
* **Filter** by status (active / inactive), commission range, and stake size.
* **Sort** any column by clicking its header.
By default the list shows **active validators only**. Toggle the filter to include inactive ones.
## Choosing a validator to stake with
A few things worth comparing before you delegate:
* **Commission** — lower commission means you keep more of your rewards.
* **APR** — the estimated return after commission.
* **Vote Performance** — consistent, high vote performance means the validator is reliable and earning full rewards.
* **Status** — always choose an **Active** validator.
* **Decentralization** — spreading stake to smaller validators helps keep the network healthy.
Click any validator to open its [detailed page](/docs/explorer/validator-details), or head straight to [staking](/docs/explorer/staking) to delegate.
---
# XNT Analytics
URL: /docs/explorer/xnt-analytics
> Read XNT tokenomics — supply, staked amount, burn, and inflation — on the FortiBlox Explorer.
# XNT analytics
The **XNT Analytics** page (under **Analytics → XNT**) is your window into the tokenomics of X1's native token.
## What you'll see
## Reading the metrics
* **Inflation** — the current rate at which new XNT is issued as staking rewards.
* **Active Delegation** — the share of supply that's staked. A higher staked share generally means a more secured network.
* **Progress to target** — how current figures track against the network's tokenomics targets.
These numbers are pulled live from the chain, so the page always reflects the current state of XNT.
Curious how much you could earn by staking? Head to the **[Staking](/docs/explorer/staking)** section to delegate XNT and track your per-epoch rewards.
---
# FortiSwap
URL: /docs/fortiswap
> FortiSwap is the easiest way to start with crypto — sign in with an account you already have, get wallets created for you, and buy, swap, and move value on X1 (live mainnet) or Arc (Circle's chain, testnet preview) without learning the machinery underneath.
Sign in with an account you already have — email, Google, or a passkey — and swap, bridge, and buy crypto without touching a seed phrase, on X1 (live mainnet) or Arc (Circle's chain, testnet preview). See how it works, then read the API.>} ctaHref="/docs/fortiswap/api" ctaLabel="Read the API reference" />
## What FortiSwap is
**FortiSwap** ([app.fortiblox.com](https://app.fortiblox.com)) exists to make the first minute of crypto feel like the first minute of any other web app. You sign in with an account you already have — an email address, Google, X, Discord, GitHub, Telegram, or a passkey — and FortiSwap creates the wallets you need and looks after them for you. Then you pick what you have, pick what you want, and confirm. Everything that makes crypto hard to start with — wallets, addresses, network fees, wrapping, bridging between chains, signing transactions — is handled behind the interface. You still own everything: the wallets created for you are yours, only you can use them, and you can take the keys with you to another wallet at any time. Start with [Why FortiSwap](/docs/fortiswap/benefits), then pick a network below.
FortiSwap runs on two real networks, not one with an add-on:
* **X1** is the established network — real money, live today. Buy and Sell with a card or bank, on-chain Orders, and cross-chain bridges to Solana and the major EVM chains all settle here. Start with [Using FortiSwap](/docs/fortiswap/how-to).
* **Arc** is Circle's new chain, built around USDC as its own native currency — and the network FortiSwap opens to by default. Swap, bridge, and on-chain orders all work on Arc today, but only against Circle's **test network**: it moves test funds, not real money, and every part of it is marked TESTNET, ready for the day Arc's mainnet opens. There is no fiat ramp on Arc yet — Buy and Sell stay on X1 until Circle's own onramp lands. Start with [Using FortiSwap on Arc (testnet)](/docs/fortiswap/arc).
Every swap carries FortiSwap's own **0.25% protocol fee**, collected on-chain in the same transaction as the swap — see [Fees](/docs/fortiswap/fees) for the full breakdown on both networks, including what a bridge or card leg adds.
---
# Agents — pay-per-call access
URL: /docs/fortiswap/agents
> How an automated agent pays for FortiSwap API calls over the open x402 protocol — reading the 402 challenge, signing and retrying, the replay rule, settlement receipts, accepted networks, and the machine-readable catalog.
# Agents: pay-per-call access
The priced FortiSwap endpoints — listed with their prices on [Developers and API](/docs/fortiswap/api#pay-per-call-x402) — can be called without an API key or an account. The caller pays a fraction of a cent in USDC per successful call using the open [x402](https://docs.x402.org) protocol, version 2. This page covers only what the API page does not: the payment handshake itself. Request and response shapes, error codes, and the protocol fee are all on the API page.
The open-source reference client, [`github.com/fortiblox/x402-agent-kit`](https://github.com/fortiblox/x402-agent-kit), implements everything below and runs the full token → quote → build → sign → send flow. Use it as-is or read it alongside this page.
## How a paid call works
1. The agent makes a normal HTTP request to a priced endpoint.
2. The server answers `402 Payment Required`. The `PAYMENT-REQUIRED` response header carries a base64-encoded JSON document that states the price and where to pay it.
3. The agent signs a USDC payment authorisation for exactly that amount, locally, with its own key.
4. The agent repeats the same request with the signed authorisation in a `PAYMENT-SIGNATURE` header.
5. The server has the payment verified by the x402 facilitator it is configured with, runs the endpoint, and — only if the endpoint returned a 2xx — has the payment settled on-chain. The response carries a `PAYMENT-RESPONSE` header with the settlement receipt.
Two consequences matter for an agent. **You are only charged for a successful response**: any 4xx or 5xx from the endpoint itself cancels the verified payment, and nothing moves on-chain. And **settlement is real and final**: the receipt names an on-chain transaction you can look up on that chain's explorer.
## Reading the 402
The body of a 402 is a short JSON error (`code: "PAYMENT_REQUIRED"`) that points you at the header. Decode the `PAYMENT-REQUIRED` header — this is the live shape from `POST /api/quote`, with the long descriptive fields trimmed:
```json
{
"x402Version": 2,
"error": "Payment required",
"resource": {
"url": "https://app.fortiblox.com/api/quote",
"description": "…",
"mimeType": "application/json",
"serviceName": "FortiSwap"
},
"accepts": [
{
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"amount": "1000",
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"payTo": "FdQ2FmAydXBe87Nm7w4MjksRqTUjahPaqjj7mVshKvNa",
"maxTimeoutSeconds": 300,
"extra": { "feePayer": "BENrLoUbndxoNMUS5JXApGMtNykLjFXXixMtpDwDR9SP" }
},
{
"scheme": "exact",
"network": "eip155:8453",
"amount": "1000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x581aB190DF2B2932175d987E787Acd28A85eAA1C",
"maxTimeoutSeconds": 300,
"extra": { "name": "USD Coin", "version": "2" }
}
],
"extensions": { "payment-identifier": { "info": { "required": false } }, "…": "…" }
}
```
| Field | Meaning |
| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `accepts[]` | The ways you may pay. Pick one entry and satisfy it exactly. |
| `scheme` | Always `exact`: you authorise precisely `amount`, never more. |
| `network` | The chain, as a CAIP-2 identifier. `solana:5eykt…` is Solana mainnet; `eip155:8453` is Base. |
| `asset` | The token contract or mint to pay in — USDC on that chain. |
| `amount` | The price in the asset's smallest unit. USDC has 6 decimals, so `"1000"` is $0.001. |
| `payTo` | The receiving wallet. It is the same wallet that collects the FortiBlox protocol fee on that chain; if a 402 ever shows anything else, do not pay it. |
| `maxTimeoutSeconds` | How long the authorisation you sign should remain valid. |
| `extra.feePayer` | Solana only: the account that pays the Solana transaction fee, so your wallet needs USDC and nothing else. |
| `extensions["payment-identifier"]` | Optional idempotency support — see [Retrying safely](#retrying-safely). |
Prices per endpoint, and the schema and example body for each, are the same in the [catalog](#discovery) as in the 402.
## Signing and retrying
Sign an authorisation that matches the chosen `accepts[]` entry field for field — scheme, network, asset, amount, and `payTo` — and repeat the request with the signed payload, base64-encoded, in a `PAYMENT-SIGNATURE` header. On Solana the payload is a partially signed transaction transferring `amount` of the asset to `payTo`, with `extra.feePayer` as fee payer; on Base it is a signed EIP-3009 transfer authorisation, so you need no ETH. The reference client and the standard x402 client libraries build both.
Bound your spend in the client before signing: a per-payment cap (the highest FortiSwap price is $0.01), an asset allowlist of USDC only, and, if you want to hard-pin the receiver, a `payTo` policy set to the two addresses above.
## Retrying safely
The rule is simple and worth stating plainly: **to retry, re-send the same signed payload. Never re-sign.**
A signed authorisation is single-use on-chain, so re-sending the identical `PAYMENT-SIGNATURE` can never be charged twice. Signing a fresh one for the same logical operation can. To make retries clean, attach a `payment-identifier`:
* Generate one id per logical operation — not per HTTP attempt — of 16 to 128 characters from `A-Z a-z 0-9 _ -`, and keep it until you have a response. Put it in `extensions["payment-identifier"].info.id` of the signed payload.
* To retry, send the identical request: same method, path, query, body bytes, and the same `PAYMENT-SIGNATURE` value. Persist both if you need to survive a process restart.
| Situation | Result |
| -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| New id | Verified, executed, settled once; response cached for 15 minutes. |
| Same id, identical request and identical signed payment, within 15 minutes | The cached response is replayed with no second charge and an `X-Idempotent-Replay: true` header. |
| Same id while the first attempt is still in flight | The duplicate waits and receives the same replay. Exactly one settlement. |
| Same id but anything differs — including a newly signed payment | `409 PAYMENT_ID_CONFLICT`. Not charged. Use a fresh id for a new operation. |
| Same id, settled, but the response was too large (over 256 KB) to retain | `409 PAYMENT_ID_CONSUMED`. Charged once, for the original; use a new id. |
| First attempt did not settle | The id is released and may be reused. |
The idempotency store lives in memory on the serving instance with a 15-minute window; treat it as a safety net for retries, not a cache.
## The settlement receipt
A `200` carries a `PAYMENT-RESPONSE` header, base64-encoded JSON:
```json
{ "success": true, "transaction": "", "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", "payer": "" }
```
`transaction` is a real on-chain transfer from `payer` to `payTo`; look it up on the chain's explorer whenever you want to audit what you have spent. If verification passed but settlement failed, the call returns `402 SETTLEMENT_FAILED` with the same header carrying `success: false` and an `errorReason`, and the response body is withheld.
### Payment-layer status codes
| Status | `code` | Meaning | What to do |
| ------ | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 402 | `PAYMENT_REQUIRED` | No payment presented, or the header could not be decoded. | Read `PAYMENT-REQUIRED`, sign, retry. Not a charge. |
| 402 | `PAYMENT_INVALID` | Rejected at verification; `message` says why (insufficient funds, wrong amount, expired or reused authorisation, mismatched `payTo`, no USDC token account, or a compliance decline). | Fix the cause and sign a new payment. Nothing settled. |
| 402 | `SETTLEMENT_FAILED` | Endpoint ran, settlement failed. | Read `errorReason`; for a confirmation timeout or block-height error, confirm on-chain before paying again. |
| 402 | `X402_V1_NOT_ACCEPTED` | Legacy `X-PAYMENT` header (protocol v1). | Use a v2 client. |
| 409 | `PAYMENT_ID_CONFLICT` / `PAYMENT_ID_CONSUMED` | See [Retrying safely](#retrying-safely). | Not charged / charged once. |
| 429 | `RATE_LIMITED` | 30 paid calls per minute per IP, 60 per paying wallet (`X-RateLimit-Scope` says which). | Back off for `Retry-After`. Refused before verification — nothing charged and the signed payment is unspent. |
| 500 | `X402_HANDLER_ERROR` | The endpoint threw after verification. | The verified payment was cancelled. Safe to retry with a new payment. |
| 502 | `X402_SETTLE_TIMEOUT` | Settlement timed out after 60 seconds; the outcome is indeterminate. | **Do not re-sign.** Check your wallet on-chain for a USDC transfer of `amount` to `payTo`. If in doubt, contact support with your `payment-identifier` and the timestamp — a settlement ledger keyed by payer and payment id exists for exactly this case. |
Any other 4xx or 5xx is the endpoint's own response, documented on the [API page](/docs/fortiswap/api#conventions), and is never charged.
## Networks and assets
Payment is accepted in **USDC on Solana mainnet** (Solana transaction fee sponsored — you need no SOL) and **USDC on Base** (you need no ETH). There is no facilitator on X1 today, so payments are not yet accepted in USDC.X; the swaps you build and sign still execute on X1 as usual.
## Discovery
* [`/api/x402/discovery`](https://app.fortiblox.com/api/x402/discovery) — the machine-readable catalog: every priced endpoint with its `accepts[]`, a JSON schema for the request body, and a worked example. New paid routes appear here first; a client that reads the catalog needs no code change when one is added.
* [`/llms.txt`](https://app.fortiblox.com/llms.txt) — a compact plain-text description of the same for language-model agents.
## What the server sees and keeps
Your keys never leave your process. A `PAYMENT-SIGNATURE` authorises one specific amount, asset, receiver, and expiry; the server forwards it for verification and settlement and cannot alter it or spend anything else. Settled payments (payer, network, amount, resource, transaction, payment id) are recorded in a ledger for reconciliation and support. Responses to paid calls are cached for at most 15 minutes to serve replays; request bodies are not stored, only a hash for the idempotency check.
## Support
[support@fortiblox.com](mailto:support@fortiblox.com) or the **Contact support** form in the app footer. Include the endpoint, the network, the `code` from the error body, your `payment-identifier` if you set one, and the `transaction` from `PAYMENT-RESPONSE` if you have one.
---
# Developers and API
URL: /docs/fortiswap/api
> Quote, build, and inspect X1 swaps over HTTP — free with an API key at a published rate limit, or pay-per-call over x402 with no key at all. Real request and response examples, error shape, and fee notes.
# Developers and API
Everything the FortiSwap app does with a quote or a swap transaction is available as a plain HTTP API at:
```
https://app.fortiblox.com
```
A note on onboarding: the app's "sign in, no wallet needed" experience is a feature of the app, not of the API. The API is wallet-address-based — every transaction it builds is for a `payer` public key that your user already controls, and your integration is responsible for that wallet and for signing. The API does not create wallets or hold keys.
One thing is true of every swap built through it, whoever is calling: the server never holds a key. It returns an unsigned, pre-simulated transaction, and the caller signs and broadcasts it. Fee note: every swap carries the 0.25 % protocol fee, already reflected in the quote's `amountOutNet` and the built transaction's `platformFee`, on both tiers below.
## Access tiers
**How to get access**
* **Free key.** Fill in the [request form](https://app.fortiblox.com/developers/request-key) with your project name, website, expected daily request volume, and the wallet you will pay swap fees from — or email the same details to [support@fortiblox.com](mailto:support@fortiblox.com). Keys are issued manually, usually within a business day, and shown once.
* **Partner tier.** Higher limits are available by agreement. Same email; say what volume you need and how you plan to use it.
* **Pay-per-call.** Needs no contact at all: point an x402 client at any priced URL and pay per request.
| | Free key | Partner key | Pay-per-call |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| **Auth** | `X-API-Key: fbfree_…` header | `X-API-Key: fbfree_…` header | None — x402 v2 payment per request |
| **Cost** | No charge beyond the protocol fee on swaps | By agreement; no charge per request beyond the protocol fee on swaps | Per-call USDC price (below), plus the protocol fee on swaps |
| **Limits** | **60 requests per minute** and **3,000 per day**, per key, shared across the endpoints it covers | **600 requests per minute** and **100,000 per day** by default; higher by agreement | Per-call |
| **Endpoints** | `POST /api/quote`, `POST /api/tx/build` | `POST /api/quote`, `POST /api/tx/build` | All five priced endpoints |
| **How to get it** | [Request form](https://app.fortiblox.com/developers/request-key) or email [support@fortiblox.com](mailto:support@fortiblox.com) (see above) | Email [support@fortiblox.com](mailto:support@fortiblox.com) after an agreement | Point an x402 client at any priced URL |
`POST /api/tx/send` and `POST /api/tx/status` are free with no auth on either tier.
### API keys (free and partner)
Send your key on every request. A missing or invalid key is not rejected with a 401 — the request simply falls through to the pay-per-call path and receives a `402`, so if you see `PAYMENT_REQUIRED` on a keyed call, check the header first. Every accepted response carries `X-RateLimit-Limit` and `X-RateLimit-Remaining` for the per-minute window and `X-RateLimit-Daily-Limit` / `X-RateLimit-Daily-Remaining` for the daily one. Exceeding either window returns `429`:
```json
{ "error": true, "message": "Rate limit reached for this key. Free keys allow 60 requests per minute and 3,000 per day; for higher limits contact support@fortiblox.com or use pay-per-call (see /docs/fortiswap/api).", "code": "RATE_LIMITED" }
```
with a `Retry-After` header in seconds. A partner key's message states that key's own limits. A key's tier and limits can be changed without re-issuing it, so an upgrade never requires you to rotate the key.
### Pay-per-call (x402)
The priced endpoints speak the open [x402](https://docs.x402.org) protocol, version 2: request without payment, receive a `402` whose `PAYMENT-REQUIRED` header describes the price, sign a USDC payment, and retry. Payment is accepted in USDC on Solana mainnet or on Base. Prices as published in the live catalog:
| Endpoint | Price per call |
| ------------------------ | -------------- |
| `POST /api/quote` | $0.001 |
| `POST /api/tx/build` | $0.005 |
| `GET /api/tokens` | $0.001 |
| `GET /api/token/{mint}` | $0.001 |
| `GET /api/router/volume` | $0.01 |
The machine-readable catalog — prices, accepted networks, and a JSON schema and example for each endpoint — is served at [`/api/x402/discovery`](https://app.fortiblox.com/api/x402/discovery), and a compact text version for agents at [`/llms.txt`](https://app.fortiblox.com/llms.txt). Point an agent at either and it has everything it needs. The payment handshake itself — reading the 402, signing and retrying, the replay rule, and settlement receipts — is on [Agents: pay-per-call access](/docs/fortiswap/agents).
## Conventions
* All amounts are **raw base units** as strings: `"1000000000"` is 1 XNT (9 decimals), `"1000000"` is 1 USDC.X (6 decimals). Read `decimals` from `/api/tokens` rather than assuming.
* Native XNT is addressed by the wrapped mint `So11111111111111111111111111111111111111112`; wrapping and unwrapping are handled inside the built transaction.
* Every error, on every endpoint, has the same shape:
```json
{ "error": true, "message": "inputMint and outputMint required", "code": "BAD_REQUEST" }
```
| Status | `code` | Meaning |
| ------ | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| 400 | `BAD_REQUEST` | Missing or malformed field; `message` says which |
| 404 | `NO_ROUTE` | No route between the two mints for that amount |
| 409 | `QUOTE_EXPIRED` | The quote's slot window has passed; re-quote |
| 422 | `OUTPUT_TOO_SMALL` | Every route's output rounds below 1 raw unit of the output token at this size; `message` names the approximate minimum input when it can be derived |
| 422 | `SIMULATION_FAILED` | The built transaction failed simulation; `details` carries the program logs and error |
| 429 | `RATE_LIMITED` | Key window exceeded; honour `Retry-After` and read `message` for the key's limits |
| 503 | `ROUTES_WARMING` | Route data is still loading after a restart; retry shortly |
`POST /api/tx/build` can additionally return every code in [Build errors in detail](#build-errors-in-detail) below — it shares the routing engine with `/api/quote` but adds build- and simulation-specific failure modes.
## `POST /api/quote`
Returns the best route for an exact input amount, with the alternatives it beat.
**Request**
```json
{
"inputMint": "So11111111111111111111111111111111111111112",
"outputMint": "B69chRzqzDCmdB5WYB8NRu5Yv5ZA95ABiZcdzCgGm9Tq",
"amountIn": "1000000000",
"slippageBps": 50
}
```
`slippageBps` is optional; without it the server picks a dynamic slippage for the pair and reports it. `maxHops` (1–4, default 4) caps route length. For a fixed output amount send `amountOut` with `"mode": "exactOut"` instead of `amountIn`.
**Response** (trimmed — the live response also carries the full alternative and split analysis)
```json
{
"mode": "exactIn",
"inputMint": "So11111111111111111111111111111111111111112",
"outputMint": "B69chRzqzDCmdB5WYB8NRu5Yv5ZA95ABiZcdzCgGm9Tq",
"amountIn": "1000000000",
"amountOut": "384467",
"amountOutNet": "383505",
"minimumAmountOut": "383044",
"slippageBps": 12,
"slippageDynamic": true,
"priceImpactPct": 0.00510352,
"hops": 1,
"highImpact": false,
"thinLiquidity": false,
"warnings": [],
"route": [
{
"venue": "xdex",
"address": "CAJeVEoSm1QQZccnCqYu9cnNF7TTD2fcUA3E5HQoxRvR",
"inMint": "So11111111111111111111111111111111111111112",
"outMint": "B69chRzqzDCmdB5WYB8NRu5Yv5ZA95ABiZcdzCgGm9Tq",
"feePpm": 2800,
"priceImpactPct": 0.00510352,
"amountIn": "1000000000",
"amountOut": "384467"
}
],
"fee": { "bps": 25, "amount": "962", "pct": 0.25, "net": "383505", "enforcedOnChain": false },
"confidence": { "score": 100, "level": "high", "band": "excellent" },
"safety": { "level": "safe", "reasons": [] },
"asOfSlot": 75215315,
"validUntilSlot": 75215360,
"ttlMs": 17000,
"expiresAt": 1788055353341
}
```
Field notes:
* `amountOut` is the gross pool output; `amountOutNet` is after the 25 bps fee and is what the wallet receives; `minimumAmountOut` is the post-fee floor at the reported slippage.
* `warnings[]` carries `HIGH_PRICE_IMPACT` and `THIN_LIQUIDITY` entries with human-readable messages — show them; the app does.
* `route[]` is the chosen path hop by hop, with each pool's own fee as `feePpm`. `hops` and, where a route split is used, `split`/`splitAmountOut` describe the shape; show them alongside the price so users can see what they are getting.
* `fee.enforcedOnChain` in a **quote** is a conservative preview; the authoritative flag is `feeEnforcedOnChain` on the **built transaction**, where the execution path is known. The amount is the same either way.
* `validUntilSlot` / `ttlMs` bound the quote's life. Build promptly, or expect `QUOTE_EXPIRED` and re-quote.
### Exact-out quotes
Send `amountOut` and `"mode": "exactOut"` instead of `amountIn` to ask "how much input do I need to receive exactly this much output?" — useful when the user is typing into the *receive* box, or when a downstream step needs an exact output amount.
```json
{
"inputMint": "So11111111111111111111111111111111111111112",
"outputMint": "B69chRzqzDCmdB5WYB8NRu5Yv5ZA95ABiZcdzCgGm9Tq",
"amountOut": "384467",
"mode": "exactOut"
}
```
The response carries the same fields as an exact-in quote, with `amountIn` as the computed input and `maxAmountIn` as the worst-case spend at the reported slippage — the figure to show as "you pay up to". `amountOut` in the response is the amount you asked for; `amountOutNet` is what you actually receive after the protocol fee. Exact-out is not available on every deployment: when the on-chain router is required for execution, exact-out is refused at build time with `EXACT_OUT_UNSUPPORTED_WITH_ROUTER` (see [Build errors in detail](#build-errors-in-detail)) because the router has no exact-out instruction — quote in exact-out for pricing, but be ready to fall back to exact-in for the build.
### Simulate before you quote
Add `"simulate": true` and `"payer": ""` to have the server build and simulate the chosen route against the real chain before returning the quote, and fall through to the next-best alternative if the top-ranked route fails simulation. This costs an extra RPC round trip, so it is opt-in — use it when you want a quote you can be confident will actually build, for example immediately before showing a "Review" screen.
```json
{
"inputMint": "So11111111111111111111111111111111111111112",
"outputMint": "B69chRzqzDCmdB5WYB8NRu5Yv5ZA95ABiZcdzCgGm9Tq",
"amountIn": "1000000000",
"simulate": true,
"payer": "YOUR_WALLET_PUBLIC_KEY"
}
```
The response adds two fields: `simulated` (the simulation result, or `null` if `simulate` wasn't set or no `payer` was given) and `executable` (`true`/`false` once a route has been simulated, `null` otherwise). If simulation promotes an alternative over the pathfinder's top pick, every field in the response — `route`, `amountOut`, slippage, impact, `explanation` — describes the route that actually simulated successfully, never the original best guess with `executable: true` bolted on.
## `POST /api/tx/build`
Builds an unsigned X1 transaction for the route, simulates it, and returns it as base64.
**Request**
```json
{
"inputMint": "So11111111111111111111111111111111111111112",
"outputMint": "B69chRzqzDCmdB5WYB8NRu5Yv5ZA95ABiZcdzCgGm9Tq",
"amountIn": "100000000",
"payer": "YOUR_WALLET_PUBLIC_KEY",
"slippageBps": 50,
"priorityFeeMicroLamports": 1000
}
```
`payer` is the wallet that will sign; it must exist on X1 with enough XNT for the swap and fees, or simulation fails with `SIMULATION_FAILED` (`"AccountNotFound"`). Optional fields: `mode: "exactOut"` with `amountOut` instead of `amountIn` (see [Exact-out quotes](#exact-out-quotes) — not available on every deployment, see the error table below), `priorityFeeMicroLamports` (price per compute unit) or `priorityFeeLamports` (a total priority-fee budget), `maxHops`, `validUntilSlot` from a prior quote, `keepWrappedOutput: true` to receive WXNT instead of the automatic unwrap to native XNT on an XNT-output swap, and `acknowledgeHighImpact: true` to build a route the quote flagged as high impact.
**Response** (trimmed)
```json
{
"transaction": "",
"mode": "exactIn",
"expectedOut": "38448",
"minOut": "38159",
"feeApplied": true,
"feeAmount": "97",
"platformFee": { "bps": 25, "percent": "0.25", "amountToken": "97" },
"feeEnforcedOnChain": true,
"slippageBps": 50,
"computeUnitLimit": 135000,
"txSize": 623,
"hopsUsed": 4,
"safety": { "level": "safe", "reasons": [] },
"blockhash": "2CHhD97ULLfCp2cU8XPZjtKJKXhDRryxCzRqgdywDtfT",
"lastValidBlockHeight": 74735924,
"simulation": { "unitsConsumed": 88536 },
"route": {
"split": false,
"parts": [ { "legs": [ { "venue": "xdex", "address": "CAJeVEoSm1QQZccnCqYu9cnNF7TTD2fcUA3E5HQoxRvR", "amountIn": "100000000", "amountOut": "38448" } ] } ],
"amountIn": "100000000",
"amountOut": "38448",
"priceImpactPct": 0.00051035
}
}
```
Deserialize `transaction` as a versioned (v0) transaction, sign it with the payer's key, and broadcast it — either to X1 directly or through [`POST /api/tx/send`](#post-apitxsend), then poll [`POST /api/tx/status`](#post-apitxstatus).
### Build errors in detail
`/api/tx/build` shares its routing engine with `/api/quote`, so it can return every code on the [conventions error table](#conventions) above, plus these build- and simulation-specific ones:
| Status | `code` | Meaning | What to do |
| ------ | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| 400 | `EXACT_OUT_UNSUPPORTED_WITH_ROUTER` | This deployment requires the on-chain router for execution, and the router has no exact-out instruction | Use `mode: "exactIn"` |
| 400 | `INTEGRATOR_FEE_DISABLED` | `integratorFeeBps` / `integratorFeeRecipient` was sent but integrator fees aren't enabled on this deployment | Omit both fields, or contact support |
| 422 | `TX_TOO_LARGE` | Every buildable route exceeds the network's transaction size limit | Reduce `maxHops`, or try a simpler pair |
| 422 | `HIGH_PRICE_IMPACT` | The best buildable route exceeds the price-impact cap and `acknowledgeHighImpact` wasn't set | Re-quote for a smaller amount, or set `acknowledgeHighImpact: true` |
| 422 | `IMPACT_CEILING` | Every buildable route exceeds the hard impact ceiling — refused even when acknowledged | Reduce the trade size; there is no override |
| 422 | `ROUTER_INELIGIBLE` | This deployment requires the on-chain router and no candidate route can execute through it | Try a different pair or amount |
| 422 | `INSUFFICIENT_FUNDS` | `payer` doesn't hold enough of the input token to cover this trade | Fund the wallet, or reduce the amount |
| 422 | `INSUFFICIENT_GAS` | `payer` doesn't hold enough XNT for network fees and any new token accounts the route needs | Fund the wallet with a little XNT |
| 422 | `ROUTER_FEE_MISMATCH` | An internal check on the simulated transaction's on-chain fee didn't match what was expected; nothing is returned | Retry — never a transaction you should sign |
| 422 | `ROUTER_STALE_INSTRUCTION` | Your client is calling an on-chain router entrypoint that has since been retired by a program upgrade | Update or reload your client / SDK |
| 503 | `ROUTER_PAUSED` | The on-chain router is paused | Wait and retry — nothing you can change client-side |
| 503 | `GUARD_UNAVAILABLE` | A safety check the route needs couldn't be completed (usually an RPC hiccup) | Retry |
| 500 | `LEG_CHAIN_VIOLATION` | An internal consistency check on the route's legs failed before anything was built | Retry; contact support if it persists |
Every one of these is returned **before** a transaction reaches your wallet — none of them are things you sign and then discover are wrong.
## Earn on the swaps you route
An app that builds swaps through the API can take a fee of its own on each one. Add two fields to `POST /api/tx/build`:
* `integratorFeeBps` — an integer from 1 to 300 (0.01 % to 3 %).
* `integratorFeeRecipient` — the wallet address that receives the fee.
Send both or neither. The fee is taken from the swap's output in the same transaction as the swap, on top of FortiSwap's 0.25 %, and delivered to the recipient's token account for the output token. It works on both tiers, and a request without these fields behaves exactly as before.
**Request**
```json
{
"inputMint": "So11111111111111111111111111111111111111112",
"outputMint": "B69chRzqzDCmdB5WYB8NRu5Yv5ZA95ABiZcdzCgGm9Tq",
"amountIn": "100000000",
"payer": "YOUR_WALLET_PUBLIC_KEY",
"integratorFeeBps": 100,
"integratorFeeRecipient": "YOUR_FEE_WALLET"
}
```
**Response** (trimmed)
```json
{
"transaction": "…",
"expectedOut": "37090",
"minOut": "36586",
"feeApplied": true,
"feeAmount": "93",
"platformFee": { "bps": 25, "percent": "0.25", "amountToken": "93" },
"integratorFee": { "bps": 100, "percent": "1", "amountToken": "370", "recipient": "YOUR_FEE_WALLET" },
"feeEnforcedOnChain": true,
"hopsUsed": 4
}
```
`integratorFee` reports what your app earns on this swap; `feeAmount` and `platformFee` remain FortiSwap's own fee only.
The recipient must already hold a token account for the output token — the build never creates one. If it is missing, the build fails with `422 INTEGRATOR_FEE_DESTINATION_MISSING`, and the message names the exact account to create:
```text
integrator fee destination for mint does not exist — create the associated token account for first
```
The response also carries `integratorFeeDestination`, `outputMint`, and `tokenProgram` as separate fields. If the account check itself cannot run, the build returns `503 INTEGRATOR_FEE_DESTINATION_UNVERIFIED`; retry. An `integratorFeeBps` outside 1–300, or either field without the other, is `400 BAD_REQUEST`.
### MEV protection via the API
The app's MEV-protection toggle is not a private relay; X1 has no public mempool, and every swap reverts on-chain if it fills worse than its slippage. What the toggle does is cap effective slippage at 5 % so a sandwich has little room to profit. An integrator reproduces it by sending a tight `slippageBps` (500 or lower; the app's auto value is a good ceiling, and the quote's dynamic value is often far tighter) and a priority-fee budget (`priorityFeeLamports`, or `priorityFeeMicroLamports` per compute unit) so the transaction lands promptly inside its quote window. There is no separate flag to set.
## `POST /api/tx/send`
Broadcasts an already-signed transaction to X1. Free, with no API key, on both tiers — this route never touches a key and never builds anything; it exists for a wallet whose injected provider only implements `signTransaction` (not `signAndSendTransaction`), so your client signs locally and hands the signed bytes here instead of talking to an RPC endpoint itself.
**Request**
```json
{ "transaction": "" }
```
**Response**
```json
{ "signature": "5j7s…s1Kz" }
```
| Status | `code` | Meaning |
| ------ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| 400 | `BAD_REQUEST` | `transaction` is missing, not a string, or not plausible base64/size for a signed transaction |
| 400 | `UNSIGNED_TX` | The bytes decode to a transaction, but it carries no signature |
| 429 | `RATE_LIMITED` | This route has its own limits, separate from your API key's: **30 requests per minute per caller** and **20 per minute per signing wallet** |
| 502 | `SEND_FAILED` | The signed transaction could not be broadcast to X1; `message` carries the underlying reason |
This route only ever relays a transaction you already have a valid signature for — it never signs, never modifies, and never holds a key of its own.
## `POST /api/tx/status`
Looks up the confirmation status of one or more transaction signatures — poll this after `POST /api/tx/send` (or after broadcasting yourself) to know when a swap has landed. Free, with no API key, on both tiers.
**Request**
```json
{ "signatures": ["5j7s…s1Kz"] }
```
`signatures` takes 1 to 10 signature strings per call.
**Response**
```json
{
"statuses": [
{ "slot": 75215320, "confirmations": null, "err": null, "confirmationStatus": "finalized" }
]
}
```
`statuses` is positional — one entry per signature you sent, in the same order, `null` where X1 has no record of that signature (not yet landed, or too old to still be indexed). `confirmationStatus` is `"processed"`, `"confirmed"`, or `"finalized"`; `err` is `null` for a successful transaction or the on-chain error otherwise. `confirmations` is `null` once a transaction reaches `"finalized"`.
| Status | `code` | Meaning |
| ------ | ------------- | -------------------------------------------------------------------------------------------------------------------- |
| 400 | `BAD_REQUEST` | `signatures` is missing, empty, has more than 10 entries, or contains something that isn't a signature-shaped string |
| 502 | `RPC_ERROR` | The status lookup itself failed; retry |
## `GET /api/tokens`
Every token FortiSwap routes on X1, with price and market data. Call it first to resolve a symbol to a mint.
```json
{
"updatedAt": 1788055263960,
"refreshing": false,
"warming": false,
"tokens": [
{
"mint": "So11111111111111111111111111111111111111112",
"symbol": "XNT",
"name": "XNT",
"decimals": 9,
"priceUsd": 0.3856,
"logoURI": "https://app.xdex.xyz/assets/images/tokens/x1.webp",
"sources": ["xdex"],
"volume24hUsd": 10947.11,
"fdvUsd": 412532004.52,
"marketCapUsd": 5372658.76,
"change1h": 0,
"change1d": -1.47,
"sparkline": [ "…" ],
"trust": "verified"
}
],
"errors": []
}
```
`trust` is one of `verified`, `community`, `new`, `caution`, `danger`. The live list held 192 tokens at the time of writing.
## `GET /api/token/{mint}`
Detail for one mint: price, 24-hour change, market cap and FDV, TVL, 52-week range, project links, and the pools it trades in.
```
GET /api/token/B69chRzqzDCmdB5WYB8NRu5Yv5ZA95ABiZcdzCgGm9Tq
```
```json
{
"mint": "B69chRzqzDCmdB5WYB8NRu5Yv5ZA95ABiZcdzCgGm9Tq",
"listed": true,
"symbol": "USDC.X",
"name": "USDC.X",
"decimals": 6,
"priceUsd": 1,
"change24hPct": -0.67,
"trust": "verified",
"stats": {
"tvlUsd": 16040.12,
"marketCapUsd": 59823.14,
"fdvUsd": 59823.14,
"volume24hUsd": 3295.49,
"high52wUsd": 1.2913,
"low52wUsd": 0.1557
},
"about": { "description": null, "website": null, "twitter": null, "telegram": null },
"pools": [
{
"address": "CAJeVEoSm1QQZccnCqYu9cnNF7TTD2fcUA3E5HQoxRvR",
"tokenA": "WXNT",
"tokenB": "USDC.X",
"tvl": 15109.84,
"apr24h": 22.01,
"vol24h": 3292.21
}
],
"updatedAt": 1788055263960
}
```
An address that is not a valid mint returns `400 BAD_REQUEST` with `"invalid mint"`.
## Volume statistics
Daily FortiSwap trading volume on X1, from FortiBlox's own indexer of on-chain events. `?days=` takes 1–365 (default 90). Responses are cached for 60 seconds.
```json
{
"ok": true,
"days": 90,
"from": "2026-06-02",
"to": "2026-08-30",
"buckets": [
{ "date": "2026-08-29", "txCount": 1, "volumeUsd": 12.85, "feeUsd": 0.0321, "uniqueUsers": 1, "pricedShare": 1 },
{ "date": "2026-08-30", "txCount": 2, "volumeUsd": 1.52, "feeUsd": 0.0038, "uniqueUsers": 1, "pricedShare": 1 }
],
"totals": { "txCount": 87, "volumeUsd": 679.65, "feeUsd": 1.6991, "pricedShare": 1 },
"updatedAt": 1788055287216
}
```
`feeUsd` is the protocol fee observed on-chain for that day's swaps; `pricedShare` is the fraction of the day's swaps for which a USD price was available.
## Support
Questions and integration help: [support@fortiblox.com](mailto:support@fortiblox.com) or the **Contact support** form in the app footer. Key requests: the [request form](https://app.fortiblox.com/developers/request-key).
---
# Using FortiSwap on Arc (testnet)
URL: /docs/fortiswap/arc
> The Arc walkthrough — sign in, get free testnet USDC from Circle's faucet, swap, and bridge — with plain-language explanations of what just happened at each step. Then the deeper reference — how the bridge stays safe, choosing how a swap settles, pools, and orders on Arc.
# Using FortiSwap on Arc (testnet)
The app at [app.fortiblox.com](https://app.fortiblox.com) opens on the **Arc** tab by default. **Arc** is a new blockchain built by Circle, the company behind USDC — and on Arc, USDC *is* the network's own currency, so the same token you hold also pays the small network fee, with no separate gas coin to keep topped up. Swap, Bridge, and on-chain Orders all work on Arc today.
Everything in this walkthrough runs on Arc's **test network**. It moves **test funds, not real money**, and every part of it is marked **TESTNET**. It is here so the flow is ready and proven the day Arc's main network opens — until then, nothing you do here has real-world value. If you want the walkthrough for real money today, X1 is FortiSwap's established network — see [Using FortiSwap](/docs/fortiswap/how-to).
## Your first minute on Arc
### Sign in
Press **Connect** in the top-right corner and choose **Email or social login**. Sign in with your email address, Google, X, Discord, GitHub, Telegram, or a passkey.
**What just happened.** FortiSwap created a wallet for you that works on any EVM network, including Arc — the same wallet you would use on Ethereum or Base. There is nothing to download and nothing to write down, and the key is split across secure hardware so that only you can use it. Sign in again from any device and it is there.
### Get testnet USDC
Arc has no fiat on-ramp yet, so you cannot buy USDC with a card here — instead, get it for free. Open [faucet.circle.com](https://faucet.circle.com), Circle's own testnet faucet, select **Arc Testnet**, and paste your wallet address (open your wallet from the top-right corner in FortiSwap to copy it). The faucet sends a small amount of test USDC directly to your wallet — nothing to buy, nothing to bridge in.
**What just happened.** That same balance now covers everything you do next: because USDC is Arc's own gas token, the test USDC you received pays both the amount you swap or bridge *and* the small network fee, with no second token to request separately.
### Swap
Open the **Swap** tab with Arc selected. Pick the token you are paying with and the token you want — for example USDC for EURC, Circle's euro-pegged token — and enter an amount. Choose **Switch wallet to Arc** if prompted (a one-time step that adds Arc to your wallet), then press **Swap** and approve.
**What just happened.** FortiSwap can settle an Arc swap through more than one venue and picks the best-priced one for you by default — see [Choosing how a swap settles](#choosing-how-a-swap-settles) below. The swapped token arrives in the same wallet, and the step shows a link to Arc's own block explorer so you can follow it yourself.
### Bridge (optional)
Open the **Bridge** tab, enter an amount of test USDC, and pick a destination test network — Base, Arbitrum, or Optimism Sepolia. Switch your wallet to Arc if you have not already, then press **Bridge** and approve.
**What just happened.** Your USDC is burned on Arc, Circle attests to it, and the same amount is minted for you on the destination — each leg shown with its own explorer link. This is FortiBlox's own step-by-step implementation of Circle's cross-chain transfer protocol (CCTP), built so a transfer can never be stranded partway through — see [How the bridge stays safe](#how-the-bridge-stays-safe) below.
### Done
Your new balance shows in the card and in your wallet. Every swap or transfer you make on Arc is visible on [ArcScan](https://testnet.arcscan.app), Arc's own testnet explorer, with your wallet as the signer. Arc also has real on-chain limit orders under the same **Orders** tab used on X1 — see [Orders on Arc](#orders-on-arc) below.
## How the bridge stays safe
The Arc bridge is FortiBlox's own implementation of CCTP, built step by step rather than as one all-in-one call — Circle's own attestation leg can take a few minutes, and a single monolithic transfer had no way to recover if you closed the tab or reloaded during that wait. Each leg (burn, attestation, mint) is tracked and saved on its own, so if anything interrupts the transfer after your USDC is burned, it shows up as an unfinished transfer you can resume — your funds are never stranded, only waiting for the last step.
Minting on the destination network also needs a small amount of that network's own gas token. FortiSwap checks your destination balance for you and, if you are short, tops it up automatically from a testnet faucet before asking your wallet to sign the mint — in most cases you will not need to think about destination gas at all. If the auto top-up is not available (the faucet is rate-limited, or the destination network is not one it supports), the app tells you plainly and links you to a public faucet instead; your burned USDC is already saved and waiting, and a **Complete mint** button finishes the transfer as soon as you are funded.
## Choosing how a swap settles
A swap on Arc can be filled through more than one venue: FortiBlox's own on-chain **Aggregator route**, **Circle App Kit** (Circle's own swap contract), or **Circle StableFX** as it becomes available. By default FortiSwap picks whichever venue gets you the best price (**Auto**), but you can choose a specific venue instead — in Settings, or from the review screen before you confirm — and see how it compares to the alternatives before you sign.
## A note on network fees
Arc's test network can have **large, fast-moving fees** — this is normal for a young network and does not happen on established chains. FortiSwap sets a fee with enough headroom to get your transaction through, but it means a transfer can reserve more test USDC up front than it finally spends. Keep a comfortable balance of test USDC beyond the amount you are moving — get more any time from [faucet.circle.com](https://faucet.circle.com) — and a transfer will not stall.
## Pools on Arc
Arc pool pages show who is providing liquidity: a pool page lists LP holders for a standard (V2-style) pool, or the open concentrated-liquidity positions for a V3-style pool — never both, since each pool is only ever one kind. This data comes from an Arc indexer that is still backfilling history, so it is honest about being incomplete while that catches up: a holders table under active backfill says so and shows holders as of the block it has indexed so far, and the positions table carries the same caveat that more positions may appear as indexing continues.
## Orders on Arc
Arc also has on-chain limit orders, filled by an off-chain keeper against a limit-order contract on Arc — the same **Orders** tab used for X1, with Arc selectable as the network, and the same order types described in [Orders](/docs/fortiswap/how-to#orders). This is real, end-to-end order execution, not a placeholder — like the rest of the Arc tab, it is testnet-only, so nothing filled here is real money.
## What changes at mainnet launch
When Arc's main network goes live, this tab moves from test funds to real USDC on real Arc — the same modes, the same flow, with the **TESTNET** marking removed. Nothing about how you use it changes.
---
# Why FortiSwap
URL: /docs/fortiswap/benefits
> Start in a minute with an account you already have and wallets created for you; keep full ownership; get best execution with the route in plain sight, warnings before you confirm, and card, bank, and cross-chain access — on X1's live mainnet or Arc's testnet preview.
# Why FortiSwap
FortiSwap runs on two networks: **X1**, its established network where real money moves today, and **Arc**, Circle's new chain — the network the app opens to by default, but currently a **testnet preview** only. Everything below applies to both unless it says otherwise.
## Start in a minute, with an account you already have
Most crypto apps begin with homework: install a wallet, write down a recovery phrase, learn what a network is, work out how to get funds in. FortiSwap begins with a sign-in button. Use your email address, Google, X, Discord, GitHub, Telegram, or a passkey, and you are in. The wallets you need are created for you at that moment — one for X1 (which also works on Solana) and one for EVM chains, which is the same wallet Arc uses — and FortiSwap looks after them so you never have to think about them.
There is nothing to install and nothing to write down. Signing in again from another device brings the same wallets back. When you are ready for more, you can add another wallet, import one you already have, or export your keys and move to any wallet you like. Starting easy does not lock you in.
## You own it, and you can prove it
The wallets created for you are yours in the strict sense. Your key is split across secure hardware so that only you can use it; FortiSwap cannot spend from it, and neither can anyone at FortiBlox. Every purchase, swap, and transfer goes straight from your wallet to the network and is visible on a public explorer with your wallet as the signer. There is no FortiSwap balance to withdraw from, because FortiSwap never holds a balance for you.
## The chain stays in the back end
Under a swap there is a stack of detail — wrapping the native token, opening token accounts, keeping enough of the network's fee token on hand, choosing pools, setting a slippage floor, signing and broadcasting. On X1 that fee token is XNT; on Arc, USDC itself pays the fee, so there is nothing separate to keep topped up. FortiSwap does all of it either way. What you see is a card with two boxes: what you pay and what you receive. What you do is confirm.
When a detail matters to you it is there — the review screen shows the route, the guaranteed minimum, and the full cost — but nothing asks you to understand it before you can proceed.
## Best execution, with the route in plain sight
On X1, liquidity is spread across pools, and the best price for a given size is rarely the obvious direct pair. FortiSwap quotes every viable route for your exact amount — direct, multi-hop, and split across pools — and picks the one with the highest **net** output after every fee, including its own. The quote you see is the amount you receive; there is no separate fee line to subtract afterwards.
The route is never a black box. The review screen shows which venues the swap touches, how many hops it takes, whether it was split and in what proportion, and how much the chosen route saved against a plain direct swap. The same information is returned field-for-field through the [API](/docs/fortiswap/api), so an integrator can show its users exactly what the app shows.
Arc's swap works differently, because Arc's liquidity is shaped differently: a swap there can settle through more than one **venue** — FortiBlox's own on-chain aggregator, Circle App Kit, or Circle StableFX — and FortiSwap picks the best-priced one by default, or lets you choose. See [Choosing how a swap settles](/docs/fortiswap/arc#choosing-how-a-swap-settles) on the Arc walkthrough.
## Warnings before you confirm, not after
FortiSwap treats a risky trade as something to surface, not something to quietly execute.
* **Price-impact grading.** Every quote carries its price impact — how much your own trade moves the price. Above 5 % you get a notice; between 10 % and 20 % you must tick an acknowledgement before the review screen opens; at 20 % and above the swap is disabled unless you deliberately enable Expert mode. Above the 25 % safety cap no route is offered at all.
* **Thin-liquidity warnings.** When a pool is too shallow for your size, the card says so and suggests a slippage sized to the pool, instead of letting the trade fail or fill badly.
* **Quote freshness.** Quotes refresh every 10 seconds with a visible countdown, and each one carries an expiry on-chain. A stale quote is never submitted.
* **Slippage that is a floor, not a fee.** Auto slippage is 5 %; you can set anything from 0.01 % to 50 %. The minimum-received figure on the review screen is the guaranteed floor — the swap reverts on-chain if it would fill below it.
* **MEV protection.** On by default. It caps your effective slippage at 5 % regardless of a higher custom setting, so a front-running bot has little room to profit. It does not claim to rule out all MEV.
* **Token trust tiers.** Every listed token carries a tier — Verified, Community, New, Caution, or Danger — derived from on-chain signals, shown in the picker and in the token data endpoint.
## Buy and sell with a card or bank account
In supported regions the Buy and Sell tabs let you purchase USDC with a debit or credit card or a bank transfer, delivered to your own wallet, and sell it back for a bank payout. FortiSwap compares the available payment options live and ranks them by how much you actually receive. Identity checks and payment processing are done by the regulated payment partner you choose; FortiSwap never sees your card details. This is **X1-only** for now — Arc has no fiat ramp yet, so Buy and Sell point you back to X1 when Arc is selected.
## In and out of X1 — or between Arc and its own test networks
The Bridge tab brings USDC onto X1 from Solana and from the major EVM chains, and takes it back out. Routes are quoted with their full cost up front — the bridge's own fee is a line in the quote, not a surprise on arrival — and the destination address is fixed inside the transaction you confirm.
Arc has its own bridge, to a different set of destinations: it moves test USDC between Arc and Base, Arbitrum, or Optimism Sepolia using Circle's CCTP, built step by step so a transfer is never stranded mid-way. See [Using FortiSwap on Arc (testnet)](/docs/fortiswap/arc).
## Orders that live on-chain
Limit, stop-loss, take-profit, bracket (OCO), recurring (DCA and TWAP), trailing stop, and ladder orders all rest **on-chain**, on X1 or on Arc. There is no server-side watcher that dies when your tab closes and no custody handoff: an order can only ever fill at your minimum or better, or it reverts, and you can cancel it whenever you like. On Arc this is real, end-to-end order execution — just against test funds, like the rest of the Arc tab.
## One API, two ways to pay
Everything the app does with a quote or a transaction on X1 is available over HTTP — free with an API key at a published rate limit, or per-call with no key at all over the open x402 payment protocol. Both tiers build the same transactions the app does, with the same fee. See [Developers and API](/docs/fortiswap/api).
---
# Common questions
URL: /docs/fortiswap/faq
> Everything a FortiSwap user or integrator asks — signing in and wallets, fees, swapping and slippage, bridging, orders, buying and selling with a card or bank, the Arc testnet preview, and the API.
# Common questions
## The basics
FortiSwap ([app.fortiblox.com](https://app.fortiblox.com)) is a swap, bridge, and on/off-ramp app that runs on two networks: **X1**, a Solana-compatible chain, and **Arc**, Circle's new chain. You sign in with an account you already have, get wallets created for you automatically, and swap, bridge, and buy or sell crypto without installing anything or writing down a recovery phrase. See [Why FortiSwap](/docs/fortiswap/benefits).
No. [Using FortiSwap](/docs/fortiswap/how-to) walks through the first minute on X1 — sign in, add funds, swap — with a plain-language explanation of what happens at each step, and [Using FortiSwap on Arc (testnet)](/docs/fortiswap/arc) does the same for Arc. Terms you might not know, like wallet, token, or slippage, are each defined in one line on [Words you'll see](/docs/fortiswap/glossary).
Both are real networks with real functionality — swap, bridge, and on-chain orders all work on each — but they are not at the same stage. **X1** is established and live: real money moves through Swap, Bridge, Orders, Buy, and Sell today. **Arc** is Circle's new chain, built around USDC as its own gas token, and it's the network FortiSwap opens to by default — but only Circle's **test network** is live so far, so everything on Arc moves test funds, not real money, and is marked TESTNET. Arc also has no fiat ramp yet, so Buy and Sell stay on X1. See [Arc (testnet)](/docs/fortiswap/arc).
Opening the app, signing in, and getting wallets costs nothing. Swapping carries FortiSwap's own 0.25% protocol fee, on top of the network's own small fee and, on a bridge or card leg, that provider's fee — see [Fees](/docs/fortiswap/fees) for the complete breakdown. Every fee is shown in the quote before you confirm; nothing is deducted afterward.
## Signing in & wallets
Press **Connect** and choose **Email or social login** — email, Google, X, Discord, GitHub, Telegram, or a passkey. FortiSwap creates a wallet for X1 (which also works on Solana) and one for EVM chains the moment you sign in. Sign in again from any device and the same wallets are there.
You do. The key is split across secure hardware so that only you can use it — not FortiSwap, not FortiBlox. You can export the private key at any time and move to any other wallet app; starting easy doesn't lock you in. See [Security and trust](/docs/fortiswap/security).
Yes. Press **Connect** and pick it from the list — installed wallets show as **Detected**. FortiSwap builds each transaction and your wallet signs it in its own window; nothing happens until you approve there. You can also mix the two: sign in for the wallets FortiSwap creates and connect an external wallet alongside them. See [Bring your own wallet](/docs/fortiswap/how-to#bring-your-own-wallet).
No. FortiSwap is non-custodial: every swap, order, and bridge transaction goes straight from your wallet to the network, and it's visible on a public explorer with your wallet as the signer. There is no FortiSwap-controlled account in the path of your funds — see [Security and trust](/docs/fortiswap/security).
Sign in again from any other device with the same email, social account, or passkey, and your wallets come back — the key material is recoverable through your sign-in method, not stored only on one device. If you connected an external wallet instead, recovering it follows that wallet's own process; FortiSwap never held its key to begin with.
## Fees
A flat **0.25% (25 basis points)** of the output amount, collected on-chain in the same transaction as the swap. The quote already reflects it — `amountOutNet` is what actually reaches your wallet, and the minimum-received figure is computed after the fee. See [Fees](/docs/fortiswap/fees).
Yes, but none of them go to FortiSwap. Each pool a route passes through charges its own swap fee (shown per hop as `feePpm` in the API), and every transaction pays a small network fee — XNT on X1, or test USDC directly on the Arc testnet preview. A bridge or card leg itemises its own provider fee in the quote. Whatever the leg, any fee that goes to FortiBlox is a visible row before you sign, never a deduction after.
No — orders carry the same 0.25% platform fee as a regular swap, shown on the order's review screen, and nothing else.
Yes. An integrator can add up to 3% (300 basis points) of its own on top of FortiSwap's 0.25%, shown as its own `integratorFee` line in the build response — never folded into FortiSwap's fee. See [Earn on the swaps you route](/docs/fortiswap/api#earn-on-the-swaps-you-route).
## Swapping & slippage
It searches every pool on X1 where your two tokens (directly or through intermediate hops) trade, including splitting a single swap across more than one route when that nets out ahead, and picks whichever gets you the highest **net** output after every fee, including its own. The review screen shows the venues, hop count, and any split so the route is never a black box.
Slippage is the gap between the price you were quoted and the price you actually get if the market moves before your trade lands. It's a **floor**, not a fee: if the fill would come in worse than your slippage setting, the swap reverts on-chain instead of filling badly. The default is Auto (about 5%), and you can set anything from 0.01% to 50% in Settings; the card suggests a pair-specific value on thin pools rather than making you guess.
Price impact is how much your own trade moves the price — small in a deep pool, large in a shallow one. FortiSwap notices above 5%, makes you tick an acknowledgement between 10% and 20%, and disables the swap at 20% and above unless you turn on Expert mode; above a 25% hard cap, no route is offered at all regardless of settings.
X1 has no public mempool, so this isn't a private relay — it caps your **effective slippage at 5%**, even if you've set a higher custom value, so a front-running bot has little room to profit from a sandwich. It's on by default and it's a cap, not a claim that no MEV exists at all. See [MEV protection via the API](/docs/fortiswap/api#mev-protection-via-the-api) for how an integrator reproduces it.
Quotes refresh automatically every 10 seconds in the app and carry a short on-chain expiry window (`validUntilSlot` / `ttlMs` in the API) so a stale quote is never submitted. If you wait too long between quoting and confirming, just quote again — it costs nothing.
Verified, Community, New, Caution, or Danger — derived from on-chain signals about a token, shown in the token picker and in the token API. Treat it as a starting point for your own research, not a verdict; see [Words you'll see](/docs/fortiswap/glossary) for the one-line definition.
## Bridging
Into X1 from Solana or from Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain, Avalanche, Linea, Cronos, HyperEVM, Story, Monad, or Sui; out of X1 to Solana or to those EVM chains. The picker only offers destinations that a source chain can actually reach end to end. TRON is reachable only as a destination from a Solana source, never from X1 directly. See [Bridge in and out](/docs/fortiswap/how-to#bridge-in-and-out).
No. Each corridor is operated by its own independent bridge; FortiSwap quotes the transfer, including that bridge's own fee and estimated time, up front as line items — see [Security and trust](/docs/fortiswap/security#what-fortiswap-does-not-do).
A flat **1 USDC** fee and no FortiBlox fee on top, with a transfer window from an **11 USDC minimum** (10 delivered plus the flat fee) up to **5,000 USDC**, reduced when less liquidity is available. A route from an EVM source instead carries a FortiBlox fee of up to 0.25%, already included in the guaranteed minimum. See [Fees](/docs/fortiswap/fees#bridge-and-fiat-legs).
A bridge transfer is tracked until it lands, and its progress — including any provider-side delay — is shown in the card. If something about a specific transfer looks stuck, contact [support@fortiblox.com](mailto:support@fortiblox.com) with the transaction signature.
## Orders
Limit, stop-loss, take-profit, OCO (one-cancels-the-other), recurring (DCA or TWAP), trailing stop loss, and ladder — each explained with what it does and when to use it on [Orders](/docs/fortiswap/how-to#orders).
Yes. Every order type rests on-chain from the moment you place it — there is no off-chain watcher tied to your browser tab or session. An order fills only at your minimum or better, or it reverts; you can cancel it at any time from the Orders page.
Both spend or sell on a repeating schedule. **Standard** (DCA) splits your total into equal-sized purchases across the schedule — classic dollar-cost averaging. **TWAP** uses the same schedule but slices execution to target reduced price impact per fill rather than a strictly even split. Both accept an optional USD price band that skips a cycle if the market is outside it.
You set a trail distance as a percentage instead of a fixed price. The trigger sits that distance below the market and moves up on-chain as the price makes new highs, then fills once the price retraces back down through it — so it locks in more of a rally the longer you let it run, without resetting a stop by hand.
A Ladder is one on-chain order covering up to eight ascending price rungs, each a portion of your total position. Every rung fills independently once its price is reached, and any unfilled rung can still be cancelled on its own — it scales you out across several targets without you managing several separate orders.
## Buying & selling
Open the **Buy** tab, enter an amount, and pick a payment method — in supported regions, a debit or credit card or a bank transfer. FortiSwap compares the options available in your country side by side, ranked by how much you actually receive, and delivers the funds to your own wallet, not an account FortiSwap holds. See [Add funds](/docs/fortiswap/how-to#add-funds).
No. Identity verification and payment processing are handled entirely by the regulated payment partner you choose; FortiSwap never receives your card details and adds no fee of its own to a card purchase or bank payout. See [Security and trust](/docs/fortiswap/security#what-fortiswap-does-not-do).
Yes, in supported regions — the **Sell** tab turns USDC into a bank payout. Availability, payment methods, and limits vary by country and are set by the payment partner, shown live in the card.
## Arc (testnet preview)
Arc is a testnet-only preview of bridging and swapping USDC on Circle's new Arc network — it moves test funds, not real money, and is marked TESTNET everywhere it appears. It exists so the flow is proven ahead of Arc's mainnet launch. See [Arc (testnet)](/docs/fortiswap/arc).
On Arc, USDC is the network's own currency — the same token you hold also pays the small network fee, so there's no separate gas token to keep topped up, unlike XNT on X1.
The same two modes and the same flow move from test funds to real USDC on real Arc, with the TESTNET marking removed. Nothing about how you use it changes. See [What changes at mainnet launch](/docs/fortiswap/arc#what-changes-at-mainnet-launch).
## Developers & agents
Yes — everything the app does with a quote or a swap transaction is available over plain HTTP, free with an API key at a published rate limit, or pay-per-call with no key at all over the open x402 protocol. See [Developers and API](/docs/fortiswap/api).
Fill in the [request form](https://app.fortiblox.com/developers/request-key) or email [support@fortiblox.com](mailto:support@fortiblox.com) with your project, expected volume, and the wallet you'll pay swap fees from. Free keys are issued by hand, usually within a business day. Higher, partner-tier limits are available by agreement.
Yes. The priced endpoints accept payment per call over x402, version 2 — no key, no sign-up. An agent reads a `402` challenge, signs a small USDC payment, and retries; only a successful response is charged. See [Agents: pay-per-call access](/docs/fortiswap/agents).
They show up first in the machine-readable catalog at [`/api/x402/discovery`](https://app.fortiblox.com/api/x402/discovery) (and the compact [`/llms.txt`](https://app.fortiblox.com/llms.txt) for language-model agents) — a client that reads the catalog needs no code change when a new priced route is added.
Yes. Add `integratorFeeBps` (1 to 300, i.e. 0.01% to 3%) and `integratorFeeRecipient` to `POST /api/tx/build`; the fee is taken from the swap's output in the same transaction, on top of FortiSwap's own 0.25%, and paid directly to your recipient's token account. See [Earn on the swaps you route](/docs/fortiswap/api#earn-on-the-swaps-you-route).
## Questions
Questions: [support@fortiblox.com](mailto:support@fortiblox.com) or the **Contact support** form in the app footer.
---
# Fees
URL: /docs/fortiswap/fees
> The 0.25% protocol fee, pool fees, the network fee, and what bridge and fiat legs add.
# Fees
FortiSwap has one fee of its own and no hidden ones. Everything else you pay goes to the pool, the network, or — on a bridge or fiat leg — the provider that performs it, and each is shown in the quote before you sign.
## The protocol fee: 0.25 %
Every swap pays **0.25 % (25 basis points)** of the output amount to FortiBlox. The quote already reflects it: `amountOut` is the gross pool output, `amountOutNet` is what reaches your wallet, and the minimum-received figure is computed after the fee.
The fee is collected on-chain by FortiSwap's program at `3geAsZiNaWDuTVtTbdWVQRitd55jY4UoWeeBmJFTJZmE`, in the same transaction as the swap, and it is the same whether you use the app or the [API](/docs/fortiswap/api).
Orders carry the same 0.25 % platform fee, shown on the order review screen.
An app that integrates the [API](/docs/fortiswap/api) may add a fee of its own, up to 3 %, on the swaps it builds. It is shown in the build response as `integratorFee`, separately from the protocol fee.
## Pool fees
Each pool a route passes through charges its own swap fee, set by that venue, not by FortiSwap. The quote reports it per hop as `feePpm` (parts per million) — for instance `2800` is 0.28 % — and the route search already accounts for it when ranking routes, so a route with more hops is only chosen when it nets out ahead.
## Network fee
Every transaction also pays a small network fee that goes to the network itself, not to FortiSwap — what it is paid in depends on which network you are using. On **X1**, this is XNT, X1's own token; keep a little in your wallet for it. On **Arc** (currently a testnet preview — see [Arc](/docs/fortiswap/arc)), USDC is Arc's native currency, so the network fee is paid in test USDC directly, out of the same balance you are moving or swapping — there is no separate gas token to hold. FortiSwap's own protocol fee is the 0.25 % above, on top of whichever network's fee applies.
## Bridge and fiat legs
A cross-chain route or a card purchase involves a third party, and that party's fee is itemised in the quote:
* **Bridge routes** show the bridge's own fee and estimated time per route. The Solana ↔ X1 leg carries the bridge's flat **1 USDC** fee and no FortiBlox fee; the transfer window is **11 USDC minimum** (10 delivered plus the flat fee) up to **5,000 USDC**, reduced when less liquidity is available. Routes from an EVM source carry a FortiBlox fee of up to **0.25 %**, already included in the guaranteed minimum and itemised as its own row in the quote.
* **Buy and Sell** show each payment option's total cost, and the options are ranked by what you actually receive after it. Minimums, maximums, and payment methods are the payment partner's and vary by region. FortiSwap adds no fee of its own to a card purchase or bank payout.
Whatever the leg, the rule is the same: any fee that goes to FortiBlox is a visible row before you sign, never a deduction after.
## Fees on Arc
Arc is currently a testnet preview (see [Arc](/docs/fortiswap/arc)), so nothing below moves real money yet, but the fee structure is real:
* **Swap.** A swap settled through the on-chain Aggregator route carries the same 0.25 % protocol fee described above. A swap settled through Circle App Kit instead carries a FortiBlox fee of 25 basis points (0.25 %) on the input amount, on top of Circle's own small provider fee — you can see and compare venues before you confirm; see [Choosing how a swap settles](/docs/fortiswap/arc#choosing-how-a-swap-settles).
* **Bridge.** Moving USDC between Arc and another test network uses Circle's CCTP directly, and it is a pure pass-through — FortiBlox adds no fee of its own to a bridge transfer. (Circle's own CCTP burn fee is currently zero on testnet.)
---
# Words you'll see
URL: /docs/fortiswap/glossary
> Wallet, address, token, network, gas, bridge, slippage, price impact, signing — the handful of words that appear in FortiSwap, each explained in a sentence or two.
# Words you'll see
You do not need any of these to use FortiSwap. They are here for when you meet one on a screen and want to know what it means.
**Wallet.** Your account on a blockchain: the place your funds live and the thing that authorises moving them. When you sign in to FortiSwap, wallets are created for you and looked after for you; you can also bring one you already have. A wallet is controlled by a secret key, and whoever holds the key controls the funds — which is why FortiSwap never holds yours.
**Address.** A wallet's public account number — a long string of letters and digits. Sharing it is safe; it lets people send to you and lets anyone see the wallet's activity on a public explorer, but it cannot be used to spend.
**Token.** A unit of value on a blockchain. Some track a real-world currency (USDC tracks the US dollar), some are a chain's own currency (XNT on X1), and some belong to a project. FortiSwap shows a trust tier next to every token as a starting point for your own judgement.
**Network, or chain.** A blockchain — X1, Solana, Ethereum, Base, and so on. Each keeps its own records, so a token on one chain is not automatically on another; moving between them takes a bridge.
**Network fee, or gas.** The small charge every action on a chain pays to the computers that run it. On **X1** it is paid in XNT, which is why FortiSwap keeps a little XNT back for you. On **Arc**, there is no separate gas token at all — USDC is Arc's own native currency, so the fee comes straight out of the same USDC balance you are moving or swapping (see [Using FortiSwap on Arc (testnet)](/docs/fortiswap/arc)). Either way, it goes to the network, not to FortiSwap.
**Bridge.** A service that moves value from one chain to another. FortiSwap's Bridge tab quotes the transfer, including the bridge's own fee and how long it takes, before you confirm.
**Swap.** Exchanging one token for another. FortiSwap finds the route across every pool on X1 that gives you the most, and shows it to you.
**Pool.** A shared pot of two tokens that anyone can trade against. The price moves as people trade; a large trade in a small pool moves it a lot.
**Price impact.** How much your own trade moves the price. Small in a deep pool, large in a shallow one. FortiSwap warns you above 5 %, asks you to acknowledge between 10 % and 20 %, and stops you at 20 % unless you turn on Expert mode.
**Slippage.** The difference between the price you were quoted and the price you get, because the market moved in the seconds before your trade landed. Your slippage setting is a floor: if the fill would be worse than that, the trade is cancelled on-chain instead of going through.
**Minimum received.** The least you will get from a swap, computed from the quote and your slippage. It is enforced by the network, not by a promise.
**Signing.** Authorising a transaction with your wallet's key. With a sign-in wallet it happens when you press Confirm; with an external wallet it happens in that wallet's own window. Nothing moves until it is signed, and only the key holder can sign.
**Transaction.** One signed action on a chain — a swap, a transfer, an order — with a unique signature you can look up on a public explorer. If you contact support about a specific action, this is the reference to include.
**Non-custodial.** An app that never holds your funds or your key. FortiSwap builds transactions and hands them to your wallet; it cannot spend on your behalf. See [Security and trust](/docs/fortiswap/security).
**Integrator.** An app or service that builds swaps through the FortiSwap [API](/docs/fortiswap/api) for its own users. An integrator may add a fee of its own on top of the protocol fee; it is shown as a separate line in the build response.
**Explorer.** A public website that shows every transaction on a chain. Anyone can look up an address or a transaction; nothing on it is private, and nothing on it can be edited.
**Route.** The specific path a swap takes through one or more pools to get from your input token to your output token. FortiSwap searches every viable route for your exact amount and picks the one with the best net output; the review screen and the [API](/docs/fortiswap/api) both show it.
**Hop.** One leg of a route — a single pool. A **direct** swap is one hop; a **multi-hop** swap chains two or more pools together when that gets you a better price than the direct pair, or when no direct pair exists.
**Split.** When a single swap is divided across two or more routes at once — each portion taking a different path — because that combination out-prices sending the whole amount through any one route alone.
**Confidence.** A score FortiSwap attaches to a quoted route, folding in its price impact, hop count, and how deep the pools behind it are. It's a shorthand for how comfortable you should be with a route, not a guarantee of the outcome.
**Trust tier.** A label FortiSwap shows next to every token — Verified, Community, New, Caution, or Danger — derived from on-chain signals like how long it's traded and how deep its liquidity is. It's a starting point for your own judgement, not a certification.
**Priority fee.** An optional extra payment, on top of the base network fee, that makes a transaction more attractive to land promptly — useful when a network is busy or when you want a swap to beat a fast-moving price. FortiSwap sets a sane default and lets you raise it in Settings.
**Compute unit.** The unit X1 (a Solana-compatible network) measures a transaction's on-chain work in. A swap that touches more pools or does more on-chain logic consumes more compute units; the built transaction reports how many it used.
**x402.** An open, machine-friendly payment protocol built on the HTTP `402 Payment Required` status: a client requests a priced endpoint, receives a `402` describing the price, pays in USDC, and retries the same request with proof of payment attached. It's how FortiSwap's API sells access to automated agents without an account or an API key — see [Agents: pay-per-call access](/docs/fortiswap/agents).
**MEV.** Value a party other than you can extract from a transaction by controlling its order or timing — for example, a bot buying just ahead of your trade and selling just after it. FortiSwap's slippage floor and MEV-protection setting both exist to limit the room for this.
**Simulation.** Running a transaction against the current chain state without actually submitting it, to see whether it would succeed and what it would do. FortiSwap simulates every transaction it builds before handing it to your wallet, so a transaction that would fail is caught and reported instead of being signed.
**DCA (dollar-cost averaging).** Buying (or selling) a fixed amount on a regular schedule instead of all at once, to average into a price over time rather than betting on a single moment. One of the two execution modes for a [Recurring order](/docs/fortiswap/how-to#recurring-dca-and-twap).
**TWAP (time-weighted average price).** A recurring order's other execution mode: slicing the same schedule to reduce the price impact of each individual fill, rather than strictly even amounts.
**OCO (one-cancels-the-other).** A pair of orders — typically a take-profit and a stop-loss — placed together so that whichever fills first automatically cancels the other. See [Orders](/docs/fortiswap/how-to#orders).
---
# Using FortiSwap
URL: /docs/fortiswap/how-to
> The newcomer path — sign in with an account you already have, add funds by card, bank, or transfer, make your first swap — with plain-language explanations of what just happened. Then the bring-your-own-wallet path, bridging, orders, and settings.
# Using FortiSwap
This is the walkthrough for **X1**, FortiSwap's established network, where the money is real. The app at [app.fortiblox.com](https://app.fortiblox.com) has five tabs — **Swap**, **Bridge**, **Orders**, **Buy**, and **Sell** — and one settings panel that applies to all of them. If you have never used a crypto app before, start with the first section and stop when you have what you need. If you already have a wallet, skip to [Bring your own wallet](#bring-your-own-wallet). Looking for **Arc** instead — the network FortiSwap opens to by default, currently a testnet preview? See [Using FortiSwap on Arc (testnet)](/docs/fortiswap/arc).
Words in this guide that may be new — wallet, token, network fee, and so on — each get a one-line definition where they first appear, and all of them are collected on [Words you'll see](/docs/fortiswap/glossary).
## Your first minute
### Sign in
Press **Connect** in the top-right corner and choose **Email or social login**. Sign in with your email address, Google, X, Discord, GitHub, Telegram, or a passkey — whichever you already use.
**What just happened.** FortiSwap created a *wallet* for you: an account on the blockchain that holds your funds, which only you can spend from. You got one for X1 (it also works on Solana) and one for EVM chains such as Ethereum and Base. The key to each wallet is split across secure hardware so that no one — not FortiSwap, not FortiBlox — can use it without you. There is nothing to download and nothing to write down. Sign in again from any device and the same wallets are there.
### Add funds
Open the **Buy** tab, enter an amount, and choose how to pay. In supported regions you can use a debit or credit card or a bank transfer; the card shows the options available in your country side by side, ranked by how much you actually receive. Pick one, complete the payment in its checkout, and the funds appear in your wallet a few minutes later.
If you already hold crypto somewhere else — an exchange, a friend, another wallet — open your wallet from the top-right corner, choose **Receive**, and send to the address shown. An *address* is your wallet's public account number; it is safe to share.
**What just happened.** You bought USDC, a *token* that tracks the US dollar one to one, and it was delivered to your own wallet — not to an account FortiSwap holds for you. The identity check and the payment itself were handled by a regulated payment partner; FortiSwap never sees your card details.
### Swap
Open the **Swap** tab. The top box is what you pay with, the bottom box is what you want. Pick the two tokens, type an amount (or use the **25 % / 50 % / 75 % / MAX** shortcuts), and the card shows what you will receive. Press **Swap**, check the summary, and press **Confirm swap**.
**What just happened.** FortiSwap searched every place on X1 where those two tokens trade, found the route that gives you the most, and sent the trade from your wallet to the network. Because you signed in rather than installing a wallet, confirming happened with one press and no pop-up. The amount shown as **minimum received** was a guarantee: if the market had moved against you by more than that before the trade landed, it would have been cancelled rather than filled badly.
### Done
Your new balance shows in the card and in your wallet. Every trade you make is visible on a public explorer with your wallet as the sender — there is no FortiSwap account in between.
**Keep a little XNT.** XNT is X1's own token, and every action on X1 costs a very small amount of it — the *network fee*, which pays the computers that run the chain. The **MAX** button keeps a reserve back for you automatically, and the card shows a **Low XNT** chip if you are running short. The first time you receive a new token, a small refundable XNT deposit also opens a slot for it in your wallet; FortiSwap handles this for you.
### When you want more
* **Another wallet.** Open your wallet from the top-right corner to add a second wallet, import one you already have, or export the key of the current one and move it to any other wallet app. Signing in easily does not mean staying.
* **Taking funds out.** The **Sell** tab turns USDC into a bank payout in supported regions. The **Bridge** tab moves value to Solana or an EVM chain — see below.
* **A pause before a risky trade.** If a trade would move the price a lot (its *price impact*) or the pool is very small, the card says so before you can continue, and above 20 % impact it stops you unless you turn on Expert mode in Settings. This is deliberate.
## Bring your own wallet
If you already have a wallet that supports X1, press **Connect** and pick it from the list; installed wallets show as **Detected**, and the others offer an install link on desktop or an **Open in …** link on mobile. Your wallet keeps your key, FortiSwap builds each transaction and asks the wallet to sign it, and nothing happens until you approve in the wallet's own window. Closing a review screen without approving sends nothing.
For bridge legs that start on another chain you also connect a wallet on that chain: any Solana-standard wallet for a Solana source, or a browser-extension EVM wallet for an EVM source.
You can also mix the two: sign in for the wallets FortiSwap creates, and connect an external wallet alongside them. The wallet switcher in the top-right corner lists every wallet you have and lets you pick which one a given action uses.
## Swap, in detail
### Pick the pair and amount
Choose the token you pay with and the token you want. Type an amount or use the **25 % / 50 % / 75 % / MAX** shortcuts — MAX keeps back a small XNT reserve so you can still pay network fees. The card shows the live rate and a countdown ring; the quote refreshes every 10 seconds.
### Read the warnings on the card
If the trade's price impact is high or the pool is thin, the card says so before anything else happens. Between 10 % and 20 % impact you tick **I understand and want to continue**; at 20 % and above the swap is disabled unless Expert mode is on.
### Review
Press **Swap** to open the review screen. It shows what you pay and receive, the **minimum received** at your slippage, the price impact, the route (venues, hops, any split, and the saving against a direct swap), a confidence grade, and the fee line — the quote already includes the 0.25 % protocol fee.
### Confirm
Press **Confirm swap**. With a sign-in wallet the trade is signed and sent immediately; with an external wallet, approve it in the wallet's window. The status moves through signing and confirming on X1, and balances in the card and wallet drawer update on their own once the transaction lands.
## Bridge in and out
A *bridge* moves value from one blockchain to another. Open **Bridge**, pick the chain you pay from and the chain you receive on, and the card quotes the transfer with the bridge's fee and estimated time shown as line items.
* **Into X1** from Solana or from Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain, Avalanche, Linea, Cronos, HyperEVM, Story, Monad, or Sui.
* **Out of X1** to Solana or to those EVM chains. The destinations offered for a given source are the corridors that can execute end to end from the card; the picker only lists what will work. (TRON is reachable only as a destination from a Solana source, never from X1.)
If you signed in, the wallets FortiSwap created for you on the source chain are used automatically. Otherwise connect the source-chain wallet when prompted. Confirm the destination address (it is fixed inside the transaction you sign), approve, and wait for the confirmation on the destination chain. The card tracks the transfer until it lands.
## Buy and sell with a card or bank account
**Buy** purchases USDC and delivers it to your wallet; **Sell** turns USDC into a bank payout. Enter an amount and FortiSwap quotes the payment options available in your region side by side, ranked by how much you actually receive after their fees. Pick one and complete the purchase in that partner's checkout — identity verification, payment methods, and limits are theirs and are shown live in the card. Availability, methods, and limits vary by country.
## Orders
Open **Orders** and pick a type from the row of tabs. Every type rests on the same on-chain order engine — the fill condition is what changes from one type to the next, not the guarantee behind it: an order can only ever fill at your minimum or better, or it reverts, there is no off-chain watcher that dies when you close the tab, and you can cancel from the Orders page at any time.
| Type | Fires when |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Limit** | The market crosses your trigger price. Optionally add a take-profit and/or stop-loss to make it a bracket; when both are on they form an OCO and filling one cancels the other. |
| **Stop-loss** | The price falls to your stop. |
| **Take-profit** | The price reaches your target. |
| **Recurring** | On a schedule — standard DCA or TWAP slicing, with an optional price band. |
| **Trailing stop loss** | A stop that ratchets up on-chain as the price climbs and fills on the retrace. |
| **Ladder** | Sells across up to eight ascending take-profit rungs. |
### Limit
Set a trigger rate (output per input) and how much you're selling. Pick an expiry — **Never** (good-til-cancelled), or 1 hour, 1 day, 3 days, 7 days, or 30 days. Optionally tick **Add take-profit** and/or **Add stop-loss** to attach a second trigger without leaving the form: with both ticked, the take-profit must sit above the stop-loss, and together they behave as an OCO (below) riding on the same order.
### Stop-loss and take-profit
A single trigger with a direction: stop-loss fills when the market falls **to or below** your price, take-profit fills when it rises **to or above** it. Use a stop-loss to cap a loss on a position you're already holding, and a take-profit to lock in a gain without watching the chart. Each carries the same expiry choices as a Limit order.
### OCO (one-cancels-the-other)
A take-profit leg and a stop-loss leg placed together as a single pair: whichever triggers first fills, and the other is cancelled automatically — there is no window where both could fill. This is what a Limit order's attached take-profit + stop-loss actually places under the hood; it also exists as its own form if you want to bracket a position you already hold rather than a fresh entry.
### Recurring (DCA and TWAP)
Spend or sell a set amount on a repeating schedule instead of all at once. Choose a direction (buy or sell), how many rounds (2 or more — a fixed count splits your total evenly across rounds, or leave it open-ended to run "until cancelled" at a set amount per cycle), and a frequency in minutes, hours, days, weeks, or months. **Standard** spaces equal-sized purchases evenly across the schedule — classic dollar-cost averaging; **TWAP** targets reduced price impact per slice over the same schedule instead of a strictly even split. An optional USD price band restricts fills to a range you set, so a cycle simply skips if the market is outside it when its turn comes.
### Trailing stop loss
Set a trail distance as a percentage (0.01 % to 50 %) rather than a fixed price. The trigger starts at that distance below the market and ratchets up on-chain as the price climbs to a new high, then fills once the market retraces back down through the trigger — so it locks in more of a rally the longer it runs, without you resetting a stop by hand. A trail tighter than roughly 1 % may not be reliably fillable, since the market needs room to move back through it; the form warns if you set one that tight.
### Ladder
Scale out of a position across up to eight rungs instead of selling all at once at a single target. Each rung is a portion of your total (the portions must add up to 100 %) and a target price, and prices must strictly ascend from the first rung to the last. Every rung fills independently once its price is reached — you don't need every rung to hit before any of them pay out — and any rung that hasn't filled can still be cancelled on its own. Rungs spaced closer than roughly 1 % apart may not both be reliably fillable; the form warns rather than blocks.
### Review and placing
Set your terms, press **Review**, and check the summary — the review draws your trigger lines on a price chart and lists the trigger, what you sell, what you would receive at the trigger, the expiry, and the 0.25 % platform fee. **Approve & Place** signs the order and it rests on-chain from that moment.
## Settings
Open **Settings** from the gear in the top navigation, or by tapping the slippage row on any review screen.
| Setting | Default | Range |
| ------------------ | ---------- | --------------------------------------------------------------------- |
| **Max slippage** | Auto (5 %) | Custom 0.01 % – 50 % |
| **MEV protection** | On | Caps effective slippage at 5 % even when a higher custom value is set |
| **Priority fee** | 0.002 XNT | Up to 0.5 XNT |
| **Max hops** | Auto | 1 – 4; fewer hops means a simpler, easier-to-verify route |
| **Swap deadline** | 30 minutes | How long the swap stays valid before it expires unfilled |
| **Expert mode** | Off | Unlocks swaps at 20 % impact and above behind a two-step confirm |
Raising slippage makes a swap more likely to fill and more likely to fill badly. Use the pair-specific **recommended slippage** the card offers on thin pools rather than guessing, and leave MEV protection on unless you have a reason to accept the extra room for front-running.
## Getting help
The **Contact support** form in the app footer sends straight to the team, or email [support@fortiblox.com](mailto:support@fortiblox.com). Include the transaction signature if your question is about a specific swap.
---
# Security and trust
URL: /docs/fortiswap/security
> FortiSwap is non-custodial — every transaction is signed in your wallet and settles on-chain, and the claims on this page are the ones you can check yourself.
# Security and trust
This page lists what FortiSwap guarantees and, for each guarantee, how you would check it without trusting FortiBlox. It deliberately makes no claims that cannot be checked that way.
## Non-custodial by construction
FortiSwap never holds your funds and never holds a key that can move them.
* **External wallets** keep your key in the wallet. FortiSwap builds a transaction and asks the wallet to sign; the wallet shows you what it is signing, and nothing happens until you approve.
* **Sign-in wallets** — the ones created for you when you sign in with email, Google, X, Discord, GitHub, Telegram, or a passkey — are self-custody wallets whose key is split across secure hardware enclaves. Only you can use it, FortiSwap cannot, and you can export the private key at any time and leave.
* **Orders** rest on-chain in escrow under terms you signed — a minimum output or nothing — and are cancellable by you at any time. There is no off-chain balance and no withdrawal step.
* **Bridge and fiat legs** deliver to the wallet address fixed inside the transaction you sign. Card purchases are made with the payment provider directly; FortiSwap never receives your card details.
*Check it:* every swap, order, and bridge transaction is visible on a public explorer with your wallet as the signer — an X1 explorer for X1 activity, [ArcScan](https://testnet.arcscan.app) for Arc's testnet activity. There is no FortiSwap-controlled account in the path of your funds, on either network.
## What is checked before you sign
* Every transaction the app or API produces is **simulated** before it is returned; a transaction that would fail is rejected with the program's own error rather than handed to your wallet.
* Quotes are built from **live-verified reserves** and carry a **slot expiry**; a stale quote is never submitted.
* **Slippage is enforced on-chain.** The minimum output is part of the transaction, and the program reverts if a fill would come in below it. The MEV-protection cap (5 % effective slippage) bounds what a sandwich could extract; it is a cap, not a promise that no MEV exists.
* **Price-impact limits** apply in the app and again when the transaction is built, so they hold even if the interface is bypassed. Above the 25 % cap, no route is built.
* **Token trust tiers** — Verified, Community, New, Caution, Danger — are derived from on-chain signals and shown wherever a token appears. They are a signal for your own research, not a verdict.
## What FortiSwap does not do
* It does not custody funds, batch user transactions, or sign on anyone's behalf.
* It does not run the bridges it integrates. Each corridor is operated by its own bridge, and that bridge's fee and timing are shown per route.
* It does not perform identity verification or payment processing. Those belong to the regulated payment partner you choose in the Buy and Sell tabs.
## Reporting a problem
Security reports go to [security@fortiblox.com](mailto:security@fortiblox.com). Anything else — a stuck bridge transfer, a swap that did not fill as expected — to [support@fortiblox.com](mailto:support@fortiblox.com) or the **Contact support** form in the app, with the transaction signature.
FortiSwap's [Terms](https://app.fortiblox.com/terms), [Privacy Policy](https://app.fortiblox.com/privacy), and [AML statement](https://app.fortiblox.com/aml) are published in the app.
---
# Automations (TWAP, Grid, DCA, TP-Ladder, Martingale)
URL: /docs/honeybadger/automations
> Set-and-forget trading strategies you can run on any XNT-paired position
# Automations
Honey Badger ships a full set of automation strategies you can attach to any position. Each one runs server-side against a wallet you specify — you don't have to keep the dashboard open.
## The five strategies
| Strategy | What it does | Best for |
| -------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------- |
| **TWAP** | Splits a target size into equal slices over a time window | Entering or exiting large positions without moving the market |
| **Grid** | Buys on the way down and sells on the way up across a defined price range | Ranging markets where price oscillates around a level |
| **DCA** | Recurring buy of the same XNT amount at a fixed interval | Long-term accumulation, timing-agnostic |
| **TP-Ladder** | Sells fixed percentages at ascending price rungs | Scaling out of winners |
| **Martingale** | Doubles size after each loss to recover on the winner | High-risk mean-reversion plays only |
Martingale can wipe an account if the trend continues against you. It is included because a few users specifically want it; it is not a recommended default. Cap max doubling depth and use it only on assets you already believe are mean-reverting.
## TWAP (Time-Weighted Average Price)
Instead of one big buy or sell, TWAP breaks the target size into N equal slices and executes them over a chosen window.
### When to use it
* You want to buy 1,000 XNT of a mid-cap token and know a single tx would move the price
* You want to distribute-sell a moon-shot position without triggering a cascade
### Configuration
* **Side** — buy or sell
* **Total size** — total XNT (buy) or token amount (sell)
* **Window** — total duration (e.g. 60 minutes)
* **Slices** — number of executions (e.g. 12, giving one every 5 minutes)
* **Slippage cap per slice** — abort a slice if slippage exceeds this
* **Wallet** — which of your wallets to execute from
### Behavior
Slices fire on a fixed schedule. If a slice is aborted (slippage cap hit), the remainder is redistributed over the remaining schedule so the total target is still hit — or the whole TWAP is paused if the aborts are systematic.
## Grid Trading
Grid trading defines a price range and a number of grid levels within it. As price crosses levels, the strategy alternately buys and sells fixed sizes.
### Configuration
* **Token** — the XNT-paired token
* **Upper bound / Lower bound** — grid range
* **Grid levels** — number of buy/sell rungs
* **Size per rung** — XNT or token amount per fill
* **Wallet** — execution wallet
### Behavior
Say you set 10 grid levels between 0.10 XNT and 0.20 XNT. As price crosses each level going down, the strategy buys. As it crosses each level going up, it sells. In a ranging market you accumulate XNT profit from each round trip.
Grid trading is *the* set-and-forget strategy for stablecoin-adjacent or range-bound pairs. It is bad for strongly-trending assets — you'll get filled all the way to the lower bound and hold a losing bag.
## DCA (Dollar Cost Average)
Recurring buy of the same XNT amount at a fixed interval — regardless of price.
### Configuration
* **Token** — target token
* **Amount per buy** — XNT per interval
* **Interval** — hourly, daily, or weekly
* **End condition** — total buys, total spend, or "run forever"
* **Wallet** — buying wallet
### Behavior
Buys are executed on schedule. Skipped only if the wallet is underfunded (in which case you get a Telegram alert). Progress is visible on the Automations page in the dashboard.
## TP-Ladder (Take-Profit Ladder)
Instead of a single take-profit, sell in stages as the price climbs.
### Configuration
* **Position** — token you already hold
* **Rungs** — list of `(trigger_price, sell_percentage)` pairs
* **Trailing tail** — optional trailing stop for the remaining size after all fixed rungs fill
### Example
Buy at 0.05 XNT. Set the ladder:
| Trigger | Sell |
| ------------------- | ------------- |
| 0.075 (1.5×) | 25% |
| 0.10 (2.0×) | 25% |
| 0.15 (3.0×) | 25% |
| Trail 20% from peak | remaining 25% |
If the token goes to 3× and then dumps, you locked 75% of the position at good prices and let the last 25% ride with protection.
## Martingale
After each losing round trip, double the size on the next attempt to recover on a winner.
### Configuration
* **Token** — target token
* **Starting size** — initial buy XNT
* **Doubling depth cap** — max number of doublings (hard-cap this, always)
* **TP % / SL %** — round-trip exit
* **Wallet** — execution wallet
Doubling depth compounds exponentially. Cap depth = 3 means one bad streak costs 1 + 2 + 4 = 7× your starting size. Cap depth = 5 costs 31×. Do not disable the cap.
## Trend Following (experimental)
Honey Badger includes a rules engine for trend-following configs (moving-average crossover, breakout, etc.). It is **available but experimental**: today there are no active user configs and no signals in production. If you're curious, you can create a config and let it emit signals — but the surface has not been battle-tested.
We list it here because it exists in the dashboard, not because we recommend it yet.
## Managing your automations
The Automations page in the dashboard lists every strategy you've configured, with status (running / paused / finished / errored), fill count, and PnL.
From Telegram:
```
/automations # list
/automations pause
/automations resume
/automations cancel
```
Cancel is destructive (state is deleted). Pause is soft — the strategy resumes exactly where it left off.
## Strategy templates
To speed up setup, we ship a set of pre-configured strategy templates (currently 6) — for example "DCA daily into WXNT" or "TP-Ladder 4-rung standard." Pick a template on the Automations page, adjust the token and size, and go.
## Related pages
---
# Charts & Market Intel
URL: /docs/honeybadger/charts
> TradingView Advanced Charts, KLineChartPro fallback, MEV overlay, Smart Money overlay, RiskLabel, and Trade Replay
# Charts & Market Intel
Honey Badger ships a full chart stack with several overlays designed specifically for X1 trading. The chart is not just for price — it's the surface for MEV detection, Smart Money activity, and trade replay.
## Chart engines
### TradingView Advanced Charts (default)
The dashboard defaults to TradingView Advanced Charts when the `VITE_FEATURE_TRADINGVIEW_CHARTS` flag is on for your account. This is the full TradingView charting library:
* All standard indicators (RSI, MACD, MAs, Bollinger, etc.)
* Drawing tools (trendlines, Fib retracements, positions)
* Multiple timeframes from 1s to 1w
* Chart templates you can save
### KLineChartPro (fallback)
If TradingView isn't enabled for your account or fails to load, the chart falls back to **KLineChartPro** — a lighter but still-capable engine with the same core indicators and drawing tools. You won't lose functionality; the surface just looks slightly different.
Both engines consume the same underlying OHLCV feed, which is streamed from Honey Badger's own price pipeline (canonical prices from XDEX AMM pool reserves).
## MEV Detection overlay
Turn on the **MEV** overlay to see sandwich-attack candidates flagged directly on the chart. Each flagged trade shows:
* The victim transaction
* The front-run buy
* The back-run sell
* Estimated victim slippage
This is the same detector that feeds into the trade replay scrubber. Use it to spot when a token is being aggressively sandwiched (a sign to widen your slippage or wait for calmer flow) or to verify a suspiciously bad fill on one of your own trades.
## Smart Money overlay
The **Smart Money** overlay marks trades placed by wallets classified as "Smart Money" — wallets with a positive long-term PnL record and reasonable trade frequency.
Each marker shows the wallet's short address, buy/sell direction, and estimated size. Click the marker to jump to the wallet's on-chain history.
Smart Money classification is done off-chain by the wallet-reputation engine. A wallet becomes Smart Money if:
* 30+ day trade history
* Positive realized PnL over rolling 30d
* Reasonable trade frequency (not a spammy bot)
* Not on any known-scammer blacklist
## Trade Replay scrubber
The **Trade Replay** scrubber lets you scrub back through recent price action and see every trade tick-by-tick. Drag the timeline back to any moment; the chart animates through the trades that happened. Especially useful for:
* Post-mortem: "Why did my TP fill at that price?"
* Rug analysis: "How did the dump happen?"
* Sandwich analysis: "Was I actually front-run?"
## RiskLabel
Every token page (and the Trade panel) shows a **RiskLabel** near the price. This is a compact risk classification the anti-rug pipeline computes on-token metadata:
| Label | Meaning |
| ------- | ------------------------------------------------------------------------ |
| SAFE | Renounced, LP locked, honeypot simulation passes, no known scam patterns |
| CAUTION | Missing one of the above, or high tax |
| RISKY | Multiple flags, or has been flagged by other users |
| DANGER | Honeypot detected, or known scam pattern |
RiskLabel is advisory — it does not block trades in the manual UI. It *can* block auto-sniper and copy-trade attempts if you set the rule to require SAFE.
## Confidence panel
Next to RiskLabel, the **Confidence** panel breaks down the score into its inputs:
* Ownership state (renounced / not)
* LP lock (locked / not, duration if locked)
* Honeypot simulation (pass / fail)
* Tax (buy % / sell %)
* Holder concentration (top holder %, top 10 %)
* Age (pool age in hours)
* Volume (24h)
Use it when RiskLabel says CAUTION and you want to know exactly which factor is dragging it down.
## Chart Alerts
The Chart Alerts subsystem is scaffolded and available in the UI, but no user alerts have fired against it yet. You can define a chart-based alert (e.g. "notify me when TOKENA crosses 0.10 XNT on the 5m chart") — the pipeline will store and evaluate it — but expect this feature to mature over the next few releases as we drive real-world usage.
## Related pages
---
# Copy Trading
URL: /docs/honeybadger/copy-trading
> Automatically mirror trades from tracked wallets, with size caps, filters, and safety guards
# Copy Trading
Copy trading lets you mirror the on-chain activity of wallets you trust. When they buy, you buy the same token — with your own size, your own wallet, and your own safety guards.
**Recent history you should know about.** Copy trading was silently broken from roughly February through late May 2026. During that period, the system marked most attempts as "success" without actually submitting a buy on-chain. Only about 44 real successful copies happened over the full lifetime before we caught it. The bug was root-caused, an on-chain guardrail program was shipped, and the service was fully restored on 2026-05-25. Today the pipeline is verified end-to-end (submitted transactions must have on-chain hashes to be recorded as success). We are actively onboarding users again, and the pool of tracked wallets is intentionally kept small while we watch execution quality. If you were an early user and stopped seeing copies happen, please rejoin — the underlying defect is fixed.
## How it works
1. You add a **target wallet** to your copy list.
2. You configure **size and filters** (how much of their trade to copy, which tokens, which of your wallets to buy from).
3. When the target wallet places an on-chain trade, Honey Badger detects it, runs the anti-rug guards, and submits your mirrored trade.
4. Your trade is a fully independent, non-custodial swap from your own wallet — the target wallet has no visibility or control over your funds.
## Adding a wallet to copy
### Via dashboard
Copy Trading page → **Add Target Wallet** → paste address → configure → **Enable copying**.
### Via Telegram
```
/copy add
```
The bot walks you through size and filter configuration.
## Configuration options
### Copy size
| Option | Description |
| ---------------------------- | ------------------------------------ |
| Fixed XNT | Same XNT amount every mirrored trade |
| Percentage of target | X% of the target's trade size |
| Percentage of your portfolio | X% of your current XNT balance |
**Example:** target buys 10 XNT worth of a token; you set 50% of target → you buy 5 XNT worth.
### Size caps (always set these)
* **Max per-trade XNT** — cap on a single mirror, protects against copying an outlier trade
* **Max daily XNT** — cap on total mirrored spend per 24h
* **Min per-trade XNT** — skip target's dust/test trades
### Token filters
* **Whitelist** — only copy trades on these tokens
* **Blacklist** — copy everything except these
* **Auto-filter** — apply the same anti-rug guards used by the sniper (honeypot, tax, ownership, LP lock, RiskLabel)
## Triggers
### Buy triggers
* **Immediate** — mirror as soon as the target's tx confirms
* **Delayed** — wait N seconds after target's tx (lets you skip trades they immediately dump)
* **Confirmed** — wait until target's position is up X% before mirroring (higher confidence, lower entry)
### Sell triggers
* **Mirror sell** — sell when the target sells
* **Independent exit** — use your own TP-Ladder / stop-loss
* **Hybrid** — mirror sells but also honor your own stops (whichever fires first)
## Managing tracked wallets
```
/copy list # show all your tracked wallets and their stats
/copy pause # temporarily stop copying, keep the config
/copy resume
/copy remove
```
Or the equivalent buttons on the Copy Trading page in the dashboard.
## Performance tracking
For each tracked wallet you can see:
* Trades attempted vs. trades submitted vs. trades filled
* Skips broken down by reason (guard failed / balance too low / filter blocked)
* Realized PnL from mirrored trades
* Your average slippage vs. theirs
We include the "attempted vs. submitted" split explicitly because of the historical failure mode (see the callout at the top). It is fine and expected for some percentage of attempts to be skipped by guards — that's the guards doing their job.
## Wallet under-funding
Copy trading requires your buying wallet to hold enough XNT to fill the mirrored size, plus network fees. If it's underfunded when the target trades, the attempt is marked `failed: insufficient_balance` and the target's trade is not mirrored. This is not a bug — it's the guarded write path refusing to record a fake "success."
## Risk management
### Diversify
Don't copy just one wallet. Copy 3–5, ideally with different styles (aggressive scalper + swing trader + conservative accumulator). One target's losing streak shouldn't sink your portfolio.
### Auto-pause on drawdown
Set a rule: if a tracked wallet's mirrored trades net down more than X% over 7 days, auto-pause copying. This limits blast radius when a target starts revenge-trading.
### Position limits
* Max % of your portfolio in copy-sourced positions
* Max concurrent open positions from copy trades
* Daily copy spend cap (defense-in-depth on top of per-target size caps)
## Finding wallets to copy
Good candidates typically show:
* 30+ days of consistent activity
* Realized PnL clearly positive (not just holding a moonshot)
* Reasonable drawdowns
* A recognizable style (momentum, mean-reversion, accumulation) rather than random
Red flags:
* Only recent gains
* Extreme trade frequency (bot vs. human)
* Suspicious win rates (\~100%)
* History of trading known scam tokens
Discover candidates through the explorer's leaderboards, the Smart Money overlay on charts, or on-chain research.
## Troubleshooting
### Nothing is copying
* Confirm the target wallet actually placed a trade (check the explorer)
* Check your wallet's XNT balance
* Check your size cap isn't below the mirror size
* Check filter settings (whitelist too tight?)
* Check the skip stream for guard reasons
### Copies are late
* Higher gas multiplier on the copy wallet
* Network congestion on X1
* Target may be using a private mempool path you can't front-run
### Unexpected copies
* Blacklist not applied correctly
* Auto-filter tolerance too permissive
* Target using new tokens you didn't anticipate — tighten whitelist
## Best practices
1. **Start small** — 0.1 XNT per copy for the first 100 mirrored trades to validate the target
2. **Cap everything** — per-trade, daily, and per-position caps
3. **Mirror + independent exit** — copy their buys, but manage your own exits
4. **Watch the skip stream** — it tells you when guards are protecting you
5. **Re-evaluate weekly** — pause underperformers, don't average down on a target
---
# Dashboard Guide
URL: /docs/honeybadger/dashboard
> Navigate the Honey Badger web dashboard for advanced trading features
# Dashboard Guide
The Honey Badger web dashboard provides a comprehensive interface for managing your trading activities, viewing analytics, and configuring advanced settings.
**Dashboard URL**: [honeybadger.fortiblox.com](https://honeybadger.fortiblox.com)
## Connecting Your Wallet
### Login with Telegram
1. Visit [honeybadger.fortiblox.com](https://honeybadger.fortiblox.com)
2. Click **Connect with Telegram**
3. Authorize the connection in Telegram
4. Your dashboard will sync with your bot wallets
### Manual Wallet Connection
You can also connect using:
* WalletConnect
* Private key import
## Dashboard Overview
### Main Navigation
The dashboard features a sidebar with the following sections:
* **Dashboard** — Overview and quick stats
* **Discover** — Trending, new pools, top movers
* **Trending** — Curated hot tokens (see [Trending Tokens](/docs/honeybadger/trending-tokens))
* **Trading** — Buy/sell interface with charts and TokenIntel
* **Charts** — TradingView Advanced Charts with MEV and Smart Money overlays (see [Charts & Market Intel](/docs/honeybadger/charts))
* **Positions** — Current holdings, portfolio overview
* **Orders** — Active limit orders (TP / SL / Trailing)
* **Automations** — TWAP, Grid, DCA, TP-Ladder, Martingale (see [Automations](/docs/honeybadger/automations))
* **Copy Trading** — Manage copied wallets
* **Sniping** — Auto-sniper rules and one-shot snipes (see [Sniping](/docs/honeybadger/sniping))
* **Forti AI** — The natural-language assistant panel (see [Forti AI Assistant](/docs/honeybadger/forti-ai))
* **Earn Hub** — Liquid staking, referrals, subscription tiers
* **Hardware Signer** — Sign pending TXs from Ledger or Keystone (admin-only, see [Hardware Wallet Signing](/docs/honeybadger/hardware-wallet))
* **Analytics** — Performance metrics
* **Settings** — Configuration
## Dashboard Home
The main dashboard displays:
### Portfolio Value
* Total portfolio value in USD
* 24h change percentage
* Historical chart
### Quick Stats
* Active positions count
* Open orders count
* 24h trading volume
* PnL (Profit and Loss)
### Recent Activity
* Latest trades
* Order fills
* Alerts and notifications
## Trading Interface
### Buy Tokens
1. Enter or paste token contract address
2. View token info and chart
3. Select amount (preset or custom)
4. Review slippage and gas settings
5. Click **Buy** to execute
### Sell Tokens
1. Navigate to **Positions**
2. Select token to sell
3. Choose percentage or amount
4. Review and confirm
5. Click **Sell** to execute
### Advanced Options
* **Slippage Tolerance**: Set max acceptable slippage
* **Gas Settings**: Standard, Fast, or Custom
* **Priority Fee**: Adjust transaction priority
## Positions View
### Portfolio Breakdown
Visual representation of your holdings:
* Token allocation pie chart
* Individual position cards
* Unrealized PnL per position
### Position Details
Each position shows:
* Token name and symbol
* Current price
* Entry price
* Quantity held
* Current value
* PnL (% and $)
### Quick Actions
* **Sell** - Quick sell buttons (25%, 50%, 100%)
* **Set TP** - Create take profit order
* **Set SL** - Create stop loss order
* **Chart** - View price chart
## Orders Management
### Active Orders
View all pending orders:
* Take Profit orders
* Stop Loss orders
* Trailing stops
* DCA orders
### Order Details
Each order displays:
* Order type
* Token
* Trigger price
* Sell percentage
* Created date
* Status
### Manage Orders
* **Edit** - Modify order parameters
* **Cancel** - Remove order
* **Pause** - Temporarily disable
## Copy Trading Panel
### Tracked Wallets
View wallets you're copying:
* Wallet address
* Performance metrics
* Trade history
* Copy settings
### Add New Target
1. Click **Add Wallet**
2. Enter wallet address
3. Configure copy settings:
* Copy percentage (% of their trade size)
* Max amount per trade
* Token filters
4. Enable copying
### Performance Analytics
* Win rate
* Average return
* Total copied trades
* Your PnL from copies
## Sniping Center
### Active Snipes
Manage pending snipes:
* Target token
* Buy amount
* Gas settings
* Status
### Create Snipe
1. Enter token address
2. Set buy amount
3. Configure settings:
* Gas multiplier
* Slippage
* Auto-sell triggers
4. Activate snipe
## Analytics
### Performance Metrics
* Total PnL
* Win/Loss ratio
* Average hold time
* Best/Worst trades
### Trade History
Complete log of all trades:
* Date/time
* Token
* Type (buy/sell)
* Amount
* Price
* PnL
### Export Data
Download your trading history as CSV for tax reporting or analysis.
## Settings
### Trading Settings
* Default slippage
* Default gas mode
* Quick buy amounts
### Notifications
* Email alerts
* Telegram notifications
* Trade confirmations
* Price alerts
### Security
* Active sessions
* API access (if enabled)
* Two-factor authentication
### Display
* Theme (Light/Dark)
* Currency display
* Chart preferences
## Mobile Access
The dashboard is fully responsive and works on mobile devices:
* Touch-optimized interface
* Swipe navigation
* Mobile notifications
## Tips for Power Users
1. **Use keyboard shortcuts** - Speed up navigation
2. **Set up price alerts** - Never miss a move
3. **Review analytics weekly** - Improve your strategy
4. **Export data regularly** - Keep records for taxes
---
# Earn Hub
URL: /docs/honeybadger/earn-hub
> Earn passive income through staking, liquid staking, and XP rewards
# Earn Hub
The Earn Hub is your gateway to passive income on Honey Badger. Choose from multiple earning strategies based on your risk tolerance and liquidity needs.
## Getting Started
Access the Earn Hub:
* **Telegram:** Tap the "Earn" button in the main menu or use `/earn`
* **Dashboard:** Navigate to the Earn tab in the sidebar
## Earning Options
## Comparison
| Feature | Liquid Staking | Validator Staking | XP Rewards |
| --------- | -------------- | ----------------- | ---------- |
| APY | \~8% | \~5.5-6.5% | Variable |
| Liquidity | Instant | Epoch-locked | Instant |
| Minimum | 0.1 XNT | 1 XNT | None |
| Risk | Pool risk | Validator risk | None |
| Token | pXNT | XNT | XP → XNT |
## Liquid Staking (pXNT)
Liquid staking lets you earn staking rewards while keeping your assets liquid. When you stake XNT, you receive pXNT - a liquid staking token that represents your staked position.
### How It Works
### Stake XNT
Deposit XNT into the liquid staking pool. You'll receive pXNT at the current exchange rate.
### Hold pXNT
Your pXNT automatically accrues value as staking rewards are distributed. The exchange rate increases over time.
### Unstake Anytime
Convert pXNT back to XNT whenever you want. No lockup period - instant liquidity.
### Key Benefits
* **\~8% APY** - Higher than traditional staking
* **No lockup** - Unstake anytime without penalties
* **Composable** - Use pXNT in DeFi while earning
* **Auto-compounding** - Rewards compound automatically
### Commands
```
/stake - Open staking menu
/mystakes - View your staked positions
```
Learn more about liquid staking mechanics in our [Liquid Staking Guide](/docs/honeybadger/liquid-staking).
## Validator Staking
Stake directly with X1 validators to earn network rewards. This is traditional Proof-of-Stake staking.
### How It Works
### Choose a Validator
Browse validators by APY, commission, and reliability. Use `/validators` to see the list.
### Stake XNT
Delegate your XNT to your chosen validator. Minimum stake is 1 XNT.
### Earn Rewards
Rewards are distributed each epoch (\~2 days). Rewards auto-compound if enabled.
### Unstake
Request unstaking - funds are available after the current epoch ends.
### Key Features
* **Direct staking** - Your stake secures the network
* **Validator choice** - Pick validators you trust
* **Epoch rewards** - Predictable reward schedule
* **Compounding** - Option to auto-compound rewards
### Commands
```
/validators - Browse available validators
/stake - Stake with a validator
/mystakes - View your delegations
```
### Choosing a Validator
When selecting a validator, consider:
| Factor | What to Look For |
| ---------- | ------------------------------------------- |
| APY | Higher is better, but verify sustainability |
| Commission | Lower commission = more rewards for you |
| Uptime | 99%+ uptime indicates reliability |
| Stake Size | Very large or very small may have risks |
## XP Rewards
Earn XP (experience points) on every trade you make. Accumulate XP and redeem it for XNT tokens.
### How XP Works
* **Earn XP** - Every trade generates XP based on volume
* **Accumulate** - XP has no expiration
* **Redeem** - Convert XP to XNT at the current rate
* **Bonus XP** - Special promotions offer bonus XP multipliers
### Earning Rates
| Trade Volume | XP per Trade |
| ------------ | ------------ |
| \< 10 XNT | 1 XP |
| 10-100 XNT | 5 XP |
| 100-1000 XNT | 25 XP |
| > 1000 XNT | 100 XP |
### Redemption
XP can be redeemed through the [core.x1.xyz](https://core.x1.xyz) platform. Rates vary based on current promotions.
XP rewards are tracked automatically. Check your balance in the Earn Hub or Settings.
## Comparing Options
Use the "Compare Options" button in the Earn Hub to see a side-by-side comparison of all earning methods.
### Which Should You Choose?
**Choose Liquid Staking if:**
* You want the highest APY
* You need liquidity (might need funds soon)
* You want to use staked assets in DeFi
**Choose Validator Staking if:**
* You want to support network decentralization
* You have a long-term holding mindset
* You prefer traditional staking mechanics
**Choose XP Rewards if:**
* You're already trading actively
* You want additional rewards on top of trades
* You prefer zero additional risk
## FAQ
Yes! You can liquid stake some XNT, validator stake some XNT, and earn XP on trades - all simultaneously.
Liquid staking has smart contract risk (pool could have bugs) and slashing risk (if underlying validators misbehave). The pool diversifies across many validators to minimize risk.
Rewards are distributed at the end of each epoch, approximately every 2 days on X1.
No, XP never expires and cannot be lost. It accumulates until you redeem it.
---
# Forti AI Assistant
URL: /docs/honeybadger/forti-ai
> A trader-scoped natural-language assistant that can read your portfolio, your trades, and current market state
# Forti AI Assistant
Forti is Honey Badger's built-in AI assistant. It's a Grok-backed model with a curated toolbelt of 51 trader-scoped tools that let it read your live portfolio, your recent trades, market state, on-chain data, and the top tokens on X1. You ask questions in plain English; it answers in plain English.
## What Forti can actually answer
Try asking things like:
* "How's my portfolio today?"
* "Which of my positions is up the most this week?"
* "Show me the top 10 projects on X1 by 24h volume."
* "Who are the smart wallets on TOKENX right now?"
* "Who are the top holders of TOKENX?"
* "Am I currently at risk on any position?"
* "What automations are running on my W2 wallet?"
The style is deliberately conversational. Forti replies with sentences, not JSON dumps. If a question needs a table, it renders a table inline; if it needs a chart, it embeds one; otherwise it just talks.
## How it works
* Forti runs against your live account. Every response is grounded in the actual state of your wallets and the current market — not a stale snapshot.
* The 51 tools are **trader-scoped**: they can query your positions, your orders, your automations, and public market data, but not anyone else's account.
* Answers include their sources (which tool was called, when the data was fetched) so you can verify.
* The panel is theme-aware and style-aware: it matches your dashboard's dark/light theme and layout density.
## The Live portfolio stream
While the Forti panel is open, your portfolio is streamed live over WebSocket (`/ws/portfolio`). The **LiveBadge** in the corner of the panel shows connection state:
* **Live** — real-time, sub-second updates
* **Seeded** — first snapshot loaded from the DB, real-time stream connecting
* **Reconnecting** — stream dropped, refetching
The underlying pattern is **SEED-then-APPLY**: the panel seeds with a canonical snapshot from the DB, then applies incremental patches from the stream. This means the numbers you see are always both fresh *and* self-consistent, even during network hiccups.
## Where to find it
* **Dashboard** — the Forti panel is available on the sidebar (chat icon). Open, ask, keep it open while you work.
* **Telegram** — the same assistant is available in-bot. Type any question in natural language and the bot will route it through Forti.
## Sample sessions
**Portfolio check-in.**
> **You:** How am I doing today?
>
> **Forti:** Your portfolio is up 4.2% today (+8.1 XNT), driven mostly by TOKENA (+18%) and TOKENB (+6%). Your largest drag is TOKENC (-9%), which is now 3% below your entry. You have an active stop-loss on TOKENC at -12% — no action needed unless you want to tighten it.
**Discovery.**
> **You:** What are the top projects on X1 right now?
>
> **Forti:** By 24h volume: 1) TOKENA (12.4M XNT), 2) TOKENB (8.1M), 3) TOKENC (6.7M), 4) TOKEND (4.3M), 5) TOKENE (3.9M). Do you want holder counts, price change, or smart-wallet activity for any of these?
**Smart Money query.**
> **You:** Who are the smart wallets on TOKENA?
>
> **Forti:** Three wallets classified as Smart Money currently hold TOKENA: wallet ABCD…1234 (bought 2h ago, up 22%), wallet EFGH…5678 (bought 4h ago, up 8%), and wallet IJKL…9012 (accumulating since yesterday, average entry 4% below current). Wallet ABCD…1234 in particular has a 68% 30-day win rate.
## The AI Explainer (canary)
Alongside the assistant, we're rolling out an **AI Explainer** panel that surfaces plain-English rationale for automated trade decisions ("bought TOKENA because Grid rung 3 filled, size 0.5 XNT, current fill 22 / 30"). This is currently in canary rollout at 10% of users. If you don't see it yet, it's coming.
## Privacy and scope
* Forti has read access to your account only.
* Forti cannot execute trades on your behalf. If you say "buy 1 XNT of TOKENA," it will confirm the intent and hand off to the normal buy flow.
* Prompts and responses are logged for debugging and safety, per the terms of service. Trader data is not shared with other users' Forti sessions.
## Tips for good answers
* **Be specific.** "How's my portfolio?" is fine; "How did my copy-trade wallet do this week vs. my sniper wallet?" is better.
* **Chain questions.** Follow-ups keep context — you don't have to re-specify the token you were just asking about.
* **Ask for the source.** "Where did that number come from?" makes Forti cite the tool call.
## Related pages
---
# Getting Started
URL: /docs/honeybadger/getting-started
> Quick start guide to set up Honey Badger and make your first trade
# Getting Started with Honey Badger
Get up and running with Honey Badger in just a few minutes. This guide walks you through the initial setup and your first trade.
## Step 1: Access the Bot
1. Open Telegram on your device
2. Search for `@HoneyBadgerCoreBot` or click: [t.me/HoneyBadgerCoreBot](https://t.me/HoneyBadgerCoreBot)
3. Click **Start** to begin
## Step 2: Create Your Wallet
When you first interact with the bot, a secure wallet will be automatically generated for you.
```
/start
```
The bot will display:
* Your new wallet address
* Your private key (save this immediately!)
> **Important**: Back up your private key in a secure location. This is the only way to recover your wallet if you lose access.
## Step 3: Fund Your Wallet
Send X1 tokens to your wallet address to start trading:
```
/deposit
```
This shows your deposit address. Send X1 from any external wallet or exchange.
## Step 4: Make Your First Trade
### Buy a Token
```
/buy
```
Or simply paste a token contract address, and the bot will prompt you to buy.
### Quick Buy Amounts
The bot provides preset buy amounts:
* 0.1 X1
* 0.5 X1
* 1 X1
* Custom amount
### Sell a Token
```
/sell
```
Select from your token positions to sell.
## Essential Commands
| Command | Description |
| ------------ | ------------------- |
| `/start` | Main menu |
| `/wallet` | Wallet management |
| `/buy` | Buy tokens |
| `/sell` | Sell tokens |
| `/positions` | View open positions |
| `/orders` | Manage limit orders |
| `/settings` | Bot settings |
| `/help` | Get help |
## Next Steps
## Safety Tips
1. **Never share your private key** - No one from FortiBlox will ever ask for it
2. **Start small** - Test with small amounts before larger trades
3. **Use limit orders** - Protect yourself from slippage
4. **Set stop losses** - Always protect your downside
---
# Hardware Wallet Signing
URL: /docs/honeybadger/hardware-wallet
> Sign large positions from a Ledger (WebHID) or Keystone (QR/UR) hardware wallet in the browser
# Hardware Wallet Signing
For large positions, you can pair a hardware wallet with Honey Badger and sign transactions from the browser without any private key ever touching our servers. The dashboard supports **Ledger** over WebHID and **Keystone** over QR / UR frames.
## How the flow works
1. On the dashboard, you connect your hardware wallet's public key. This tells Honey Badger "these txs need to be signed offline."
2. When you initiate a trade that needs signing, the bot builds the transaction and marks it **pending**.
3. The dashboard's **Hardware Signer** page shows all pending transactions.
4. You review each pending tx, sign it on your hardware device, and submit the signed tx back through the dashboard.
5. The signed tx is broadcast to the X1 network like any other.
Private keys never leave the device. Honey Badger's servers only ever see signed transactions.
## Ledger (WebHID)
Requires:
* A Chromium-based browser with WebHID support (Chrome, Brave, Edge, Arc)
* The Solana app installed and open on the Ledger
### Connect
1. Go to **Settings → Hardware Wallet** in the dashboard
2. Click **Connect Ledger**
3. Browser prompts you to select the device — pick your Ledger
4. Open the Solana app on the Ledger
5. The dashboard displays your Ledger-derived pubkey
### Sign
1. Go to **Hardware Signer**
2. See the pending tx queue
3. Click **Sign** on a pending tx
4. Approve on the Ledger device (review the fields on the device screen — always trust the device display, never the browser display)
5. The signed tx is broadcast; the pending row moves to "submitted"
## Keystone (QR / UR)
Keystone is fully airgapped — no USB, no radio. Signing happens by scanning QR codes back and forth.
Requires:
* A Keystone hardware wallet
* A phone camera or the dashboard camera prompt (browser must have camera permission)
### Connect
1. Go to **Settings → Hardware Wallet**
2. Click **Connect Keystone**
3. Follow the on-screen instructions to scan the Keystone's pubkey QR
4. The dashboard displays your Keystone-derived pubkey
### Sign
1. Go to **Hardware Signer**
2. Click **Sign** on a pending tx
3. The dashboard displays a QR code (a UR frame containing the unsigned tx)
4. Scan it with the Keystone
5. Approve on the Keystone; the device displays a signed-tx QR (UR frame)
6. Scan that QR back into the dashboard
7. Broadcast
## When to use hardware signing
* **Large positions** — anything you'd rather not risk to a hot key
* **Long-term holds** — positions you plan to keep for weeks or months
* **Treasury or shared wallets** — where policy requires an offline signer
* **Regulated environments** — audit trails via device confirmation
Hot-wallet execution is still the right default for day-trading, sniping, and copy trading — the sub-second latency you need on those flows is incompatible with a device confirmation on every trade.
## Access control
The Hardware Signer page is admin-only per your account's role settings. Standard trader accounts do not see the page; only accounts with `hardware_signer` role can sign.
## Related pages
---
# Introduction to Honey Badger
URL: /docs/honeybadger/intro
> The X1 blockchain trading bot with instant swaps, sniping, copy trading, automations, AI assistance, and a full web dashboard
# Honey Badger Trading Bot
Honey Badger is the flagship X1 trading platform. It combines a Telegram bot, a web dashboard, and an AI assistant into a single non-custodial trading suite. You can execute one-tap swaps, snipe new launches, run set-and-forget automations, copy other wallets, and ask a natural-language assistant about your portfolio and the wider market.
## What you get
## Quick Links
| Resource | Link |
| ------------- | -------------------------------------------------------------- |
| Telegram Bot | [t.me/HoneyBadgerCoreBot](https://t.me/HoneyBadgerCoreBot) |
| Web Dashboard | [honeybadger.fortiblox.com](https://honeybadger.fortiblox.com) |
## Two ways to trade
Honey Badger meets you where you are:
* **Telegram** — Everything the bot can do can be driven from a Telegram chat. This is the fastest way to react on mobile and is the interface most users start on.
* **Web dashboard** — The full experience: portfolio overview, TradingView charts, automations builder, Forti AI panel, hardware-wallet signing, and the token-intel matrix.
The two interfaces share the same wallets and the same order/automation state. A limit order set in Telegram is visible on the dashboard, and vice versa.
## Why Honey Badger?
* **Non-custodial.** You always control your private keys. Hardware-wallet signing (Ledger over WebHID, Keystone over QR/UR) is available for large positions.
* **Fast.** Buy submit-to-confirm is around 1.7 seconds end-to-end after the WP-4832 latency fix; the UI updates optimistically the moment a transaction is signed.
* **Safe by default.** Anti-rug UX, honeypot checks, and a settlement-atomic single-tx fee+trade path (Sub-EPIC C) reduce the "stuck in a bad position" failure modes that plague other bots.
* **AI-native.** The Forti assistant is trader-scoped: it can read your portfolio, your recent trades, and current market state, and answers plainly instead of dumping raw data.
## Feature status at a glance
Some features are fully live, some are new and still onboarding users, and some are scaffolded but dormant. We label everything honestly so you know what to expect.
| Area | Status |
| --------------------------------------------------- | -------------------------------------------------------------- |
| Manual swaps (Telegram + dashboard) | Live |
| Auto Sniper (new pool + launchpad rules) | Live, low-adoption — best-fit for advanced users |
| Copy Trading | Recently restored after an incident, actively onboarding users |
| Automations: TWAP, Grid, DCA, TP-Ladder, Martingale | Live |
| Trend Following | Available but experimental — no active configs yet |
| Forti AI assistant | Live for all users |
| Live portfolio stream | Live |
| TradingView Advanced Charts | Live |
| MEV Detection overlay | Live |
| Smart Money overlay | Live |
| Chart Alerts | Scaffolded, no active alerts yet |
| Hardware Wallet Signing | Live (Ledger + Keystone) |
| Strategy Templates | Live, 6 seeded templates |
| TokenIntel 15-panel matrix | Live |
| Decision Log / Session Replay | Scaffolded, coming soon |
| AI Explainer for trade decisions | Canary rollout, 10% of users |
## Getting Started
Ready to start trading? Follow our [Quick Start Guide](/docs/honeybadger/getting-started) to set up your first wallet and make your first trade.
---
# Liquid Staking
URL: /docs/honeybadger/liquid-staking
> Stake XNT, receive pXNT, earn ~8% APY with full liquidity
# Liquid Staking with pXNT
Liquid staking allows you to earn staking rewards while maintaining full liquidity. Stake XNT, receive pXNT, and unstake anytime - no lockup periods.
## What is pXNT?
pXNT (pooled XNT) is a liquid staking token that represents your staked XNT position. When you stake XNT into the liquid staking pool, you receive pXNT in return.
### Key Properties
| Property | Value |
| ------------- | --------------- |
| Token | pXNT |
| Underlying | XNT |
| APY | \~8% (variable) |
| Lockup | None |
| Minimum Stake | 0.1 XNT |
| Pool Fee | 0.5% |
## How It Works
### Stake XNT
Deposit XNT into the liquid staking pool. You receive pXNT at the current exchange rate.
### Exchange Rate Grows
As staking rewards accrue, the pXNT:XNT exchange rate increases. Your pXNT becomes worth more XNT over time.
### Unstake Anytime
Convert pXNT back to XNT at the current exchange rate. You receive your original stake plus accumulated rewards.
## Exchange Rate Mechanics
Unlike rebasing tokens, pXNT uses an exchange rate model:
* **Day 1:** 1 pXNT = 1.000 XNT (example)
* **Day 30:** 1 pXNT = 1.007 XNT
* **Day 365:** 1 pXNT = 1.083 XNT
Your pXNT balance stays the same, but each pXNT is worth more XNT over time.
### Example
1. You stake 100 XNT when rate is 1.000
2. You receive 100 pXNT
3. After 1 year, rate is 1.083
4. Your 100 pXNT = 108.3 XNT
5. You earned 8.3 XNT in rewards
The exchange rate only goes up (or stays flat). It never decreases under normal conditions.
## Staking XNT
### Via Telegram
1. Use `/earn` or tap "Earn" in the menu
2. Select "Liquid Staking"
3. Enter the amount of XNT to stake
4. Confirm the transaction
### Via Dashboard
1. Navigate to Earn → Liquid Staking
2. Enter stake amount
3. Review the pXNT you'll receive
4. Click "Stake" and confirm
### What You'll See
* **Amount to Stake:** Your XNT input
* **pXNT to Receive:** Based on current exchange rate
* **Current Rate:** The pXNT:XNT exchange rate
* **Estimated APY:** Current yield estimate
## Unstaking pXNT
### Via Telegram
1. Go to "Earn" → "Liquid Staking"
2. Tap "Unstake"
3. Enter pXNT amount (or "Max")
4. Confirm the transaction
### Via Dashboard
1. Navigate to Earn → Liquid Staking
2. Click "Unstake"
3. Enter amount and confirm
### Instant Liquidity
Unlike validator staking, there's no waiting period. Your XNT is available immediately after the transaction confirms.
## Viewing Your Position
Check your liquid staking position anytime:
**Telegram:**
```
/mystakes
```
**Dashboard:**
Earn → Liquid Staking → Your Position
You'll see:
* pXNT balance
* Current XNT value
* Rewards earned
* Entry exchange rate
* Current exchange rate
## APY Breakdown
The \~8% APY comes from:
| Source | Contribution |
| ----------------- | ------------ |
| Validator Rewards | \~6% |
| MEV Revenue | \~1.5% |
| Pool Optimization | \~0.5% |
APY is variable and depends on network conditions. Past performance doesn't guarantee future returns.
## Pool Fee
The liquid staking pool charges a 0.5% fee on rewards (not principal). This fee covers:
* Pool operations
* Validator management
* Smart contract maintenance
**Example:** If you earn 10 XNT in rewards, 0.05 XNT goes to the pool, you receive 9.95 XNT.
## Risks
### Smart Contract Risk
The liquid staking pool relies on smart contracts. While audited, bugs could potentially affect funds.
### Slashing Risk
If underlying validators misbehave, staked funds could be slashed. The pool diversifies across many validators to minimize this risk.
### Exchange Rate Risk
In extreme scenarios (mass slashing), the exchange rate could decrease. This is rare but possible.
### Liquidity Risk
In high-demand unstaking periods, there may be temporary delays. The pool maintains reserves to handle normal demand.
The pool is designed to minimize these risks through diversification, audits, and reserve management.
## pXNT in DeFi
Since pXNT is a standard token, you can use it in DeFi protocols:
* **Collateral:** Use pXNT as collateral for loans
* **Liquidity:** Provide pXNT liquidity in DEX pools
* **Yield Stacking:** Earn additional yield on top of staking rewards
Using pXNT in other protocols adds additional smart contract risk. DYOR before depositing.
## Comparing to Validator Staking
| Feature | Liquid Staking | Validator Staking |
| ---------- | ----------------- | ----------------- |
| APY | \~8% | \~5.5-6.5% |
| Liquidity | Instant | Epoch-locked |
| Minimum | 0.1 XNT | 1 XNT |
| Complexity | Simple | Choose validator |
| Token | pXNT | XNT |
| Risk | Pool + validators | Single validator |
## FAQ
The pool is audited and diversified across many validators. However, all DeFi carries risk. Only stake what you can afford to lose.
The pool captures additional revenue from MEV and optimizes validator selection for maximum yield.
Yes, there's no limit. Each transaction uses the current exchange rate.
The exchange rate is shown in the Liquid Staking section of the Earn Hub. It updates in real-time.
pXNT is a standard token. You can transfer it freely. Whoever holds pXNT can unstake it.
## Commands Reference
| Command | Description |
| ----------- | -------------------------- |
| `/earn` | Open Earn Hub |
| `/stake` | Open staking menu |
| `/mystakes` | View all staking positions |
---
# Orders & Positions
URL: /docs/honeybadger/orders
> Manage limit orders and track your token positions
# Orders & Positions
Track your holdings and manage automated orders to maximize profits and minimize losses.
## Viewing Positions
### All Positions
```
/positions
```
Displays all tokens you hold across all wallets:
```
Your Positions
Token A (0x1234...)
Balance: 1,000,000
Value: $500
Entry: $0.00040
Current: $0.00050
PnL: +25% (+$100)
Token B (0x5678...)
Balance: 500,000
Value: $200
Entry: $0.00050
Current: $0.00040
PnL: -20% (-$50)
```
### Position Details
Click on any position for detailed view:
* Full token info
* Price chart
* Trade history
* Active orders
### Dashboard View
The dashboard positions page shows:
* Portfolio allocation chart
* Sortable position table
* Quick actions per position
* Performance metrics
## Order Types
### Take Profit (TP)
Automatically sell when price rises to target.
**Create TP Order:**
```
/tp
```
**Example:** Sell 50% when price hits $1.00
```
/tp 0x1234...abcd 1.00 50
```
### Stop Loss (SL)
Automatically sell when price drops to limit losses.
**Create SL Order:**
```
/sl
```
**Example:** Sell 100% if price drops to $0.30
```
/sl 0x1234...abcd 0.30 100
```
### Trailing Stop
Dynamic stop loss that follows price upward.
**Create Trailing Stop:**
```
/trail
```
**Example:** 15% trailing stop
```
/trail 0x1234...abcd 15
```
**How it works:**
* Price rises from $1.00 to $2.00
* Stop triggers at $1.70 (15% below peak)
* If price continues to $3.00
* Stop moves to $2.55 (15% below new peak)
### DCA Orders
Dollar Cost Average into positions over time.
**Create DCA Order:**
1. Go to Orders > DCA
2. Select token
3. Configure:
* Total amount
* Number of buys
* Interval (hourly/daily/weekly)
4. Activate
## Managing Orders
### View All Orders
```
/orders
```
Lists all active orders:
```
Active Orders
#1 Take Profit
Token: ABC (0x1234...)
Trigger: $1.00
Sell: 50%
Status: Active
#2 Stop Loss
Token: ABC (0x1234...)
Trigger: $0.30
Sell: 100%
Status: Active
```
### Edit Order
```
/order edit
```
Modify order parameters:
* Trigger price
* Sell percentage
* Order type
### Cancel Order
```
/order cancel
```
Remove the order without executing.
### Pause Order
Temporarily disable without removing:
```
/order pause
```
### Resume Order
```
/order resume
```
## Order Strategies
### Basic Protection
For every position, set:
1. **Take Profit** at 2-3x entry
2. **Stop Loss** at -30% to -50%
Example setup for $100 position:
* TP: Sell 50% at 2x ($200 value)
* TP: Sell remaining at 3x ($300 value)
* SL: Sell 100% at 0.5x ($50 value)
### Scaling Out
Take profits in stages:
```
TP1: Sell 25% at +50%
TP2: Sell 25% at +100%
TP3: Sell 25% at +200%
TP4: Trailing stop for rest
```
### Risk-Adjusted Stops
Tighter stops for larger positions:
| Position Size | Stop Loss |
| ------------------ | --------- |
| Small (under $100) | -50% |
| Medium ($100-$500) | -30% |
| Large (over $500) | -20% |
### Breakeven Stop
After significant gains, move stop to breakeven:
1. Buy at $1.00
2. Price rises to $1.50
3. Move SL to $1.00 (breakeven)
4. Risk-free from here
## Position Management
### Averaging Down
Add to losing positions strategically:
1. Initial buy at $1.00
2. Price drops to $0.50
3. Buy same amount at $0.50
4. New average: $0.75
**Caution:** Only average down on conviction plays.
### Taking Partial Profits
Don't be all-or-nothing:
* Sell 25% to recover initial
* Let rest ride with trailing stop
* Reduces stress and locks gains
### Cutting Losses
Know when to exit:
* Stop hit? Execute immediately
* Don't move stops to avoid loss
* Accept small losses to avoid large ones
## Position Tracking
### Performance Metrics
Track per position:
* Entry price
* Current price
* Unrealized PnL
* Realized PnL
* Hold duration
### Trade History
View complete history:
```
/history
```
Shows all buys and sells with:
* Date/time
* Price
* Amount
* PnL
### Export Data
Download trade history from dashboard:
* CSV format
* Tax reporting ready
* Full transaction details
## Portfolio View
### Allocation
See how your portfolio is distributed:
* Pie chart by token
* Concentration warnings
* Diversification score
### Total Value
Track portfolio over time:
* Current total value
* Daily/weekly/monthly change
* All-time high/low
### Performance
Overall portfolio metrics:
* Total realized PnL
* Total unrealized PnL
* Win rate
* Average return
## Alerts & Notifications
### Price Alerts
Set alerts without orders:
```
/alert
```
Get notified when price is reached.
### Order Notifications
Receive alerts when:
* Order is triggered
* Order is filled
* Order fails
### Configure Notifications
Set notification preferences:
* Telegram messages
* Sound/vibration
* Email (if configured)
## Best Practices
1. **Always use stops** - No position without protection
2. **Set orders immediately** - Don't wait to set TP/SL
3. **Review weekly** - Adjust orders as needed
4. **Don't overtrade** - Quality over quantity
5. **Track everything** - Use history for improvement
---
# Referral Program
URL: /docs/honeybadger/referrals
> Earn rewards by inviting friends to trade on Honey Badger
# Referral Program
Earn passive income by sharing Honey Badger with friends and fellow traders. When your referrals trade, you earn a percentage of their trading fees.
## How It Works
### Get Your Referral Code
Every user gets a unique 8-character referral code. Find yours in the Telegram bot using `/referral` or on the Dashboard under the Referrals tab.
### Share Your Link
Share your personalized referral link with friends:
```
https://t.me/HoneyBadgerCoreBot?start=ref_YOURCODE
```
### Earn Commissions
When your referrals trade, you automatically earn a percentage of their trading fees. Commissions are tracked in real-time.
### Claim Rewards
Once your earnings reach the minimum threshold, claim your XNT rewards directly to your wallet.
## Commission Structure
### Commission Rates
Your commission rate starts at **25%** of your referrals' trading fees and gradually decreases over time:
| Period | Commission Rate |
| -------- | --------------- |
| Month 1 | 25% |
| Month 2 | 20% |
| Month 3 | 15% |
| Month 4+ | 10% |
The commission decay encourages active referral growth. Keep inviting new users to maintain higher earnings!
### Example Earnings
If your referral makes a trade with a 1% fee (0.01 XNT on a 1 XNT trade):
* **Month 1**: You earn 25% of 0.01 XNT = **0.0025 XNT**
* **Month 4+**: You earn 10% of 0.01 XNT = **0.001 XNT**
## Commission Lock Period
To ensure the integrity of the referral program, all earned commissions are subject to a **7-day lock period**:
* Commissions become claimable 7 days after they are earned
* This prevents abuse from wash trading or fraudulent activity
* You can view your locked vs. claimable balance in the Referrals dashboard
Commissions may be revoked if the underlying trade is reversed or flagged for suspicious activity.
## Using the Referral System
### Via Telegram Bot
**View Your Referral Info:**
```
/referral
```
This displays your referral code, shareable link, and current stats.
**View Detailed Stats:**
```
/referralstats
```
Shows total referrals, earnings breakdown, and commission history.
**Claim Your Rewards:**
```
/claim
```
Initiates a payout of your claimable commission to your default wallet.
### Via Web Dashboard
1. Log into the [Honey Badger Dashboard](https://honeybadger.fortiblox.com)
2. Navigate to the **Referrals** tab in the sidebar
3. View your stats, copy your referral link, and claim rewards
## Applying a Referral Code
If someone shared their code with you:
### Via Telegram
Click their referral link or use the bot's apply feature in the Referrals menu.
### Via Dashboard
1. Go to the Referrals page
2. Find the "Have a Referral Code?" section
3. Enter the 8-character code and click Apply
You can only apply a referral code once. After applying, you cannot change your referrer.
## Referral Rules
### Eligibility
* All Honey Badger users are automatically enrolled in the referral program
* Your referral code is generated when you first use the bot
* There is no limit to how many people you can refer
### Restrictions
* You cannot use your own referral code
* Each user can only have one referrer (cannot be changed)
* Referral relationships are permanent once established
### Commission Eligibility
* Commissions are only earned on legitimate trades
* Wash trading (trading between your own accounts) is prohibited
* Suspicious activity may result in commission forfeiture and account suspension
### Banned/Suspended Referrers
* If a referrer's account is banned, their referral code becomes invalid
* Existing referral relationships remain, but no new referrals can use the code
* Pending commissions may be frozen pending review
## Leaderboard
Top referrers are featured on the public leaderboard. Rankings are based on:
1. Total lifetime earnings
2. Number of active referrals
View the leaderboard in the Dashboard or via `/referral` in Telegram.
## Notifications
You'll receive Telegram notifications when:
* Someone uses your referral code (new referral)
* A commission is earned from a referral's trade
* Your commission becomes claimable (after 7-day lock)
* A payout is completed
## Claiming Rewards
### Minimum Claim Amount
The minimum claimable amount is **0.01 XNT**. Smaller amounts will continue to accumulate until they reach the threshold.
### Payout Process
1. Click "Claim" in the Dashboard or use `/claim` in Telegram
2. Confirm the payout amount and destination wallet
3. The payout is queued for processing
4. You'll receive a notification when the transfer completes
### Payout Limits
* Maximum single claim: **1,000 XNT**
* For larger amounts, contact support
## FAQ
Commission rates decay over time as part of the program structure. This encourages continuous referral activity. Your rate starts at 25% and decreases monthly until reaching the 10% floor.
Possible reasons:
* Your claimable balance is below 0.01 XNT
* Your commissions are still in the 7-day lock period
* You don't have a wallet set up
* There's already a pending payout being processed
No, referral relationships are permanent. Once you apply a referral code, it cannot be changed.
Use `/referralstats` in Telegram or check the Referrals page in the Dashboard. Your referred users are listed with their join date and activity status.
You only earn commissions on actual trades. If your referral becomes inactive, you won't earn from them, but the relationship remains. They can return and trade at any time.
Referred users may receive trading fee discounts. Check current promotions in the Dashboard.
## Tips for Success
1. **Share in Trading Communities**: Post your link in crypto Discord servers, Telegram groups, and forums
2. **Create Content**: Make tutorials about Honey Badger and include your referral link
3. **Engage Your Network**: Personal recommendations convert better than mass sharing
4. **Help Your Referrals**: The more they trade, the more you earn - help them succeed!
---
# Settings
URL: /docs/honeybadger/settings
> Configure Honey Badger to match your trading style
# Settings
Customize Honey Badger to fit your trading preferences and workflow.
## Accessing Settings
**Via Telegram:**
```
/settings
```
**Via Dashboard:**
Click the gear icon or navigate to **Settings** in the sidebar.
## Trading Settings
### Default Slippage
Set the default slippage tolerance for trades:
| Setting | Description |
| ------- | -------------------------- |
| 0.5% | Very tight, may fail often |
| 1% | Standard for liquid tokens |
| 3% | Moderate volatility |
| 5% | Higher volatility |
| Custom | Set your own value |
**Recommendation:** Start with 1-3% and adjust based on experience.
### Auto-Slippage
Let Honey Badger calculate optimal slippage:
* Analyzes token liquidity
* Considers trade size
* Adjusts for volatility
Enable: `/settings auto_slippage on`
### Default Gas Mode
Choose default gas setting:
| Mode | Speed | Cost |
| -------- | ------- | ------- |
| Standard | Normal | Lowest |
| Fast | Quick | Medium |
| Turbo | Fastest | Highest |
### Quick Buy Amounts
Set preset buy amounts for fast trading:
```
Quick Buy 1: 0.1 X1
Quick Buy 2: 0.5 X1
Quick Buy 3: 1.0 X1
Quick Buy 4: 5.0 X1
```
Customize: `/settings quick_buy`
### Quick Sell Percentages
Set preset sell percentages:
```
Quick Sell 1: 25%
Quick Sell 2: 50%
Quick Sell 3: 75%
Quick Sell 4: 100%
```
## Interface Settings
### Clean Chat Mode
Edit previous messages instead of sending new ones:
```
/settings clean_chat on
```
Benefits:
* Less chat clutter
* Cleaner conversation
* Easier to track
### Language
Select interface language:
```
/settings language
```
Available: English (en)
### Timezone
Set your timezone for accurate timestamps:
```
/settings timezone
```
Example: `/settings timezone UTC`
## Notification Settings
### Trade Notifications
Get notified about your trades:
| Notification | Options |
| ----------------- | ------- |
| Buy Confirmation | On/Off |
| Sell Confirmation | On/Off |
| Order Fill | On/Off |
| Order Fail | On/Off |
### Price Alerts
Configure price alert behavior:
* Sound on/off
* Repeat interval
* Auto-dismiss
### Copy Trading Alerts
Notifications for copied trades:
* New trade copied
* Copy failed
* Target wallet activity
## Security Settings
### Transaction Confirmation
Require confirmation for:
* All trades
* Trades above X amount
* Withdrawals only
* None (instant execution)
### Withdrawal Confirmation
Extra security for withdrawals:
* Always confirm
* Whitelist addresses
* 2FA (if available)
### Session Management
View and manage active sessions:
* Current sessions
* Device/location info
* Revoke access
## Wallet Settings
### Default Wallet
Set which wallet is active by default:
```
/settings default_wallet W1
```
### Wallet Nicknames
Label your wallets:
```
/settings nickname W1 "Main Trading"
/settings nickname W2 "Copy Trading"
```
### Auto-Switch
Automatically switch wallets based on action:
* Sniping → Snipe wallet
* Copy trading → Copy wallet
## Advanced Settings
### Custom RPC
Use a custom RPC endpoint:
```
/settings rpc
```
**Warning:** Only use trusted endpoints.
### Gas Limit
Set custom gas limits:
* Default limit
* Snipe limit (higher)
* Maximum limit
### Priority Fee
Configure priority fee behavior:
* Automatic (recommended)
* Fixed amount
* Percentage of gas
## Resetting Settings
### Reset Individual
Reset a specific setting to default:
```
/settings reset
```
### Reset All
Reset all settings to defaults:
```
/settings reset all
```
**Warning:** This cannot be undone.
## Import/Export Settings
### Export Settings
Save your configuration:
```
/settings export
```
Provides a settings file for backup.
### Import Settings
Restore from backup:
```
/settings import
```
Then provide the settings file.
## Settings by Strategy
### Scalping Setup
For quick, frequent trades:
```
Slippage: 1%
Gas: Fast
Clean Chat: On
Confirm: Off (instant)
Quick Buy: 0.1, 0.25, 0.5, 1.0
```
### Swing Trading Setup
For longer holds:
```
Slippage: 3%
Gas: Standard
Clean Chat: Off
Confirm: Large trades only
Quick Buy: 1.0, 2.5, 5.0, 10.0
```
### Sniping Setup
For new token launches:
```
Slippage: Auto
Gas: Turbo
Confirm: Off
Dedicated wallet: W3
```
### Copy Trading Setup
For passive following:
```
Slippage: Auto
Gas: Fast
Notifications: All on
Dedicated wallet: W2
```
## Troubleshooting Settings
### Settings Not Saving
* Check internet connection
* Try again after refresh
* Contact support if persistent
### Settings Not Applying
* Verify setting value is valid
* Check for conflicting settings
* Reset and reconfigure
### Can't Access Settings
* Try `/settings` command
* Clear chat and retry
* Use dashboard instead
---
# Sniping (Auto Sniper + Launchpad Sniper)
URL: /docs/honeybadger/sniping
> Rule-based auto-sniping of new X1 pools and launchpad launches, with anti-rug guards and auto-exit configuration
# Sniping
Honey Badger's sniping stack lets you buy new tokens the moment they list — either the second liquidity is added to a new AMM pool, or the moment a pump.fun / launchpad token graduates. This guide covers both flavors and the rule engine that drives them.
Sniping is a genuinely advanced feature. It is highly competitive, has a high failure rate, and can lose money quickly. Only a small number of users run active sniper rules in production today. Start with tiny sizes and paper-trade the rules for a week before scaling up.
## The three sniper paths
Honey Badger currently exposes two user-facing sniper modes:
1. **Auto Buy New Launches** — rule-based auto-sniper for freshly-created XDEX pools. Fires when a new pool is discovered and it matches all your rule filters.
2. **Snipe a Token** — one-shot sniper for a specific token address you already know about. Watches for liquidity add and buys on the first block that clears the guards.
(A third path, "Launchpad Sniper" for pump.fun-style bonding-curve graduations, is Wave 2 EPIC scope. It ships behind a feature flag with limited pilot users.)
Both paths use the same underlying safety checks, gas engine, and auto-exit configuration.
## Getting started
### From the dashboard
The Sniping page in the dashboard shows two intent cards: **Snipe a Token** and **Auto Buy New Launches**. Click the one that matches what you want to do — the rest of the flow is guided.
### From Telegram
```
/snipe
```
Presents both intents as inline buttons. Pick "one-shot" for a specific token, or "auto rule" to build a filter set.
## Rules for "Auto Buy New Launches"
Each rule is a filter set. The sniper watches every new XDEX pool and only fires when *all* filters pass.
| Filter | Description |
| -------------------------------- | --------------------------------------------------------- |
| Buy Amount | XNT to spend per snipe |
| Max Position Slots | How many concurrent snipes this rule can hold |
| Min Initial Liquidity | Skip pools with dust liquidity |
| Max Buy Tax / Sell Tax | Skip tokens with predatory tax |
| Require Honeypot Simulation Pass | Simulate a sell before buying |
| Require Renounced Ownership | Only fire on renounced contracts |
| Require Liquidity Lock | Only fire if LP is locked (and for how long) |
| Wallet | Which of your wallets to buy from |
| Auto-Sell Trigger | Optional auto-exit (TP-Ladder, trailing stop, time-based) |
| Rule Label | Human name so you can find it later |
The dashboard shows a **preview** of your rule below the form: what it would have fired on over the last 24 hours of pool activity. Use this to sanity-check that your filters aren't too tight (0 candidates) or too loose (spraying every launch).
## Anti-Rug guards (WP-4757)
All snipes run through the anti-rug pipeline before the buy is submitted:
* **Honeypot simulation** — dry-run a sell of the buy amount. If it reverts, abort.
* **Tax scan** — decode the buy and sell tax from the pool metadata; skip anything above your rule's max.
* **Ownership scan** — check whether the token has an active mint/freeze authority. Warn on non-renounced. Optionally skip.
* **LP lock check** — verify that the LP tokens are held by a known locker, or by a burn address, and how long the lock runs.
* **RiskLabel** — the same on-token risk classifier the Trade page uses. Any HIGH-risk label skips.
If a guard fails, the attempt is logged as a "skip" with the reason. You can see the skip stream on the Sniper page.
## Gas & speed
Sniping is a latency race. Honey Badger uses a gas multiplier ladder so you don't have to think in raw priority-fee terms:
| Setting | Behavior |
| ------- | ------------------------------------------------------------ |
| 1.0× | Baseline priority. Almost always loses the race. |
| 1.5× | Moderate priority. Fine for uncontested launches. |
| 2.0× | High priority. Recommended default for auto-sniper rules. |
| 3.0×+ | Maximum. Use for high-conviction, high-competition launches. |
The bot's transaction submission path went from \~30 seconds to \~1.7 seconds (submit → confirm) after the WP-4832 latency fix, so gas ladder settings translate more directly into rank ordering than they used to.
## Auto-Exit configuration
You almost never want a snipe to sit unmanaged. Every snipe rule can attach one or more auto-exit triggers:
* **TP-Ladder** — Sell 25% at +50%, 25% at +100%, etc. Configurable rungs.
* **Trailing Stop** — Follow the peak down by X%.
* **Hard Stop-Loss** — Sell 100% if price drops to a trigger.
* **Time-Based Exit** — Sell after N minutes regardless of price.
TP-Ladder + trailing stop is the most-used combo. Time-based exit is useful for anti-rug: "if it hasn't 2×'d in 10 minutes, get out."
## Managing rules & snipes
### List active rules
```
/snipe rules
```
Shows every rule, its filter summary, its 24h fire count, and its PnL.
### List active positions from snipes
```
/snipe positions
```
Shows every snipe-sourced position, current PnL, and any attached auto-exit orders.
### Cancel or pause a rule
```
/snipe rule pause
/snipe rule delete
```
Paused rules stop firing but keep their state. Deleted rules can't be recovered — export a copy first if you might want it back.
## Snipe status codes
| Status | Meaning |
| ------------------ | ---------------------------------------------- |
| Pending | Rule matched, buy queued |
| Skipped: honeypot | Sell simulation reverted |
| Skipped: tax | Tax exceeded rule cap |
| Skipped: liquidity | Initial liquidity below rule floor |
| Skipped: risk | RiskLabel returned HIGH |
| Submitted | Transaction on-chain |
| Filled | Buy confirmed, position open |
| Failed: slippage | Executed price outside slippage cap |
| Failed: revert | On-chain revert (rare, usually contract-level) |
| Failed: outbid | Someone else's tx landed first in-block |
## Honest note on adoption
Very few users run active sniper rules today. We ship the feature because a small number of advanced users want it, and the anti-rug pipeline is high-quality, but we're not going to tell you it's "battle-tested at scale." If you're new to sniping, we recommend running rules in a paper-trade / observe mode for a week (turn Buy Amount down to a fraction of an XNT) before increasing size.
## Common mistakes
1. **Filters too loose** — sniper fires on every new pool including scams. Fix: tighten min liquidity, require renounced.
2. **Filters too tight** — 0 fires in a week. Fix: relax initial liquidity floor, allow non-renounced with LP lock, check the 24h preview.
3. **No auto-exit** — you snipe well and then forget to sell. Fix: always attach TP-Ladder + trailing.
4. **Gas too low** — you consistently get outbid. Fix: move to 2× minimum, use 3× for high-competition launches.
5. **Too much size per rule** — one honeypot survives the guards and eats a full slot. Fix: keep per-slot size small and increase Max Position Slots.
## Supported venues
* **XDEX** (primary) — every XNT-paired pool is watched
* **Launchpad graduations** — Wave 2 EPIC, pilot access only
## Related pages
---
# Subscription Tiers
URL: /docs/honeybadger/subscription-tiers
> Reduce your trading fees with premium tiers
# Subscription Tiers
Upgrade your Honey Badger experience with premium subscription tiers. Higher tiers unlock lower trading fees, saving you money on every trade.
## Tier Overview
## Fee Comparison
| Tier | Trading Fee | Savings vs FREE | Best For |
| ----- | ----------- | --------------- | ------------------- |
| FREE | 1.0% | - | Casual traders |
| BASIC | 0.9% | 10% | Regular traders |
| PRO | 0.7% | 30% | Active traders |
| WHALE | 0.5% | 50% | High-volume traders |
### Example Savings
On a 100 XNT trade:
| Tier | Fee Paid | You Save |
| ----- | -------- | -------- |
| FREE | 1.0 XNT | - |
| BASIC | 0.9 XNT | 0.1 XNT |
| PRO | 0.7 XNT | 0.3 XNT |
| WHALE | 0.5 XNT | 0.5 XNT |
The more you trade, the more you save. Active traders can quickly offset the subscription cost with fee savings.
## Checking Your Tier
View your current subscription status:
**Telegram:**
```
/tier
```
**Dashboard:**
Navigate to Settings → Subscription
You'll see:
* Your current tier
* Fee rate
* Subscription expiration (if applicable)
* Upgrade options
## Upgrading Your Tier
### Via Telegram
```
/upgrade
```
This opens the upgrade menu where you can:
1. Compare tier benefits
2. Select duration (monthly, yearly, lifetime)
3. Pay with XNT from your wallet
### Via Dashboard
1. Go to Settings → Subscription
2. Click "Upgrade"
3. Select your desired tier and duration
4. Confirm payment
## Subscription Durations
| Duration | Discount | Best For |
| -------- | ---------- | ----------------- |
| Monthly | - | Trying out a tier |
| Yearly | \~15% off | Committed traders |
| Lifetime | Best value | Long-term users |
Subscription payments are non-refundable. Start with monthly if you're unsure.
## Tier Benefits Breakdown
### FREE Tier
* 1.0% trading fee
* All basic features
* Telegram bot access
* Dashboard access
* Copy trading (limited)
* Limit orders
### BASIC Tier
Everything in FREE, plus:
* **0.9% trading fee** (10% savings)
* Priority trade execution
* Extended copy trading slots
### PRO Tier
Everything in BASIC, plus:
* **0.7% trading fee** (30% savings)
* Advanced analytics
* Unlimited copy trading
* Priority support
### WHALE Tier
Everything in PRO, plus:
* **0.5% trading fee** (50% savings)
* Dedicated support channel
* Early access to new features
* Custom trading limits
## Referral Discounts
Have a referral code? Referred users may receive additional fee discounts on top of their tier benefits.
| Scenario | Effective Fee |
| ---------------- | ------------- |
| FREE + Referral | 0.9% |
| BASIC + Referral | 0.81% |
| PRO + Referral | 0.63% |
| WHALE + Referral | 0.45% |
Referral discounts stack with tier discounts for maximum savings.
## Calculating Your Break-Even
To determine if upgrading makes sense, calculate your break-even trading volume:
```
Break-even Volume = Subscription Cost / Fee Savings per Trade
```
**Example:** PRO monthly costs 10 XNT
* Fee savings: 0.3% per trade
* On a 100 XNT trade, you save 0.3 XNT
* Break-even: 10 XNT / 0.003 = \~3,333 XNT monthly volume
If you trade more than 3,333 XNT per month, PRO pays for itself.
## Managing Your Subscription
### Renewal
* Subscriptions auto-renew if you have sufficient balance
* You'll receive a reminder before renewal
* Disable auto-renew in Settings if desired
### Downgrade
* You can downgrade at any time
* Current tier remains active until expiration
* New tier takes effect after current period ends
### Cancellation
* Cancel anytime - no penalties
* Access continues until subscription period ends
* Reverts to FREE tier after expiration
## FAQ
You'll revert to the FREE tier with 1.0% fees. All your data, wallets, and settings remain intact.
Yes! When you upgrade, you'll receive prorated credit for your remaining time on the current tier.
No. The trading fee shown for your tier is all-inclusive. Network gas fees are separate and apply to all tiers equally.
Fee reductions apply to swaps, limit orders, and DCA. Copy trading fees may have separate structures.
Not currently. Each user must upgrade their own account.
## Commands Reference
| Command | Description |
| ---------- | ----------------------------------- |
| `/tier` | View your current tier and benefits |
| `/upgrade` | Open the upgrade menu |
---
# Telegram Bot Guide
URL: /docs/honeybadger/telegram-bot
> Complete guide to using the Honey Badger Telegram bot
# Telegram Bot Guide
The Honey Badger Telegram bot is your primary interface for trading on the X1 blockchain. This guide covers all available commands and features.
## Accessing the Bot
**Bot Link**: [t.me/HoneyBadgerCoreBot](https://t.me/HoneyBadgerCoreBot)
## Main Menu
Type `/start` or `/menu` to access the main menu:
```
🔥 Trending
Buy | Sell | Send
Portfolio | Trading
💰 Earn | 🎁 Referral
More | Support
```
### Menu Buttons
| Button | Description |
| ----------- | ----------------------------------- |
| 🔥 Trending | View hot tokens with one-tap buying |
| Buy | Purchase tokens |
| Sell | Sell your holdings |
| Send | Transfer tokens to another wallet |
| Portfolio | Access wallet, positions, orders |
| Trading | Advanced trading features |
| 💰 Earn | Staking and rewards hub |
| 🎁 Referral | Your referral code and stats |
| More | Settings, tools, and help |
| Support | Get help from the team |
## Submenus
### Portfolio Menu
Access via the "Portfolio" button:
* **Wallet** - View balances and addresses
* **Positions** - Current token holdings
* **Orders** - Active limit orders
* **Copy Trade** - Copied wallet settings
### Trading Menu
Access via the "Trading" button:
* **Swap** - Quick token swaps
* **Snipe** - Token sniping setup
* **Limit Orders** - Set TP/SL orders
* **DCA** - Dollar cost averaging
### More Menu
Access via the "More" button:
* **Settings** - Bot configuration
* **XP Rewards** - View and redeem XP
* **Tools** - Price checker, charts
* **Help** - Command reference
## Trading Commands
### Buying Tokens
**Method 1: Paste Contract Address**
Simply paste a token contract address and the bot will prompt you to buy.
**Method 2: Buy Command**
```
/buy
```
**Method 3: Quick Buy**
```
/buy
```
Example: `/buy 0x1234... 1.5`
**Method 4: Trending**
Tap "Trending" and tap any token to buy instantly.
### Selling Tokens
```
/sell
```
This displays your positions. Select a token and choose:
* Sell 25%
* Sell 50%
* Sell 100%
* Custom amount
### Quick Sell
```
/sell
```
Example: `/sell 0x1234... 50`
## Wallet Commands
### View Wallet
```
/wallet
```
Options:
* View balance
* Create new wallet (up to 10)
* Switch active wallet
* Export private key
* Import wallet
### Check Balance
```
/balance
```
Shows XNT and token balances across all wallets.
### Deposit
```
/deposit
```
Displays your wallet address for deposits.
### Withdraw
```
/withdraw
```
Example: `/withdraw 0xabcd... 5`
### Send Tokens
```
/send [token]
```
Example: `/send 0xabcd... 10 XNT`
## Order Commands
### View Orders
```
/orders
```
Lists all active limit orders.
### Take Profit Order
```
/tp
```
### Stop Loss Order
```
/sl
```
### Trailing Stop
```
/trail
```
### Cancel Order
```
/cancel
```
## Copy Trading Commands
### View Copy Trades
```
/copy
```
### Add Wallet to Copy
```
/copy add
```
### Remove Copied Wallet
```
/copy remove
```
### Copy Trading Settings
```
/copy settings
```
Configure:
* Max buy amount
* Copy percentage
* Token filters
* Auto-sell with target
## Sniping Commands
### View Snipes
```
/snipe
```
### Create Snipe
```
/snipe
```
### Snipe Settings
* Gas multiplier
* Slippage tolerance
* Auto-sell triggers
## Earn Commands
### Open Earn Hub
```
/earn
```
Access liquid staking, validator staking, and XP rewards.
### Staking
```
/stake
```
Stake XNT for rewards via liquid staking or validators.
### View Stakes
```
/mystakes
```
View all your staking positions and rewards.
### Browse Validators
```
/validators
```
Browse and compare X1 validators for staking.
## Referral Commands
### View Referral Info
```
/referral
```
Shows your referral code, link, and stats.
### View Detailed Stats
```
/referralstats
```
Detailed breakdown of referrals and commissions.
### Claim Rewards
```
/claim
```
Claim your pending referral commissions.
### View Your Tier
```
/tier
```
Check your subscription tier and fee rate.
### Upgrade Tier
```
/upgrade
```
Upgrade to a premium tier for lower fees.
## Settings Commands
### View Settings
```
/settings
```
### Configure Options
* **Slippage**: Default slippage tolerance
* **Gas**: Gas price settings
* **Notifications**: Trade alerts
* **Clean Chat**: Edit vs new messages
## Utility Commands
| Command | Description |
| ---------------- | --------------------- |
| `/help` | Show help menu |
| `/price ` | Check token price |
| `/chart ` | Token price chart |
| `/info ` | Token information |
| `/gas` | Current gas prices |
| `/start` | Reset bot / main menu |
| `/menu` | Show main menu |
## Complete Command Reference
### Trading
| Command | Description |
| ------- | ---------------------- |
| `/buy` | Buy tokens |
| `/sell` | Sell tokens |
| `/send` | Send tokens to address |
| `/swap` | Quick token swap |
### Portfolio
| Command | Description |
| ------------ | ------------------- |
| `/wallet` | Wallet management |
| `/balance` | Check balances |
| `/positions` | View holdings |
| `/deposit` | Get deposit address |
| `/withdraw` | Withdraw funds |
### Orders
| Command | Description |
| --------- | ------------------ |
| `/orders` | View active orders |
| `/tp` | Take profit order |
| `/sl` | Stop loss order |
| `/trail` | Trailing stop |
| `/cancel` | Cancel order |
| `/dca` | DCA order setup |
### Copy Trading
| Command | Description |
| -------------- | -------------------- |
| `/copy` | Copy trade menu |
| `/copy add` | Add wallet to copy |
| `/copy remove` | Remove copied wallet |
### Sniping
| Command | Description |
| --------------------- | ------------ |
| `/snipe` | Snipe menu |
| `/snipe ` | Create snipe |
### Earning
| Command | Description |
| ------------- | ----------------- |
| `/earn` | Earn hub menu |
| `/stake` | Stake XNT |
| `/mystakes` | View stakes |
| `/validators` | Browse validators |
### Referrals
| Command | Description |
| ---------------- | -------------- |
| `/referral` | Referral info |
| `/referralstats` | Detailed stats |
| `/claim` | Claim rewards |
| `/tier` | View tier |
| `/upgrade` | Upgrade tier |
### Settings & Help
| Command | Description |
| ----------- | --------------- |
| `/settings` | Bot settings |
| `/help` | Help menu |
| `/support` | Contact support |
## Keyboard Shortcuts
The bot uses inline keyboards for quick actions:
* **Refresh** - Update displayed data
* **Back** - Return to previous menu
* **Close** - Close current view
## Tips for Best Experience
1. **Pin the bot** - Pin the chat for quick access
2. **Use Trending** - Discover and buy hot tokens instantly
3. **Set default amounts** - Speed up trading in Settings
4. **Enable notifications** - Stay informed on order fills
5. **Use submenus** - Portfolio and Trading organize features logically
## Troubleshooting
### Bot Not Responding
* Check your internet connection
* Try `/start` to reset
* Bot may be under maintenance
### Transaction Failed
* Insufficient balance
* Slippage too low
* Token may have transfer restrictions
### Wallet Issues
* Ensure you've backed up your private key
* Check that the correct wallet is selected
---
# TokenIntel Panel
URL: /docs/honeybadger/token-intel
> The 15-panel structured deep-dive on any XNT-paired token
# TokenIntel Panel
The TokenIntel panel is a structured 15-panel matrix that consolidates everything Honey Badger knows about a token into one page. Open it from the Trade page (the "Details" tab) or from any token link in the dashboard.
## The 15 panels
Each panel is scoped to a specific question:
1. **Identity** — mint address, name, symbol, decimals, deploy tx
2. **Price** — current price in XNT and USD, 24h / 7d change
3. **Liquidity** — TVL in the primary pool, pool address, quote token
4. **Supply** — total supply, circulating supply, burn history
5. **Holders** — top 10 holders, concentration ratio, holder count trend
6. **Ownership** — mint authority, freeze authority, renouncement state
7. **LP Lock** — LP lock status, locker (Team, Streamflow, burn, etc.), unlock date
8. **Taxes** — buy tax, sell tax, transfer tax
9. **Honeypot** — result of the on-demand sell simulation
10. **RiskLabel** — the summary risk classification with its inputs
11. **Volume** — 24h volume, trade count, unique wallets
12. **Smart Money** — wallets classified as Smart Money currently holding
13. **MEV** — recent sandwich activity on this token
14. **Recent Trades** — most recent N trades with size and side
15. **Trade Replay** — jump to the chart's replay scrubber preloaded on this token
## When to use it
* **Before a sniper rule fires** — click through TokenIntel on a target to sanity-check filters
* **Before a manual buy on a new token** — confirm ownership, LP lock, taxes, honeypot
* **When a copy-trade guard blocked a mirror** — TokenIntel shows which specific check failed
* **When Forti flags a Smart Money buy** — see which specific wallets, and their history
## Data freshness
* **Price / Liquidity / Volume / Recent Trades** — streaming; updates as new blocks land
* **Holders / Concentration** — refreshed on open, updated every 60s while the panel is open
* **Ownership / LP Lock / Taxes** — cached until the next on-chain state change on those fields
* **Honeypot** — computed on-demand; click the panel to re-simulate
## Related pages
---
# Trading Guide
URL: /docs/honeybadger/trading
> Learn how to trade effectively with Honey Badger
# Trading Guide
Master trading on the X1 blockchain with Honey Badger. This guide covers everything from basic swaps to advanced order types.
## What's changed recently
If you've used Honey Badger before and are coming back:
* **Faster buys.** Submit-to-confirm on the buy path went from \~30s to \~1.7s. The dashboard reflects this immediately.
* **Optimistic UI.** The Trade panel updates the moment your transaction is signed — no more "did that go through?" waiting on the confirm.
* **Atomic fee + trade.** Fee and swap are combined into a single transaction (Sub-EPIC C), so you can no longer get charged a fee for a trade that ultimately reverted.
* **Anti-Rug UX overhaul.** Every buy runs through the anti-rug pipeline: honeypot simulation, tax scan, ownership check, LP-lock check, RiskLabel. See [Charts & Market Intel](/docs/honeybadger/charts).
* **RiskLabel + Confidence.** Every token page shows a summary risk label with a breakdown of its inputs.
## Basic Trading
### Buying Tokens
**Via Telegram:**
1. Paste a token contract address
2. Select buy amount
3. Confirm the transaction
**Via Dashboard:**
1. Navigate to Trading
2. Enter token address
3. Set amount and parameters
4. Click Buy
### Selling Tokens
**Via Telegram:**
```
/sell
```
Select your position and choose sell percentage.
**Via Dashboard:**
1. Go to Positions
2. Click on the token
3. Choose sell amount
4. Confirm transaction
## Understanding Slippage
Slippage is the difference between expected and executed price.
### Recommended Slippage Settings
| Market Condition | Slippage |
| --------------------- | --------- |
| Stable/High Liquidity | 0.5% - 1% |
| Moderate Volatility | 1% - 3% |
| High Volatility | 3% - 5% |
| New/Low Liquidity | 5% - 15% |
### Auto-Slippage
Enable auto-slippage to let Honey Badger calculate optimal slippage based on:
* Token liquidity
* Current volatility
* Trade size
## Gas Settings
### Gas Modes
| Mode | Description | Use Case |
| -------- | --------------- | --------------------- |
| Standard | Network average | Normal trading |
| Fast | +20% priority | Quick execution |
| Turbo | +50% priority | Time-sensitive trades |
| Custom | Set your own | Advanced users |
### Gas Tips
* Use **Fast** during high volatility
* Use **Turbo** for sniping
* **Standard** is fine for most trades
* Monitor gas prices with `/gas`
## Limit Orders
### Take Profit (TP)
Automatically sell when price reaches your target.
```
/tp
```
Example: Sell 50% when token reaches $1.00
```
/tp 0x1234... 1.00 50
```
### Stop Loss (SL)
Protect against losses by selling if price drops.
```
/sl
```
Example: Sell 100% if price drops to $0.50
```
/sl 0x1234... 0.50 100
```
### Trailing Stop
Dynamic stop loss that follows the price up.
```
/trail
```
Example: 10% trailing stop
```
/trail 0x1234... 10
```
If token goes from $1 to $2, stop triggers at $1.80 (10% below peak).
## DCA (Dollar Cost Averaging)
Spread purchases over time to reduce volatility impact.
### Setting Up DCA
1. Go to Orders > DCA
2. Select token
3. Set total amount
4. Choose interval (hourly, daily, weekly)
5. Set number of buys
6. Activate
### DCA Benefits
* Reduces timing risk
* Smooths entry price
* Automated execution
* Good for accumulation
## Trading Strategies
### Momentum Trading
1. Identify trending tokens
2. Enter on pullbacks
3. Set tight stop losses
4. Take profit in stages
### Swing Trading
1. Identify support/resistance
2. Buy at support
3. Sell at resistance
4. Use wider stops
### Scalping
1. Trade small timeframes
2. Take quick profits
3. Use tight stops
4. High frequency
## Risk Management
### Position Sizing
Never risk more than you can afford to lose.
**Suggested Guidelines:**
* No single trade > 5% of portfolio
* Total exposure \< 20% in high-risk tokens
* Keep reserves for opportunities
### Using Stop Losses
Always use stop losses:
* Set before entering trade
* Don't move to increase loss
* Consider volatility when setting
### Taking Profits
Don't be greedy:
* Take partial profits at targets
* Let winners run with trailing stops
* Lock in gains regularly
## Advanced Techniques
### Scaling In/Out
Instead of one entry/exit, scale positions:
**Scaling In:**
* 33% at first target
* 33% on confirmation
* 33% on dip
**Scaling Out:**
* 25% at +50%
* 25% at +100%
* 50% trailing stop
### Portfolio Rebalancing
Periodically rebalance:
1. Review positions monthly
2. Trim winners that are overweight
3. Add to convictions
4. Remove dead positions
## Common Mistakes to Avoid
1. **FOMO buying** - Don't chase pumps
2. **No stop loss** - Always protect downside
3. **Overtrading** - Quality over quantity
4. **Ignoring fees** - Account for gas and slippage
5. **Emotional trading** - Stick to your plan
---
# Trending Tokens
URL: /docs/honeybadger/trending-tokens
> Discover hot tokens and trade with one tap
# Trending Tokens
Stay on top of the X1 market with Honey Badger's curated trending tokens list. See what's moving, catch momentum plays, and buy with a single tap.
## Accessing Trending
* **Telegram:** Tap "Trending" in the main menu
* **Dashboard:** View the Trending widget on the home screen
## How It Works
The trending list shows tokens that are gaining attention based on:
* **Trading Volume** - High volume indicates active interest
* **Price Movement** - Significant gains or losses
* **Holder Growth** - New wallets acquiring the token
* **Social Signals** - Community buzz and mentions
Trending tokens are curated and updated regularly. Not all tokens are listed - only verified tokens with sufficient liquidity appear.
## Reading the Trending List
Each token in the list displays:
| Element | Meaning |
| ------------- | ----------------------------- |
| Token Symbol | The ticker (e.g., PEPE, BONK) |
| Current Price | Live price in XNT |
| 24h Change | Price change with indicator |
### Price Change Indicators
* **Green** - Price is up in the last 24 hours
* **Red** - Price is down in the last 24 hours
* **Percentage** - Exact change amount
Example display:
```
PEPE 0.00001234 +15.2%
BONK 0.00000567 -3.4%
```
## One-Tap Trading
The trending list is designed for fast action:
### View Trending
Tap "Trending" to see the current hot tokens.
### Tap a Token
Each token row is a button. Tap it to start buying.
### Confirm Purchase
You'll be taken directly to the buy flow with the token pre-selected.
No need to copy contract addresses or search - just tap and trade.
## Refreshing the List
Markets move fast. Use the "Refresh" button to get the latest trending data.
Trending status can change quickly. Always do your own research before trading. Past performance doesn't guarantee future results.
## Trending vs. Your Watchlist
| Feature | Trending | Watchlist |
| ------- | ----------------------- | ------------------------ |
| Source | Curated by Honey Badger | Your personal selections |
| Updates | Automatic | Manual add/remove |
| Tokens | Market movers | Any token you choose |
| Purpose | Discovery | Monitoring |
Use trending for discovery, watchlists for tracking tokens you're already interested in.
## Tips for Using Trending
1. **Check Volume** - High volume trending is more reliable than low volume pumps
2. **Look at Charts** - Tap through to see full price history before buying
3. **Set Limits** - Use limit orders to catch better entries on trending tokens
4. **Don't Chase** - If a token has already pumped 100%, the easy gains may be over
5. **Diversify** - Don't put all your funds into one trending token
## FAQ
The list updates in real-time based on market activity. Use the refresh button to get the latest data.
Trending only shows curated tokens with verified contracts and sufficient liquidity. New or low-liquidity tokens may not appear.
Currently, trending is on-demand only. Set price alerts on specific tokens if you want notifications.
Yes, both use the same data source and show the same trending tokens.
---
# Wallet Management
URL: /docs/honeybadger/wallet
> Create, manage, and secure your trading wallets with Honey Badger
# Wallet Management
Honey Badger supports multiple wallets for flexible trading strategies. Learn how to create, manage, and secure your wallets.
## Creating Wallets
### Your First Wallet
When you first start the bot, a wallet is automatically created for you:
```
/start
```
The bot displays:
* Wallet address
* Private key (save immediately!)
### Additional Wallets
Create up to 10 wallets:
```
/wallet
```
Select **Create New Wallet** from the menu.
### Wallet Labels
Each wallet is labeled W1, W2, W3, etc. You can identify them by:
* Wallet number (W1-W10)
* Address (first and last characters)
* Custom nickname (in settings)
## Viewing Balances
### All Wallets
```
/balance
```
Shows balances for all your wallets:
```
Wallet Balances
W1 (Active): 0x1234...abcd
X1: 10.5 ($52.50)
USDT: 100.00 ($100.00)
W2: 0x5678...efgh
X1: 5.2 ($26.00)
```
### Single Wallet
In the wallet menu, select a wallet to see detailed balances including all tokens.
## Switching Wallets
### Via Command
```
/wallet switch
```
Then select the wallet number.
### Quick Switch
Use inline buttons in the wallet menu to switch instantly.
### Default Wallet
Your active wallet is used for all trades. The active wallet is marked with **(Active)** in lists.
## Depositing Funds
### Get Deposit Address
```
/deposit
```
Displays your active wallet's address for receiving funds.
### From Exchange
1. Copy your deposit address
2. Go to your exchange
3. Withdraw to your Honey Badger address
4. Wait for confirmation
### From Another Wallet
1. Use your external wallet
2. Send to your Honey Badger address
3. Transaction confirms automatically
> **Note**: Only send X1 network tokens. Tokens from other networks may be lost.
## Withdrawing Funds
### Withdraw X1
```
/withdraw
```
Example:
```
/withdraw 0xabcd...1234 5.0
```
### Withdraw Tokens
```
/send
```
### Withdrawal Confirmations
Large withdrawals may require additional confirmation. Review the details carefully before confirming.
## Importing Wallets
### Import via Private Key
```
/wallet import
```
Then paste your private key when prompted.
> **Security Warning**: Only import keys from trusted sources. Never share your private key with anyone.
### Import Considerations
* Imported wallets count toward your 10-wallet limit
* You can export again at any time
* Original wallet remains valid elsewhere
## Exporting Wallets
### Export Private Key
```
/wallet
```
Select a wallet, then **Export Private Key**.
The key is sent in a self-destructing message (auto-deletes after viewing).
### Why Export?
* Backup your wallet
* Use wallet in other apps
* Transfer to new device
### Security Practices
1. Never screenshot private keys
2. Store in secure password manager
3. Consider hardware backup
4. Never share with anyone
## Wallet Security
### Private Key Safety
Your private key is the master access to your wallet. Protect it:
* **DO NOT** share with anyone
* **DO NOT** enter on suspicious websites
* **DO NOT** store in plain text files
* **DO** use password managers
* **DO** consider hardware backups
### Recognizing Scams
Honey Badger will **NEVER**:
* Ask for your private key
* DM you first
* Request funds be sent somewhere
* Require "verification" payments
### If Compromised
If you suspect your key is compromised:
1. Immediately transfer funds to a new wallet
2. Create a fresh wallet in Honey Badger
3. Do not use the compromised wallet
4. Report suspicious activity
## Multi-Wallet Strategies
### Strategy Separation
Use different wallets for different purposes:
| Wallet | Purpose |
| ------ | --------------- |
| W1 | Main trading |
| W2 | Copy trading |
| W3 | Sniping |
| W4 | Long-term holds |
| W5 | Testing |
### Benefits
* Isolate risk
* Track performance separately
* Different settings per strategy
* Clean organization
## Wallet Limits
### Current Limits
* Maximum 10 wallets per account
* No minimum balance required
* No maximum balance
### Reaching Limits
If you have 10 wallets and need more:
1. Export keys of unused wallets
2. Remove them from Honey Badger
3. Create new wallets as needed
## Troubleshooting
### Wallet Not Showing
* Refresh with `/wallet`
* Check if correct account
* Contact support if persistent
### Balance Not Updating
* Network may be congested
* Try `/balance` again
* Wait a few minutes for sync
### Transaction Stuck
* Check gas settings
* Transaction may need more gas
* Wait or contact support
---
# Components
URL: /docs/test
> Components
## Code Block
```js
console.log('Hello World');
```
## Cards