Preheat the oven to 350°F (175°C). Line a muffin pan with paper liners.
In a medium bowl, whisk together 1 cup coconut milk, 3/4 cup sugar, 1/3 cup canola oil, 1 tablespoon amaretto liqueur, and 1 teaspoon vanilla extract until the mixture is combined and slightly foamy.
In a separate bowl, sift together 1 cup all-purpose flour, 1/3 cup cocoa powder, 2 tablespoons almond meal, 3/4 teaspoon baking soda, 1/2 teaspoon baking powder, and 1/4 teaspoon salt.
Add the dry ingredients to the wet ingredients in two additions: add half the dry mixture, stir until mostly combined, then add the remaining dry mixture and mix just until there are no large dry streaks (a few small lumps are fine).
Divide the batter among the prepared liners, filling each with about 3 tablespoons of batter.
Bake for 18–20 minutes, or until a toothpick inserted into the center of a cupcake comes out clean. Remove the pan from the oven and transfer the cupcakes to a cooling rack. Let cool completely before frosting.
To make the frosting, beat 1/2 cup butter or margarine (room temperature) until smooth and fluffy, about 2–3 minutes.
Add 2 tablespoons cocoa powder and 1/2 cup confectioners’ sugar to the butter and beat until combined.
Beat in 1–2 tablespoons amaretto liqueur (start with 1 tablespoon and add up to 2 tablespoons to taste). Continue adding the remaining confectioners’ sugar 1/2 cup at a time (total confectioners’ sugar used should be between 2 1/2 and 3 cups), and add up to 2 tablespoons cream or soy creamer as needed, until the frosting is light, fluffy, and spreadable, about 3–5 minutes.
Spread or pipe the frosting onto the cooled cupcakes.