Vaulting the Venmo account
Your customer's Venmo account can be saved to your Vault and reused for future transactions, just like a credit card:
result = gateway.payment_method.create({
"customer_id": "12345",
"payment_method_nonce": nonce_from_the_client
})
You can also save the customer's Venmo account to your Vault at the same time as your transaction by using Transaction: Sale with options.store_in_vault or options.store_in_vault_on_success.
Creating transactions
Creating a Venmo transaction is the same as creating any other transaction with a nonce. Be sure to pass the device data you collected on the client side when you create the transaction:
result = gateway.transaction.sale({
"amount": "1000.00",
"payment_method_nonce": nonce_from_the_client,
"options": {
"submit_for_settlement": True,
},
"device_data": request.form["device_data"]
})
Specifying the business profile
You will need to pass the profile_id
associated with the Venmo business profile that you want to create the transaction for. This should be the same profile_id
used when tokenizing the Venmo account on the client side.
result = gateway.transaction.sale({
"amount": "1000.00",
"payment_method_nonce": nonce_from_the_client,
"options": {
"submit_for_settlement": True,
"venmo": {
"profile_id": YOUR_VENMO_PROFILE_ID
}
},
"device_data": request.form["device_data"]
})
Removing connections
Keep in mind that a Venmo customer can delete merchant connections
from within their Venmo app at any time. This will remove the Venmo payment_method
from your Vault.
Settlement
Capturing multiple partial amounts against the same authorization
If you send physical goods to customers in multiple shipments, you can capture the total authorized amount across multiple partial settlements using Transaction: Submit For Partial Settlement
.
Gateway rejections
In order to process a Venmo transaction in production, the Braintree gateway makes a request to a PayPal service for a transactable token that represents the Venmo account. If we are unable to get that token, the gateway will reject the transaction with a reason of "token_issuance"
. If you receive this rejection, try the transaction request again.
For more info on gateway rejections in general, see the Gateway Rejections support article.