Skip to main content
Online Payments

Real-Time Account Updater

The Real-Time Account Updater (RTAU) is an optional service which updates account information for Visa cards as part of the payment processing flow. It enables recurring payments or stored payments transactions to use updated account information that may have changed due to card expirations or reissues.

Before you begin

  • Enrollment: You must enroll in Visa RTAU during the onboarding process. To add the service, contact your relationship manager. 
  • Eligibility Requirements:
    • The transaction must be card-not-present. 
    • The transaction must be a merchant-initiated recurring payment or cardholder-initiated stored payment transaction.
    • The merchant in the payment request must not have the merchant category codes 5962, 5966, or 5967.
    • The transaction must be a Visa transaction.

Payment request

After enrollment in the RTAU service, transactions that meet the eligibility requirements are automatically enabled for account updates. By default, if a merchant is entitled for RTAU, account updates are provided in the authorization response for eligible cards. When submitting a POST request to the /payments endpoint for a Visa transaction, enrolled merchants have the option to include the requestAccountUpdater field with a value of true or null to receive account updates.

The following example shows a Visa transaction using RTAU.

HTTP method: POST
Endpoint: /payments

{
    "paymentMethodType": {
        "card": {
            "accountNumber": "4012001037141112",
            "expiry": {
                "month": 5,
                "year": 2025
            },
            "accountUpdater": {
                "requestAccountUpdater": true
            }
        }
    }
}

The following example shows a Visa transaction bypassing RTAU.

To bypass the RTAU service for an eligible transaction, the requestAccountUpdater field value should be false for an enrolled merchant.

HTTP method: POST
Endpoint: /payments

{
    "paymentMethodType": {
        "card": {
            "accountNumber": "4012001037141112",
            "expiry": {
                "month": 5,
                "year": 2025
            },
            "accountUpdater": {
                "requestAccountUpdater": false
            }
        }
    }
}

Payment response

In the payment response, there are two objects that contain RTAU response data:

  • accountUpdater — Displays the new account or expiration date, when available, as well as fields that explain the changes that have taken place on the account.
  • networkAccountUpdater — Displays the codes and values provided by the payment networks.

The following are examples of possible response scenarios:

Scenario: A valid card with no updates

{
    "accountUpdater": {
        "requestAccountUpdater": true,
        "accountUpdaterResponse": "MATCH_NO_UPDATE",
        "accountUpdaterReasonCode": "SUCCESS",
        "accountUpdaterReasonMessage": "Valid card no update available"
    },
    "networkAccountUpdater": {
        "replacementCode": false,
        "networkResponseCode": "VAU012"
    }
}

Scenario: A card updated with a new account number

{
    "accountUpdater": {
        "requestAccountUpdater": true,
        "accountNumber": "4012001037141112",
        "accountUpdaterResponse": "NEW_ACCOUNT",
        "accountUpdaterReasonCode": "SUCCESS",
        "accountUpdaterReasonMessage": "Account Update provided for Account Number"
    },
    "networkAccountUpdater": {
        "accountStatus": "A",
        "replacementCode": true
    }
}

Scenario: A card updated with a new account number and expiry date

{
    "accountUpdater": {
        "requestAccountUpdater": true,
        "accountNumber": "4012001037141112",
        "newAccountExpiry": {
            "month": 12,
            "year": 2025
        },
        "accountUpdaterResponse": "NEW_ACCOUNT_AND_EXPIRY",
        "accountUpdaterReasonCode": "SUCCESS",
        "accountUpdaterReasonMessage": "Account Update provided for both account number and expiry"
    },
    "networkAccountUpdater": {
        "accountStatus": "A",
        "replacementCode": true
    }
}

Scenario: The requested account was closed

{
    "accountUpdater": {
        "requestAccountUpdater": true,
        "accountUpdaterResponse": "CLOSED_ACCOUNT",
        "accountUpdaterReasonCode": "SUCCESS",
        "accountUpdaterReasonMessage": "Account has been closed"
    },
    "networkAccountUpdater": {
        "accountStatus": "C",
        "replacementCode": false
    }
}

Scenario: A card updated with a new expiration date

{
    "accountUpdater": {
        "requestAccountUpdater": true,
        "accountUpdaterResponse": "NEW_EXPIRY",
        "accountUpdaterReasonCode": "SUCCESS",
        "accountUpdaterReasonMessage": "Account Update provided for Account Expiry"
    },
    "networkAccountUpdater": {
        "accountStatus": "E",
        "replacementCode": true
    }
}

Scenario: A card updated with a new contact for the cardholder

{
    "accountUpdater": {
        "requestAccountUpdater": true,
        "accountUpdaterResponse": "CONTACT_CARDHOLDER",
        "accountUpdaterReasonCode": "SUCCESS",
        "accountUpdaterReasonMessage": "Contact Cardholder"
    },
    "networkAccountUpdater": {
        "accountStatus": "Q",
        "replacementCode": false
    }
}

Scenario: There was no match: however, the card issuer supports RTAU

{
    "accountUpdater": {
        "requestAccountUpdater": true,
        "accountUpdaterResponse": "NO_MATCH_PARTICIPATING_BIN",
        "accountUpdaterReasonCode": "SUCCESS"
    }
}

Scenario: The card issuer does not support RTAU

{
    "accountUpdater": {
        "requestAccountUpdater": true,
        "accountUpdaterResponse": "NO_MATCH_NON_PARTICIPATING_BIN",
        "accountUpdaterReasonCode": "ERROR",
        "accountUpdaterReasonMessage": "Issuer does not support real time AU"
    },
    "networkAccountUpdater": {
        "replacementCode": false,
        "networkResponseCode": "VAU009"
    }
}

Safetech tokens

When using RTAU, Safetech tokens are managed according to specific update scenarios. The following table outlines how Safetech tokens and account details are handled, and what merchants should expect in each case.

Safetech tokens with RTAU
Scenario Reason for update Client expectation
New account and new expiration updates Both the account number and expiration date are updated. You receive a new Safetech token and expiration date. Update your system for all relevant use cases.
No new account but new expiration update Only the expiration date is updated. You receive the same Safetech token with a new expiration date. Update the expiration date in your records.

The following example shows a Safetech token using RTAU.

HTTP methodPOST
Endpoint/payments

  {
    "paymentMethodType": {
    "card": {
      "accountNumberType": "SAFETECH_TOKEN",
      "accountNumber": "4112349166204113",
      "expiry": {
        "month": 5,
        "year": 2022
      },
      "accountUpdater": {
        "requestAccountUpdater": true
      }
    }
  }
  }

Response:

{
  "paymentMethodType": {
    "card": {
      "accountNumberType": "SAFETECH_TOKEN",
      "cardType": "VI",
      "cardTypeName": "VISA",
      "maskedAccountNumber": "411234XXXXXX0007",
      "cardTypeIndicators": {
        "issuanceCountryCode": "USA",
        "isLevel3Eligible": false,
        "isDurbinRegulated": false
      },
      "accountUpdater": {
        "accountUpdaterResponse": "NEW_ACCOUNT",
        "accountUpdaterReasonCode": "SUCCESS",
        "accountUpdaterReasonMessage": "Account Update provided for Account Number"
      },
      "networkResponse": {
        "networkAccountUpdater": {
          "accountStatus": "A",
          "replacementCode": true
        }
      },
      "paymentTokens": [
        {
          "tokenProvider": "SAFETECH",
          "tokenNumber": "4112342748860007",
          "responseStatus": "SUCCESS"
        }
      ]
    }
  }
}