Documentation

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

nMercher is a complex script with many configuration options. For first-time users, here's the simplest path to getting started:

  1. Position: Stand at the Grand Exchange in Varrock, logged in
  2. Inventory: Have your flipping capital (GP) in your inventory - nothing else
  3. Start the script: The GUI will open
  4. 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
  5. 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)
  6. 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:

  1. Evaluate item list: Checks your configured items against real-time RuneLite price data to find profitable opportunities
  2. Select best item: Uses an algorithm to choose which item to buy based on margin, volume, and your settings
  3. Place buy offer: Creates a buy offer at the calculated buy price
  4. Monitor offers: Tracks all active GE offers and reacts to completions
  5. Sell acquired items: Lists purchased items for sale at the calculated sell price
  6. 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:

  1. Buy at a price slightly above what others are paying (to ensure your offer fills)
  2. Sell at a price slightly below what others are asking (to ensure your offer fills)
  3. 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:

  1. Is the Grand Exchange interface visible? The script needs it open
  2. Do any items meet your profit margin requirement? Try lowering margin requirements
  3. Do you have enough GP? Items with conditional buying may be disabled
  4. Are all items in your list disabled? Right-click and enable them
  5. Check the TRiBot debug tab for any error messages

Profit seems lower than expected

This is usually due to configuration, not a bug:

  1. Undercuts too aggressive: Your price adjustments may eat into your margin
  2. Margin requirement too low: You're buying items with tiny margins
  3. Low capital: Can't take advantage of high-value items
  4. Bad item list: Some items just aren't profitable at certain times
  5. Market conditions: Flipping profit varies significantly with market activity

Getting Help

If you run into issues not covered in Troubleshooting:

  1. Generate a bug report - In TRiBot: Dev Tab → Generate Bug Report (includes logs, settings, and screenshot)
  2. 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 way
  • nextminibreak - 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.