# JPMC-PDP Documentation from https://developer.payments.jpmorgan.com # Request card account updates You can request real-time account updates for cards by making a `POST` request to the `/account-updates` endpoint. This provides an immediate response with old and new card account information for Visa and Mastercard. For Discover cards, the account updates are available the next day. The following table describes important optional fields included in a request. **Important optional request fields** | Field name | Description | | --- | --- | | cardAccountAction | This field is used to register or unregister the card account for recieving subsequent account update notifications. - REGISTER: Use this value to register the card account. - UNREGISTER: If the card account is registered, use this value to unregister the card account. | | merchantRecordIdentifier | This field allows you to include your own internal identifier to associate to the inquiry. This value is included in future notifications. | | subMerchantId | This field is required when you submit an inquiry for your sub-merchant. It contains the value used to register your sub-merchant with the payment networks. | > If you submit an inquiry on behalf of a sub-merchant, include `subMerchantId `field in the request body. > The following table describes important response fields. **Important response fields** | Field name | Descriptions | | --- | --- | | expectedRecordUpdateTimestamp | This field shows the date and time when account updates are available. Run the GET call to retrieve the latest card account updates. For more information, see [retrieve latest card account updates.](/docs/commerce/optimization-protection/capabilities/account-updater/how-to/retrieve-latest-card-account-updates) | | responseId | The response ID is generated by the Account Updater system and can be used for GET calls to retrieve the response information at a later time. | | requestStatus | Indicates current card registration status such as REGISTERED, UNREGISTERED, REGISTRATION_FAILED, and REGISTRATION_PENDING | ### Request account updates using PAN Request an account updater inquiry using a PAN in the `cardNumber` field. **HTTP method: **`POST` **Endpoint: **`/account-updates` ```json { "accountInformation": { "accountNumberType": "PAN", "cardNumber" : "4111111111111113", "expiry" : { "month" : "12", "year" : "2027" } } } ``` **Response:** ```json { "requestCreateTimestamp": "2025-09-05T18:53:04.059Z", "responseId": "7893bf1f-3caf-44ea-88f7-ba685fcdba94", "requestId": "c533548a-ad62-486e-abbd-42d1141e8836", "response": "SUCCESS", "accountUpdaterResult": { "oldAccountInformation": { "cardNumber": "4111111111111113", "expiry": { "month": 12, "year": 2027 }, "cardTypeName": "VISA", "accountNumberType": "PAN" }, "newAccountInformation": { "cardNumber": "4111111122819424", "expiry": { "month": 12, "year": 2032 }, "cardTypeName": "VISA", "paymentMethodChanged": false, "accountNumberType": "PAN" }, "networkResponse": { "networkResponseCode": "A" }, "reasonMessage": "NEW_ACCOUNT_AND_EXPIRY", "responseMessage": "Account Update provided for both account number and expiry" } } ``` ### Request account updates using Safetech token **HTTP method: **`POST` **Endpoint: **`/account-updates` When sending a safetech token in the `cardNumber` field, you must include the `accountNumberType` field with the value `SAFETECH_TOKEN`. If you omit this field, the value in the `cardNumber` field is treated as a PAN (Primary Account Number) by default. ```json { "accountInformation" : { "accountNumberType": "SAFETECH_TOKEN", "cardNumber" : "4111111557381113", "expiry" : { "month" : 7, "year" : 2026 } } } ``` **Response:** ```json { "requestCreateTimestamp": "2024-11-18T16:47:40.768Z", "responseId": "113194fc-2f07-4ff5-a3c3-85895652c629", "requestId": "da887c4b-68b5-4346-b390-2e81afb75223", "response": "SUCCESS", "accountUpdaterResult": { "oldAccountInformation": { "cardNumber": "4111111557381113", "expiry": { "month": 7, "year": 2026 }, "cardTypeName": "VISA", "accountNumberType": "SAFETECH_TOKEN" }, "newAccountInformation": { "cardNumber": "4111117039188641", "expiry": { "month": 7, "year": 2031 }, "cardTypeName": "VISA", "paymentMethodChanged": false, "accountNumberType": "SAFETECH_TOKEN" }, "networkResponse": { "networkResponseCode": "A" }, "reasonMessage": "NEW_ACCOUNT_AND_EXPIRY", "responseMessage": "Account Update provided for both account number and expiry" } } ``` ### Request account updates for Discover Request an account updater inquiry for Discover cards using a PAN in the `cardNumber` field. **HTTP method: **`POST` **Endpoint: **`/account-updates` ```json { "accountInformation": { "cardNumber": "6011970200000006", "expiry": { "month": "12", "year": "2020" } } } ``` **Response:** ```json { "requestCreateTimestamp": "2025-09-05T18:56:36.284Z", "responseId": "9ff165ca-91fc-4565-995b-c49bfc144420", "requestId": "b3bf9b73-e573-43a8-80b7-a3ae3bbd4d19", "response": "SUCCESS", "accountUpdaterResult": { "oldAccountInformation": { "cardNumber": "6011970200000006", "expiry": { "month": 12, "year": 2020 }, "accountNumberType": "PAN" }, "responseMessage": "Checking For Update", "expectedRecordUpdateTimestamp": "2025-09-06T14:00:00.000Z" } } ``` ### Request card registration Register your card accounts for automated account update inquiries and set up webhook notifications. API behavior is consistent irrespective of method of payments. **HTTP method: **`POST` **Endpoint: **`/account-updates` ```json { "accountInformation": { "accountNumberType": "PAN", "cardNumber" : "4011111111111113", "expiry" : { "month" : "12", "year" : "2027" } }, "cardAccountAction": "REGISTER" } ``` **Response:** ```json { "requestCreateTimestamp": "2025-09-05T18:59:30.106Z", "responseId": "f6e8b0b6-7206-4826-8609-b736b4d124ea", "requestId": "c533548a-ad62-486e-abbd-42d1141e8836", "requestStatus": "REGISTRATION_PENDING", "response": "SUCCESS", "accountUpdaterResult": { "oldAccountInformation": { "cardNumber": "4011111111111113", "expiry": { "month": 12, "year": 2027 }, "cardTypeName": "VISA", "accountNumberType": "PAN" }, "responseMessage": "Checking For Update", "expectedRecordUpdateTimestamp": "2025-09-06T14:00:00.000Z" }, "cardAccountAction": "REGISTER" } ``` > When you request card registration with `cardAccountAction`* *as `REGISTER,` and the API response contains `reasonMessage` values of `CLOSED_ACCOUNT` or `CONTACT_CARDHOLDER`, contact the cardholder to obtain a new card. Unregister the old card with `cardAccountAction` set to `UNREGISTER`. > ### Request registration for registered card Request card registration for a card that is already registered. You will get the `responseMessage` with the value `Card already registered for Account Updater.` **HTTP method: **`POST` **Endpoint: **`/account-updates` ```json { "accountInformation": { "accountNumberType": "PAN", "cardNumber" : "4111111111111113", "expiry" : { "month" : "12", "year" : "2027" } }, "cardAccountAction": "REGISTER" } ``` **Response:** ```json { "requestCreateTimestamp": "2025-09-05T19:02:22.129Z", "responseId": "abeab7b4-1a08-4ec8-8f2a-e0e40501e111", "requestId": "c533548a-ad62-486e-abbd-42d1141e8836", "requestStatus": "REGISTERED", "response": "SUCCESS", "accountUpdaterResult": { "oldAccountInformation": { "cardNumber": "4111111111111113", "expiry": { "month": 12, "year": 2027 }, "cardTypeName": "VISA", "accountNumberType": "PAN" }, "responseMessage": "Card already registered for Account Updater", "expectedRecordUpdateTimestamp": "2025-09-06T14:00:00.000Z" }, "cardAccountAction": "REGISTER" } ``` ### Response field values and recommended action The following table summarizes the possible response field values for card account update requests, the corresponding network response codes, recommended actions, and whether the update is billable. **Response field values and recommended action** | reasonMessage | responseMessage | networkResponseCode Visa / Mastercard / Discover | Action recommended | Billable Update | | --- | --- | --- | --- | --- | | NEW_ACCOUNT | Account Update provided for account number | A / (not applicable) / A | Update account number or token in your system | Yes | | NEW_ACCOUNT_AND_EXPIRY | Account Update provided for both account number and expiry | A / ACCOUNT_UPDATE / A or O | Update account number or token in your system and expiration date. | Yes | | NEW_EXPIRY | Account Update provided for account expiry | E / EXPIRY / E or O | Update expiration date in your system | Yes | | CLOSED_ACCOUNT | Account has been closed | C / (not applicable) / C | Contact cardholder to obtain updated card information | Yes | | CONTACT_CARDHOLDER | Contact Cardholder | Q / CONTACT / Q | Contact cardholder to obtain updated card information | Yes | | MATCH_NO_UPDATE | Valid card no update available | V / VALID / (not applicable) | No action needed | No | | NO_MATCH_NON_PARTICIPATING_BIN | BIN range does not participate in Account Updater | N / NON_PARTICIPATING / (not applicable) | No action needed | No | | NO_MATCH_PARTICIPATING_BIN | Participating BIN range card not found | P / UNKNOWN / (not applicable) | No action needed | No | > For Discover, the `networkResponseCode` as `O `indicates that the issuer corrected a previous account update. >