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
  p result.errors

If the transaction can't be found, it will raise a Braintree::NotFoundError.

transaction_id required, String

The unique transaction identifier. You can only void transactions that have a status of: