Bitcoinjs-lib how to add multiple utxos in addInput
What's different with spending SegWit outputs is that signatures cover input values. In other words, every SegWit input must be accompanied by its input value.

Mozilla's documentation says don't use map if you aren't constructing a new array. So I'll use for loop. (because order is important, and for-of is too new)

for (let i = 0, k = utxo.length; i &lt; k; i++) {
    txb.addInput(utxo[i].txId, utxo[i].outputIndex, null, scriptPubkey);
}

//add output - Total UTXO SATOSHIS are: 20000 + 30000 = 50000/ So sending 10000 rest should be in the same address
txb.addOutput("ltc1q9umns6nuxv3xrhzdwlmhkzujewu6hulyuwgx30", 10000);

//signing
for (let i = 0, k = utxo.length; i &lt; k; i++) {
    txb.sign(i, keypair, null, null, utxo[i].satoshis);
}