1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269
|
# -*- coding: utf-8 -*-
# File generated from our OpenAPI spec
from stripe._api_resource import APIResource
from stripe._expandable_field import ExpandableField
from stripe._request_options import RequestOptions
from stripe._stripe_object import StripeObject
from typing import ClassVar, List, Optional
from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING
if TYPE_CHECKING:
from stripe._payment_method import PaymentMethod
class Mandate(APIResource["Mandate"]):
"""
A Mandate is a record of the permission that your customer gives you to debit their payment method.
"""
OBJECT_NAME: ClassVar[Literal["mandate"]] = "mandate"
class CustomerAcceptance(StripeObject):
class Offline(StripeObject):
pass
class Online(StripeObject):
ip_address: Optional[str]
"""
The customer accepts the mandate from this IP address.
"""
user_agent: Optional[str]
"""
The customer accepts the mandate using the user agent of the browser.
"""
accepted_at: Optional[int]
"""
The time that the customer accepts the mandate.
"""
offline: Optional[Offline]
online: Optional[Online]
type: Literal["offline", "online"]
"""
The mandate includes the type of customer acceptance information, such as: `online` or `offline`.
"""
_inner_class_types = {"offline": Offline, "online": Online}
class MultiUse(StripeObject):
pass
class PaymentMethodDetails(StripeObject):
class AcssDebit(StripeObject):
default_for: Optional[List[Literal["invoice", "subscription"]]]
"""
List of Stripe products where this mandate can be selected automatically.
"""
interval_description: Optional[str]
"""
Description of the interval. Only required if the 'payment_schedule' parameter is 'interval' or 'combined'.
"""
payment_schedule: Literal["combined", "interval", "sporadic"]
"""
Payment schedule for the mandate.
"""
transaction_type: Literal["business", "personal"]
"""
Transaction type of the mandate.
"""
class AmazonPay(StripeObject):
pass
class AuBecsDebit(StripeObject):
url: str
"""
The URL of the mandate. This URL generally contains sensitive information about the customer and should be shared with them exclusively.
"""
class BacsDebit(StripeObject):
network_status: Literal[
"accepted", "pending", "refused", "revoked"
]
"""
The status of the mandate on the Bacs network. Can be one of `pending`, `revoked`, `refused`, or `accepted`.
"""
reference: str
"""
The unique reference identifying the mandate on the Bacs network.
"""
revocation_reason: Optional[
Literal[
"account_closed",
"bank_account_restricted",
"bank_ownership_changed",
"could_not_process",
"debit_not_authorized",
]
]
"""
When the mandate is revoked on the Bacs network this field displays the reason for the revocation.
"""
url: str
"""
The URL that will contain the mandate that the customer has signed.
"""
class Card(StripeObject):
pass
class Cashapp(StripeObject):
pass
class KakaoPay(StripeObject):
pass
class KrCard(StripeObject):
pass
class Link(StripeObject):
pass
class NaverPay(StripeObject):
pass
class NzBankAccount(StripeObject):
pass
class Paypal(StripeObject):
billing_agreement_id: Optional[str]
"""
The PayPal Billing Agreement ID (BAID). This is an ID generated by PayPal which represents the mandate between the merchant and the customer.
"""
payer_id: Optional[str]
"""
PayPal account PayerID. This identifier uniquely identifies the PayPal customer.
"""
class RevolutPay(StripeObject):
pass
class SepaDebit(StripeObject):
reference: str
"""
The unique reference of the mandate.
"""
url: str
"""
The URL of the mandate. This URL generally contains sensitive information about the customer and should be shared with them exclusively.
"""
class UsBankAccount(StripeObject):
collection_method: Optional[Literal["paper"]]
"""
Mandate collection method
"""
acss_debit: Optional[AcssDebit]
amazon_pay: Optional[AmazonPay]
au_becs_debit: Optional[AuBecsDebit]
bacs_debit: Optional[BacsDebit]
card: Optional[Card]
cashapp: Optional[Cashapp]
kakao_pay: Optional[KakaoPay]
kr_card: Optional[KrCard]
link: Optional[Link]
naver_pay: Optional[NaverPay]
nz_bank_account: Optional[NzBankAccount]
paypal: Optional[Paypal]
revolut_pay: Optional[RevolutPay]
sepa_debit: Optional[SepaDebit]
type: str
"""
This mandate corresponds with a specific payment method type. The `payment_method_details` includes an additional hash with the same name and contains mandate information that's specific to that payment method.
"""
us_bank_account: Optional[UsBankAccount]
_inner_class_types = {
"acss_debit": AcssDebit,
"amazon_pay": AmazonPay,
"au_becs_debit": AuBecsDebit,
"bacs_debit": BacsDebit,
"card": Card,
"cashapp": Cashapp,
"kakao_pay": KakaoPay,
"kr_card": KrCard,
"link": Link,
"naver_pay": NaverPay,
"nz_bank_account": NzBankAccount,
"paypal": Paypal,
"revolut_pay": RevolutPay,
"sepa_debit": SepaDebit,
"us_bank_account": UsBankAccount,
}
class SingleUse(StripeObject):
amount: int
"""
The amount of the payment on a single use mandate.
"""
currency: str
"""
The currency of the payment on a single use mandate.
"""
class RetrieveParams(RequestOptions):
expand: NotRequired[List[str]]
"""
Specifies which fields in the response should be expanded.
"""
customer_acceptance: CustomerAcceptance
id: str
"""
Unique identifier for the object.
"""
livemode: bool
"""
Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
"""
multi_use: Optional[MultiUse]
object: Literal["mandate"]
"""
String representing the object's type. Objects of the same type share the same value.
"""
on_behalf_of: Optional[str]
"""
The account (if any) that the mandate is intended for.
"""
payment_method: ExpandableField["PaymentMethod"]
"""
ID of the payment method associated with this mandate.
"""
payment_method_details: PaymentMethodDetails
single_use: Optional[SingleUse]
status: Literal["active", "inactive", "pending"]
"""
The mandate status indicates whether or not you can use it to initiate a payment.
"""
type: Literal["multi_use", "single_use"]
"""
The type of the mandate.
"""
@classmethod
def retrieve(
cls, id: str, **params: Unpack["Mandate.RetrieveParams"]
) -> "Mandate":
"""
Retrieves a Mandate object.
"""
instance = cls(id, **params)
instance.refresh()
return instance
@classmethod
async def retrieve_async(
cls, id: str, **params: Unpack["Mandate.RetrieveParams"]
) -> "Mandate":
"""
Retrieves a Mandate object.
"""
instance = cls(id, **params)
await instance.refresh_async()
return instance
_inner_class_types = {
"customer_acceptance": CustomerAcceptance,
"multi_use": MultiUse,
"payment_method_details": PaymentMethodDetails,
"single_use": SingleUse,
}
|