I am well aware that this question could very well NOT belong here but I visited one of paypal's support forums and it made me wanna cry so I'll try my luck here.
I am setting up a payment system and want to automate it as much as possible so I'm setting up paypal's Instant Payment Notification (IPN), if I use the Instant Payment Notification (IPN) simulator and give it a specific value on the "txn_id" field I get what I want, which is to update the status of a transaction on my DB.
Now, if I place a test order on paypal's sandbox everything is fine but it seems that paypal is not receiving my txn_id value and is sending the IPN with another value.
$txn_id is being retrieved from $txn_id = mysql_insert_id(); (I'm inserting the data of the order prior to sending the client to paypal) just so I can update the status from pending to completed when I receive the IPN.
I guess the final question is why is Paypal replacing or not using the data I'm passing as txn_id?
You can do that, but be careful, as it isn't hard for your customer to change that invoice ID in your hidden field before sending it to PayPal. You probably want to be signing your transactions as wel.