# Shared ## Domain Types ### Customer Details V1 - `class CustomerDetailsV1: …` Information about the customer associated with the charge or payout. - `id: str` Unique identifier for the customer - `customer_type: Literal["individual", "business"]` The type of customer - `"individual"` - `"business"` - `email: str` The customer's email address - `name: str` The name of the customer - `phone: str` The customer's phone number in E.164 format ### Device Info V1 - `class DeviceInfoV1: …` - `ip_address: str` The IP address of the device used when the customer authorized the charge or payout. Use `0.0.0.0` to represent an offline consent interaction. ### Paged Response Metadata - `class PagedResponseMetadata: …` Metadata about the API request, including an identifier, timestamp, and pagination details. - `api_request_id: str` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: datetime` Timestamp for this API request, useful for troubleshooting. - `max_page_size: int` Maximum allowed page size for this endpoint. - `page_number: int` Page number for paginated results. - `page_size: int` Number of items per page in this response. - `sort_by: str` The field that the results were sorted by. - `sort_order: Literal["asc", "desc"]` - `"asc"` - `"desc"` - `total_items: int` Total number of items returned in this response. - `total_pages: int` The number of pages available. ### Paykey Details V1 - `class PaykeyDetailsV1: …` - `id: str` Unique identifier for the paykey. - `customer_id: str` Unique identifier for the customer associated with the paykey. - `label: str` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `balance: Optional[int]` The most recent balance of the bank account associated with the paykey in dollars. ### Response Metadata - `class ResponseMetadata: …` Metadata about the API request, including an identifier and timestamp. - `api_request_id: str` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: datetime` Timestamp for this API request, useful for troubleshooting. ### Status Details V1 - `class StatusDetailsV1: …` - `changed_at: datetime` The time the status change occurred. - `message: str` A human-readable description of the current status. - `reason: Literal["insufficient_funds", "closed_bank_account", "invalid_bank_account", 24 more]` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: Literal["watchtower", "bank_decline", "customer_dispute", 2 more]` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: Optional[str]` The status code if applicable.