Other than using XML, have you tried generating a flat file to a shared folder that SQL Server can get to. Then use either OPENROWSET or BULK INSERT to load the data into a staging table where you can look up prices, validate data, etc. From there, you can move valid records into the final table and display errors on any other records left in the staging database.
By using a staging table, you can do bulk updates on the records. For example:
update <staging table> set
unitcost = i.unitcost,
from <staging table> s
join items i on s.itemID = i.itemID
where s.poID = @someID