# Base class for all transaction types in the ledger service

## Fields

### event_type
- **Type:** `const`
- **Enum:** 
- **Required**: Yes  
- **Description**: The type of event that occurred.  
- **Allowed values**: `payment_transaction.created`

### status
- **Type:** `string`
- **Enum:** 
- **Required**: Yes  
- **Description**: The status of the transaction  
- **Allowed values**: `PENDING`, `SETTLED`, `DECLINED`, `REVERSED`, `CANCELED`, `RETURNED`

### token
- **Type:** `uuid`
- **Required**: Yes  
- **Description**: Unique identifier for the transaction

### created
- **Type:** `date-time`
- **Required**: Yes  
- **Description**: ISO 8601 timestamp of when the transaction was created

### updated
- **Type:** `date-time`
- **Required**: Yes  
- **Description**: ISO 8601 timestamp of when the transaction was last updated

### family
- **Type:** `const`
- **Enum:** 
- **Required**: Yes  
- **Description**: PAYMENT - Payment Transaction  
- **Allowed values**: `PAYMENT`

### category
- **Type:** `string`
- **Enum:** 
- **Required**: Yes  
- **Description**: Transaction category  
- **Allowed values**: `ACH`, `WIRE`, `BALANCE_OR_FUNDING_FEE`, `REWARD_ADJUSTMENT`, `DERECOGNITION`, `DISPUTE`, `CARD`, `EXTERNAL_ACH`, `EXTERNAL_CHECK`, `EXTERNAL_FED_NOW`, `EXTERNAL_RTP`, `EXTERNAL_TRANSFER`, `EXTERNAL_WIRE`, `MANAGEMENT_ADJUSTMENT`, `MANAGEMENT_DISPUTE`, `MANAGEMENT_FEE`, `MANAGEMENT_REWARD`, `MANAGEMENT_DISBURSEMENT`, `HOLD`, `PROGRAM_FUNDING`

### currency
- **Type:** `string`
- **Description:** Currency of the transaction in ISO 4217 format

### result
- **Type:** `string`
- **Enum:** 
- **Required**: Yes  
- **Description**: Transaction result  
- **Allowed values**: `APPROVED`, `DECLINED`

### method_attributes
- **Type:** `required`
- **Description**: Method-specific attributes
- **Subfields**:  
  - AchMethodAttributes  
  - WireMethodAttributes

### financial_account_token
- **Type:** `uuid`
- **Required**: Yes  
- **Description**: Financial account token

### external_bank_account_token
- **Type:** `uuid | null`
- **Description**: External bank account token

### direction
- **Type:** `string`
- **Enum:**  
- **Required**: Yes  
- **Description**: Transfer direction  
- **Allowed values**: `CREDIT`, `DEBIT`

### source
- **Type:** `string`
- **Enum:**  
- **Required**: Yes  
- **Description**: Transaction source  
- **Allowed values**: `LITHIC`, `EXTERNAL`, `CUSTOMER`

### method
- **Type:** `string`
- **Enum:**  
- **Required**: Yes  
- **Description**: Transfer method  
- **Allowed values**: `ACH_NEXT_DAY`, `ACH_SAME_DAY`, `WIRE`

### settled_amount
- **Type:** `integer`
- **Required**: Yes  
- **Description**: Settled amount in cents

### pending_amount
- **Type:** `integer`
- **Required**: Yes  
- **Description**: Pending amount in cents

### events
- **Type:** `array of objects`
- **Required**: Yes  
- **Description**: List of transaction events

#### Events Object
- **Fields**:  
  - amount (integer): Required  
  - created (date-time): Required  
  - detailed_results (array of strings)  
  - result (string): Required  
  - token (uuid): Required  
  - type (string): Required  
  - external_id (string | null)

### descriptor
- **Type:** `string`
- **Required**: Yes  
- **Description**: Transaction descriptor

### user_defined_id
- **Type:** `string | null`
- **Description**: User-defined identifier

### expected_release_date
- **Type:** `date | null`
- **Description**: Expected release date for the transaction

### related_account_tokens
- **Type:** `object`
- **Required**: Yes  
- **Description**: Related account tokens for the transaction

#### Related Account Tokens Object
- **Fields**:  
  - business_account_token (uuid): Required  
  - account_token (uuid): Required

### type
- **Type:** `string`
- **Enum:**  
- **Description**:  
- **Allowed values**: `ORIGINATION_CRED`, `ORIGINATION_DEBIT`, `RECEIPT_CREDIT`, `RECEIPT_DEBIT`, `WIRE_INBOUND_PAYMENT`, `WIRE_INBOUND_ADMIN`, `WIRE_OUTBOUND_PAYMENT`, `WIRE_OUTBOUND_ADMIN`, `WIRE_INBOUND_DRAWDOWN_REQUEST`

### tags
- **Type:** `object`
- **Description**: Key-value pairs for tagging resources.
