diff --git a/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java b/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
index 4ab9357..247832b 100644
--- a/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
+++ b/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
@@ -96,6 +96,9 @@ public class Placeholders {
             case("online-players"): {
                 return Integer.toString(Bukkit.getServer().getOnlinePlayers().size());
             }
+            case("online-players-true"): {
+                return Integer.toString(Bukkit.getOnlinePlayers().stream().filter(player -> !player.getMetadata("vanished").get(0).asBoolean()).collect(Collectors.toList()).size());
+            }
             case("panel-position"): {
                 return position.toString();
             }
@@ -323,12 +326,22 @@ public class Placeholders {
         //checks for players online
         if(identifier.startsWith("player-online-")) {
             try {
-                String playerLocation = identifier.replace("player-online-", "");
-                Player[] playerFind = Bukkit.getOnlinePlayers().toArray(new Player[Bukkit.getOnlinePlayers().size()]);
-                if (Double.parseDouble(playerLocation) > playerFind.length) {
-                    return plugin.tex.colour(Objects.requireNonNull(plugin.config.getString("config.format.offline")));
+                if (identifier.endsWith("-true")){
+                    String playerLocation = identifier.replace("player-online-", "");
+                    Player[] playerFind = Bukkit.getOnlinePlayers().toArray(new Player[Bukkit.getOnlinePlayers().stream().filter(player -> !player.getMetadata("vanished").get(0).asBoolean()).collect(Collectors.toList()).size()]);
+                    if (Double.parseDouble(playerLocation) > playerFind.length) {
+                        return plugin.tex.colour(Objects.requireNonNull(plugin.config.getString("config.format.offline")));
+                    } else {
+                        return playerFind[(int)(Double.parseDouble(playerLocation) - 1)].getName();
+                    }
                 } else {
-                    return playerFind[(int)(Double.parseDouble(playerLocation) - 1)].getName();
+                    String playerLocation = identifier.replace("player-online-", "");
+                    Player[] playerFind = Bukkit.getOnlinePlayers().toArray(new Player[Bukkit.getOnlinePlayers().size()]);
+                    if (Double.parseDouble(playerLocation) > playerFind.length) {
+                        return plugin.tex.colour(Objects.requireNonNull(plugin.config.getString("config.format.offline")));
+                    } else {
+                        return playerFind[(int)(Double.parseDouble(playerLocation) - 1)].getName();
+                    }
                 }
             }catch (Exception ex){
                 plugin.debug(ex,p);
diff --git a/src/me/rockyhawk/commandpanels/commandtags/CommandTags.java b/src/me/rockyhawk/commandpanels/commandtags/CommandTags.java
index 4a6f7cf..152182f 100644
--- a/src/me/rockyhawk/commandpanels/commandtags/CommandTags.java
+++ b/src/me/rockyhawk/commandpanels/commandtags/CommandTags.java
@@ -181,7 +181,7 @@ public class CommandTags {
                             if(plugin.config.getBoolean("purchase.tokens.enable")){
                                 plugin.tex.sendString(panel, PanelPosition.Top, p, Objects.requireNonNull(plugin.config.getString("purchase.tokens.success")).replaceAll("%cp-args%", command.split("\\s")[1]));
                             }
-                            plugin.tex.sendString(panel, PanelPosition.Top, p, Objects.requireNonNull(plugin.config.getString("purchase.tokens.success")).replaceAll("%cp-args%", command.split("\\s")[1]));
+                            
                             return PaywallOutput.Passed;
                         } else {
                             if(plugin.config.getBoolean("purchase.tokens.enable")){