Better way to store file receipts
You are not sacrificing performance as in database performance using varbinary(MAX). You are not searching on the varbinary(MAX). You are not indexing the column.  

What is nice about in the table is single consistent backup. The down side is a bigger backup. 

Delivering the file to the client varbinary(MAX) is going to be less efficient than FILESTEAM or file system.  

1 - 2 mb is relatively small.  If it was 200+ mb then you typically would want to avoid storing in varbinary(MAX).  

If table size alone is problem then FILESTREAM is probably your best solution. This will not hurt database performance and files are not stored in a table.


  FILESTREAM enables SQL Server-based applications to store unstructured
  data, such as documents and images, on the file system. Applications
  can leverage the rich streaming APIs and performance of the file
  system and at the same time maintain transactional consistency between
  the unstructured data and corresponding structured data.


From a licensing perspective I am pretty sure FILESTREAM does not count as database size.  Like for EXPRESS with a 10GB database limit the FILESTREAM does not count.   

Another benefit is if you have OCR on the PDF with an Adobe iFilter you can Full Text search the document.  But you may be able to do that with FILESTREAM also - from what I see no.

Or you can just manage the file totally separate and only store a path in SQL.