Preheat the oven to 350 degrees F and line a cupcake pan with paper liners.
Add the flour, cocoa powder, baking soda, and salt to a medium bowl. Whisk until combined and set aside.
In a large bowl, add the butter and sugar. Beat with a hand mixer on medium until creamed.
Add the vanilla extract and then the eggs one at a time, beating in each egg until combined before adding the next.
Alternate adding the dry ingredients and buttermilk to the bowl starting and ending with flour, beating in each addition before adding the next.
Fill each cupcake liner ⅔ of the way full with batter.
Place in the preheated oven and bake for 20 to 15 minutes.
Allow the cupcakes to cool in the pan for five minutes, then transfer to a wire cooling rack to cool completely.
Peanut Butter Filling
Add the peanut butter, powdered sugar, salt, and melted butter to a medium bowl. Beat until smooth and well combined. Add the filling to a piping bag fitting with a coupler or a large round tip.
Once the cupcakes are cooled, scoop out a small hole in the center of each cupcake. You can use an apple corer, the large opening in a large piping tip, or a paring knife. Don't cut all the way to the bottom of the cupcake.
Fill the hole with the peanut butter filling.
Peanut Butter Frosting
Add the butter, peanut butter, powdered sugar, milk, and vanilla to a medium bowl. Beat until smooth and creamy
Add the butter, cocoa powder, powdered sugar, two tablespoons of milk, and vanilla to a large bowl. Beat until smooth and creamy. If the frosting is too thick, add more milk one tablespoon at a time until it's a pipable consistency.
Place the frostings in two separate small piping bags and cut the tip off each bag.
Place a Wilton 1M piping tip in the bottom of a large piping bag and put the tips of the two smaller piping bags inside. Swirl the icing on top of each cupcake.
Store the cupcakes in an airtight container at room temperature.