Order API + Payment with multiple line items creating wrong financial trxn record?
As per this old issue and PR
https://github.com/colemanw/webform_civicrm/pull/58#issuecomment-289561525
you want to specify the price_field_value_id or else CiviCRM will try and be clever and guess one for you and will often get it wrong. I think it's using the same mechanism it uses when you specify values for a payment page without using a real price set - i.e. it access a hidden price set that it uses for the purpose.