In general, there are two options with booking websites:
- If you paid the room through the website, it is likely that they acted as a travel agent. In this case they have to give you the invoice.
- If you paid directly at the hotel, it usually means that the website only did the reservation. In this case the hotel needs to give you the invoice.
- If you paid through the website, but bought extra things from the Hotel like mini bar items or breakfast: The hotel should give you an invoice for those items, even if the booking site gives you the invoice for the rest.
I cannot say if there are any exceptions, but this should be the general rule. I only ever used booking.com for reservations (got the invoice in the hotel) and Expedia for pre-paid stays (got the invoice from them).
If you paid by credit card, you can also check your statement: The company that billed your credit card should be the one giving you the invoice.
I also noted that getting a fiscal invoice from Expedia is still somewhat painful (at least in Europe). While they now have an online tool to request one, it often didn't work and I had to call.
I don't know have reimbursements work in your company, but at my place I could also show the credit card receipt and explain the situation. They wouldn't be happy, but they'd reimburse me.
If they refuse to deal with you, you could also threaten to dispute the charge unless you get an invoice. (Once you dispute a charge, they'd have to produce
documentation anyway). There is a chance that disputing the charge will incur additional costs or trouble, but it's an idea.
Addition: As noted in the comments, some of this depends on paying with a credit card (or other electronic payment, like PayPal). If you paid in cash, you usually still have confirmation emails from the booking site as a record of your booking or reservation. And you could still threaten a bad review on TripAdvisor or such...