> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentcard.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a checkout authorization

> The authoritative state of one authorization, including the processor response once approved.

<ParamField path="id" type="string" required>The authorization id.</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl https://api.agentcard.sh/api/v2/checkout/authorizations/cauth_2q9d1x8f3k2m4t7w \
    -H "Authorization: Bearer $ORG_TOKEN"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "cauth_2q9d1x8f3k2m4t7w",
    "object": "checkout_authorization",
    "status": "approved",
    "mode": "token",
    "psp": "stripe",
    "merchant": "shop.example.com",
    "amount": "$23.06",
    "amount_cents": 2306,
    "currency": "usd",
    "amount_authority": "stripe_payment_intent",
    "amount_verified": true,
    "charged_amount_cents": 2306,
    "charged_currency": "usd",
    "charged_kind": "captured",
    "replay_attempted": true,
    "response": { "status": 200, "headers": { "content-type": "application/json" }, "body": "{\"id\":\"tok_…\"}" }
  }
  ```
</ResponseExample>

<ResponseField name="status" type="string">`awaiting_approval`, `approved`, `submitted_on_device` (hosted-form processors only; no processor evidence exists), `declined`, or `expired`.</ResponseField>
<ResponseField name="response" type="object">On `approved` in `token` mode: the processor's response to replay into the paused request.</ResponseField>
<ResponseField name="substitutions" type="object">On `approved` in `cse` mode: the encrypted card fields to write into the paused body, plus `remove` for sibling keys to drop.</ResponseField>
<ResponseField name="amount_authority" type="string">`stripe_payment_intent`, `hosted_form_sum`, or `display_only`.</ResponseField>
<ResponseField name="amount_verified" type="boolean | null">Whether what the processor charged matches the approved amount. Null when there was nothing to compare.</ResponseField>
<ResponseField name="charged_kind" type="string | null">`captured`, `authorized`, `none`, or null.</ResponseField>
<ResponseField name="reason" type="string">On `declined`: `user_declined`, `amount_mismatch`, `intent_not_confirmable`, or `processor_refused` (with `psp_error_code`).</ResponseField>
<ResponseField name="processor_error" type="object">Optional on a Razorpay `processor_refused` result: bounded `reason`, `source`, `step`, `payment_id`, and `order_id` identifiers reported by the processor. Raw response bodies and descriptions are excluded. Older records may not contain these details.</ResponseField>
<ResponseField name="replay_attempted" type="boolean">True when a device may already have sent the card. On `expired`, treat the outcome as unknown and check the processor.</ResponseField>

An approval is not an order. Confirm the order with the merchant before acting on it.

`processor_refused` means the device reported a rejected processor request. A generic code such as Razorpay's `BAD_REQUEST_ERROR` does not establish an issuer decline or prove that nothing was charged. Check the merchant payment status before starting another attempt.
