---
title: "Check a card for account updates"
method: POST
path: "/payments/cards/checks"
tags: ["Payments", "Real-time Account Updater"]
---

# Check a card for account updates

`POST /payments/cards/checks`

## Request

- Base URL: `https://api.evervault.com`
- URL: `https://api.evervault.com/payments/cards/checks`
- Auth: HTTP basic
- TypeScript: <https://skmtc.dev/evervault/apis/evervault-api/docs/payments/cards/checks/post.ts> (a function with typed inputs; its response is checked against the schema)

Provide an Evervault encrypted or plaintext card number and expiry, and Evervault
synchronously queries the card networks for the latest card details.

The check is a stateless, synchronous request to the card networks: it doesn't enroll
the card for ongoing updates. If the card is subscribed for asynchronous updates, you
may also receive the update via a [`real-time.card.updated`](/api#realTimeCardUpdated)
webhook afterwards. Only Visa and Mastercard cards are supported. A card of any other
brand is rejected with a `400` status code.

The plaintext card number is never stored or returned. If a new card number is
available, it's returned re-encrypted as an Evervault encrypted string.

## Request body

- object
  - `card` object, required
    - `number` string, required: The card number. This can be a plaintext card number or a valid Evervault encrypted card number.
    - `expiry` CardExpiry, required: The card expiry date.
      - `month` string, required: The card expiry month, in MM format (e.g. 12 for December)
      - `year` string, required: The card expiry year, in YY format (e.g. 29 for 2029)

## Response `200`

The check completed.

- AccountUpdaterCheck: The result of pulling the latest details for a card from the card networks.
  - `id` string, required: The unique identifier for the check.
  - `result` 'no-change' | 'new-expiry-date' | 'new-account-number' | 'account-closed' | 'contact-cardholder' | 'cardholder-opt-out' | 'merchant-opt-out' | 'no-match', required: The outcome of the check. Only `new-expiry-date` and `new-account-number` carry an `update` payload; every other result returns no new credentials.
  - `update` object, nullable, required: The updated card details. Present on `new-account-number` and `new-expiry-date` results, and `null` on every other result.
    - `card` object: The updated card details.
      - `number` string: The updated card number. Always an Evervault encrypted string, and only present on a `new-account-number` result. The plaintext card number is never returned, so decrypt this value with Evervault if you need the plaintext account number.
      - `expiry` CardExpiry: The card expiry date.
        - `month` string, required: The card expiry month, in MM format (e.g. 12 for December)
        - `year` string, required: The card expiry year, in YY format (e.g. 29 for 2029)

## Other responses

- `400`: The request was invalid or cannot be otherwise served.
- `401`: The request cannot be authenticated.
- `403`: The request is not authorized to perform this action.
- `429`: Too many requests. The rate limit has been exceeded.
- `502`: Evervault received an error from the upstream card provider while performing the check.

## Changes

- **2026-11-06** `8d0ca833fa04`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/evervault/apis/evervault-api/changes/payments/cards/checks/post.md)

---

[API](https://skmtc.dev/evervault/apis/evervault-api.md) - [All operations](https://skmtc.dev/evervault/apis/evervault-api/llms.txt) - [OpenAPI document](https://skmtc.dev/evervault/apis/evervault-api/revisions/8d0ca833fa04?raw)
