Source code for aioyookassa.types.payout
import datetime
from decimal import Decimal
from typing import List, Optional, Union
from pydantic import BaseModel, Field
from .enum import Currency, PayoutStatus, SelfEmployedStatus
from .payment import CancellationDetails, Deal, PaymentAmount
[docs]
class PayoutCardInfo(BaseModel):
"""
Bank card information for payout
"""
first6: str
last4: str
card_type: str
issuer_country: Optional[str] = None
issuer_name: Optional[str] = None
[docs]
class BankCardPayoutDestination(BaseModel):
"""
Bank card payout destination
"""
type: str = "bank_card"
card: PayoutCardInfo
[docs]
class SbpPayoutDestination(BaseModel):
"""
SBP (Fast Payments System) payout destination
"""
type: str = "sbp"
bank_id: str
phone: str
recipient_checked: bool
[docs]
class YooMoneyPayoutDestination(BaseModel):
"""
YooMoney wallet payout destination
"""
type: str = "yoo_money"
account_number: str
# Union type for payout destinations
PayoutDestination = Union[
BankCardPayoutDestination, SbpPayoutDestination, YooMoneyPayoutDestination
]
[docs]
class PayoutReceipt(BaseModel):
"""
Receipt data for self-employed payout
"""
service_name: str
npd_receipt_id: Optional[str] = None
url: Optional[str] = None
amount: Optional[PaymentAmount] = None
[docs]
class SelfEmployedConfirmation(BaseModel):
"""
Self-employed confirmation object
"""
type: str = "redirect"
confirmation_url: str
[docs]
class SelfEmployed(BaseModel):
"""
Self-employed person data
Can be used in two contexts:
1. In Payout object - only id is required
2. In SelfEmployed API responses - all fields except itn, phone, confirmation are required
"""
id: str
status: Optional[SelfEmployedStatus] = None
created_at: Optional[datetime.datetime] = None
itn: Optional[str] = None
phone: Optional[str] = None
confirmation: Optional[SelfEmployedConfirmation] = None
test: Optional[bool] = None
[docs]
class Payout(BaseModel):
"""
Payout object
"""
id: str
amount: PaymentAmount
status: PayoutStatus
payout_destination: PayoutDestination
description: Optional[str] = None
created_at: datetime.datetime
succeeded_at: Optional[datetime.datetime] = None
deal: Optional[Deal] = None
self_employed: Optional[SelfEmployed] = None
receipt: Optional[PayoutReceipt] = None
cancellation_details: Optional[CancellationDetails] = None
metadata: Optional[dict] = None
test: bool