# Tab payment failed

Webhook event: `tab.payment_failed`

Authoritative failure signal for a tab payment. Includes error code and message for debugging.

Delivered payload:

```ts
{
  id: string // uuid
  event: "tab.payment_failed"
  resource: "tab"
  resourceId: string
  timestamp: string // date-time
  apiVersion: "v1"
  data: {
    customFields?: Array<{
        fieldId: string
        key: string
        label: string
        group: string
        type: string
        value: unknown
        displayValue: string
        version: integer
        status: string
      }>
    metadata?: Record<string, unknown> | null
    tabId: string // uuid
    tabSettlementId: string // uuid
    purchaseIntentId: string // uuid
    paymentMethod: string
    paymentMode: "ITEM" | "AMOUNT" | "INSTANT_PAY"
    amountCents: integer
    errorCode?: string
    errorMessage: string
    itemIds?: string[]
    locationId: integer
    failedAt: string // date-time
  }
}
```
