Card AVS (Address Verification)
Address Verification Service (AVS) compares the billing address provided with a card against the address on file with the cardholder's issuing bank. AVS runs in two situations:
- When a card payment method is added directly via the
/payment_methodsendpoint - When a card is used to create a transaction via the
/transactionsendpoint (whether the card is provided inline or already saved as a payment method)
In both cases the result is returned as an avs attribute on the response, regardless of
whether the request is approved or declined. A successful match helps confirm the cardholder's
identity and reduce fraud risk, while a partial or failed match can indicate a miskeyed address
or potentially suspicious activity.
See the table below for a list of all possible avs values:
| AVS Code | Result | Description |
|---|---|---|
street_and_zip | Match | Both the billing zip code and street address matched |
street | Partial | Only the billing street address matched |
zip | Partial | Only the billing zip code matched |
no_match | No match | None of the billing address fields provided were valid |
unknown | No result | No address verification performed |
A response of street_and_zip or zip indicates a positive verification — the address
information provided matches what the issuing bank has on file, and the request proceeds
normally. By default, an avs response value of unknown, no_match, or street will fail:
- On a transaction, the request returns the transaction with a
status_codeofinvalid_addressindicating aninvalid_addressdecline. - On a new payment method, the request returns a
400error with the messageBilling address details invalid.
The threshold for what avs values are considered a failure can be adjusted — contact our support team for more information.
Testing AVS responses
To test the various possible avs responses in a sandbox environment, any street address with a
street number of 999 will be recognized as an invalid street and any postal code with a value
of 99999 will be recognized as an invalid zip. See the billing address combinations below.
Each example shows the request body for both creating a card payment method directly and
sending the card inline on a transaction.
No verification (unknown)
// Provide card details without billing information
// This will generally result in a decline
{
"type": "card",
"card": {
"card_number": "4111 1111 1111 1111",
"expiry": "12/25",
"card_code": "123"
},
"account_id": "acct_customer123"
}// Provide card details without billing information
// This will generally result in a decline
{
"type": "payment",
"amount": 1,
"sender": {
"method": {
"type": "card",
"card": {
"card_number": "4111 1111 1111 1111",
"expiry": "12/25",
"card_code": "123"
}
}
},
"receiver": {
"account_id": "acct_receiver123"
}
}No match (no_match)
{
"type": "card",
"card": {
"card_number": "4111 1111 1111 1111",
"expiry": "12/25",
"card_code": "123"
},
"billing_address": {
// 999 as the street number
"street_address": "999 Example St",
// 99999 as the postal code
"postal_code": "99999"
},
"account_id": "acct_customer123"
}{
"type": "payment",
"amount": 1,
"sender": {
"method": {
"type": "card",
"card": {
"card_number": "4111 1111 1111 1111",
"expiry": "12/25",
"card_code": "123"
},
"billing_address": {
// 999 as the street number
"street_address": "999 Example St",
// 99999 as the postal code
"postal_code": "99999"
}
}
},
"receiver": {
"account_id": "acct_receiver123"
}
}Partial zip match (zip)
{
"type": "card",
"card": {
"card_number": "4111 1111 1111 1111",
"expiry": "12/25",
"card_code": "123"
},
"billing_address": {
// 999 as the street number
"street_address": "999 Example St",
// Any value other than 99999 as the postal code
"postal_code": "11111"
},
"account_id": "acct_customer123"
}{
"type": "payment",
"amount": 1,
"sender": {
"method": {
"type": "card",
"card": {
"card_number": "4111 1111 1111 1111",
"expiry": "12/25",
"card_code": "123"
},
"billing_address": {
// 999 as the street number
"street_address": "999 Example St",
// Any value other than 99999 as the postal code
"postal_code": "11111"
}
}
},
"receiver": {
"account_id": "acct_receiver123"
}
}Partial street match (street)
{
"type": "card",
"card": {
"card_number": "4111 1111 1111 1111",
"expiry": "12/25",
"card_code": "123"
},
"billing_address": {
// Any value other than 999 as the street number
"street_address": "123 Example St",
// 99999 as the postal code
"postal_code": "99999"
},
"account_id": "acct_customer123"
}{
"type": "payment",
"amount": 1,
"sender": {
"method": {
"type": "card",
"card": {
"card_number": "4111 1111 1111 1111",
"expiry": "12/25",
"card_code": "123"
},
"billing_address": {
// Any value other than 999 as the street number
"street_address": "123 Example St",
// 99999 as the postal code
"postal_code": "99999"
}
}
},
"receiver": {
"account_id": "acct_receiver123"
}
}Full match (street_and_zip)
{
"type": "card",
"card": {
"card_number": "4111 1111 1111 1111",
"expiry": "12/25",
"card_code": "123"
},
"billing_address": {
// Any value other than 999 as the street number
"street_address": "123 Example St",
// Any value other than 99999 as the postal code
"postal_code": "11111"
},
"account_id": "acct_customer123"
}{
"type": "payment",
"amount": 1,
"sender": {
"method": {
"type": "card",
"card": {
"card_number": "4111 1111 1111 1111",
"expiry": "12/25",
"card_code": "123"
},
"billing_address": {
// Any value other than 999 as the street number
"street_address": "123 Example St",
// Any value other than 99999 as the postal code
"postal_code": "11111"
}
}
},
"receiver": {
"account_id": "acct_receiver123"
}
}