Sometimes you have to setup complex fees   which can't be done via UI.


Here is sample code which adds 2 different fees to  the cart 


//This code runs after ADP processed WooCommerce cart
add_action( 'wdp_after_apply_to_wc_cart', function ( $wdp_cart ) {
  $wc_cart = WC()->cart;
  $totals = $wc_cart->get_totals();

  //add fees for each matched item if order total <150
  if ( isset( $totals['total'] ) && $totals['total'] < 150.00 ) {
    foreach ( $wc_cart->get_cart_contents() as $item_key => $cart_content ) {
      // check item  meta keys added by external plugin YITH Product Addons 
      if ( isset( $cart_content['yith_wapo_options'] ) ) {
        foreach ( $cart_content['yith_wapo_options'] as $option ) {
          //fee for some values only
          if ( "Upload Logo" === $option['name'] && ( "Upload file now" === $option['value'] || "Add logo later" === $option['value'] ) ) {
            WDP_Functions::add_fee( __( 'Total fee' ), 15 );
          }
        }
      }
    }
  }

  //add fees for each item if qty <8 and item belongs to category, category ID - hardcoded!
  foreach ( $wc_cart->get_cart_contents() as $item_key => $cart_content ) {
    $product = $cart_content['data'];
    $parent = wc_get_product($cart_content['product_id']);
    /**
    * @var $product WC_Product
    * @var $parent WC_Product
    */

    if ( isset( $cart_content['quantity'] ) && $cart_content['quantity'] < 8 && in_array( 255, $parent->get_category_ids() ) ) // Clothing
    {
      WDP_Functions::add_fee( __( 'Small embroidery run fee' ), 25 );
    }
  }
});