How do I add extra cost with cash on delivery?
It's been a long time since this has been asked, but I'm adding my input here since I bumped into this while looking for the exact same thing for one of my projects. The way I found as the cleanest and most straight forward, while reading through the documentation, is the use of an order processor class that would check the current order for the use of the payment method in question and add an adjustment accordingly. You can have a look here on information as to how to setup an order processor https://docs.drupalcommerce.org/commerce2/developer-guide/orders/order-refresh-and-process. 
The class has to implement the \Drupal\commerce_order\OrderProcessorInterface and it has to provide an implementation of the process method. 

class MyCustomProcessor implements OrderProcessorInterface {

    public function process(OrderInterface $order) {
        $payment = $order-&gt;get('payment_method')-&gt;first()-&gt;entity;
//   or 
        $payment = $order-&gt;get('payment_gateway')-&gt;first()-&gt;entity;

//... your logic here depending on what you'd like to do 

        $order-&gt;addAdjustment(new Adjustment([
            'type' =&gt; 'fee',
            'label' =&gt; 'Payment method fee',
            'amount' =&gt; new Price($fee, 'EUR')
        ]));

    }
}