nMercher User Manual
Automated Grand Exchange flipping bot with intelligent item selection, real-time price tracking, multi-account coordination, and muling support
Links: TRiBot Store | Forum Thread | Discord
Table of Contents
- Quick Start
- Requirements
- How It Works
- Settings Reference
- Item Configuration
- Understanding Price Adjustments
- Troubleshooting
- Getting Help
- Tips for Building an Effective Item List
Quick Start
nMercher is a complex script with many configuration options. For first-time users, here's the simplest path to getting started:
- Position: Stand at the Grand Exchange in Varrock, logged in
- Inventory: Have your flipping capital (GP) in your inventory - nothing else
- Start the script: The GUI will open
- Use auto-generated list: On first launch with an empty list, the script automatically generates a starter item list with conditional buying already configured. This list is based on currently profitable, high-volume items
- Review global pricing: Click "Advanced" and navigate to Merching > Global Item Pricing. The default settings work, but understanding them helps you improve profits (see Understanding Price Adjustments)
- Click Start: The script begins placing buy orders and selling items automatically
Note: The auto-generated list configures conditional buying for each item, meaning items only purchase when you have enough GP. This scales your purchases automatically based on your stack size.
Script Arguments
Load a saved settings profile by passing the profile name as a script argument:
MyProfile
This loads <tribot-folder>/nScripts/nMercher/settings/MyProfile.ini and starts immediately without showing the GUI. Useful for automation and automatically starting scripts on clients.
Additional options:
last- Load the most recently used settings- Profiles saved to nScripting.com Settings Storage can also be loaded by name
Requirements
Account Requirements
- Members account strongly recommended - Members have 8 GE slots; F2P accounts have only 3 slots, which severely limits profit potential
- Access to the Grand Exchange in Varrock
GP Needed
- Minimum: 5-10M GP to get started
- Recommended: 20M+ GP for meaningful profit with diverse item coverage
- Optimal: 50M+ GP allows trading higher-value items and filling more slots
Higher capital means you can:
- Trade more items simultaneously across all GE slots
- Purchase items with larger margins (higher-value items often have better profit per trade)
- Survive market fluctuations without being wiped out
How It Works
nMercher automates Grand Exchange flipping - the process of buying items at low prices and selling them at higher prices for profit.
Core Loop:
- Evaluate item list: Checks your configured items against real-time RuneLite price data to find profitable opportunities
- Select best item: Uses an algorithm to choose which item to buy based on margin, volume, and your settings
- Place buy offer: Creates a buy offer at the calculated buy price
- Monitor offers: Tracks all active GE offers and reacts to completions
- Sell acquired items: Lists purchased items for sale at the calculated sell price
- Collect profits: Collects completed offers and repeats the cycle
What you'll see: The script opens the GE interface, places and monitors offers, collects items, and adjusts prices when needed. The paint overlay shows current profit, active transactions, and status.
The GE Tax
OSRS applies a 2% tax on all GE sales, capped at 5M GP per transaction. nMercher automatically accounts for this tax in all profit calculations. When you set a profit margin requirement (e.g., 0.02%), that margin is in addition to the 2% tax - the script handles this transparently.
Multi-Account Distribution
When running multiple accounts on the same machine, they can compete against each other on the same items, reducing overall profit. The item distribution feature prevents this by tracking which items each account is trading locally.
How it works:
- Accounts share a local file tracking their active items
- The script prevents buying items another account is already trading
- You configure how many accounts can trade the same item (default: 1)
Important: This only works for accounts running on the same machine. It cannot coordinate across different computers.
Muling
The script supports transferring GP to/from mule accounts:
| Feature | Description |
|---|---|
| Cash In | Request GP from mule when script starts - useful for funding a mercher from a central mule |
| Threshold Muling | Automatically send GP to mule when your stack exceeds a threshold |
| Cash Out | After a set time, liquidate all items and send all GP to mule, then end script |
Sell-Only Mode
Sell-only mode liquidates your inventory without buying new items. It triggers in several situations:
| Trigger | When it activates |
|---|---|
| Break | Before TRiBot's break handler pauses the script (if "Sell all items before break" is enabled) |
| Stop condition | Before stopping via stop conditions (if "Sell all before ending" is enabled) |
| Muling | Before transferring GP to mule |
| Manual | When you type togglesellonly in game chat while script runs |
You can configure pricing and timeouts for each sell-only mode type in Advanced Settings > Sell-Only Mode.
Settings Reference
Main Tab (Item List)
The main tab displays your list of items to flip.
Item List Controls:
- Add: Opens the item configuration dialog to add a new item
- Edit: Modify settings for the selected item (double-click also works)
- Delete: Remove selected items from the list
- Item List: Browse all tradeable items and quick-add by ID
Right-Click Context Menu:
- Reset advanced settings for selected/all items
- Apply settings from one item to others (useful for bulk configuration)
- Import/Export item lists (supports text files and settings files)
- Clear list
- Auto-Generate - creates a new list based on current market data
- Toggle enable/disable for selected or all items
Merch Speed Slider: Controls how frequently the script interacts with the GE. Higher speed = faster reactions but more actions. Lower speed = more human-like but slower reaction to market changes.
Advanced Settings
Access via the "Advanced" button on the GUI.
Other > Stopping
| Setting | Description |
|---|---|
| Logout on script end | Log out when the script stops |
| Stop script after not gaining profit for X minutes | Safety failsafe - stops if no profit gained for specified duration |
| Sell all items before ending via stop condition | Liquidate inventory before stopping (uses sell-only mode) |
| Only check stop conditions when idle | Only evaluate stop conditions when waiting, not during active transactions |
Other > Misc.
| Setting | Description |
|---|---|
| Sell all items before going on break | Liquidate before TRiBot breaks start |
Merching > General
| Setting | Description |
|---|---|
| Never spend more than X% of total GP in one slot | Prevents putting all GP in one offer. Example: with 100M and 70% limit, max offer is 70M |
| Prefer selling when X% of stack in inventory | Prioritize selling over buying when inventory item value reaches threshold |
Merching > Avoiding Items
| Setting | Description |
|---|---|
| Avoid items X% away from weekly median (OSRS data) | Skip items whose current price is significantly different from their recent median - helps avoid items undergoing price manipulation or crashes |
| Avoid items X% away from median (RuneLite data) | Same as above but using RuneLite price data |
| Allow buying when price is below median | Exception that allows buying undervalued items even when "avoid" is enabled |
Tip: The default 50% OSRS median check helps avoid items being manipulated. Leave this enabled unless you specifically want to trade volatile items.
Merching > Runtime Statistics
| Setting | Description |
|---|---|
| Write statistics to file | Save session data to nScripts/nMercher/data as human-readable text |
| Export to CSV | Save transaction data in CSV format for spreadsheet analysis |
Statistics include per-item profit, transaction history, and session totals - useful for identifying which items perform best.
Merching > Item Algorithm
| Setting | Description |
|---|---|
| Default algorithm | Standard item selection based on margin, volume, and item weight |
| Experimental algorithms | Alternative selection methods - try them to see if they work better with your item list |
| Prefer items traded frequently | Favor high-volume items (based on last 24 hours of trading data) |
The algorithm chooses which item to buy when multiple items are profitable. The differences between algorithms are subtle - most users should use the default.
Merching > Price Data Sources
Configure which RuneLite price data sources to use and their priority order:
| Source | Description |
|---|---|
| Runelite five-min average | Average price over last 5 minutes (default, most responsive) |
| Runelite latest | Most recent trade price |
| Runelite 10-min average | Average price over last 10 minutes |
| Runelite 30-min average | Average price over last 30 minutes |
| Runelite one-hour average | Average price over last hour |
| Runelite three-hour average | Average price over last 3 hours |
| Runelite six-hour average | Average price over last 6 hours |
| Runelite one-day average | Average price over last 24 hours |
Drag and drop to reorder priority. The script checks sources in order until it finds valid data. By default, 5-min average and latest are enabled and prioritized.
Merching > Global Item Pricing
This is the most important section for profitability. See Understanding Price Adjustments for a detailed explanation.
| Setting | Description |
|---|---|
| Profit margin requirement (% + GP) | Minimum profit margin required before buying an item |
| Buy price adjustment (% + GP + margin%) | How much to add to the calculated buy price |
| Sell price adjustment (% + GP + margin%) | How much to subtract from the calculated sell price |
The GUI shows a warning indicator if your margin requirement doesn't cover your undercut amounts (which could result in losses).
Merching > Item Randomization
| Setting | Description |
|---|---|
| Enable randomization | Add variance to item selection |
| Randomization scale (1-5) | Higher = more random. Useful with multiple accounts using the same list to reduce them all picking the same items |
Merching > Price Changes
| Setting | Description |
|---|---|
| React to price changes instantly | Cancel and relist offers when market prices change |
| Delay reaction until offer inactive for X seconds | Wait before reacting to prevent constant re-listing |
The script automatically reacts to price changes based on merch speed. These settings provide additional control for faster or more cautious reactions.
Merching > Cancel Inactive
| Setting | Description |
|---|---|
| Cancel buy offers with no activity after X minutes | Cancel stale offers that aren't filling |
If an offer isn't filling, the price may have moved. This setting allows cancelling stuck offers so you can re-list at a better price.
Merching > Distribute Items
| Setting | Description |
|---|---|
| Use item distribution | Track items across local accounts to prevent self-competition |
| Account limit | Max accounts that can trade the same item simultaneously |
| Prevent buying items I'm actively buying | Don't let other accounts buy items this account is buying |
| Prevent trading items in inventory | Don't let other accounts trade items this account holds |
| Prevent selling items I'm actively selling | Don't let other accounts sell items this account is selling |
| Don't count if worth less than X% of stack | Ignore small positions when tracking |
Sell-Only Mode
Configure behavior for each sell-only trigger (Break, Muling, Stop Condition, Manual):
| Setting | Description |
|---|---|
| Use custom price after time | Switch to aggressive pricing after waiting |
| Quick sell price | Price adjustment for fast liquidation |
| Max time | Maximum time to wait for sales before timing out |
Standard settings for antiban, AFK behavior, mini breaks, world hopping, and Discord notifications are also available - hover over options for details.
Item Configuration
When adding or editing an item, you can configure per-item settings that override global settings.
Pricing Settings
| Setting | Description |
|---|---|
| Custom buy price adjustment | Override global buy adjustment (% + GP) |
| Custom sell price adjustment | Override global sell adjustment (% + GP) |
| Buy margin adjustment (%) | Add percentage of the profit margin to buy price |
| Sell margin adjustment (%) | Subtract percentage of profit margin from sell price |
| Custom profit margin requirement | Override global margin requirement |
| Price source override | Use different price data sources for this item |
Quantity Settings
| Setting | Description |
|---|---|
| Min purchase quantity | Minimum amount to buy per offer |
| Max purchase quantity | Maximum amount to buy per offer |
Conditional Buying
| Setting | Description |
|---|---|
| Only purchase if stack above X GP | Don't buy unless you have at least X GP total |
| Only purchase if stack below X GP | Don't buy if you have more than X GP total |
This is extremely useful for scaling your item list to your capital. For example:
- Configure cheap items to only buy when you have less than 10M
- Configure expensive items to only buy when you have more than 50M
- This prevents buying a 100M item when you only have 101M, leaving nothing for other items
The auto-generated list configures these automatically based on item prices.
Behavior Settings
| Setting | Description |
|---|---|
| Item weight | Priority in selection algorithm (higher = more likely to be chosen when multiple items are valid) |
| Wait for offer to finish | Don't sell until buy offer completes or is cancelled |
| Attempt to avoid losses | Hold items instead of selling at a loss |
| Hold length (minutes) | How long to hold items when avoiding losses |
| Always search lowercase | Type item name in lowercase when searching GE |
Search Names
Configure alternative names to type when searching for the item in the GE. You can add weighted names to randomize which search term is used.
Understanding Price Adjustments
This is the most important and most confusing part of nMercher. Understanding it properly is essential for profitability.
The Basic Concept
When you flip items, you:
- Buy at a price slightly above what others are paying (to ensure your offer fills)
- Sell at a price slightly below what others are asking (to ensure your offer fills)
- Keep the difference as profit (minus the 2% tax)
The "slightly above" and "slightly below" are called undercuts or price adjustments.
How nMercher Calculates Prices
The script uses RuneLite price data to estimate current market prices:
- Low price: Recent price that buy offers are filling at
- High price: Recent price that sell offers are filling at
- Margin: The difference (high - low) is your potential profit per item
Buy price calculation:
final_buy_price = low_price + (low_price × buy_adjustment%) + buy_adjustment_gp + (margin × buy_margin%)
Sell price calculation:
final_sell_price = high_price + (high_price × sell_adjustment%) + sell_adjustment_gp - (margin × sell_margin%) - 2% tax
Default Settings Explained
Default values:
- Profit margin: 0.02% + 2 GP
- Buy adjustment: +0.01% + 1 GP
- Sell adjustment: -0.01% - 1 GP
For a 10,000 GP item with a 100 GP margin:
- You buy at ~10,001 GP (0.01% + 1 GP above low)
- You sell at ~9,998 GP (0.01% + 1 GP below high, minus 2% tax)
- Your profit is ~97 GP per item (margin minus your undercuts minus tax)
The Warning Indicator
The GUI shows a warning if:
margin_requirement < buy_adjustment + |sell_adjustment|
This means you might lose money because your undercuts eat more than your required margin. For example:
- Margin requirement: 0.02%
- Buy adjustment: +0.05%
- Sell adjustment: -0.05%
- Total adjustment: 0.10% > 0.02% margin = possible loss
Recommendations
Conservative (slower fills, safer profit):
- Margin: 0.05% + 5 GP
- Buy: +0.02% + 2 GP
- Sell: -0.02% - 2 GP
Aggressive (faster fills, thinner margins):
- Margin: 0.02% + 2 GP
- Buy: +0.01% + 1 GP
- Sell: -0.01% - 1 GP
Very aggressive (fastest fills, risk of no profit):
- Margin: 0.01% + 1 GP
- Buy: +0.005% + 0 GP
- Sell: -0.005% - 0 GP
Start conservative and adjust based on how fast your offers fill.
Troubleshooting
"We have failed to execute the same merch request 20+ times."
Cause: The script repeatedly failed to complete a GE action (place offer, collect, or cancel).
Fix:
- Check that the Grand Exchange interface is accessible (not blocked by dialogue or interface)
- Ensure you have sufficient inventory space to collect items
- Verify your network connection is stable
- Try restarting the TRiBot client
"Failed to connect to mule" / "Mule timed out"
Cause: Could not establish connection to the mule server, or mule took too long to respond.
Fix:
- Verify the mule server address and ID in Advanced Settings > Muling > Mule Connection
- Ensure the mule server (nMule or compatible) is running
- Check your network/firewall settings aren't blocking the connection
- Increase mule timeout in settings if your network is slow
"Event handler not implemented: Full inventory"
Cause: Inventory is full of non-stackable items and the script cannot collect GP/items from GE.
Fix:
- Start with an empty inventory (only GP)
- Remove non-stackable items from your inventory before starting
- Ensure you're only trading items that stack in inventory (all GE items do in noted form)
"We do not have any inventory space remaining to collect an item"
Cause: Same as above - inventory is too full to collect completed offers.
Fix:
- Start with an empty inventory (only GP, which stacks)
- If this happens mid-session, you may have somehow acquired non-stackable items
"No item list configured"
Cause: Script started without any items in the item list.
Fix:
- Add items to your list manually by clicking "Add"
- Or right-click the item list area and select Auto-Generate to create a starter list
- The auto-generate feature creates a list based on current market data with conditional buying pre-configured
Script seems stuck / not doing anything
Check these things:
- Is the Grand Exchange interface visible? The script needs it open
- Do any items meet your profit margin requirement? Try lowering margin requirements
- Do you have enough GP? Items with conditional buying may be disabled
- Are all items in your list disabled? Right-click and enable them
- Check the TRiBot debug tab for any error messages
Profit seems lower than expected
This is usually due to configuration, not a bug:
- Undercuts too aggressive: Your price adjustments may eat into your margin
- Margin requirement too low: You're buying items with tiny margins
- Low capital: Can't take advantage of high-value items
- Bad item list: Some items just aren't profitable at certain times
- Market conditions: Flipping profit varies significantly with market activity
Getting Help
If you run into issues not covered in Troubleshooting:
- Generate a bug report - In TRiBot: Dev Tab → Generate Bug Report (includes logs, settings, and screenshot)
- Post on Discord - Share the zip and describe what happened vs. what you expected at discord.gg/BFtypSSbjp
For issues that are hard to capture in a screenshot, a short screen recording helps.
Tips for Building an Effective Item List
Start with Auto-Generate
The auto-generated list is a solid starting point:
- Based on real-time market data
- Includes conditional buying so items scale with your GP
- Focuses on high-volume items that trade frequently
Diversify Your List
Include items from multiple categories:
- PvP items: Dragon daggers, rune items, food
- PvM supplies: Potions, food, runes
- Skilling materials: Ores, logs, herbs, gems
- High-volume consumables: Items people buy constantly
Quality Over Quantity
A focused list of 30-50 items that you understand is better than 200 random items. Know what you're trading.
Use Conditional Buying
Configure stack limits for each item:
- Cheap items: Only when stack below 10-20M
- Mid-range items: Only when stack above 20M
- Expensive items: Only when stack above 50-100M
This ensures your capital is spread appropriately.
Check Your Statistics
Enable statistics export and review which items are actually profitable. Remove items that consistently lose money.
Research External Sources
Use resources like ge-tracker.com to identify good items. Many flipping YouTubers also share item ideas.
For Multiple Accounts
- Enable Item Distribution so accounts don't compete on the same items
- Or enable Item Randomization so accounts pick different items from the same list
- Or create different item lists for each account
Keyboard Commands
Type in game chat while the script runs:
togglesellonly- Manually enter/exit sell-only mode (liquidate all items)resetpaint- Reset the paint overlay position if it's in the waynextminibreak- See when the next mini break will occur
Runtime Statistics Display
Click on the paint overlay to:
- View detailed item statistics (click "Stats" area)
- Open runtime options (click "Options" area)
Realistic Expectations
Profit depends heavily on:
- Your item list: The most important factor
- Your capital: More GP = more profit potential
- Market conditions: Some days are better than others
- Your settings: Undercut too much and you lose; undercut too little and offers don't fill
A reasonable benchmark is 0.5%-1.5% of your stack per hour, but results vary significantly based on all the factors above. Don't expect consistent 1M/hr with only 10M capital.