I've never used Bitpay, but according to their docs, the process is:
1. The merchant tells Bitpay the USD value of the transactions
2. Bitpay calculates a BTC value based on current exchange rates
3. Bitpay sends an invoice to the customer valid for 15 minutes
4. If the transaction to transfer BTC is broadcast on the network prior to the invoice expiring, Bitpay will honour their initial quote.
5. Once 6 blocks have confirmed the transaction, Bitpay transfers the original USD amount to the merchant
So in this case, Steam doesn't do the price conversion at all, only Bitpay does. And Bitpay only does it once, when the invoice is issued. It appears that the user either transferred an incorrect amount, OR he waited more than 15 minutes to start the transaction, OR (as some are suggesting) Bitpay is being nefarious and not honouring their quote.
1. The merchant tells Bitpay the USD value of the transactions
2. Bitpay calculates a BTC value based on current exchange rates
3. Bitpay sends an invoice to the customer valid for 15 minutes
4. If the transaction to transfer BTC is broadcast on the network prior to the invoice expiring, Bitpay will honour their initial quote.
5. Once 6 blocks have confirmed the transaction, Bitpay transfers the original USD amount to the merchant
So in this case, Steam doesn't do the price conversion at all, only Bitpay does. And Bitpay only does it once, when the invoice is issued. It appears that the user either transferred an incorrect amount, OR he waited more than 15 minutes to start the transaction, OR (as some are suggesting) Bitpay is being nefarious and not honouring their quote.