Account Updater

Overview

Account Updater keeps stored card details up to date automatically, using Visa Account Updater (VAU) and MasterCard Automatic Billing Updater (ABU). It helps reduce failed transactions caused by expired, lost, or stolen cards — stored card_ids are refreshed without asking the customer to re-enter their payment information.

Acquired runs Account Updater checks automatically in a number of situations described below. You can also trigger a check manually through the API when you want direct control over timing.

When Account Updater runs

Acquired initiates an Account Updater request automatically in the following situations:

  • Rebill decline: A recurring authorisation is declined for a reason that indicates the card details may be out of date — for example lost_or_stolen, expired_card, or closed_account.
  • Retry advice: The acquirer's advice code indicates that updated credentials should be requested before retrying. See our Retry Advice guide for more.
  • Monthly card expiry sweep: On the 15th of each month, Acquired checks all stored cards due to expire the following month and refreshes their details ahead of time.

You can also trigger a check yourself via the API — see Working with Account Updater via the API.

Eligibility

For a card to be eligible for Account Updater, all of the following must be true:

  • The card is active.
  • The card scheme is Visa or Mastercard. Other schemes are not supported.
  • The card does not have an active network token. Cards with active network tokens are kept up to date via the token itself — see our Network Tokens guide.
  • Account Updater is enabled on your merchant account. Contact Acquired support or your account manager to enable it.

Working with Account Updater via the API

Three endpoints are available:

Manual and automatic requests flow through the same pipeline and produce the same outcomes. Triggering manually gives you flexibility over when Account Updater runs — for example ahead of a scheduled batch of recurring payments, or when onboarding a portfolio of stored cards.

Request lifecycle

Every Account Updater request moves through the following states:

StatusDescription
pendingCreated and waiting to be sent to the card scheme.
submittedSent to the scheme and awaiting a response.
completedThe scheme returned a result. See the outcome field for what was returned.
failedThe scheme could not process the request.

Once a request is completed, the outcome field reports what the scheme returned:

OutcomeMeaning
card_updatedThe card number (and usually the expiry) has changed. Future payments will use the new details automatically.
card_expiry_updatedOnly the expiry date has changed.
no_updateThe card is still valid; no changes needed.
closed_accountThe account has been closed. Contact the cardholder for updated payment information.
card_not_foundThe scheme did not recognise the card.
provider_errorThe scheme could not process the request.
unknownThe result could not be determined. Only shown for some older requests.

Where card details did change, the response also includes an outcome_detail object containing the before/after card values (last 4 digits, expiry, and BIN where permitted).

Webhook notifications

When Acquired receives an Account Updater response from the card scheme, we notify you via the card_update webhook. The update_detail field tells you what happened:

update_detailMeaning
card_updatedA new PAN and/or expiry date has been retrieved. Future payments will use the new details automatically.
closed_accountThe account has been closed. Contact the cardholder for updated payment information.
no_updateThe issuing bank returned no updated details. This can also mean the issuer does not participate in the Account Updater program. Contact the cardholder for updated payment information.

The account_updater_id field links the webhook to the underlying request, and can be used to retrieve its full record via the Get an Account Updater request endpoint.

Example payload:

{
  "webhook_type": "card_update",
  "webhook_id": "357b7dd8-b709-4c31-98e3-f3accbb9e72d",
  "timestamp": 1701053823,
  "webhook_body": {
    "card_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "account_updater_id": "0190f9bd-2c4f-7000-9000-aabbccddeeff",
    "update_type": "account_updater",
    "update_detail": "card_updated",
    "card": {
      "holder_name": "J Smith",
      "scheme": "visa",
      "number": "1234",
      "expiry_month": 12,
      "expiry_year": 29
    }
  }
}

For more information on webhooks, including webhook structure, please view our guide here.


Did this page help you?