use crate::config::{Client, Response};
use crate::ids::AccountId;
use crate::params::{Deleted, Expand, Expandable, List, Metadata, Object, RangeQuery, Timestamp};
use crate::resources::{
Address, BankAccount, BusinessType, Card, Currency, DelayDays, Dob, File, Person,
PersonVerificationParams, VerificationDocumentParams, Weekday,
};
use serde_derive::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Account {
pub id: AccountId,
#[serde(skip_serializing_if = "Option::is_none")]
pub business_profile: Option<BusinessProfile>,
#[serde(skip_serializing_if = "Option::is_none")]
pub business_type: Option<BusinessType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub capabilities: Option<AccountCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub charges_enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company: Option<Company>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_currency: Option<Currency>,
#[serde(default)]
pub deleted: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub details_submitted: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(default)]
pub external_accounts: List<ExternalAccount>,
#[serde(skip_serializing_if = "Option::is_none")]
pub individual: Option<Person>,
#[serde(default)]
pub metadata: Metadata,
#[serde(skip_serializing_if = "Option::is_none")]
pub payouts_enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub requirements: Option<AccountRequirements>,
#[serde(skip_serializing_if = "Option::is_none")]
pub settings: Option<AccountSettings>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tos_acceptance: Option<TosAcceptance>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub type_: Option<AccountType>,
}
impl Account {
pub fn list(client: &Client, params: ListAccounts<'_>) -> Response<List<Account>> {
client.get_query("/accounts", ¶ms)
}
pub fn create(client: &Client, params: CreateAccount<'_>) -> Response<Account> {
client.post_form("/accounts", ¶ms)
}
pub fn retrieve(client: &Client, id: &AccountId, expand: &[&str]) -> Response<Account> {
client.get_query(&format!("/accounts/{}", id), &Expand { expand })
}
pub fn update(client: &Client, id: &AccountId, params: UpdateAccount<'_>) -> Response<Account> {
client.post_form(&format!("/accounts/{}", id), ¶ms)
}
pub fn delete(client: &Client, id: &AccountId) -> Response<Deleted<AccountId>> {
client.delete(&format!("/accounts/{}", id))
}
}
impl Object for Account {
type Id = AccountId;
fn id(&self) -> Self::Id {
self.id.clone()
}
fn object(&self) -> &'static str {
"account"
}
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct BusinessProfile {
#[serde(skip_serializing_if = "Option::is_none")]
pub mcc: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub product_description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub support_address: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub support_email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub support_phone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub support_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct AccountCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub au_becs_debit_payments: Option<CapabilityStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bacs_debit_payments: Option<AccountCapabilitiesBacsDebitPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bancontact_payments: Option<AccountCapabilitiesBancontactPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card_issuing: Option<CapabilityStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card_payments: Option<CapabilityStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cartes_bancaires_payments: Option<AccountCapabilitiesCartesBancairesPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eps_payments: Option<AccountCapabilitiesEpsPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fpx_payments: Option<AccountCapabilitiesFpxPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub giropay_payments: Option<AccountCapabilitiesGiropayPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub grabpay_payments: Option<AccountCapabilitiesGrabpayPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ideal_payments: Option<AccountCapabilitiesIdealPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub jcb_payments: Option<CapabilityStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub legacy_payments: Option<CapabilityStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub oxxo_payments: Option<AccountCapabilitiesOxxoPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub p24_payments: Option<AccountCapabilitiesP24Payments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sepa_debit_payments: Option<AccountCapabilitiesSepaDebitPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sofort_payments: Option<AccountCapabilitiesSofortPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_reporting_us_1099_k: Option<CapabilityStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_reporting_us_1099_misc: Option<CapabilityStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfers: Option<CapabilityStatus>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct AccountRequirements {
#[serde(skip_serializing_if = "Option::is_none")]
pub current_deadline: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none")]
pub currently_due: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub disabled_reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub errors: Option<Vec<AccountRequirementsError>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eventually_due: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub past_due: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pending_verification: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct AccountRequirementsError {
pub code: AccountRequirementsErrorCode,
pub reason: String,
pub requirement: String,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct AccountSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub bacs_debit_payments: Option<AccountBacsDebitPaymentsSettings>,
pub branding: BrandingSettings,
pub card_payments: CardPaymentsSettings,
pub dashboard: DashboardSettings,
pub payments: PaymentsSettings,
#[serde(skip_serializing_if = "Option::is_none")]
pub payouts: Option<PayoutSettings>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sepa_debit_payments: Option<AccountSepaDebitPaymentsSettings>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct AccountBacsDebitPaymentsSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct BrandingSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub icon: Option<Expandable<File>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub logo: Option<Expandable<File>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub primary_color: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub secondary_color: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CardPaymentsSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub decline_on: Option<DeclineChargeOn>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor_prefix: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct DashboardSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct DeclineChargeOn {
pub avs_failure: bool,
pub cvc_failure: bool,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentsSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor_kana: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor_kanji: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PayoutSettings {
pub debit_negative_balances: bool,
pub schedule: TransferSchedule,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct AccountSepaDebitPaymentsSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub creditor_id: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TosAcceptance {
#[serde(skip_serializing_if = "Option::is_none")]
pub date: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ip: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub service_agreement: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_agent: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Company {
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_kana: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_kanji: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub directors_provided: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub executives_provided: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name_kana: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name_kanji: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub owners_provided: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub structure: Option<CompanyStructure>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_id_provided: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_id_registrar: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vat_id_provided: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verification: Option<CompanyVerification>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CompanyVerification {
pub document: CompanyVerificationDocument,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CompanyVerificationDocument {
#[serde(skip_serializing_if = "Option::is_none")]
pub back: Option<Expandable<File>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub details: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub details_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub front: Option<Expandable<File>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TransferSchedule {
pub delay_days: u32,
pub interval: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub monthly_anchor: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
pub weekly_anchor: Option<Weekday>,
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct CreateAccount<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub account_token: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub business_profile: Option<BusinessProfile>,
#[serde(skip_serializing_if = "Option::is_none")]
pub business_type: Option<BusinessType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub capabilities: Option<CreateAccountCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company: Option<CompanyParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_currency: Option<Currency>,
#[serde(skip_serializing_if = "Option::is_none")]
pub documents: Option<CreateAccountDocuments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<&'a str>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
#[serde(skip_serializing_if = "Option::is_none")]
pub external_account: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub individual: Option<PersonParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
pub settings: Option<AccountSettingsParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tos_acceptance: Option<AcceptTos>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub type_: Option<AccountType>,
}
impl<'a> CreateAccount<'a> {
pub fn new() -> Self {
CreateAccount {
account_token: Default::default(),
business_profile: Default::default(),
business_type: Default::default(),
capabilities: Default::default(),
company: Default::default(),
country: Default::default(),
default_currency: Default::default(),
documents: Default::default(),
email: Default::default(),
expand: Default::default(),
external_account: Default::default(),
individual: Default::default(),
metadata: Default::default(),
settings: Default::default(),
tos_acceptance: Default::default(),
type_: Default::default(),
}
}
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct ListAccounts<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub created: Option<RangeQuery<Timestamp>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ending_before: Option<AccountId>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub starting_after: Option<AccountId>,
}
impl<'a> ListAccounts<'a> {
pub fn new() -> Self {
ListAccounts {
created: Default::default(),
ending_before: Default::default(),
expand: Default::default(),
limit: Default::default(),
starting_after: Default::default(),
}
}
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct UpdateAccount<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub account_token: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub business_profile: Option<BusinessProfile>,
#[serde(skip_serializing_if = "Option::is_none")]
pub business_type: Option<BusinessType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub capabilities: Option<UpdateAccountCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company: Option<CompanyParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_currency: Option<Currency>,
#[serde(skip_serializing_if = "Option::is_none")]
pub documents: Option<UpdateAccountDocuments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<&'a str>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
#[serde(skip_serializing_if = "Option::is_none")]
pub external_account: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub individual: Option<PersonParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
pub settings: Option<AccountSettingsParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tos_acceptance: Option<AcceptTos>,
}
impl<'a> UpdateAccount<'a> {
pub fn new() -> Self {
UpdateAccount {
account_token: Default::default(),
business_profile: Default::default(),
business_type: Default::default(),
capabilities: Default::default(),
company: Default::default(),
default_currency: Default::default(),
documents: Default::default(),
email: Default::default(),
expand: Default::default(),
external_account: Default::default(),
individual: Default::default(),
metadata: Default::default(),
settings: Default::default(),
tos_acceptance: Default::default(),
}
}
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct AcceptTos {
#[serde(skip_serializing_if = "Option::is_none")]
pub date: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ip: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub service_agreement: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_agent: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct AccountSettingsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub branding: Option<BrandingSettingsParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card_payments: Option<CardPaymentsSettingsParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payments: Option<PaymentsSettingsParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payouts: Option<PayoutSettingsParams>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CompanyParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_kana: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_kanji: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub directors_provided: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub executives_provided: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name_kana: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name_kanji: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub owners_provided: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub registration_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub structure: Option<CompanyParamsStructure>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_id_registrar: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vat_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verification: Option<CompanyVerificationParams>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub au_becs_debit_payments: Option<CreateAccountCapabilitiesAuBecsDebitPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bacs_debit_payments: Option<CreateAccountCapabilitiesBacsDebitPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bancontact_payments: Option<CreateAccountCapabilitiesBancontactPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card_issuing: Option<CreateAccountCapabilitiesCardIssuing>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card_payments: Option<CreateAccountCapabilitiesCardPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cartes_bancaires_payments: Option<CreateAccountCapabilitiesCartesBancairesPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eps_payments: Option<CreateAccountCapabilitiesEpsPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fpx_payments: Option<CreateAccountCapabilitiesFpxPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub giropay_payments: Option<CreateAccountCapabilitiesGiropayPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub grabpay_payments: Option<CreateAccountCapabilitiesGrabpayPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ideal_payments: Option<CreateAccountCapabilitiesIdealPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub jcb_payments: Option<CreateAccountCapabilitiesJcbPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub legacy_payments: Option<CreateAccountCapabilitiesLegacyPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub oxxo_payments: Option<CreateAccountCapabilitiesOxxoPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub p24_payments: Option<CreateAccountCapabilitiesP24Payments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sepa_debit_payments: Option<CreateAccountCapabilitiesSepaDebitPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sofort_payments: Option<CreateAccountCapabilitiesSofortPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_reporting_us_1099_k: Option<CreateAccountCapabilitiesTaxReportingUs1099K>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_reporting_us_1099_misc: Option<CreateAccountCapabilitiesTaxReportingUs1099Misc>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfers: Option<CreateAccountCapabilitiesTransfers>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountDocuments {
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_account_ownership_verification:
Option<CreateAccountDocumentsBankAccountOwnershipVerification>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_license: Option<CreateAccountDocumentsCompanyLicense>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_memorandum_of_association:
Option<CreateAccountDocumentsCompanyMemorandumOfAssociation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_ministerial_decree: Option<CreateAccountDocumentsCompanyMinisterialDecree>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_registration_verification:
Option<CreateAccountDocumentsCompanyRegistrationVerification>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_tax_id_verification: Option<CreateAccountDocumentsCompanyTaxIdVerification>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PersonParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_kana: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_kanji: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dob: Option<Dob>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub first_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub first_name_kana: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub first_name_kanji: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gender: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_name_kana: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_name_kanji: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub maiden_name: Option<String>,
#[serde(default)]
pub metadata: Metadata,
#[serde(skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub political_exposure: Option<PersonParamsPoliticalExposure>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ssn_last_4: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verification: Option<PersonVerificationParams>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub au_becs_debit_payments: Option<UpdateAccountCapabilitiesAuBecsDebitPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bacs_debit_payments: Option<UpdateAccountCapabilitiesBacsDebitPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bancontact_payments: Option<UpdateAccountCapabilitiesBancontactPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card_issuing: Option<UpdateAccountCapabilitiesCardIssuing>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card_payments: Option<UpdateAccountCapabilitiesCardPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cartes_bancaires_payments: Option<UpdateAccountCapabilitiesCartesBancairesPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eps_payments: Option<UpdateAccountCapabilitiesEpsPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fpx_payments: Option<UpdateAccountCapabilitiesFpxPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub giropay_payments: Option<UpdateAccountCapabilitiesGiropayPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub grabpay_payments: Option<UpdateAccountCapabilitiesGrabpayPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ideal_payments: Option<UpdateAccountCapabilitiesIdealPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub jcb_payments: Option<UpdateAccountCapabilitiesJcbPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub legacy_payments: Option<UpdateAccountCapabilitiesLegacyPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub oxxo_payments: Option<UpdateAccountCapabilitiesOxxoPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub p24_payments: Option<UpdateAccountCapabilitiesP24Payments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sepa_debit_payments: Option<UpdateAccountCapabilitiesSepaDebitPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sofort_payments: Option<UpdateAccountCapabilitiesSofortPayments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_reporting_us_1099_k: Option<UpdateAccountCapabilitiesTaxReportingUs1099K>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_reporting_us_1099_misc: Option<UpdateAccountCapabilitiesTaxReportingUs1099Misc>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfers: Option<UpdateAccountCapabilitiesTransfers>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountDocuments {
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_account_ownership_verification:
Option<UpdateAccountDocumentsBankAccountOwnershipVerification>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_license: Option<UpdateAccountDocumentsCompanyLicense>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_memorandum_of_association:
Option<UpdateAccountDocumentsCompanyMemorandumOfAssociation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_ministerial_decree: Option<UpdateAccountDocumentsCompanyMinisterialDecree>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_registration_verification:
Option<UpdateAccountDocumentsCompanyRegistrationVerification>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_tax_id_verification: Option<UpdateAccountDocumentsCompanyTaxIdVerification>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct BrandingSettingsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub icon: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub logo: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub primary_color: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub secondary_color: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CardPaymentsSettingsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub decline_on: Option<DeclineChargeOnParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor_prefix: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CompanyVerificationParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub document: Option<VerificationDocumentParams>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesAuBecsDebitPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesBacsDebitPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesBancontactPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesCardIssuing {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesCardPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesCartesBancairesPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesEpsPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesFpxPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesGiropayPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesGrabpayPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesIdealPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesJcbPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesLegacyPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesOxxoPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesP24Payments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesSepaDebitPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesSofortPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesTaxReportingUs1099K {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesTaxReportingUs1099Misc {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountCapabilitiesTransfers {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountDocumentsBankAccountOwnershipVerification {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountDocumentsCompanyLicense {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountDocumentsCompanyMemorandumOfAssociation {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountDocumentsCompanyMinisterialDecree {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountDocumentsCompanyRegistrationVerification {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateAccountDocumentsCompanyTaxIdVerification {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentsSettingsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor_kana: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor_kanji: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PayoutSettingsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub debit_negative_balances: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub schedule: Option<TransferScheduleParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesAuBecsDebitPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesBacsDebitPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesBancontactPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesCardIssuing {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesCardPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesCartesBancairesPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesEpsPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesFpxPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesGiropayPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesGrabpayPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesIdealPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesJcbPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesLegacyPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesOxxoPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesP24Payments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesSepaDebitPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesSofortPayments {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesTaxReportingUs1099K {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesTaxReportingUs1099Misc {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountCapabilitiesTransfers {
#[serde(skip_serializing_if = "Option::is_none")]
pub requested: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountDocumentsBankAccountOwnershipVerification {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountDocumentsCompanyLicense {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountDocumentsCompanyMemorandumOfAssociation {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountDocumentsCompanyMinisterialDecree {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountDocumentsCompanyRegistrationVerification {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateAccountDocumentsCompanyTaxIdVerification {
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct DeclineChargeOnParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub avs_failure: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cvc_failure: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TransferScheduleParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub delay_days: Option<DelayDays>,
#[serde(skip_serializing_if = "Option::is_none")]
pub interval: Option<TransferScheduleInterval>,
#[serde(skip_serializing_if = "Option::is_none")]
pub monthly_anchor: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
pub weekly_anchor: Option<Weekday>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(tag = "object", rename_all = "snake_case")]
pub enum ExternalAccount {
BankAccount(BankAccount),
Card(Card),
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesBacsDebitPayments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesBacsDebitPayments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesBacsDebitPayments::Active => "active",
AccountCapabilitiesBacsDebitPayments::Inactive => "inactive",
AccountCapabilitiesBacsDebitPayments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesBacsDebitPayments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesBacsDebitPayments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesBancontactPayments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesBancontactPayments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesBancontactPayments::Active => "active",
AccountCapabilitiesBancontactPayments::Inactive => "inactive",
AccountCapabilitiesBancontactPayments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesBancontactPayments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesBancontactPayments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesCartesBancairesPayments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesCartesBancairesPayments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesCartesBancairesPayments::Active => "active",
AccountCapabilitiesCartesBancairesPayments::Inactive => "inactive",
AccountCapabilitiesCartesBancairesPayments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesCartesBancairesPayments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesCartesBancairesPayments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesEpsPayments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesEpsPayments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesEpsPayments::Active => "active",
AccountCapabilitiesEpsPayments::Inactive => "inactive",
AccountCapabilitiesEpsPayments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesEpsPayments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesEpsPayments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesFpxPayments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesFpxPayments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesFpxPayments::Active => "active",
AccountCapabilitiesFpxPayments::Inactive => "inactive",
AccountCapabilitiesFpxPayments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesFpxPayments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesFpxPayments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesGiropayPayments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesGiropayPayments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesGiropayPayments::Active => "active",
AccountCapabilitiesGiropayPayments::Inactive => "inactive",
AccountCapabilitiesGiropayPayments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesGiropayPayments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesGiropayPayments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesGrabpayPayments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesGrabpayPayments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesGrabpayPayments::Active => "active",
AccountCapabilitiesGrabpayPayments::Inactive => "inactive",
AccountCapabilitiesGrabpayPayments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesGrabpayPayments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesGrabpayPayments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesIdealPayments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesIdealPayments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesIdealPayments::Active => "active",
AccountCapabilitiesIdealPayments::Inactive => "inactive",
AccountCapabilitiesIdealPayments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesIdealPayments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesIdealPayments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesOxxoPayments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesOxxoPayments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesOxxoPayments::Active => "active",
AccountCapabilitiesOxxoPayments::Inactive => "inactive",
AccountCapabilitiesOxxoPayments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesOxxoPayments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesOxxoPayments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesP24Payments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesP24Payments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesP24Payments::Active => "active",
AccountCapabilitiesP24Payments::Inactive => "inactive",
AccountCapabilitiesP24Payments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesP24Payments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesP24Payments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesSepaDebitPayments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesSepaDebitPayments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesSepaDebitPayments::Active => "active",
AccountCapabilitiesSepaDebitPayments::Inactive => "inactive",
AccountCapabilitiesSepaDebitPayments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesSepaDebitPayments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesSepaDebitPayments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountCapabilitiesSofortPayments {
Active,
Inactive,
Pending,
}
impl AccountCapabilitiesSofortPayments {
pub fn as_str(self) -> &'static str {
match self {
AccountCapabilitiesSofortPayments::Active => "active",
AccountCapabilitiesSofortPayments::Inactive => "inactive",
AccountCapabilitiesSofortPayments::Pending => "pending",
}
}
}
impl AsRef<str> for AccountCapabilitiesSofortPayments {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountCapabilitiesSofortPayments {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountRequirementsErrorCode {
InvalidAddressCityStatePostalCode,
InvalidStreetAddress,
InvalidValueOther,
VerificationDocumentAddressMismatch,
VerificationDocumentAddressMissing,
VerificationDocumentCorrupt,
VerificationDocumentCountryNotSupported,
VerificationDocumentDobMismatch,
VerificationDocumentDuplicateType,
VerificationDocumentExpired,
VerificationDocumentFailedCopy,
VerificationDocumentFailedGreyscale,
VerificationDocumentFailedOther,
VerificationDocumentFailedTestMode,
VerificationDocumentFraudulent,
VerificationDocumentIdNumberMismatch,
VerificationDocumentIdNumberMissing,
VerificationDocumentIncomplete,
VerificationDocumentInvalid,
VerificationDocumentIssueOrExpiryDateMissing,
VerificationDocumentManipulated,
VerificationDocumentMissingBack,
VerificationDocumentMissingFront,
VerificationDocumentNameMismatch,
VerificationDocumentNameMissing,
VerificationDocumentNationalityMismatch,
VerificationDocumentNotReadable,
VerificationDocumentNotSigned,
VerificationDocumentNotUploaded,
VerificationDocumentPhotoMismatch,
VerificationDocumentTooLarge,
VerificationDocumentTypeNotSupported,
VerificationFailedAddressMatch,
VerificationFailedBusinessIecNumber,
VerificationFailedDocumentMatch,
VerificationFailedIdNumberMatch,
VerificationFailedKeyedIdentity,
VerificationFailedKeyedMatch,
VerificationFailedNameMatch,
VerificationFailedOther,
VerificationFailedTaxIdMatch,
VerificationFailedTaxIdNotIssued,
}
impl AccountRequirementsErrorCode {
pub fn as_str(self) -> &'static str {
match self {
AccountRequirementsErrorCode::InvalidAddressCityStatePostalCode => {
"invalid_address_city_state_postal_code"
}
AccountRequirementsErrorCode::InvalidStreetAddress => "invalid_street_address",
AccountRequirementsErrorCode::InvalidValueOther => "invalid_value_other",
AccountRequirementsErrorCode::VerificationDocumentAddressMismatch => {
"verification_document_address_mismatch"
}
AccountRequirementsErrorCode::VerificationDocumentAddressMissing => {
"verification_document_address_missing"
}
AccountRequirementsErrorCode::VerificationDocumentCorrupt => {
"verification_document_corrupt"
}
AccountRequirementsErrorCode::VerificationDocumentCountryNotSupported => {
"verification_document_country_not_supported"
}
AccountRequirementsErrorCode::VerificationDocumentDobMismatch => {
"verification_document_dob_mismatch"
}
AccountRequirementsErrorCode::VerificationDocumentDuplicateType => {
"verification_document_duplicate_type"
}
AccountRequirementsErrorCode::VerificationDocumentExpired => {
"verification_document_expired"
}
AccountRequirementsErrorCode::VerificationDocumentFailedCopy => {
"verification_document_failed_copy"
}
AccountRequirementsErrorCode::VerificationDocumentFailedGreyscale => {
"verification_document_failed_greyscale"
}
AccountRequirementsErrorCode::VerificationDocumentFailedOther => {
"verification_document_failed_other"
}
AccountRequirementsErrorCode::VerificationDocumentFailedTestMode => {
"verification_document_failed_test_mode"
}
AccountRequirementsErrorCode::VerificationDocumentFraudulent => {
"verification_document_fraudulent"
}
AccountRequirementsErrorCode::VerificationDocumentIdNumberMismatch => {
"verification_document_id_number_mismatch"
}
AccountRequirementsErrorCode::VerificationDocumentIdNumberMissing => {
"verification_document_id_number_missing"
}
AccountRequirementsErrorCode::VerificationDocumentIncomplete => {
"verification_document_incomplete"
}
AccountRequirementsErrorCode::VerificationDocumentInvalid => {
"verification_document_invalid"
}
AccountRequirementsErrorCode::VerificationDocumentIssueOrExpiryDateMissing => {
"verification_document_issue_or_expiry_date_missing"
}
AccountRequirementsErrorCode::VerificationDocumentManipulated => {
"verification_document_manipulated"
}
AccountRequirementsErrorCode::VerificationDocumentMissingBack => {
"verification_document_missing_back"
}
AccountRequirementsErrorCode::VerificationDocumentMissingFront => {
"verification_document_missing_front"
}
AccountRequirementsErrorCode::VerificationDocumentNameMismatch => {
"verification_document_name_mismatch"
}
AccountRequirementsErrorCode::VerificationDocumentNameMissing => {
"verification_document_name_missing"
}
AccountRequirementsErrorCode::VerificationDocumentNationalityMismatch => {
"verification_document_nationality_mismatch"
}
AccountRequirementsErrorCode::VerificationDocumentNotReadable => {
"verification_document_not_readable"
}
AccountRequirementsErrorCode::VerificationDocumentNotSigned => {
"verification_document_not_signed"
}
AccountRequirementsErrorCode::VerificationDocumentNotUploaded => {
"verification_document_not_uploaded"
}
AccountRequirementsErrorCode::VerificationDocumentPhotoMismatch => {
"verification_document_photo_mismatch"
}
AccountRequirementsErrorCode::VerificationDocumentTooLarge => {
"verification_document_too_large"
}
AccountRequirementsErrorCode::VerificationDocumentTypeNotSupported => {
"verification_document_type_not_supported"
}
AccountRequirementsErrorCode::VerificationFailedAddressMatch => {
"verification_failed_address_match"
}
AccountRequirementsErrorCode::VerificationFailedBusinessIecNumber => {
"verification_failed_business_iec_number"
}
AccountRequirementsErrorCode::VerificationFailedDocumentMatch => {
"verification_failed_document_match"
}
AccountRequirementsErrorCode::VerificationFailedIdNumberMatch => {
"verification_failed_id_number_match"
}
AccountRequirementsErrorCode::VerificationFailedKeyedIdentity => {
"verification_failed_keyed_identity"
}
AccountRequirementsErrorCode::VerificationFailedKeyedMatch => {
"verification_failed_keyed_match"
}
AccountRequirementsErrorCode::VerificationFailedNameMatch => {
"verification_failed_name_match"
}
AccountRequirementsErrorCode::VerificationFailedOther => "verification_failed_other",
AccountRequirementsErrorCode::VerificationFailedTaxIdMatch => {
"verification_failed_tax_id_match"
}
AccountRequirementsErrorCode::VerificationFailedTaxIdNotIssued => {
"verification_failed_tax_id_not_issued"
}
}
}
}
impl AsRef<str> for AccountRequirementsErrorCode {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountRequirementsErrorCode {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum AccountType {
Custom,
Express,
Standard,
}
impl AccountType {
pub fn as_str(self) -> &'static str {
match self {
AccountType::Custom => "custom",
AccountType::Express => "express",
AccountType::Standard => "standard",
}
}
}
impl AsRef<str> for AccountType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for AccountType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CapabilityStatus {
Active,
Inactive,
Pending,
}
impl CapabilityStatus {
pub fn as_str(self) -> &'static str {
match self {
CapabilityStatus::Active => "active",
CapabilityStatus::Inactive => "inactive",
CapabilityStatus::Pending => "pending",
}
}
}
impl AsRef<str> for CapabilityStatus {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for CapabilityStatus {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CompanyParamsStructure {
GovernmentInstrumentality,
GovernmentalUnit,
IncorporatedNonProfit,
LimitedLiabilityPartnership,
MultiMemberLlc,
PrivateCompany,
PrivateCorporation,
PrivatePartnership,
PublicCompany,
PublicCorporation,
PublicPartnership,
SoleProprietorship,
TaxExemptGovernmentInstrumentality,
UnincorporatedAssociation,
UnincorporatedNonProfit,
}
impl CompanyParamsStructure {
pub fn as_str(self) -> &'static str {
match self {
CompanyParamsStructure::GovernmentInstrumentality => "government_instrumentality",
CompanyParamsStructure::GovernmentalUnit => "governmental_unit",
CompanyParamsStructure::IncorporatedNonProfit => "incorporated_non_profit",
CompanyParamsStructure::LimitedLiabilityPartnership => "limited_liability_partnership",
CompanyParamsStructure::MultiMemberLlc => "multi_member_llc",
CompanyParamsStructure::PrivateCompany => "private_company",
CompanyParamsStructure::PrivateCorporation => "private_corporation",
CompanyParamsStructure::PrivatePartnership => "private_partnership",
CompanyParamsStructure::PublicCompany => "public_company",
CompanyParamsStructure::PublicCorporation => "public_corporation",
CompanyParamsStructure::PublicPartnership => "public_partnership",
CompanyParamsStructure::SoleProprietorship => "sole_proprietorship",
CompanyParamsStructure::TaxExemptGovernmentInstrumentality => {
"tax_exempt_government_instrumentality"
}
CompanyParamsStructure::UnincorporatedAssociation => "unincorporated_association",
CompanyParamsStructure::UnincorporatedNonProfit => "unincorporated_non_profit",
}
}
}
impl AsRef<str> for CompanyParamsStructure {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for CompanyParamsStructure {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CompanyStructure {
GovernmentInstrumentality,
GovernmentalUnit,
IncorporatedNonProfit,
LimitedLiabilityPartnership,
MultiMemberLlc,
PrivateCompany,
PrivateCorporation,
PrivatePartnership,
PublicCompany,
PublicCorporation,
PublicPartnership,
SoleProprietorship,
TaxExemptGovernmentInstrumentality,
UnincorporatedAssociation,
UnincorporatedNonProfit,
}
impl CompanyStructure {
pub fn as_str(self) -> &'static str {
match self {
CompanyStructure::GovernmentInstrumentality => "government_instrumentality",
CompanyStructure::GovernmentalUnit => "governmental_unit",
CompanyStructure::IncorporatedNonProfit => "incorporated_non_profit",
CompanyStructure::LimitedLiabilityPartnership => "limited_liability_partnership",
CompanyStructure::MultiMemberLlc => "multi_member_llc",
CompanyStructure::PrivateCompany => "private_company",
CompanyStructure::PrivateCorporation => "private_corporation",
CompanyStructure::PrivatePartnership => "private_partnership",
CompanyStructure::PublicCompany => "public_company",
CompanyStructure::PublicCorporation => "public_corporation",
CompanyStructure::PublicPartnership => "public_partnership",
CompanyStructure::SoleProprietorship => "sole_proprietorship",
CompanyStructure::TaxExemptGovernmentInstrumentality => {
"tax_exempt_government_instrumentality"
}
CompanyStructure::UnincorporatedAssociation => "unincorporated_association",
CompanyStructure::UnincorporatedNonProfit => "unincorporated_non_profit",
}
}
}
impl AsRef<str> for CompanyStructure {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for CompanyStructure {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum PersonParamsPoliticalExposure {
Existing,
None,
}
impl PersonParamsPoliticalExposure {
pub fn as_str(self) -> &'static str {
match self {
PersonParamsPoliticalExposure::Existing => "existing",
PersonParamsPoliticalExposure::None => "none",
}
}
}
impl AsRef<str> for PersonParamsPoliticalExposure {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PersonParamsPoliticalExposure {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TransferScheduleInterval {
Daily,
Manual,
Monthly,
Weekly,
}
impl TransferScheduleInterval {
pub fn as_str(self) -> &'static str {
match self {
TransferScheduleInterval::Daily => "daily",
TransferScheduleInterval::Manual => "manual",
TransferScheduleInterval::Monthly => "monthly",
TransferScheduleInterval::Weekly => "weekly",
}
}
}
impl AsRef<str> for TransferScheduleInterval {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TransferScheduleInterval {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}