Address Verification Service
Address Verification Service (AVS) verifies cardholder address data with the issuing bank to minimize fraudulent transactions. AVS captures the billing address and ZIP code in the transaction then compares these with the cardholder's ZIP code and billing address in the card issuer's file.
Use AVS on manual keyed transactions to qualify for better interchange rates.
The AVS response enables the integrator to determine if transaction needs reversal.
Code Samples
CWS
Request
parameters JSONObject | required | All relevant parameters for AVS processing. |
avsFields JSONObject | optional | AVS Name Value Pairs Includes CARDHOLDER_ADDRESS (max length = 30 characters) and CARDHOLDER_ZIP (max length = 9 characters) |
cardEntryTypes string | required | Entry Method Valid value: MANUALLY_ENTERED |
Response
data
JSONObject
|
Object holding various responses.
|
avsResponse
string
|
AVS Response Code
Valid values:
|
cardEntryType
string
|
Entry Mode
Valid value: MANUALLY_ENTERED
|
Example
Request
{
"method" : "startPaymentTransaction",
"requestId" : "1578283620",
"targetType" : "paymentGatewayConverge",
"version" : "1.0",
"parameters" : {
"paymentGatewayId" : "d5b9ea11-a9a7-4888-8458-2f609656579f",
"transactionType" : "SALE",
"tenderType" : "CARD",
.....
"avsFields" : {
"CARDHOLDER_ADDRESS" : "8985 Ridgeestone Ct",
"CARDHOLDER_ZIP" : "30076"
},
"cardEntryTypes" : [ "MANUALLY_ENTERED" ],
.....
}
}
Response
{
"requestId" : "1578283661",
"statusDetails" : "REQUEST_ACCEPTED",
"data" : {
"paymentGatewayCommand" : {
"completed" : true,
"eventQueue" : [ {
"timeStamp" : "1461595337785",
"statusDetails" : "CARD_READER_TRANSACTION_COMPLETED"
} ],
"chanId" : "31da7bbf-0d74-4244-b341-8911ac7cce71",
"paymentTransactionData" : {
"result" : "DECLINED",
"authCode" : null,
"resultMessage" : "DECLINED",
"date" : "Mon Apr 25 10:42:14 MST 2016",
"amountAuthorized" : {
"currencyCode" : "USD",
"value" : 6931
},
"avsResponse" : "Z",
"cardEntryType" : "MANUALLY_ENTERED",
...
Java
Request
private void setAVSFields(ECLTenderInterface cardTenderInterface,
GetCardTransactionPropertiesDialog cardTransactionPropertiesDialog)
{
String value;
if (null != (value = cardTransactionPropertiesDialog.useAVSAddress()))
cardTenderInterface.setAVSField(ECLAVSField.CARDHOLDER_ADDRESS, value);
if (null != (value = cardTransactionPropertiesDialog.useAVSZip()))
cardTenderInterface.setAVSField(ECLAVSField.CARDHOLDER_ZIP, value);
}
Response
@Override
public void transactionDidComplete(ECLTransactionInterface transaction, ECLTenderInterface tender, final ECLTransactionOutcome outcome)
{
if (outcome instanceof ECLCardTransactionOutcome)
{
ECLCardTransactionOutcome cardOutcome = (ECLCardTransactionOutcome)outcome;
if (cardOutcome.getAVSResponse() != null)
{
/* Do something with response. */
Objective-C
This is how you set the AVS feature.
// set AVS address or ZIP in card tender
[cardTender setAVSField:ECLAVS_CardholderAddress withValue:@"123 Main St"];
[cardTender setAVSField:ECLAVS_CardholderZip withValue:@"30312"];
// get AVS response
if (((ECLCardTransactionOutcome *)_theOutcome).avsResponse.length != 0) {
[NSString stringWithFormat:@"AVS response:%@\n", ((ECLCardTransactionOutcome *)_theOutcome).avsResponse];
}
C#
Request
PaymentArgs paymentArgs = new PaymentArgs();
...
/* Set AVS fields */
Dictionary<string, string> info = new Dictionary<string, string>();
info["CARDHOLDER_ADDRESS"] = tb_Address.Text;
info["CARDHOLDER_ZIP"] = tb_Zip.Text;
paymentArgs.avsFields = info;
Response
public void MyPaymentComplete(PaymentTransactionResults paymentResults)
{
PaymentTransactionData paymentData = paymentResults.PaymentTransactionData;
if (null != paymentData)
{
if (null != paymentData.avsResponse)
{
/* Do something with result */