> ## 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.

# checkout_authorization.approved

> The user approved with their passkey and the processor answered (`token` and `cse` only).

The user approved with their passkey and the processor answered (`token` and `cse` only). Carries the post-charge reconciliation: `amount_verified`, `charged_amount`, `charged_kind` (`captured`, `authorized`, `none`, or null). On `cse` the charged facts are null because Adyen answers the browser, not Agentcard.

Also carries `settlement`: whether Agentcard can confirm the charge with the processor itself, not through the device. For a Stripe PaymentIntent confirm it is `unknown` / `check_pending` with `final: false` here, and [`settled`](/webhooks/checkout-authorizations/checkout_authorization-settled) or [`settlement_unconfirmed`](/webhooks/checkout-authorizations/checkout_authorization-settlement_unconfirmed) follows once the read lands. For every other request it is `unknown` / `no_processor_reference` with `final: true`: the merchant charges the token and Agentcard holds nothing to read back.

A purchase Agentcard paid without asking, because the user gave your app permission, also fires this event. Its payload adds `execution_mode: "autopilot"` and the `grant_id` of the permission that paid. When its `charged_kind` is `none`, tell Agentcard what the merchant charged with [Report a checkout outcome](/api-reference/vault/authorizations-outcome).

```json theme={null}
{
  "id": "evt_9f8e7d6c5b4a",
  "type": "checkout_authorization.approved",
  "created": 1757264400,
  "livemode": false,
  "data": {
    "authorization_id": "cauth_2q9d1x8f3k2m4t7w",
    "user_id": "usr_8f3k2m",
    "external_user_id": "usr_8f3k2m",
    "merchant": "shop.example.com",
    "amount": 2306,
    "currency": "usd",
    "amount_display": "$23.06",
    "amount_authority": "processor",
    "psp": "stripe",
    "mode": "token",
    "submitted_at": null,
    "amount_verified": true,
    "charged_amount": 2306,
    "charged_currency": "usd",
    "charged_kind": "captured",
    "settlement": {
      "status": "unknown",
      "reason": "check_pending",
      "final": false,
      "processor_reference": "pi_3Qxample",
      "processor_status": null,
      "processor_error_code": null,
      "settled_amount": null,
      "settled_currency": null,
      "checked_at": null,
      "resolved_at": null,
      "message": "Agentcard has not yet read this payment back from the processor. Agentcard will check again."
    }
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.