User Guide
Everything you need to know about using the DCA Bot platform.
Overview
DCA Bot is a non-custodial automated trading platform built on top of Uniswap V3. It allows you to set up automated trading strategies — DCA, grid buying, limit orders, multi-pair grids, and portfolio rebalancing — that execute trades on your behalf using Safe7579 Smart Accounts (Safe + ERC-7579 modules + ERC-4337 account abstraction).
Your funds remain in your own Safe smart contract at all times. The bot uses a server-held execution key whose permissions are enforced on-chain by the Smart Sessions module — restricting it exclusively to Uniswap V3 swaps from your Safe.
Non-custodial
Your keys, your funds
Multi-chain
Ethereum, Arbitrum, Base, OP
5 strategy types
DCA, Grid, Limit, MPG, Rebalance
Safe7579
ERC-4337 + ERC-7579 modules
Getting Started
Follow these steps to start automated trading:
- Connect your wallet — Click "Connect Wallet" in the header. Sign the authentication message to log in. Supports MetaMask, WalletConnect, and other EIP-1193 wallets.
- Create a Smart Account — Go to Smart Account and click "Add Account". Select a chain and create. A Safe smart account address will be predicted for you.
- Fund EntryPoint (mainnet only) — On mainnet, click "Fund EP" on your Smart Account card and deposit ETH (~0.001 ETH on L2, ~0.005 ETH on Ethereum). This funds the gas deposit that powers all automated operations. On testnets this step is not needed — gas is paid by a paymaster.
- Fund your Smart Account — Transfer trading tokens (e.g. USDC) to your Smart Account address. Use the "Fund Safe" button or send directly from your wallet.
- Deploy & Activate — Click "Deploy Safe7579" and then "Activate Session" on the Smart Account page. Both steps execute automatically on the server — no MetaMask signatures required. The server deploys your Safe and installs the Smart Sessions validator with swap permissions.
- Create a Strategy — Go to Strategies and click "New Strategy". Choose a type, configure parameters, select your Smart Account, and start it.
Smart Accounts
Smart Accounts are the core infrastructure behind automated trading on the platform. Understanding how they work will help you set up, fund, and manage your accounts effectively.
What Is a Smart Account?
A Smart Account is a Safe smart contract wallet (formerly Gnosis Safe) — the most battle-tested and widely used smart account on Ethereum. Unlike a regular MetaMask wallet (EOA), a Smart Account is a programmable contract on-chain that can hold funds and execute transactions according to rules defined in its modules.
Your Smart Account is extended with two standards that enable automated trading:
- ERC-7579 (Modular Accounts) — a standard for installing and managing modules on smart accounts. Through the Safe7579 adapter, your Safe gains the ability to use ERC-7579 modules like Smart Sessions.
- ERC-4337 (Account Abstraction) — a standard that allows smart contracts to initiate transactions via UserOperations. Instead of the server needing your private key, it creates a UserOperation (a data structure describing the desired action), signs it with a restricted execution key, and submits it to a special node called a Bundler (we use Pimlico). The Bundler includes the UserOp in a regular Ethereum transaction.
Key Components
Safe7579 Adapter
An ERC-7579 adapter module installed on your Safe. It acts as a bridge between ERC-4337 UserOperations and the Safe's execution pipeline. When the EntryPoint contract calls your Safe with a UserOperation, the Safe7579 adapter validates the signature, verifies the caller is the legitimate EntryPoint, and routes the call through the Safe's standard execution flow.
Smart Sessions Module
An ERC-7579 validator module that enforces on-chain permission rules. When activated, it creates a session — a set of restrictions that say: "this specific execution key can only call Uniswap V3's exactInputSingle function, and nothing else." These rules are enforced by the Safe contract itself on-chain. Even if the server were fully compromised, the attacker could only execute Uniswap swaps from your Safe — not transfer tokens, change owners, or call any other contract.
Execution Key
A server-side keypair generated for each Smart Account. It is encrypted at rest with Fernet symmetric encryption and never exposed in the UI, API, or logs. This key is not an owner key — it only has permission to sign UserOperations within the limits defined by the Smart Sessions module. Your MetaMask wallet remains the sole owner of the Safe.
What Is EntryPoint and Why Is It Needed?
EntryPoint is a singleton smart contract deployed by the ERC-4337 standard at address 0x0000000071727De22E5E9d8BAf0edAc6f37da032. It is the central coordinator for all account abstraction operations. Every UserOperation goes through EntryPoint — it validates the operation, calls your Smart Account to execute it, and handles gas payment.
EntryPoint Deposit is a gas prepayment mechanism. You deposit ETH into the EntryPoint contract, crediting it to your Smart Account address. When a UserOperation is executed (deploy, activate session, swap), EntryPoint deducts the gas cost from this deposit. Think of it as a gas tank for your Smart Account:
- Every operation (deployment, session activation, each swap) consumes a small amount of gas from your EP deposit
- The current EP balance is displayed on your Smart Account card
- When the balance gets low, click "Fund EP" to top up from your MetaMask wallet
- You can also withdraw unused EP balance back to your wallet via "Recover EP"
Testnet vs Mainnet: On testnets (Sepolia, Arbitrum Sepolia), gas is sponsored by a Pimlico paymaster — you don't need to deposit ETH into EntryPoint. On mainnet (Ethereum, Arbitrum, Base, Optimism), there is no paymaster — you must fund the EntryPoint deposit before any operation can execute.
How Much ETH Does EntryPoint Need?
Gas costs vary significantly by chain. Here are approximate costs per operation:
| Operation | L2 (Arbitrum) | Ethereum mainnet |
|---|---|---|
| Deploy Safe7579 | ~0.00003 ETH | ~0.002 ETH |
| Activate Session (3 steps) | ~0.00015 ETH | ~0.005 ETH |
| Each swap | ~0.00002 ETH | ~0.002 ETH |
| Recommended initial deposit | 0.001 ETH | 0.01 ETH |
On L2 chains like Arbitrum, a deposit of 0.001 ETH is enough for deployment, activation, and dozens of swaps. Monitor your EP balance on the Smart Account card and top up when needed.
Lifecycle: From Creation to Trading
Here is the complete lifecycle of a Smart Account, step by step:
Create Account
Click "Add Account" and select a chain. The system generates a server-side execution keypair (encrypted at rest) and computes your Safe address deterministically via CREATE2. No on-chain transaction happens yet — the address is just predicted. Status: Not Deployed
Fund EntryPoint (mainnet only)
Click "Fund EP" on the Smart Account card. This opens a dialog where you deposit ETH from your MetaMask wallet into the EntryPoint contract, credited to your predicted Safe address. The ETH goes to the EntryPoint contract (not to your Safe directly) and will be used to pay gas for all subsequent operations. On testnets, skip this step — the Pimlico paymaster pays gas for you.
Deploy Safe7579
Click "Deploy". The server builds a UserOperation that deploys your Safe contract on-chain and installs the Safe7579 adapter module. The deployment is executed through EntryPoint (gas is deducted from your EP deposit on mainnet or paid by paymaster on testnet). No MetaMask signature needed — the server handles everything. Status: Deployed
Activate Session
Click "Activate Session". The server sends three sequential UserOperations:
- Set Rhinestone Registry — registers the trusted module attestation registry on your Safe
- Install Smart Sessions — installs the Smart Sessions validator module on your Safe
- Enable Session — creates a permission entry granting the server execution key the right to call Uniswap V3
exactInputSingleonly
Status: Active — the bot can now execute swaps autonomously.
Fund Trading Tokens
Send trading tokens (e.g. USDC, WETH) directly to your Smart Account address. Use the "Fund Safe" button for a guided flow, or send from any wallet. These are the tokens your strategies will use for swaps.
Create a Strategy & Trade
Go to Strategies, create a new strategy, select your Active Smart Account, and start it. The bot will automatically execute swaps when conditions are met, signing UserOperations with the execution key and submitting them through the Pimlico bundler. Each swap deducts a small gas fee from your EP deposit (mainnet) or is paid by paymaster (testnet).
Execution Flow (How Swaps Work)
When a strategy triggers a swap, here is exactly what happens:
- The server decrypts the execution key for your Smart Account
- Constructs a UserOperation — a data structure containing the swap calldata (Uniswap V3
exactInputSingle) - Signs the UserOp with the execution key. The signature includes a permissionId that tells the Smart Sessions module which session rules to check
- Submits the signed UserOp to the Pimlico bundler
- The bundler includes the UserOp in an Ethereum transaction and sends it to the EntryPoint contract
- EntryPoint calls your Safe → Safe7579 adapter validates the UserOp → Smart Sessions module verifies the session permissions → Safe executes the Uniswap swap
- EntryPoint deducts gas cost from your EP deposit (mainnet) or the paymaster covers it (testnet)
- The server parses the on-chain ERC-20 Transfer events to record the swap result
Managing Your EP Balance
On mainnet, your EntryPoint deposit is consumed by every operation. Here's how to manage it:
- Check balance — the EP balance is shown on your Smart Account card (labeled "EP balance"). It updates automatically.
- Top up — click "Fund EP" on the Smart Account card. Select the amount and confirm in MetaMask. The ETH is deposited into EntryPoint credited to your Safe address. You can top up at any time, even if the account is already active.
- Withdraw — click "Recover EP" to withdraw unused EntryPoint deposit back to your MetaMask wallet. This sends a UserOperation from your Safe that calls EntryPoint's
withdrawTofunction. - Low balance — if your EP balance is too low to cover gas for a UserOperation, the bundler will reject it with an "AA21" or "AA23" error. Your strategy will retry on the next scheduled interval. Top up EP to resume.
Multiple Accounts
You can have multiple Smart Accounts on the same or different chains. When creating a strategy, select the specific Smart Account you want to use. Only accounts with Smart Sessions enabled (status: Active) can execute trades. Each account has its own EP balance and trading tokens.
Strategies Overview
Strategies are automated trading rules that the bot executes on your behalf. The platform supports five strategy types, each suited for different market conditions and goals.
DCA
Buy fixed amounts on a schedule. Best for long-term accumulation.
Price Grid
Buy at predefined price levels as the market dips. Buy low, sell high.
Limit Order
One-shot buy or sell when price reaches your target.
Multi-Pair Grid
Grid strategy across multiple tokens with allocation percentages.
Rebalance
Automatically maintain target portfolio allocations.
Common Settings
All strategies share these configuration options:
- Chain — which network to trade on
- Smart Account — which Safe7579 account to use (only accounts with Active session are shown)
- Fee Tier — Uniswap V3 pool fee (0.05%, 0.3%, or 1%)
- Slippage — maximum allowed price impact in basis points
Managing Strategies
From the Strategies page you can pause/resume, edit parameters, view detailed statistics, see order history with charts, and export orders to CSV.
DCA (Dollar-Cost Averaging)
DCA buys a fixed amount of a token at regular intervals, regardless of price. This strategy averages out your entry price over time and reduces the impact of volatility.
Configuration
- Amount per Order — how much to buy each time (in the input token)
- Total Orders — total number of buys before the strategy completes
- Interval — time between orders (1h, 4h, 12h, daily, weekly)
Smart DCA
Smart DCA enhances the basic strategy by buying more when market conditions are favorable (i.e. during dips):
- RSI mode — when the Relative Strength Index drops below your threshold (e.g. RSI < 30), the bot multiplies the order size by your chosen multiplier (e.g. 1.5x)
- Price Deviation mode — when price drops more than X% from its moving average, the bot buys more
- Lookback — number of periods used to calculate the indicator (default: 14)
Trailing Stop
Available for DCA strategies. A trailing stop follows the price upward and triggers a sell when the price drops a specified percentage from its peak:
- Trail % — sell when price drops X% from highest recorded price
- Activation % — optional, only start trailing after X% gain from entry
Price Grid Strategy
The grid strategy places buy orders at predefined price levels below the current market price. As the price drops, the bot buys more — each level ("leg") triggers a purchase. This is ideal for accumulating tokens during market downturns.
Grid Modes
Choose how price levels are calculated:
- % from Start — each leg is a fixed percentage below the starting price. Leg 1 = -5%, Leg 2 = -10%, etc.
- % Between Legs — each leg is X% below the previous leg. Creates exponentially spaced levels.
- Fixed $ Step — each leg is a fixed dollar amount below the previous. Leg 1 = -$100, Leg 2 = -$200, etc.
Size Multiplier
Controls how order size grows with each leg. A multiplier of 1.0 means flat (same amount each level). A multiplier of 1.5 means each leg buys 1.5x the previous one — buying aggressively as price drops further.
Take Profit & Stop Loss
- Take Profit — auto-sells all accumulated tokens when price rises X% above your average buy price
- Stop Loss — auto-sells if price drops X% below your average buy price, limiting downside
- Trailing Stop — dynamic take profit that follows price upward and sells on a pullback
Grid Preview
Before creating the strategy, a preview table shows all grid legs with their trigger prices, order amounts, and cumulative investment. The preview uses the current Chainlink oracle price as the starting point.
Limit Orders
A limit order is a one-shot conditional trade that executes when the market price reaches your target. Unlike grid strategies, limit orders execute once and complete.
Order Sides
- Buy — triggers when price drops to your target. Example: "Buy ETH when it drops to $2,000"
- Sell — triggers when price rises to your target. Example: "Sell ETH when it reaches $4,000"
The bot monitors prices using Chainlink oracles and executes the swap on Uniswap V3 when the target is reached. The current oracle price is displayed in the form for reference.
Multi-Pair Grid
Multi-pair grid extends the grid strategy across multiple tokens simultaneously. Instead of buying one token on dips, you buy several tokens with configurable allocation percentages.
Configuration
- Buy With Token — the stable token used to buy (e.g. USDC)
- Pairs & Allocations — select multiple output tokens and assign a percentage to each. Allocations must sum to 100%.
- The grid mode, step, and multiplier settings apply to all pairs equally
Example: allocate 60% to ETH and 40% to WBTC. When the grid triggers, 60% of the order goes to buying ETH and 40% to WBTC.
Rebalance Strategy
The rebalance strategy maintains target portfolio allocations by automatically swapping tokens when their weights drift beyond a threshold.
Configuration
- Target Allocations — set target percentages for each token (e.g. 60% WETH, 40% USDC). Must sum to 100%.
- Drift Threshold — rebalance only when an allocation drifts more than X% from target (default: 5%)
- Check Interval — how often to check allocations (hourly, 4h, daily, weekly)
- Minimum Swap Amount — don't rebalance if the required swap is below this amount (avoids dust trades)
You can also manually trigger a rebalance check from the strategy details page using the "Rebalance Now" button.
Manual Swap
The Swap page lets you execute one-off token swaps through Uniswap V3. This is useful for:
- Quick trades outside of a strategy
- Swapping tokens before or after a strategy completes
- Testing that your Smart Account can execute swaps
Execute From
Choose where the swap executes from using the Execute From selector:
- Connected Wallet — legacy path, uses the server's configured wallet key
- Smart Account — executes as a Safe7579 UserOperation through the bundler (gas from EP deposit on mainnet, paymaster on testnet). Only accounts with an Active Smart Session on the selected chain are listed. Balances shown reflect the Smart Account's holdings.
Features
- Chain and token pair selection
- Real-time balance display (wallet or Smart Account) with MAX button
- Configurable slippage tolerance and fee tier
- Price comparison across available sources
Demo Mode (Paper Trading)
Demo Mode lets you test any strategy with simulated execution — no real funds, no Smart Account required. Demo orders are tracked, statistics are calculated, and the UI behaves exactly like a live strategy, but no on-chain transaction is submitted.
How It Works
- Enable the Demo Mode toggle when creating a strategy
- The bot monitors prices on schedule and records simulated fills at the current Chainlink oracle price
- Orders appear in your history with a Demo badge
- The Strategy P&L table highlights demo rows in amber so they're easy to distinguish
What Is Excluded from Real Statistics
Demo strategies are intentionally excluded from all real portfolio metrics:
- Active Strategies, Orders Executed, Total Invested — demo is not counted
- Realized P&L and the P&L chart — only real trades contribute
- Gas Spent — demo gas is shown as an estimate (~) and not summed in totals
- Win Rate — only real exits (TP/SL) count toward win rate
When to Use Demo Mode
- Learning the platform without risking funds
- Backtesting a strategy configuration before going live
- Exploring new strategy types (grid spacing, TP/SL levels) before committing capital
- Teaching others or showing the platform to non-crypto users
Dashboard & P&L
The Dashboard provides an at-a-glance overview of your trading activity:
Summary Cards
- Active Strategies — number of currently running strategies
- Orders Executed — total successful trades across all strategies
- Total Invested — sum of all tokens spent on purchases
Strategy P&L Table
Shows profit/loss for each strategy including: invested amount, tokens bought, average buy price, current status, and order count.
Balances
Displays token balances across all your Smart Accounts and connected wallets, broken down by chain.
Webhooks
Webhooks send real-time HTTP POST notifications to your URL when events occur. Use them to integrate with Telegram bots, Discord, monitoring tools, or custom automation.
Supported Events
- order_completed — a swap order was successfully executed
- strategy_finished — a strategy completed all its orders
- take_profit_triggered — price hit take profit level
- stop_loss_triggered — price hit stop loss level
- trailing_stop_triggered — trailing stop was activated
- rebalance_triggered — portfolio rebalance was executed
Security
Each webhook is signed with an HMAC secret. Your endpoint should verify the signature in the request headers to ensure the payload is authentic. The secret is shown once when the webhook is created — copy and store it securely.
Management
You can create multiple webhooks, each subscribed to different events. Webhooks can be paused/resumed, tested with a sample payload, and deleted from the Settings page.
Notifications
The platform can send real-time notifications to your personal Telegram account when trades execute, take profits trigger, or your subscription status changes.
Linking Telegram
Go to Settings → Notifications section and click Connect Telegram. You'll receive a deep link to open in Telegram. Send /start to the bot and your account will be linked automatically. After linking, all trade notifications are delivered to your personal chat.
What triggers a notification
- DCA order executed
- Grid buy leg triggered
- Take profit / stop loss / trailing stop executed
- Limit order filled
- Portfolio rebalance executed
- Strategy order failed
- Subscription expiry warning (3 days and 1 day before)
- Subscription expired (plan reverted to Free)
Fallback
If you haven't linked Telegram, notifications fall back to the global admin chat configured on the server (if set). Webhooks are always fired regardless of Telegram status.
Billing & Plans
The platform offers tiered subscription plans with different limits and fee structures.
Plans
Plans differ in the number of active strategies, available features, and profit fee percentage. Profit fees are only charged on profitable exits (take profit, stop loss, trailing stop). You can view and change your plan on the Billing page.
Payment
Subscriptions are paid in USDC via on-chain transfer. Connect your wallet, select a plan, and confirm the transaction. The subscription activates automatically once the transaction is confirmed.
Expiry Warnings
When your subscription is within 3 days of expiring, a warning banner appears on the Billing page. When it expires, the plan reverts to Free and any active strategies above the free limit (3) are automatically paused. A Telegram notification is sent if you have linked your Telegram account.
Fee History
The Billing page shows a complete history of platform fees charged, including the date, trigger type (TP/SL/trailing), token pair, trade amount, fee percentage, and fee amount.
Referral Program
Earn 30% of every platform fee generated by traders you refer — paid directly in USDC on Arbitrum One. There is no expiry, no cap, and no minimum trading volume required from referred users.
How it works
- Go to the Referral page and generate your unique code (format:
DCA-XXXXXX). - Share your referral link —
https://dcabot.app?ref=YOUR_CODE. - When a new user signs up through your link, they are permanently linked to you.
- Every time that user pays a platform fee (on TP / SL / trailing stop exits), you automatically receive 30% of the fee as a pending balance.
- Once your pending balance reaches $5 USDC, you can withdraw to any Arbitrum address.
Fee sharing rules
- Share: 30% of the platform fee per trade
- Counted only on stable-token fees (USDC, USDC.e, USDT)
- Demo mode trades are excluded — only real on-chain executions count
- Referral relationship is permanent and single-level (no multi-tier)
- Users cannot apply their own referral code (self-referral blocked)
Withdrawing earnings
On the Referral page, click Withdraw USDC when your pending balance is ≥ $5. Enter any Arbitrum One address — the USDC is sent directly on-chain. Minimum withdrawal is $5. The transaction link (Arbiscan) appears once the payout is processed.
Security Model
The platform is designed with a non-custodial security model. Here's how your funds are protected:
Safe7579 Smart Accounts
Your funds are held in audited Safe smart contracts — the most battle-tested smart account infrastructure on Ethereum. You are the sole owner; the server only holds a restricted execution key, not an owner key.
On-chain Smart Sessions
A Smart Sessions validator module is installed on your Safe. It enforces on-chain that the server execution key can only call Uniswap V3's exactInputSingle. Any attempt to call any other contract or function is rejected by the Safe itself — not by the server.
Encrypted Execution Keys
Server-side execution keys are generated per Smart Account and encrypted at rest using Fernet symmetric encryption. Private keys are never exposed in the UI, API responses, or logs.
Swaps Only
Even if the server were fully compromised, the on-chain Smart Sessions permission limits the damage to swaps within your own Safe. The bot cannot transfer tokens to arbitrary addresses, change Safe owners, or call any contract other than the configured Uniswap V3 router.
Frequently Asked Questions
Can the bot withdraw my funds or send tokens to another address?
No. The bot can only execute Uniswap V3 swaps within your Safe. It cannot transfer tokens, change Safe owners, or perform any operation other than swaps.
What happens if a swap fails?
Failed swaps are recorded in the order history with a "failed" status. The strategy continues as normal — DCA strategies will retry at the next interval, and grid strategies will re-attempt when price conditions are met again.
Can I run multiple strategies on the same Smart Account?
Yes. Multiple strategies can share the same Smart Account and trading balance. Make sure you have enough tokens funded to cover all active strategies.
What chains are supported?
Ethereum Mainnet, Arbitrum, Optimism, Base, and Sepolia (testnet). The available tokens differ by chain.
How many transactions do I need to sign to get started?
Two MetaMask signatures per Smart Account. First "Deploy Safe7579" — deploys your Safe and installs the Safe7579 adapter. Second "Activate Session" — installs the Smart Sessions validator and creates the swap permission. Both are one-time setup steps; after that the bot operates autonomously.
What is a Smart Session and why do I need it?
A Smart Session is an on-chain permission stored inside your Safe. It grants the server's execution key the right to call exactly one function — Uniswap V3 exactInputSingle. Without it, the server key has no authority to act on your Safe at all. The permission is enforced by the Safe contract itself, not by the server.
What is the fee tier and how do I choose?
The fee tier is the Uniswap V3 pool fee. 0.3% is standard for most pairs. Use 0.05% for stable-to-stable swaps and 1% for exotic or low-liquidity pairs.
What does slippage (bps) mean?
Slippage tolerance in basis points (1 bps = 0.01%). A value of 50 means 0.50% maximum price impact. If the price moves more than this during execution, the transaction reverts to protect you.
How do I earn with the referral program?
Go to the Referral page, generate your unique DCA-XXXXXX code, and share your link. Every time someone you referred pays a platform fee on a profitable exit, you automatically earn 30% of that fee in USDC. Withdraw to any Arbitrum address once your balance reaches $5.
When do referral earnings appear?
Earnings are credited in real time when your referred user's take profit, stop loss, or trailing stop executes and a platform fee is charged. Demo mode trades are excluded. Your Referral page shows a live breakdown of all pending and paid earnings.
Need help? Check the FAQ above or reach out to support.