Sorry, erst jetzt gelesen. ganz grob so:
$lineItem = new LineItem(
Uuid::randomHex(),
'custom'
);
$lineItem->setStackable(true);
$lineItem->setRemovable(true);
$lineItem->setLabel($label);
$lineItem->setPriceDefinition($quantityPriceDefinition);
$lineItem->setQuantity($quantity);
$lineItem->setDeliveryInformation(new DeliveryInformation(100, 10.0, false));
$this->cartService->add($cart,$lineItem, $salesChannelContext);
$this->cartService->recalculate($cart, $salesChannelContext);
Wobei die quantityPriceDefinition auch eine andere Art der PriceDefinition sein kann.
Aber problematisch ist leider zur Zeit, dass custom LineItems nicht richtig kalkuliert werden!