On this page
No Headings
Last updated: June 17, 2026
Use real-time account updates to reduce declined card payments. Real-time account updater increases payment success by asking the card issuer for updates about the buyer's card, and applying any changes to the current card.
Use this integration guide if you are a merchant and have a direct integration with PayPal.
A buyer's credit or debit card can be declined for many reasons. When a card on file expires, is lost or stolen, or changes for any other reason, payments using that saved card are declined. A declined card can interrupt or prevent a transaction and impact your relationship with that customer.
Only cards that the customer has saved on PayPal's Commerce Platform for future payments are eligible for real-time updates. When triggered, real-time account updater obtains the updated card information to use for the payment. The API response includes data about the card used to complete the payment. For details on how to save a card for future payments, visit Save payment methods.
Examples of payments using a card on file include:
Real-time account updater doesn't apply to mobile payments from a digital wallet, such as Apple Pay, Google Pay, and Samsung Pay.
Note: Even cards that qualify for real-time updates may not be updated during a transaction. Read PayPal's Online Card Payment Services Agreement for details.
Real-time account updater is a limited early access program for all merchants with the following integrations enabled:
Real-time account updates only occur on subsequent card payments using a card on file. For examples of subsequent payment scenarios, see the Strong Customer Authentication payment indicators page.
Real-time account updater works when issuers agree to share card updates via card networks. PayPal can't provide a card update when the card issuer or cardholder opts out of automatic updates. When a card account doesn't support real-time account updates, request a card update directly from the cardholder.
If you're interested in using real-time account updater, go to our article about Real-Time Account Updater and integration.
The following table shows the card types and countries that real-time account updater supports.
| Card network | Card type | Issuing country | Merchant country |
|---|---|---|---|
| Mastercard | Credit and debit cards | AT, AU, BE, BG, CA, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HU, IE, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK, UK, US | AT, AU, BE, BG, CA, CN, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HU, IE, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK, UK, US |
| Visa | Credit and debit cards | AT, AU, BE, BG, CH, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HK, HU, IE, IT, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SG, SI, SK, UK, US | AT, AU, BE, BG, CA, CN, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HU, IE, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK, UK, US |
PayPal works with Mastercard and Visa to reduce declined payments using real-time account updates.
When a partner or direct merchant has real-time account updater enabled for their account, PayPal checks if the card information is current and eligible for updates.

Real-time account updates use specific fields and error codes that could impact your existing integration.
Payment requests that use a payment token return 2 additional parameters: expiry and last_digits.
When PayPal completes a payment using an updated expiration or primary account number:
The expiry response field is included in the card object and returns the expiration date of the card used for payment.
The last_digits response field is included in the card object and returns the last 4 digits of the card number used for payment.
{
"payment_source": {
"card": {
"last_digits": "2557",
"expiry": "2040-12",
"brand": "MASTER_CARD",
"type": "CREDIT"
}
}
}The HTTP 422 error response is returned when a card on file that is marked as closed is used for payment.
{
"name": "UNPROCESSABLE_ENTITY",
"details": [
{
"field": "payment_source/card",
"location": "body",
"issue": "CARD_CLOSED",
"description": "The card is closed."
}
],
"message": "The requested action could not be performed, semantically incorrect, or failed business validation.",
"debug_id": "6a20810eaecc5",
"links": [
{
"href": "https://developer.paypal.com/api/orders/v2/error-messages",
"rel": "information_link",
"method": "GET"
}
]
}Download the Postman collection for real-time account updater to test making updates to cards.
This section shows how real-time account updater responds to 3 different card changes.
Note: The payment token id in these code samples is a placeholder. Generate and use your own payment token.
This sample shows what happens when a token for an expired card is used for a payment. The response returns the updated expiration date for the same card.
If you call GET /v3/vault/payment-tokens/{id} using the token before you submit the order using POST /v2/checkout/orders, the POST response includes the updated values that PayPal used to complete the payment. Compare the expiry returned by the GET call to the expiry returned by the POST call.
API endpoint: /v2/checkout/orders
{
"intent": "CAPTURE",
"payment_source": {
"token": {
"id": "0rjdehvx",
"type": "PAYMENT_METHOD_TOKEN"
}
},
"payer": {
"name": {
"given_name": "kakashi Hatakae",
"surname": "user"
},
"address": {
"address_line_1": "123 Main St.",
"address_line_2": "Floor 6",
"admin_area_2": "Anytown",
"admin_area_1": "CA",
"postal_code": "12345",
"country_code": "US"
}
},
"purchase_units": [
{
"description": "Item bought at Hemm Store",
"custom_id": "1111",
"soft_descriptor": "",
"amount": {
"currency_code": "USD",
"value": "45.00"
},
"shipping": {
"address": {
"address_line_1": "123 Main St.",
"address_line_2": "Building 17",
"admin_area_2": "Anytown",
"admin_area_1": "CA",
"postal_code": "12345",
"country_code": "US"
}
}
}
]
}{
"id": "7YS401589T475863H",
"status": "COMPLETED",
"payment_source": {
"card": {
"last_digits": "9855",
"expiry": "2040-12",
"brand": "VISA",
"type": "CREDIT"
}
},
"purchase_units": [
{
"reference_id": "default",
"shipping": {
"address": {
"address_line_1": "123 Main St.",
"address_line_2": "Floor 6",
"admin_area_2": "Anytown",
"admin_area_1": "CA",
"postal_code": "12345",
"country_code": "US"
}
},
"payments": {
"captures": [
{
"id": "1MJ8142177130444J",
"status": "COMPLETED",
"amount": {
"currency_code": "USD",
"value": "45.00"
},
"final_capture": true,
"seller_protection": {
"status": "NOT_ELIGIBLE"
},
"seller_receivable_breakdown": {
"gross_amount": {
"currency_code": "USD",
"value": "45.00"
},
"paypal_fee": {
"currency_code": "USD",
"value": "1.66"
},
"net_amount": {
"currency_code": "USD",
"value": "43.34"
}
},
"custom_id": "1111",
"links": [
{
"href": "https://api-m.sandbox.paypal.com/v2/payments/captures/1MJ8142177130444J",
"rel": "self",
"method": "GET"
},
{
"href": "https://api-m.sandbox.paypal.com/v2/payments/captures/1MJ8142177130444J/refund",
"rel": "refund",
"method": "POST"
},
{
"href": "https://api-m.sandbox.paypal.com/v2/checkout/orders/7YS401589T475863H",
"rel": "up",
"method": "GET"
}
],
"create_time": "2023-03-12T17:53:18Z",
"update_time": "2023-03-12T17:53:18Z",
"processor_response": {
"avs_code": "A",
"cvv_code": "M",
"response_code": "0000"
}
}
]
}
}
],
"links": [
{
"href": "https://api-m.sandbox.paypal.com/v2/checkout/orders/7YS401589T475863H",
"rel": "self",
"method": "GET"
}
]
}