There's not enough info in the IPN to know it was via Gravy, so they're sent with the gateway=dlocal and with dlocal's gateway_txn_id.
The refund queue consumer could fall back to looking up the parent transaction by backend_* fields if it doesn't find it with the primary fields.