Bring Your Own Token
Through Bring Your Own Token (BYOT), merchants who tokenize cards with another Payment Service Provider (PSP) or who vault Network Tokens themselves can use their existing Network Tokens with Braintree.
Creating transactions
Required parameters
The following parameters are always required:
- Amount
- CreditCard.Number (token)
- CreditCard.ExpirationDate (token)
- CreditCard.NetworkTokenizationAttributes.Cryptogram
For more information on what should be passed in the cryptogram field, see the "Customer Initiated Transactions" and "Merchant Initiated Transactions" fields below.
Optional parameters
The following parameters are always optional:
- CreditCard.NetworkTokenizationAttributes.EcommerceIndicator
- CreditCard.NetworkTokenizationAttributes.TokenRequestorId
Customer initiated transactions
- C#
var request = new TransactionRequest
{
Amount = 10.00M,
CreditCard = new TransactionCreditCardRequest
{
Number = "4111111111111111",
ExpirationDate = "05/2027",
NetworkTokenizationAttributes = new NetworkTokenizationAttributesRequest
{
Cryptogram = "/wAAAAAAAcb8AlGUF/1JQEkAAAA=",
TokenRequestorId = "45310020105",
EcommerceIndicator = "05"
}
}
};
Result<Transaction> result = gateway.Transaction.Sale(request);
if (result.IsSuccess()) {
// See result.Target for details
// result.Target.ProcessedWithNetworkToken == true
} else {
// Handle errors
}Merchant initiated transactions
When creating a merchant initiated transaction (MIT) or subsequent transaction, a network transaction identifier (NTI) and related parameters are required. The Cryptogram must still be present, but a static cryptogram value of "STATIC_RECURRING" should be included in place of a network-issued cryptogram.
Required parameters
- TransactionSource
=
recurring,unscheduled, orinstallment - ExternalVault.Status
=
vaulted - ExternalVault.PreviousNetworkTransactionId
- CreditCard.NetworkTokenizationAttributes.Cryptogram
- C#
var request = new TransactionRequest
{
Amount = 10.00M,
TransactionSource = "recurring",
CreditCard = new TransactionCreditCardRequest
{
Number = "4111111111111111",
ExpirationDate = "05/2027",
NetworkTokenizationAttributes = new NetworkTokenizationAttributesRequest
{
TokenRequestorId = "45310020105",
EcommerceIndicator = "05",
Cryptogram = "STATIC_RECURRING"
},
ExternalVault = new ExternalVaultRequest
{
Status = "vaulted",
PreviousNetworkTransactionId = "123456789012345"
}
}
};
Result<Transaction> result = gateway.Transaction.Sale(request);
if (result.IsSuccess()) {
// See result.Target for details
// result.Target.ProcessedWithNetworkToken == true
} else {
// Handle errors
}