Heat canola oil in a medium saucepan over medium heat. Add onion and cook, stirring occasionally for 5 minutes, until translucent. Stir in the garlic and cook for an additional 2 minutes.
Add the peaches and cook for 3-5 minutes, until soft.
Add the ketchup, brown sugar, peach preserves, apple cider vinegar and ginger.
Reduce heat to low and simmer for 30 minutes or until sauce thickens, stirring occasionally.
Transfer the mixture in small batches to a blender and puree until smooth. I like to leave a few peach chunks in my sauce (see photo). Return mixture to saucepan.
Add pepper, salt and honey. Stir in the butter until melted. Cool to room temperature before serving.
You can make the sauce a few days in advance and store in a glass jar in the refrigerator.