Account Updater

Your customer's card details may change due to expiration, loss, or other account changes. This may result in refused outcomes if you attempt subsequent Customer Initiated Transactions (CITs) or Merchant Initiated Transactions (MITs) using outdated credentials.

Receive real-time account updates

Your customer's card details can either be stored by you, or by us in a Worldpay token. When you submit payment requests using these card details, we can check if updated card details are available before attempting a payment authorization.

We have two offerings available:

  • Managed - we apply merchant configuration to your entity and automatically check for updated card details when you attempt qualifying payments. No changes are required to your payment requests.
  • Request a real-time account update in your payment request by setting the instruction.requestAccountUpdater boolean to true.

In both cases, if updated card details are available, we apply them before requesting payment authorization. We return updated card details in the updatedPaymentInstrument object in our response.

You can supply requestAccountUpdater in MITs and only those CITs where customerAgreement.storedCardUsage is set to subsequent.

Request

Set instruction.requestAccountUpdater to true to request updated card details for the paymentInstrument supplied. If the stored card details, that you have provided for the transaction, are no longer valid and new credentials are available, the authorization is processed with the new card and its details are returned in the updatedPaymentInstrument object in our response.

No changes are required in the request body if you are using our "Managed Account Updater" offering.

Request example

{
    "transactionReference": "Memory265-13/08/1876",
    "channel": "ecom",
    "merchant": {
        "entity": "default"
    },
    "instruction": {
        "requestAutoSettlement": {
            "enabled": false
        },
        "narrative": {
            "line1": "Mind Palace"
        },
        "value": {
            "currency": "GBP",
            "amount": 250
        },
        "paymentInstrument": {
            "type": "card/plain",
            "cardNumber": "4444333322221111",
            "expiryDate": {
                "month": 5,
                "year": 2035
            }
        },
        "customerAgreement":{
            "type": "cardOnFile",
            "storedCardUsage": "subsequent"
        },
        "requestAccountUpdater": true
    }
}

Response

If updated card details have been applied in your request, the updatedPaymentInstrument object is returned in the response.

appliedNetworkTokenboolean

Returned if the payment instrument was swapped for a network token.

accountUpdaterMessagestring

Details on the type of payment instrument update.

Enum ValueDescription
The merchant is not registered in the update program

Returned for Real Time Account Updater only. Contact Worldpay to enroll in the service.

The account number was changed

A new card has been issued with a change in the card number.

The account was closed

The account is closed and the card is no longer valid. Ask your customer for an alternative payment method.

The expiry was changed

A new card has been issued with an updated expiry date. In most cases the card number remains unchanged.

The issuing bank does not participate in the update program

Returned for Real Time Account Updater only. It is not known whether an account update is available.

Contact the cardholder for updated information

A match was found but you may need to contact the cardholder for updated card details. This could be due to cardholder opt-out or other reasons.

No match found

The BIN range is enrolled for account updates, but no match was found for the card account. One reason for this may be that the card issuer has recently changed.

No changes found

No changes to the card account were found.

Example: "The account number was changed"
typestring
Example: "card/plain+masked"
cardBinstring^[0-9*]+$

The updated card BIN (Bank Identification Number).

Example: "444433"
lastFourstring^[0-9*]+$

The four digits of the updated card. Some characters may be obfuscated with a * if the PAN length is less than 16 characters.

Example: 1111
cardNumberstring[ 12 .. 19 ] characters^[0-9]*$

The full card number of the updated card. Returned only for merchants configured to receive card numbers that are not obfuscated.

expiryDateobject
cardBrandstring

The brand of the updated card. In rare circumstances a card may be reissued under a different brand.

countryCodestring= 2 characters^[A-Z]*$
Example: "GB"
fundingTypestring

How the card is funded.

Response examples

{
    "outcome": "authorized",
    "paymentId": "3012ecbd-f6ef-4308-b7f1-829d0ccb879f",
    "commandId": "cmdwZ5y_rSV1VmjD6CpgCuXG0",
    "riskFactors": [
        {
            "type": "cvc",
            "risk": "notSupplied"
        },
        {
            "type": "avs",
            "risk": "notChecked",
            "detail": "address"
        },
        {
            "type": "avs",
            "risk": "notChecked",
            "detail": "postcode"
        }
    ],
    "issuer": {
        "authorizationCode": "12345A"
    },
    "scheme": {
        "reference": "060720116005060"
    },
    "updatedPaymentInstrument": {
        "cardBin": "491183",
        "lastFour": "0000",
        "expiryDate": {
            "month": 9,
            "year": 2031
        },
        "cardBrand": "visa",
        "fundingType": "credit",
        "accountUpdaterMessage": "The account number was changed",
        "type": "card/plain+masked"
    },
    "paymentInstrument": {
        "type": "card/plain+masked",
        "cardBin": "444433",
        "lastFour": "1111",
        "category": "consumer",
        "expiryDate": {
            "month": 5,
            "year": 2023
        },
        "cardBrand": "visa",
        "fundingType": "credit",
        "issuerName": "Some Issuer PLC",
        "paymentAccountReference": "Q1HJZ28RKA1EBL470G9XYG90R5D3E"
    },
    "_links": {
        "cardPayments:cancel": {
            "href": "https://try.access.worldpay.com/payments/authorizations/cancellations/eyJrIjoiazNhYjYzMiI="
        },
        "cardPayments:partialCancel": {
            "href": "https://try.access.worldpay.com/payments/authorizations/cancellations/partials/eyJrIjoiazNhYjYzMiJ9"
        },
        "cardPayments:settle": {
            "href": "https://try.access.worldpay.com/payments/settlements/full/eyJrIjoiazNhYjYzMiI="
        },
        "cardPayments:partialSettle": {
            "href": "https://try.access.worldpay.com/payments/settlements/partials/eyJrIjoiazNhYjYzMiI="
        },
        "cardPayments:events": {
            "href": "https://try.access.worldpay.com/payments/events/eyJrIjoiazNhYjYzMiI="
        },
        "curies": [
            {
                "name": "cardPayments",
                "href": "https://try.access.worldpay.com/rels/cardPayments/{rel}",
                "templated": true
            }
        ]
    }
}