diff --git a/resource/config.yml b/resource/config.yml
index bac3936..2a5f73a 100644
--- a/resource/config.yml
+++ b/resource/config.yml
@@ -61,6 +61,9 @@ purchase:
   tokens:
     success: '&aSuccessfully Bought For %cp-args% Tokens.'
     failure: '&cInsufficient Tokens!'
+  coins:
+    success: '&aSuccessfully Bought For %cp-args% Coins.'
+    failure: '&cInsufficient Coins!'
   item:
     success: '&aSuccessfully Sold %cp-args%.'
     failure: '&cInsufficient Items!'
diff --git a/resource/plugin.yml b/resource/plugin.yml
index 883470b..441f580 100644
--- a/resource/plugin.yml
+++ b/resource/plugin.yml
@@ -1,10 +1,10 @@
-version: 3.17.5.0
+version: 3.17.6.0
 main: me.rockyhawk.commandpanels.CommandPanels
 name: CommandPanels
 author: RockyHawk
 api-version: '1.13'
 description: Fully Custom GUIs. Make your Server Professional.
-softdepend: [PlaceholderAPI, Vault, HeadDatabase, TokenManager, VotingPlugin, MMOItems, CustomItems, ChestSort]
+softdepend: [PlaceholderAPI, Vault, HeadDatabase, TokenManager, VotingPlugin, MMOItems, CustomItems, ChestSort, CoinsAPINB]
 commands:
    commandpanel:
       description: Open a command panel.
diff --git a/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java b/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
index b0bf753..4ab9357 100644
--- a/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
+++ b/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java
@@ -1,6 +1,7 @@
 package me.rockyhawk.commandpanels.classresources.placeholders;
 
 import com.bencodez.votingplugin.user.UserManager;
+import de.NeonnBukkit.CoinsAPI.API.CoinsAPI;
 import me.realized.tokenmanager.api.TokenManager;
 import me.rockyhawk.commandpanels.CommandPanels;
 import me.rockyhawk.commandpanels.api.Panel;
@@ -351,6 +352,11 @@ public class Placeholders {
                 return Long.toString(api.getTokens(p).orElse(0));
             }
         }
+        if (plugin.getServer().getPluginManager().isPluginEnabled("CoinsAPINB")) {
+            if(identifier.equals("coins-balance")) {
+                return String.valueOf(CoinsAPI.getCoins(p.getUniqueId().toString()));
+            }
+        }
         if (plugin.getServer().getPluginManager().isPluginEnabled("VotingPlugin")) {
             if(identifier.equals("votingplugin-points")) {
                 return String.valueOf(UserManager.getInstance().getVotingPluginUser(p).getPoints());
diff --git a/src/me/rockyhawk/commandpanels/commandtags/CommandTags.java b/src/me/rockyhawk/commandpanels/commandtags/CommandTags.java
index 9db39da..0f004df 100644
--- a/src/me/rockyhawk/commandpanels/commandtags/CommandTags.java
+++ b/src/me/rockyhawk/commandpanels/commandtags/CommandTags.java
@@ -1,5 +1,6 @@
 package me.rockyhawk.commandpanels.commandtags;
 
+import de.NeonnBukkit.CoinsAPI.API.CoinsAPI;
 import me.realized.tokenmanager.api.TokenManager;
 import me.rockyhawk.commandpanels.CommandPanels;
 import me.rockyhawk.commandpanels.api.Panel;
@@ -189,6 +190,30 @@ public class CommandTags {
                     return PaywallOutput.Blocked;
                 }
             }
+            case "coinpaywall=": {
+                //if player uses coinpaywall= [price]
+                try {
+                    if (plugin.getServer().getPluginManager().isPluginEnabled("CoinsAPINB")) {
+                        int balance = CoinsAPI.getCoins(p.getUniqueId().toString());
+                        if (balance >= Double.parseDouble(command.split("\\s")[1])) {
+                            CoinsAPI.removeCoins(p.getUniqueId().toString(), (int) Long.parseLong(command.split("\\s")[1]));
+                            //if the message is empty don't send
+                            plugin.tex.sendString(p,Objects.requireNonNull(plugin.config.getString("purchase.coins.success")).replaceAll("%cp-args%", command.split("\\s")[1]));
+                            return PaywallOutput.Passed;
+                        } else {
+                            plugin.tex.sendString(p,plugin.config.getString("purchase.coins.failure"));
+                            return PaywallOutput.Blocked;
+                        }
+                    } else {
+                        plugin.tex.sendString(p, tag + ChatColor.RED + "Needs CoinAPI to work!");
+                        return PaywallOutput.Blocked;
+                    }
+                } catch (Exception buyc) {
+                    plugin.debug(buyc,p);
+                    plugin.tex.sendString(p, tag + plugin.config.getString("config.format.error") + " " + "commands: " + command);
+                    return PaywallOutput.Blocked;
+                }
+            }
             case "item-paywall=": {
                 //if player uses item-paywall= [Material] [Amount] [Id]
                 //player can use item-paywall= [custom-item]
diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyCommandTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyCommandTags.java
index 9e3f892..ed24fea 100644
--- a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyCommandTags.java
+++ b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyCommandTags.java
@@ -1,5 +1,6 @@
 package me.rockyhawk.commandpanels.commandtags.tags.economy;
 
+import de.NeonnBukkit.CoinsAPI.API.CoinsAPI;
 import me.realized.tokenmanager.api.TokenManager;
 import me.rockyhawk.commandpanels.CommandPanels;
 import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
@@ -69,5 +70,29 @@ public class BuyCommandTags implements Listener {
                 plugin.tex.sendMessage(e.p, plugin.config.getString("config.format.error") + " " + "commands: " + e.name);
             }
         }
+        if(e.name.equalsIgnoreCase("coinbuycommand=")){
+            e.commandTagUsed();
+            //if player uses coinbuycommand [price] [command]
+            try {
+                if (plugin.getServer().getPluginManager().isPluginEnabled("CoinsAPINB")) {
+                    int balance = CoinsAPI.getCoins(e.p.getUniqueId().toString());
+                    if (balance >= Double.parseDouble(e.args[0])) {
+                        CoinsAPI.removeCoins(e.p.getUniqueId().toString(), (int) Long.parseLong(e.args[0]));
+                        //execute command under here
+                        String price = e.args[0];
+                        String command = String.join(" ",Arrays.copyOfRange(e.raw, 1, e.raw.length));
+                        plugin.commandTags.runCommand(e.panel,e.pos,e.p,command);
+                        plugin.tex.sendMessage(e.p, Objects.requireNonNull(plugin.config.getString("purchase.coins.success")).replaceAll("%cp-args%", price));
+                    } else {
+                        plugin.tex.sendMessage(e.p, plugin.config.getString("purchase.coins.failure"));
+                    }
+                } else {
+                    plugin.tex.sendMessage(e.p, ChatColor.RED + "Buying Requires Vault and an Economy to work!");
+                }
+            } catch (Exception buyc) {
+                plugin.debug(buyc,e.p);
+                plugin.tex.sendMessage(e.p, plugin.config.getString("config.format.error") + " " + "commands: " + e.name);
+            }
+        }
     }
 }
diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java
index c1074ca..82e10ca 100644
--- a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java
+++ b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java
@@ -1,5 +1,6 @@
 package me.rockyhawk.commandpanels.commandtags.tags.economy;
 
+import de.NeonnBukkit.CoinsAPI.API.CoinsAPI;
 import me.realized.tokenmanager.api.TokenManager;
 import me.rockyhawk.commandpanels.CommandPanels;
 import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
@@ -66,6 +67,27 @@ public class BuyItemTags implements Listener {
                 plugin.tex.sendMessage(e.p, plugin.config.getString("config.format.error") + " " + "commands: " + e.name);
             }
         }
+        if(e.name.equalsIgnoreCase("coinbuy=")) {
+            e.commandTagUsed();
+            //if player uses coinbuy= it will be eg. coinbuy= <price> <item> <amount of item> <ID>
+            try {
+                if (plugin.getServer().getPluginManager().isPluginEnabled("CoinsAPINB")) {
+                    int balance = CoinsAPI.getCoins(e.p.getUniqueId().toString());
+                    if (balance >= Double.parseDouble(e.args[0])) {
+                        CoinsAPI.removeCoins(e.p.getUniqueId().toString(), (int) Long.parseLong(e.args[0]));
+                        plugin.tex.sendMessage(e.p, Objects.requireNonNull(plugin.config.getString("purchase.coins.success")).replaceAll("%cp-args%", e.args[0]));
+                        giveItem(e.p,e.args);
+                    } else {
+                        plugin.tex.sendMessage(e.p, plugin.config.getString("purchase.coins.failure"));
+                    }
+                } else {
+                    plugin.tex.sendMessage(e.p, ChatColor.RED + "Buying Requires CoinsAPINB to work!");
+                }
+            } catch (Exception buy) {
+                plugin.debug(buy, e.p);
+                plugin.tex.sendMessage(e.p, plugin.config.getString("config.format.error") + " " + "commands: " + e.name);
+            }
+        }
     }
 
     @SuppressWarnings("deprecation")
diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/SellItemTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/SellItemTags.java
index 646ef0c..16fa1dc 100644
--- a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/SellItemTags.java
+++ b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/SellItemTags.java
@@ -1,5 +1,6 @@
 package me.rockyhawk.commandpanels.commandtags.tags.economy;
 
+import de.NeonnBukkit.CoinsAPI.API.CoinsAPI;
 import me.realized.tokenmanager.api.TokenManager;
 import me.rockyhawk.commandpanels.CommandPanels;
 import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
@@ -69,6 +70,26 @@ public class SellItemTags implements Listener {
                 plugin.tex.sendMessage(e.p, plugin.config.getString("config.format.error") + " " + "commands: " + e.name);
             }
         }
+        if(e.name.equalsIgnoreCase("coinsell=")) {
+            e.commandTagUsed();
+            //if player uses coinsell= it will be eg. coinsell= <cashback> <item> <amount of item> [enchanted:KNOCKBACK:1] [potion:JUMP]
+            try {
+                if (plugin.getServer().getPluginManager().isPluginEnabled("CoinsAPINB")) {
+                    boolean sold = removeItem(e.p, e.args);
+                    if (!sold) {
+                        plugin.tex.sendMessage(e.p, plugin.config.getString("purchase.item.failure"));
+                    } else {
+                        CoinsAPI.addCoins(e.p.getUniqueId().toString(), (int) Long.parseLong(e.args[0]));
+                        plugin.tex.sendMessage(e.p, plugin.config.getString("purchase.item.success").replaceAll("%cp-args%", e.args[1]));
+                    }
+                } else {
+                    plugin.tex.sendMessage(e.p, ChatColor.RED + "Selling Requires CoinsAPINB to work!");
+                }
+            } catch (Exception sell) {
+                plugin.debug(sell,e.p);
+                plugin.tex.sendMessage(e.p, plugin.config.getString("config.format.error") + " " + "commands: " + e.name);
+            }
+        }
     }
 
     //returns false if player does not have item