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

# CARD_AUTHORIZATION

> Deprecated — this event is no longer dispatched. Use TRANSACTION_AUTHORIZED and TRANSACTION_DECLINED instead.

<Warning>
  **This event is no longer dispatched.** It has been superseded by [`TRANSACTION_AUTHORIZED`](/v3.20/webhooks/events/transaction-authorized) and [`TRANSACTION_DECLINED`](/v3.20/webhooks/events/transaction-declined), which provide the same information with richer transaction detail. Update your integration to subscribe to those events instead.
</Warning>

For the synchronous authorization decision (approve or decline a JIT charge or tokenization request), see [`CARD_AUTHORIZATION_VERIFY`](/v3.20/webhooks/events/card-authorization-verify).

## Event Type

```
CARD_AUTHORIZATION
```

## Payload

```json theme={null}
{
  "event":      "CARD_AUTHORIZATION",
  "eventId":    "evt_01HXY123456ABCDEF",
  "businessId": "BUS1A2B3C4D5E6F",
  "timestamp":  "2026-05-27T14:32:00Z",
  "data": {
    "cardId":          "crd_01HXYZ5555ABCDEF1111",
    "cardholderId":    "chl_01HXYZ1234ABCDEF5678",
    "amount":          42.50,
    "feeAmount":       1.25,
    "currency":        "USD",
    "merchantName":    "Amazon",
    "merchantMcc":     "5999",
    "merchantCountry": "US",
    "decision":        "APPROVED",
    "timestamp":       "2026-05-27T14:32:00Z"
  }
}
```

## Payload Fields

| Field             | Type   | Description                                                                         |
| ----------------- | ------ | ----------------------------------------------------------------------------------- |
| `cardId`          | string | The card that was authorized                                                        |
| `cardholderId`    | string | The cardholder who holds the card                                                   |
| `amount`          | number | Authorization amount in dollars                                                     |
| `feeAmount`       | number | Network or cross-border fee in dollars (may be `0.00`)                              |
| `currency`        | string | Authorization currency (ISO 4217)                                                   |
| `merchantName`    | string | Merchant name from the authorization request                                        |
| `merchantMcc`     | string | Merchant Category Code (ISO 18245). Empty string if not provided by the network     |
| `merchantCountry` | string | Two-letter country code where the merchant is located. Empty string if not provided |
| `decision`        | string | `APPROVED` or `DECLINED`                                                            |
| `timestamp`       | string | ISO 8601 timestamp of the authorization                                             |

## JIT Cards

For JIT-enabled cards (`isJitfEnabled: true`), this webhook fires after the full authorization flow completes:

| `decision` | What happened                                                                                                         |
| ---------- | --------------------------------------------------------------------------------------------------------------------- |
| `APPROVED` | Your server approved (or no `CARD_AUTHORIZATION_VERIFY` webhook is registered and the program balance was sufficient) |
| `DECLINED` | Your server declined, the program balance was insufficient, or the card was frozen/terminated                         |

On `APPROVED`, Fyatu has already reserved the funds from the program ledger. You will later receive [`TRANSACTION_CLEARED`](/v3.20/webhooks/events/transaction-cleared) when the transaction settles, or [`TRANSACTION_REVERSED`](/v3.20/webhooks/events/transaction-reversed) if the merchant cancels.

For pre-funded cards (`isJitfEnabled: false`), `APPROVED` means Fyatu has settled the authorization against the card's own balance — no program ledger movement occurs.

## How the JIT Authorization Flow Works

When a cardholder with a JIT card makes a purchase:

```
Card network → Fyatu (AUTHORIZATION_VERIFY)
                    │
           Fyatu checks program balance
                    │
         ┌──────────┴──────────┐
   sufficient               insufficient
         │                       │
         ▼                  DECLINE → card network
Fyatu → your server
(CARD_AUTHORIZATION_VERIFY)
         │
┌────────┴────────┐
APPROVE        DECLINE (or timeout)
   │                │
Fyatu →         Fyatu →
card network:   card network:
proceed         block transaction
   │                │
CARD_AUTHORIZATION  CARD_AUTHORIZATION
(decision: APPROVED)(decision: DECLINED)
   │
TRANSACTION_AUTHORIZED
   │
... later ...
   │
TRANSACTION_CLEARED
```

Fyatu responds to the card network within milliseconds. The cardholder experiences no perceptible delay.

## Common Use Cases

* Display real-time spending activity in your cardholder dashboard
* Trigger in-app notifications ("Your card was charged \$42.50 at Amazon")
* Reconcile authorizations against your internal records before clearing
* Detect unexpected outcomes from your authorization handler

## Declined Authorizations

When `decision` is `DECLINED`, no funds move. Common scenarios:

| Scenario                                          | Action                                        |
| ------------------------------------------------- | --------------------------------------------- |
| Your `CARD_AUTHORIZATION_VERIFY` handler declined | Check your handler logic or cardholder limits |
| JIT card, program balance insufficient            | Top up via Portal or `POST /account/deposit`  |
| Card frozen                                       | Unfreeze via `POST /cards/{id}/unfreeze`      |
| Card terminated                                   | Issue a replacement card                      |

Subscribe to [`ACCOUNT_LOW_BALANCE`](/v3.20/webhooks/events/account-low-balance) to top up your program before declines start happening.

<RequestExample>
  ```json Webhook Payload — Approved theme={null}
  {
    "event":      "CARD_AUTHORIZATION",
    "eventId":    "evt_01HXYZ987654FEDCBA",
    "businessId": "BUS1A2B3C4D5E6F",
    "timestamp":  "2026-05-27T14:32:00Z",
    "data": {
      "cardId":          "crd_01HXYZ5555ABCDEF1111",
      "cardholderId":    "chl_01HXYZ1234ABCDEF5678",
      "amount":          42.50,
      "feeAmount":       1.25,
      "currency":        "USD",
      "merchantName":    "Amazon",
      "merchantMcc":     "5999",
      "merchantCountry": "US",
      "decision":        "APPROVED",
      "timestamp":       "2026-05-27T14:32:00Z"
    }
  }
  ```

  ```json Webhook Payload — Declined (low program balance) theme={null}
  {
    "event":      "CARD_AUTHORIZATION",
    "eventId":    "evt_01HXYZ987654FEDCBB",
    "businessId": "BUS1A2B3C4D5E6F",
    "timestamp":  "2026-05-27T14:33:00Z",
    "data": {
      "cardId":          "crd_01HXYZ5555ABCDEF1111",
      "cardholderId":    "chl_01HXYZ1234ABCDEF5678",
      "amount":          250.00,
      "feeAmount":       0.00,
      "currency":        "USD",
      "merchantName":    "Best Buy",
      "merchantMcc":     "5731",
      "merchantCountry": "US",
      "decision":        "DECLINED",
      "timestamp":       "2026-05-27T14:33:00Z"
    }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {}
  ```
</ResponseExample>
