See also the Transaction response object.
You can void transactions that have a status of authorized, submitted for settlement, or - for PayPal - settlement pending. The only required information is the transaction ID. When the transaction is voided, we will perform an authorization reversal, if possible, to remove the pending charge from the customer's card.
result = gateway.transaction.void("the_transaction_id")
If the transaction is successfully voided, the result will return true. Otherwise, check for validation errors.
if result.success? # transaction successfully voided else p result.errors end
If the transaction can't be found, it will raise a