Creating transactions

Using Braintree::Transaction.sale() is the simplest way to create a credit card transaction.

You can create a transaction with just an amount and a payment_method_nonce relayed from your client and immediately submit it for settlement:

Ruby
result = Braintree::Transaction.sale(
  :amount => "10.00",
  :payment_method_nonce => nonce_from_the_client,
  :options => {
    :submit_for_settlement => true
  }
)

If you want to create a new payment method in the Vault upon a successful transaction, use the options.store_in_vault_on_success option. If a customer_id is not included, a new customer will be created.

Card verification

When a payment method is a credit or debit card, you can use card verification to verify that the card data matches a valid, open account before storing or updating it in the Vault.

There are two ways to perform card verification. You can run one-time requests using options.verify_card when:

Alternatively, you can always run verification regardless of the presence of verify_card by enabling card verification in the Control Panel.

In both cases, the gateway verifies cards by running either a $0 or $1 authorization and then automatically voiding it. If you'd like, you can specify a different options.verification_amount to use for the authorization.

Ruby
result = Braintree::PaymentMethod.create(
  :customer_id => "the_customer_id",
  :payment_method_nonce => nonce_from_the_client,
  :options => {
    :verify_card => true,
    :verification_merchant_account_id => "the_merchant_account_id",
    :verification_amount => "2.00",
  }
)

If you are using our Advanced Fraud Tools, we strongly recommend passing device_data each time you verify a card.

Verification results

You'll receive a Braintree::CreditCardVerification response object within a Braintree::Customer or Braintree::PaymentMethod result if:

  1. A verification ran, and
  2. It was returned with a status of processor_declined or gateway_rejected

Successful results will not return a verification response object.

Reasons for unsuccessful verification results

You can check the processor_response_code and processor_response_text for the specific reason that a verification was processor_declined.

Ruby
result = Braintree::PaymentMethod.create(
  :customer_id => "the_customer_id",
  :payment_method_nonce => nonce_from_the_client,
  :options => {
    :verify_card => true
  }
)

result.success?
#=> false

verification = result.credit_card_verification
verification.status
#=> "processor_declined"

verification.processor_response_code
#=> "2000"

verification.processor_response_text
#=> "Do Not Honor"

If the status is gateway_rejected, you can check the gateway_rejection_reason for the specific reason. Learn more about gateway rejections.

Ruby
result.success?
#=> false

verification = result.credit_card_verification
verification.status
#=> "gateway_rejected"

verification.gateway_rejection_reason
#=> "cvv"

Verifications on sub-merchant accounts

For those using Braintree Marketplace, verifications cannot be done using sub-merchant accounts. See Braintree Marketplace Verifications for more details.

See also

Next: Testing and Go Live →

Still Have Questions?

If you can’t find an answer, give us a call at 877.434.2894 or email our Support team.