Account Updater
Visa’s Account Updater (VAU) and MasterCard’s Automatic Billing Updater (ABU) allows your business to connect into each of the Card Schemes to obtain new updated card details for those cards that have either expired or have been reported lost or stolen.
A single API request is submitted for each card / token and we handle the rest. In the event that new card details are available, we will automatically update the token within our environment with the new details. This means that when your next payment attempt is due to take place, the request should be successfully authorised – provided the customer has sufficient funds or nothing out of the ordinary occurs.
Auto Update
We have designed the Account Updater solution to be as seamless as possible. To do so, we will initiate a request on your behalf in a few different scenarios.
Lost or Stolen Card
If you try to process an authorisation request against a stored card and we return a 402 (Declined: Lost or Stolen Card) response code, we will automatically check if a replacement has been issued to the cardholder and inform you via webhook.
Expired Card
If you try to process an authorisation request against a stored card and we return either a 204 (Error: Invalid or Expired cardexp) or 325 (Declined: Card Expired) response code, we will automatically check if new details are available and inform you via webhook.
Card Expiring
Each month (on the 15th) we will proactively try to get updated card details for all the cards you have stored with us that are about to expire. For example, on the 15/10/2019, we will query all the cards with an expiry date of 102019 you have tokenised with us. Again - we'll update you with any new details via webhook.
Manual Update
Endpoints
Time to play - access your API using these endpoints:
From time to time, you may want to check if an update is available outside of our Auto Update scenarios. No problem at all - just submit this simple API request:
{
"timestamp":"20190601090000",
"company_id":"113",
"company_pass":”password”,
"request_hash":"cc8882cb0437863f711432a1d143fe6e9f92ce74080a0f30a0dac3a718ad1c28",
"transaction":{
"transaction_type":"ACCOUNT_UPDATER",
"original_transaction_id":"24901878"
}
}
Parameter | Format | Length | Description |
---|---|---|---|
timestamp | string |
14 | Date and time of transaction submission. Acceptable Characters: 0-9 in the format yyyymmddhhmmss |
company_id | string |
1-11 | API Company ID we issue to merchants. Acceptable Characters: 0-9 |
company_pass | int/string |
1-30 | API Password we issue to merchants. |
request_hash | string |
64 | Value of your encrypted hash. Take a look here for more information. Acceptable Characters: 0-9 a-z A-z _ - |
transaction | object |
||
transaction_type | string |
1-20 | The transaction type being performed. Should be set to ‘ACCOUNT_UPDATER’. Acceptable Characters: a-z A-Z _ |
original_transaction_id | int/string |
1-10 | The transaction_id value returned in the transaction response of the original INIT authorisation request - which represents the token. Acceptable Characters: 0-9 |
We will respond back to let you know that we have received your request and if everything has worked as expected - an 11 (Pending) response code just like the example below:
{
"timestamp":"20190601090000",
"response_code":"11",
"response_message":"Pending",
"company_id":"113",
"mid":"1045",
"transaction_id":"24901878",
"transaction_type":"ACCOUNT_UPDATER"
"bank_response_code":"1",
"response_hash":"5f07efac8a6ccd48124051843a1fd730445d1775bd35e92b1c270f69439749ec"
}
Parameter | Format | Length | Description |
---|---|---|---|
timestamp | string |
14 | Date and time of transaction submission. Acceptable Characters: 0-9 in the format yyyymmddhhmmss |
response_code | string |
1-3 | Code describing the transaction results. A full list of possible response codes are outlined below: 11 - Pending. 908 - System error: Invalid response from bank. |
response_message | string |
1-100 | Message describing the transaction results. Acceptable Characters: 0-9 a-z A-z _ - ()[]{};~!@#$%^*,./\?:”’ +=` |
company_id | string |
1-11 | API Company ID we issue to merchants. Acceptable Characters: 0-9 |
mid | string |
1-11 | The merchant ID value. Details the specific MID ID the transaction was processed through. Acceptable Characters: 0-9 |
transaction_id | string |
1-10 | Unique ID we assign to each transaction that is processed. Acceptable Characters: 0-9 |
transaction_type | string |
1-20 | Transaction type, repeated from the request message. Acceptable Characters: a-z A-Z _ |
bank_response_code | int |
2 | Status code that is assigned by the Card Schemes. It is expected that the majority of requests will be assigned a “1” pending response status (given that updated card details are not provided in real-time) - see list of response codes below: 0 - Unknown. 1 - Pending. 2 - Complete. 4 - Expired. |
response_hash | string |
1-30 | Verification hash value. |
Webhook Notification
It doesn't matter if you are using the Auto Update or Manual Update process - once we have a response from the card schemes we need to let you know. We will do this via the account_updater webhook.
These are some the key fields you should be looking out for and what they mean:
Parameter | Format | Length | Description |
---|---|---|---|
transaction_id | int |
1-10 | The unique ID generated by Acquired for the account_updater request. Acceptable Characters: 0-9 |
parent_id | int |
1-10 | The transaction_id value returned in the original INIT authorisation request - which represents the token. |
status | int |
1 | Lets you know the outcome of the update request. Possible values are: 1 - Updated (Account details successfully updated). 2 - Not Updated (There is no update available for the account provided). 3 - Error (An error occurred with the account updater request). |
bulk_update | int |
1 | Code which identifies if the update was due to a REBILL or a batch run on your expired cards.0 - Triggered by a declined REBILL .1 - Triggered by Acquired.com on the 15th of every month in our batch run.
|
response_code | string |
1 | For Visa cards - we will let you know what happened. Possible values are: A - Account number changed (expiry date unchanged). C - Closed account advice. E - Expiry date changed. N - Non-participating BIN. P - Participating BIN, no match. Q - Contact cardholder advice. V - Match made, account number and expiry date unchanged. |
reason_identifier | string |
5-10 | For MasterCard - will let you know what happened. Possible values are: UPDATE - Account number changed (expiry date unchanged). CONTAC - Closed account advice. EXPIRY - Expiry date changed. VALID - Non-participating BIN. UNKNWN - Participating BIN, no match. |
response_indicator | string |
1 | For MasterCard - a bit more information on the update. Possible values are: V - Matches the account as reported by the Issuer. P - No match, participating BIN / Issuer. N - No match, non-participating BIN / Issuer. R - Replacement card. B - Brand Flip to MasterCard match. C - Closed account. E - Update expiration date. |
Here are some handy examples of the possible webhooks you might receive for different scenarios.
Visa
{
"id":"56C6DE12-5E42-32F0-2B23-8D5DA29F2D59",
"timestamp":"02272018065704",
"company_id":"113",
"hash":"cc8882cb0437863f711432a1d143fe6e9f92ce74080a0f30a0dac3a718ad1c28",
"event":"account_updater",
"mid":"1045",
"list":[ {
"transaction_id":"6509500",
"parent_id":"138498",
"status":"1",
"bulk_update":"1",
"update_billing":{
"old_cardnumber":"424242XXXXXX4242",
"old_expdate":"092018",
"new_cardnumber":"424242XXXXXX1212",
"new_expdate":"102023"
},
"card_scheme_response":{
"response_code":"A",
"reason_identifier":"",
"response_indicator":""
}
} ]
}
{
"id":"56C6DE12-5E42-32F0-2B23-8D5DA29F2D59",
"timestamp":"02272018065704",
"company_id":"113",
"hash":"cc8882cb0437863f711432a1d143fe6e9f92ce74080a0f30a0dac3a718ad1c28",
"event":"account_updater",
"mid":"1045",
"list":[ {
"transaction_id":"3429524",
"parent_id":"222398",
"status":"2",
"bulk_update":"1",
"update_billing":{
"old_cardnumber":"424242XXXXXX4242",
"old_expdate":"092018",
"new_cardnumber":"",
"new_expdate":""
},
"card_scheme_response":{
"response_code":"V",
"reason_identifier":"",
"response_indicator":""
}
} ]
}
MasterCard
{
"id":"56C6DE12-5E42-32F0-2B23-8D5DA29F2D59",
"timestamp":"02272018065704",
"company_id":"113",
"hash":"cc8882cb0437863f711432a1d143fe6e9f92ce74080a0f30a0dac3a718ad1c28",
"event":"account_updater",
"mid":"1045",
"list":[ {
"transaction_id":"8734990",
"parent_id":"456911",
"status":"1",
"update_billing":{
"old_cardnumber":" 533409XXXXXX1681",
"old_expdate":"092018",
"new_cardnumber":"530514XXXXXX4597",
"new_expdate":"102023"
},
"card_scheme_response":{
"response_code":"",
"reason_identifier":"UPDATE",
"response_indicator":"R"
}
}]
}
{
"id":"56C6DE12-5E42-32F0-2B23-8D5DA29F2D59",
"timestamp":"02272018065704",
"company_id":"113",
"hash":"cc8882cb0437863f711432a1d143fe6e9f92ce74080a0f30a0dac3a718ad1c28",
"event":"account_updater",
"mid":"1045",
"list":[ {
"transaction_id":"6928721",
"parent_id":"742123",
"status":"2",
"update_billing":{
"old_cardnumber":" 533409XXXXXX1681",
"old_expdate":"092018",
"new_cardnumber":"",
"new_expdate":""
},
"card_scheme_response":{
"response_code":"",
"reason_identifier":"VALID",
"response_indicator":"V"
}
} ]
}
Webhook Parameters
Within the webhook notification that we send, you will receive the following parameters.
Parameter | Format | Length | Description |
---|---|---|---|
id | string |
36 | Unique ID assigned to each webhook notification, as per existing webhook logic. |
timestamp | date |
14 | The date and time the webhook was triggered. Acceptable Characters: 0-9 in the format yyyymmddhhmmss |
company_id | int |
3 | API Company ID issued by Acquired to the merchant. Acceptable Characters: 0-9 |
hash | string |
64 | The hash field used to verify that the contents are received securely. |
event | Always set to “account_updater”. | ||
mid | string |
4 | API MID ID issued by Acquired to the merchant. Acceptable Characters: 0-9 |
transaction_id | int |
1-10 | The unique ID generated by Acquired for the account_updater request. Acceptable Characters: 0-9 |
parent_id | int |
1-10 | The transaction_id value returned in the transaction response of the original INIT authorisation request - which represents the token. |
Status | int |
2 | Code which identifies the outcome of the update request. Possible status codes: 1 - Updated (Account details successfully updated). 2 - Not Updated (There is no update available for the account provided). 3 - Error (An error occurred with the account updater request). |
update_billing | object |
||
old_cardnumber | int |
12-19 | Contains the masked cardnumber of the existing token. |
old_expdate | string |
6 | Contains the expiry date of the existing token in the format MMYYYY. |
new_cardnumber | int |
12-19 | Contains the masked cardnumber of the new token. |
new_expdate | string |
6 | Contains the expiry date of the new token in the format MMYYYY. |
card_scheme_response | object |
||
response_code | string |
1 | The code that is returned by Visa when a Visa account number has been queried. Possible status codes are: A - Account number changed (expiry date unchanged). C - Closed account advice. E - Expiry date changed. N - Non-participating BIN. P - Participating BIN, no match. Q - Contact cardholder advice. V - Match made, account number and expiry date unchanged. |
reason_identifier | string |
5-10 | The reason identifier code that is returned by Mastercard when a Mastercard account number has been queried. UPDATE - Account number changed (expiry date unchanged). CONTAC - Closed account advice. EXPIRY - Expiry date changed. VALID - Non-participating BIN. UNKNWN - Participating BIN, no match. |
response_indicator | string |
1 | The response indicator code that is returned by Mastercard when a Mastercard account number has been queried. V - Matches the account as reported by the Issuer. P - No match, participating BIN / Issuer. N - No match, non-participating BIN / Issuer. R - Replacement card. B - Brand Flip to MasterCard match. C - Closed account. E - Update expiration date. |