---
title: "Simulate a card balance inquiry"
method: POST
path: "/sandbox/cards/{id}/simulate/balance_inquiry"
tags: ["Sandbox"]
---

# Simulate a card balance inquiry

`POST /sandbox/cards/{id}/simulate/balance_inquiry`

Simulate a balance-inquiry authorization against a card in the sandbox environment. A balance inquiry is always a `0`-amount authorization, so the request carries no `amount` — only the `merchant`. Drives the same internal paths the card issuer would call in production. The resulting card operation is delivered asynchronously via the issuer's events webhook.

Production returns `404` on this path.

## Path parameters

- `id` string, required

## Request body

- SandboxCardBalanceInquiryRequest — Sandbox-only request body for `POST /sandbox/cards/{id}/simulate/balance_inquiry`. Drives a balance-inquiry authorization against the card. A balance inquiry is always a `0`-amount authorization, so it carries no `amount`.
  - `merchant` CardMerchant, required
    - `descriptor` string, required — Merchant descriptor string captured from the card network at authorization time.
    - `mcc` string — Merchant Category Code (ISO 18245) — four-digit numeric string.
    - `country` string — Two-letter ISO 3166-1 alpha-2 country code of the merchant.

## Response `202`

Simulation accepted. The resulting card operation is delivered asynchronously via the issuer's events webhook. Returns the issuer transaction token that correlates the simulated event.

- SandboxCardSimulationResponse — Response body for the sandbox card-event simulators. The simulate call pokes the card issuer's sandbox; the resulting card operation is delivered asynchronously via the issuer's events webhook, never synchronously in this response.
  - `issuerTransactionToken` string, required — The card issuer's transaction token for the simulated event. Correlates the eventual webhook-delivered card operation back to this simulate call.

## Other responses

- `400` — Bad request - Invalid parameters
- `401` — Unauthorized
- `403` — Forbidden - request was made with a production platform token
- `404` — Card not found (also returned in production for this path)
- `500` — Internal service error

## Changes

- **2026-08-14** `aaa1fb8782c8` — 1 warning
  - added the new `EXTERNAL_ACCOUNT_VERIFICATION_REQUIRED` enum value to the `code` response property for the response status `400`
- **2026-08-13** `df12ec487f0e` — 1 warning
  - added the new `TRANSACTION_SIZE_LIMIT_EXCEEDED` enum value to the `code` response property for the response status `400`
- **2026-08-11** `b06902b6595a` — 1 warning
  - added the new `CARDHOLDER_KYC_NOT_APPROVED` enum value to the `code` response property for the response status `400`
- **2026-08-06** `526036c12609` — 2 warning
  - added the new `END_USER_TERMS_NOT_ACCEPTED` enum value to the `code` response property for the response status `403`
  - added the new `END_USER_TERMS_VERSION_NOT_FOUND` enum value to the `code` response property for the response status `400`
- **2026-07-31** `b21ed434ee6e` — 1 info
  - added the optional property `details/errors` to the response with the `400` status

[Full history](https://skmtc.dev/stainless-api/apis/grid-api/changes/sandbox/cards/:id/simulate/balance_inquiry/post.md)

---

[API](https://skmtc.dev/stainless-api/apis/grid-api.md) · [All operations](https://skmtc.dev/stainless-api/apis/grid-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/stainless-api/grid-api/revisions/2ec84c06fbec/schema)
