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

# TRANSACTION_DECLINED

> Fired when a card authorization is declined. No funds are moved.

Fires when a cardholder attempts a purchase and the authorization is declined. The `declineReason` field explains why. No funds are moved on a decline.

## Event Type

```
TRANSACTION_DECLINED
```

## Payload

```json theme={null}
{
  "event":       "TRANSACTION_DECLINED",
  "eventId":     "evt_01HXY123456ABCDEF",
  "businessId":  "BUS1A2B3C4D5E6F",
  "environment": "LIVE",
  "timestamp":   "2026-05-22T10:00:00Z",
  "data": {
    "transactionId":  "txn_01HXYZ5555ABCDEF9999",
    "cardId":         "crd_01HXYZ5555ABCDEF1111",
    "cardholderId":   "chl_01HXYZ1234ABCDEF5678",
    "externalId":     "my-user-id-789",
    "type":           "AUTHORIZATION",
    "status":         "DECLINED",
    "amount":         50.00,
    "currency":       "USD",
    "billingAmount":  50.00,
    "billingCurrency": "USD",
    "declineReason":  "INSUFFICIENT_BALANCE",
    "merchant": {
      "name":           "Apple Store",
      "id":             "APPLE_MERCHANT_001",
      "city":           "Cupertino",
      "country":        "US",
      "mcc":            "5732",
      "mccDescription": "Electronics Stores"
    }
  }
}
```

## Payload Fields

| Field           | Type   | Description                                        |
| --------------- | ------ | -------------------------------------------------- |
| `transactionId` | string | Unique transaction ID for this decline event       |
| `type`          | string | Always `AUTHORIZATION` for this event              |
| `status`        | string | Always `DECLINED` for this event                   |
| `amount`        | number | Amount that was attempted, in dollars              |
| `declineReason` | string | Machine-readable decline reason — see values below |

**Decline reason values:**

| Value                  | Meaning                                            |
| ---------------------- | -------------------------------------------------- |
| `INSUFFICIENT_BALANCE` | Card balance too low                               |
| `CARD_FROZEN`          | Card is frozen                                     |
| `CARD_TERMINATED`      | Card has been terminated                           |
| `CARDHOLDER_SUSPENDED` | Cardholder account is suspended                    |
| `MCC_BLOCKED`          | Merchant Category Code is blocked for this program |
| `VELOCITY_EXCEEDED`    | Transaction velocity limit exceeded                |
| `FRAUD_SUSPECTED`      | Suspected fraud — automatic decline                |
| `NETWORK_DECLINED`     | Declined by the card network                       |

All other fields are the same as `TRANSACTION_AUTHORIZED`. See [Transaction Events](/v3.20/webhooks/events/transaction-events) for the full field reference.

## Common Use Cases

* Send a real-time decline notification to the cardholder
* Log decline patterns to detect fraud or misconfiguration
* Prompt the cardholder to top up their card if `INSUFFICIENT_BALANCE`

<RequestExample>
  ```json Webhook Payload theme={null}
  {
    "event":       "TRANSACTION_DECLINED",
    "eventId":     "evt_01HXY123456ABCDEF",
    "businessId":  "BUS1A2B3C4D5E6F",
    "environment": "LIVE",
    "timestamp":   "2026-05-22T10:00:00Z",
    "data": {
      "transactionId":  "txn_01HXYZ5555ABCDEF9999",
      "cardId":         "crd_01HXYZ5555ABCDEF1111",
      "cardholderId":   "chl_01HXYZ1234ABCDEF5678",
      "externalId":     "my-user-id-789",
      "type":           "AUTHORIZATION",
      "status":         "DECLINED",
      "amount":         50.00,
      "currency":       "USD",
      "billingAmount":  50.00,
      "billingCurrency": "USD",
      "declineReason":  "INSUFFICIENT_BALANCE",
      "merchant": {
        "name":           "Apple Store",
        "id":             "APPLE_MERCHANT_001",
        "city":           "Cupertino",
        "country":        "US",
        "mcc":            "5732",
        "mccDescription": "Electronics Stores"
      }
    }
  }
  ```
</RequestExample>

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


## OpenAPI

````yaml v3.20/openapi.json webhook TRANSACTION_DECLINED
openapi: 3.1.0
info:
  title: FYATU CaaS API v3.20
  description: >-
    FYATU Cards-as-a-Service API â€” API key authentication, Cardholder
    lifecycle, Card issuance, Transactions, Webhooks, and Programs.
  version: 3.20.0
  contact:
    name: FYATU Support
    url: https://fyatu.com
    email: support@fyatu.com
servers:
  - url: https://api.fyatu.com/api/v3.20
    description: >-
      FYATU CaaS API â€” the environment (LIVE or SANDBOX) is determined by the
      API key, not the URL
security:
  - BearerAuth: []
tags:
  - name: Meta
    description: Liveness, account info, and supported event types
  - name: Account
    description: Account-level balance and funding status
  - name: Programs
    description: Read card program configuration
  - name: Cardholders
    description: Create and manage cardholder profiles
  - name: Cards
    description: Issue, fund, freeze, and terminate virtual cards
  - name: Transactions
    description: Read-only card transaction history
  - name: Webhooks
    description: Manage webhook endpoints for real-time event delivery
  - name: Products
    description: Read card product configurations
paths: {}
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key from the FYATU CaaS portal. Pass as `Authorization: Bearer
        <key>`.

````