There are many dimensions to your question. It is more routine to rely on the device to update its receipt and provide a path to verification only when its receipt appears to have expired. This is done using the receipt that is issued to each device when it receives a call to updatedTransactions. All devices that purchase an autorenewable (or that restoreCompletedTransactions) will get regular calls to their updatedTransactions method with a new receipt just before their last receipt expires. They can either decode that receipt on board or they can send that receipt to your server for verification. No need to store anything. If a device has an expired receipt it issues a warning to its user that it needs to update its receipt and it does a receipt refresh. Very clean.
But.....if you must check your users by storing their receipts on your server and continually verifying their subscription status (e.g. you provide an ongoing service to the subscribed user outside of your app) you can do that one of two ways:
1) You can ask the device for its latest receipt, collect that latest receipt and send it to the Apple servers whenerver you want. The latest receipt can get bigger and bigger with each renewal. This method is clearly documented. If a user's receipt has expired, require that they run teh app and update the subscription.
2) Another method is to rely on the 'latest_receipt_info' field being returned for all receipts and store only the original receipt. This method is undocumented and therefore (IMHO) should not be relied upon; but well respected Apple folks (i.e. Rich Kubota) insist it will always work. Also, the size of this receipt will not change. (I verify on the device so I do not know how big it is.)