Two L96's being given

I set up the GUI Shop so players can buy an L96:

    "L96 Rifle": {
      "DisplayName": "L96 Rifle",
      "CraftAsDisplayName": false,
      "Shortname": "rifle.l96",
      "MakeBlueprint": false,
      "EnableBuy": true,
      "EnableSell": false,
      "Image": "https://i.ibb.co/3sWkCHm/l96.png",
      "SellPrice": 1.0,
      "BuyPrice": 1500.0,
      "BuyCooldown": 0,
      "SellCooldown": 0,
      "BuyQuantity": [1],
      "SellQuantity": [],
      "KitName": null,
      "Command": [
        "inventory.giveto $player.id rifle.l96 1",
        "inventory.giveto $player.id ammo.rifle 50"
      ],
      "RunCommandAndCustomShopItem": false,
      "SkinId": 0
    },

When they buy the L96, they end up with 2 L96 rifles instead of one. Any idea why?

Well, you are giving them the gun twice.
I would guess since you passed the shortname through for the item and gave them another one as a command in addition to it.

But the command/item combo should have only run if you have that last option set as true.

  "RunCommandAndCustomShopItem": false​

I'll look into it.

But for now, remove the shortname from it and make something up in it to fix it.  Example; ( "Shortname": "L96", )

  "Shortname": "rifle.l96",

Ah, ok. I didn't realize that putting that shortname in there gave the item. I've removed the give inventory line for the rifle and I'm sure that will fix it.