Autoboard Webservice v5.13.0.0

<back to all web services

ApplicationBoarding

json-app
Requires Authentication
The following routes are available for this service:
POST/ApplicationBoarding
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


class ApplicationQueueStatus(IntEnum):
    QUEUED = 0
    STANDARDISED_X_M_L = 20
    READY_TO_DISTRIBUTE = 40
    AWAITING_DISTRIBUTE_RESPONSE = 60
    READY_TO_AUTOBOARD = 80
    THROTTLE_CHECK_PASSED = 100
    ELIGIBILITY_CHECK_PASSED = 300
    SENT_TO_AUTOBOARD_SERVICE = 400
    AUTOBOARDING_SUSPENDED = 450
    SUCCESSFULLY_BOARDED = 500
    QUEUE_ERROR = 1000
    THROTTLE_CHECK_ERROR = 1100
    XML_STANDARDISATION_ERROR = 1200
    ELIGIBILITY_CHECK_ERROR = 1300
    AUTOBOARDING_ERROR = 1400
    INELIGIBLE_THROTTLE_LIMIT = 2100
    INELIGIBLE_APPLICATION = 2300


class ApplicationBoardingStatus(IntEnum):
    PENDING = 0
    I_N__P_R_O_G_R_E_S_S = 5
    FAILED = 9
    COMPLETED = 10


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InitiateBoardingResponse:
    application_guid: Optional[str] = None
    csr: Optional[int] = None
    application_queue_guid: Optional[str] = None
    queue_status: Optional[ApplicationQueueStatus] = None
    boarding_status: Optional[ApplicationBoardingStatus] = None
    error_messages: Optional[List[str]] = None


class SourceSystemType(str, Enum):
    MARS = 'MARS'
    ASA = 'ASA'
    OLS = 'OLS'
    INASA = 'INASA'


class CustomerType(IntEnum):
    NEW = 0
    EXISTING = 1
    NONE = -1


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Partner:
    partner_id: Optional[str] = None
    partner_name: Optional[str] = None


class PricingPackageType(IntEnum):
    CUSTOM_UK = 0
    MONTHLY_UK = 1
    SIMPLICITY_UK = 2
    PAYG_UK = 3
    CUSTOM_ROI = 4
    PAYGE_COM_U_K = 5
    NONE = -1


class PreferredContactMethodType(str, Enum):
    EMAIL = 'Email'
    TELEPHONE = 'Telephone'
    ANY = 'Any'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ContactPerson:
    title: Optional[str] = None
    first_name: Optional[str] = None
    middle_name: Optional[str] = None
    last_name: Optional[str] = None
    telephone_number: Optional[str] = None
    alt_telephone_number: Optional[str] = None
    email: Optional[str] = None
    position: Optional[str] = None
    preferred_contact_method: Optional[PreferredContactMethodType] = None
    preferred_contact_best_time: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AuthorisedSigner(ContactPerson):
    date_of_birth: Optional[datetime.datetime] = None
    country_code: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AccessibilityOptions:
    audiotape_required: Optional[bool] = None
    large_print_required: Optional[bool] = None
    uncontracted_braille_grade1_required: Optional[bool] = None
    uncontracted_braille_grade2_required: Optional[bool] = None
    next_generation_text_required: Optional[bool] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ApplicationDetails:
    source_system: Optional[SourceSystemType] = None
    source_system_identifier: Optional[str] = None
    customer_type: Optional[CustomerType] = None
    csr: Optional[str] = None
    partner: Optional[Partner] = None
    seller_code: Optional[str] = None
    pricing_package: Optional[PricingPackageType] = None
    contact_person: Optional[AuthorisedSigner] = None
    special_instructions: Optional[str] = None
    offer_details: Optional[str] = None
    date_contract_accepted: Optional[datetime.datetime] = None
    worldpay_business_finance_interest: Optional[bool] = None
    sar: Optional[bool] = None
    seller_email: Optional[str] = None
    anticipated_go_live_date: Optional[datetime.datetime] = None
    accessibility_options: Optional[AccessibilityOptions] = None
    ultimate_parent_id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Address:
    address1: Optional[str] = None
    address2: Optional[str] = None
    address3: Optional[str] = None
    postcode: Optional[str] = None
    city: Optional[str] = None
    state: Optional[str] = None
    countrycode: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BusinessAddress(Address):
    is_commercial: Optional[bool] = None


class CompanyType(str, Enum):
    SOLE_TRADER = 'SoleTrader'
    PARTNERSHIP = 'Partnership'
    LIMITED_COMPANY = 'LimitedCompany'
    TRUST = 'Trust'
    REGISTERED_CHARITY = 'RegisteredCharity'
    PUBLIC_LIMITED_COMPANY = 'PublicLimitedCompany'
    LIMITED_BY_GUARANTEE = 'LimitedByGuarantee'
    CLUB_SOCIETY_ASSOCIATION = 'ClubSocietyAssociation'
    COMMUNITY_INTEREST_COMPANY_OR_INDUSTRIAL_PROVIDENT = 'CommunityInterestCompanyOrIndustrialProvident'
    LIMITED_LIABILITY_PARTNERSHIP = 'LimitedLiabilityPartnership'
    OTHER = 'Other'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Financials:
    annual: Optional[Decimal] = None
    card_percentage: Optional[Decimal] = None
    credit_card_percentage: Optional[Decimal] = None
    average_transaction_value: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TradeAssociation:
    group_name: Optional[str] = None
    member_number: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Business:
    legal_name: Optional[str] = None
    legal_address: Optional[BusinessAddress] = None
    website_address: Optional[str] = None
    company_type: Optional[CompanyType] = None
    company_type_other: Optional[str] = None
    company_registration_number: Optional[str] = None
    charity_number: Optional[str] = None
    merchant_category_code: Optional[str] = None
    merchant_category_description: Optional[str] = None
    description_of_goods_and_services: Optional[str] = None
    vat_number: Optional[str] = None
    date_started_trading: Optional[datetime.datetime] = None
    country_of_incorporation: Optional[str] = None
    region_of_incorporation: Optional[str] = None
    financials: Optional[Financials] = None
    new_to_cards: Optional[bool] = None
    trade_association: Optional[TradeAssociation] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PrincipalAddress(Address):
    start_date: Optional[datetime.datetime] = None
    end_date: Optional[datetime.datetime] = None


class PositionType(IntEnum):
    SOLE_TRADER = 0
    PARTNER = 1
    DIRECTOR = 2
    COMPANY_SECRETARY = 3
    CHIEF_FINANCIAL_OFFICER = 4
    CHAIRMAN = 5
    DESIGNATED_BOARD_MEMBER = 7
    SETTLOR = 8
    TREASURER = 9
    TRUSTEE = 10
    CHIEF_EXECUTIVE = 11
    AUTHORISED_PERSON_WITH_CONSENT = 12
    NON_EXECUTIVE_DIRECTOR = 13
    CONTACT_PERSON = 14
    SHAREHOLDER = 15


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Principal:
    title: Optional[str] = None
    first_name: Optional[str] = None
    middle_name: Optional[str] = None
    last_name: Optional[str] = None
    date_of_birth: Optional[datetime.datetime] = None
    nationality: Optional[str] = None
    home_addresses: Optional[List[PrincipalAddress]] = None
    ownership_percentage: Optional[Decimal] = None
    position: Optional[PositionType] = None
    is_financial_controller: Optional[bool] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BankAccount:
    sort_code: Optional[str] = None
    account_number: Optional[str] = None
    bank_name: Optional[str] = None
    bank_account_name: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ClearingDetails:
    merchant_url: Optional[str] = None
    telephone: Optional[str] = None
    email: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OutletAllocatedProduct:
    id: Optional[int] = None
    quantity: Optional[int] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Outlet:
    trading_name: Optional[str] = None
    trading_address: Optional[BusinessAddress] = None
    contact_person: Optional[ContactPerson] = None
    terminal_delivery_address: Optional[BusinessAddress] = None
    correspondence_address: Optional[BusinessAddress] = None
    settlement_bank_account: Optional[BankAccount] = None
    charges_bank_account: Optional[BankAccount] = None
    direct_debit_correspondence_email: Optional[str] = None
    clearing_details: Optional[ClearingDetails] = None
    product_allocation: Optional[List[OutletAllocatedProduct]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Deposits:
    accepted: Optional[bool] = None
    per_of_sales_where_initial_deposit_taken: Optional[int] = None
    size_perc_of_total_value: Optional[int] = None
    avg_time_before_delivery_taken: Optional[int] = None
    avg_time_before_delivery_balance_taken: Optional[int] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class WarrantiesAndGuarantees:
    levy_charge: Optional[bool] = None
    perc_card_turnover: Optional[int] = None
    avg_length_in_months: Optional[int] = None
    perc_goods_returned: Optional[int] = None
    third_party_providers: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Prepayments:
    full_payment_accepted_prior_to_supply: Optional[bool] = None
    perc_goods_where_payment_taken_prior_to_delivery: Optional[int] = None
    avg_days_payment_taken_in_advance: Optional[int] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MembershipsSubscriptionAndInsurancePremiums:
    levy_charge: Optional[bool] = None
    perc_card_turnover: Optional[int] = None
    avg_length_in_months: Optional[int] = None
    membership_cost: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GoodsAndServices:
    goods_provided_by_third_party: Optional[bool] = None
    deposits: Optional[Deposits] = None
    warranties_and_guarantees: Optional[WarrantiesAndGuarantees] = None
    prepayments: Optional[Prepayments] = None
    memberships_subscription_and_insurance_premiums: Optional[MembershipsSubscriptionAndInsurancePremiums] = None
    stock_held_at_another_address_location: Optional[Address] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MerchantDetails:
    business: Optional[Business] = None
    principals: Optional[List[Principal]] = None
    outlets: Optional[List[Outlet]] = None
    goods_and_services: Optional[GoodsAndServices] = None


class CardType(str, Enum):
    VISA_DEBIT = 'VisaDebit'
    VISA_CREDIT = 'VisaCredit'
    VISA_COMMERCIAL = 'VisaCommercial'
    MASTERCARD_DEBIT = 'MastercardDebit'
    MASTERCARD_CREDIT = 'MastercardCredit'
    MASTERCARD_COMMERCIAL = 'MastercardCommercial'
    MASTERCARD_WORLD_SIGNIA = 'MastercardWorldSignia'
    JCB_CREDIT = 'JcbCredit'
    JCB_DEBIT = 'JcbDebit'
    JCB_COMMERCIAL = 'JcbCommercial'
    DINERS_DISCOVER_CREDIT = 'DinersDiscoverCredit'
    DINERS_DISCOVER_DEBIT = 'DinersDiscoverDebit'
    DINERS_DISCOVER_COMMERCIAL = 'DinersDiscoverCommercial'
    AMEX = 'Amex'
    CHINA_UNION_PAY_CREDIT = 'ChinaUnionPayCredit'
    CHINA_UNION_PAY_DEBIT = 'ChinaUnionPayDebit'
    CHINA_UNION_PAY_COMMERCIAL = 'ChinaUnionPayCommercial'
    VISA_BUSINESS_DEBIT = 'VisaBusinessDebit'
    MASTERCARD_BUSINESS = 'MastercardBusiness'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RateChargePair:
    percent: Optional[Decimal] = None
    cost: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CardCharge:
    card_type: Optional[CardType] = None
    purchase: Optional[RateChargePair] = None
    refund: Optional[RateChargePair] = None


class PremiumTransactionChargeType(str, Enum):
    MAGSTRIPE = 'Magstripe'
    CNP_MOTO = 'CnpMoto'
    PAPER = 'Paper'
    PAN_KEY_ENTRY = 'PanKeyEntry'
    SECURE_ECOM = 'SecureEcom'
    NON_SECURE_ECOM = 'NonSecureEcom'
    INTER_REGIONAL = 'InterRegional'
    INTRA_REGIONAL = 'IntraRegional'
    NON_AUTH = 'NonAuth'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PremiumTransactionCharge:
    type: Optional[PremiumTransactionChargeType] = None
    credit_card: Optional[RateChargePair] = None
    debit_card: Optional[RateChargePair] = None


class AdditionalTarrifType(str, Enum):
    NAME_AND_ADDRESS_CHECK = 'NameAndAddressCheck'
    AUTH = 'Auth'
    CHARGEBACK = 'chargeback'
    MMSC = 'Mmsc'
    PAPER_STATEMENT = 'PaperStatement'
    PCI_VERBAL_ASSESSMENT = 'PciVerbalAssessment'
    PCI_IP_SCAN = 'PciIpScan'
    PCI_NON_COMPLIANCE = 'PciNonCompliance'
    PCI_SAFER_PAYMENTS_PLUS = 'PciSaferPaymentsPlus'
    JOINING_FEE = 'JoiningFee'
    PAY_MONTHLY_ACQUIRING_FEE = 'PayMonthlyAcquiringFee'
    PCI_SAFER_PAYMENTS = 'PciSaferPayments'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AdditionalTarrif:
    type: Optional[AdditionalTarrifType] = None
    cost: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Rates:
    card_charges: Optional[List[CardCharge]] = None
    premium_transaction_charges: Optional[List[PremiumTransactionCharge]] = None
    additional_tarrifs: Optional[List[AdditionalTarrif]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Cnp:
    required: Optional[bool] = None
    percentage: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Amex:
    required: Optional[bool] = None
    existing_amex_number: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Services:
    cnp: Optional[Cnp] = None
    amex: Optional[Amex] = None
    cashback_required: Optional[bool] = None
    worldpay_dashboard_required: Optional[bool] = None
    paper_invoicing_required: Optional[bool] = None


class CurrencyCodeType(str, Enum):
    GBP = 'GBP'
    EUR = 'EUR'
    USD = 'USD'
    AED = 'AED'
    AFN = 'AFN'
    ALL = 'ALL'
    AMD = 'AMD'
    ANG = 'ANG'
    AOA = 'AOA'
    ARS = 'ARS'
    AUD = 'AUD'
    AWG = 'AWG'
    AZN = 'AZN'
    BAM = 'BAM'
    BBD = 'BBD'
    BDT = 'BDT'
    BGN = 'BGN'
    BHD = 'BHD'
    BIF = 'BIF'
    BMD = 'BMD'
    BND = 'BND'
    BOB = 'BOB'
    BRL = 'BRL'
    BSD = 'BSD'
    BTN = 'BTN'
    BWP = 'BWP'
    BYR = 'BYR'
    BZD = 'BZD'
    CAD = 'CAD'
    CDF = 'CDF'
    CHF = 'CHF'
    CLP = 'CLP'
    CNY = 'CNY'
    COP = 'COP'
    COU = 'COU'
    CRC = 'CRC'
    CUC = 'CUC'
    CUP = 'CUP'
    CVE = 'CVE'
    CZK = 'CZK'
    DJF = 'DJF'
    DKK = 'DKK'
    DOP = 'DOP'
    DZD = 'DZD'
    EEK = 'EEK'
    EGP = 'EGP'
    ERN = 'ERN'
    ETB = 'ETB'
    FJD = 'FJD'
    FKP = 'FKP'
    GEL = 'GEL'
    GHS = 'GHS'
    GIP = 'GIP'
    GMD = 'GMD'
    GNF = 'GNF'
    GTQ = 'GTQ'
    GYD = 'GYD'
    HKD = 'HKD'
    HNL = 'HNL'
    HRK = 'HRK'
    HTG = 'HTG'
    HUF = 'HUF'
    IDR = 'IDR'
    ILS = 'ILS'
    INR = 'INR'
    IQD = 'IQD'
    IRR = 'IRR'
    ISK = 'ISK'
    JMD = 'JMD'
    JOD = 'JOD'
    JPY = 'JPY'
    KES = 'KES'
    KGS = 'KGS'
    KHR = 'KHR'
    KMF = 'KMF'
    KPW = 'KPW'
    KRW = 'KRW'
    KWD = 'KWD'
    KYD = 'KYD'
    KZT = 'KZT'
    LAK = 'LAK'
    LBP = 'LBP'
    LKR = 'LKR'
    LRD = 'LRD'
    LSL = 'LSL'
    LTL = 'LTL'
    LVL = 'LVL'
    LYD = 'LYD'
    MAD = 'MAD'
    MDL = 'MDL'
    MGA = 'MGA'
    MKD = 'MKD'
    MMK = 'MMK'
    MNT = 'MNT'
    MOP = 'MOP'
    MRO = 'MRO'
    MUR = 'MUR'
    MVR = 'MVR'
    MWK = 'MWK'
    MXN = 'MXN'
    MYR = 'MYR'
    MZN = 'MZN'
    NAD = 'NAD'
    NGN = 'NGN'
    NIO = 'NIO'
    NOK = 'NOK'
    NPR = 'NPR'
    NZD = 'NZD'
    OMR = 'OMR'
    PAB = 'PAB'
    PEN = 'PEN'
    PGK = 'PGK'
    PHP = 'PHP'
    PKR = 'PKR'
    PLN = 'PLN'
    PYG = 'PYG'
    QAR = 'QAR'
    RON = 'RON'
    RSD = 'RSD'
    RUB = 'RUB'
    RWF = 'RWF'
    SAR = 'SAR'
    SBD = 'SBD'
    SCR = 'SCR'
    SDG = 'SDG'
    SEK = 'SEK'
    SGD = 'SGD'
    SHP = 'SHP'
    SLL = 'SLL'
    SOS = 'SOS'
    SRD = 'SRD'
    STD = 'STD'
    SYP = 'SYP'
    SZL = 'SZL'
    THB = 'THB'
    TJS = 'TJS'
    TMT = 'TMT'
    TND = 'TND'
    TOP = 'TOP'
    TRY_ = 'TRY'
    TTD = 'TTD'
    TWD = 'TWD'
    TZS = 'TZS'
    UAH = 'UAH'
    UGX = 'UGX'
    UYU = 'UYU'
    UZS = 'UZS'
    VEF = 'VEF'
    VND = 'VND'
    VUV = 'VUV'
    WST = 'WST'
    YER = 'YER'
    ZAR = 'ZAR'
    ZMK = 'ZMK'
    ZWL = 'ZWL'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TradingCurrency:
    transaction_currencies: Optional[List[CurrencyCodeType]] = None
    settlement_currency: Optional[CurrencyCodeType] = None
    settlement_bank_swift: Optional[str] = None
    settlement_bank_iban: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Acquiring:
    settlement_period_t_plus: Optional[int] = None
    rates: Optional[Rates] = None
    services: Optional[Services] = None
    trading_currencies: Optional[List[TradingCurrency]] = None


class PosProductType(str, Enum):
    MOBILE = 'Mobile'
    WIFI = 'Wifi'
    BLUETOOTH = 'Bluetooth'
    FIXED = 'Fixed'
    POS_MID_ONLY = 'PosMidOnly'


class ProductFeeType(str, Enum):
    HIRE_COST = 'HireCost'
    TRANSACTION_COST = 'TransactionCost'
    SERVICE_FEE = 'ServiceFee'
    MANAGED_SERVICE_SETUP = 'ManagedServiceSetup'
    MANAGED_SERVICE_MONTHLY = 'ManagedServiceMonthly'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProductFee:
    type: Optional[ProductFeeType] = None
    cost: Optional[Decimal] = None


class PosProductOptionType(str, Enum):
    PSP = 'PSP'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PosProductOption:
    type: Optional[PosProductOptionType] = None
    value: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PosProduct:
    id: Optional[int] = None
    type: Optional[PosProductType] = None
    quantity: Optional[int] = None
    related_fees: Optional[List[ProductFee]] = None
    options: Optional[List[PosProductOption]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PosProducts:
    term: Optional[int] = None
    renewal_length: Optional[int] = None
    products: Optional[List[PosProduct]] = None


class EcomProductType(str, Enum):
    GATEWAY = 'Gateway'
    VIRTUAL_TERMINAL = 'VirtualTerminal'
    PAY_BY_LINK = 'PayByLink'
    ECOM_MID_ONLY = 'EcomMidOnly'


class EcomProductOptionType(str, Enum):
    PSP = 'PSP'
    FREE_TRANSACTIONS = 'FreeTransactions'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class EcomProductOption:
    type: Optional[EcomProductOptionType] = None
    value: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class EcomProduct:
    id: Optional[int] = None
    type: Optional[EcomProductType] = None
    quantity: Optional[int] = None
    related_fees: Optional[List[ProductFee]] = None
    options: Optional[List[EcomProductOption]] = None


class EcomOptionType(str, Enum):
    PAYPAL = 'Paypal'
    FUTURE_PAY = 'FuturePay'
    RMM = 'RMM'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class EcomOption:
    type: Optional[EcomOptionType] = None
    related_fees: Optional[List[ProductFee]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class EcomProducts:
    term: Optional[int] = None
    renewal_length: Optional[int] = None
    products: Optional[List[EcomProduct]] = None
    options: Optional[List[EcomOption]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class IspContact:
    title: Optional[str] = None
    first_name: Optional[str] = None
    last_name: Optional[str] = None
    position: Optional[str] = None
    email_address: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class IntegratedSolutionProvider:
    name: Optional[str] = None
    address: Optional[Address] = None
    telephone: Optional[str] = None
    primary_contact: Optional[IspContact] = None
    technical_contact: Optional[IspContact] = None
    provider_type: Optional[str] = None
    provider_software: Optional[str] = None


class WptProductType(str, Enum):
    VERIFONE_P400 = 'VerifoneP400'
    INGENICO_W_L258 = 'IngenicoWL258'
    VERIFONE_V240 = 'VerifoneV240'


class WptVariantType(str, Enum):
    SERIAL = 'Serial'
    USB = 'Usb'
    ETHERNET = 'Ethernet'
    NONE = 'None'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class WptProduct:
    type: Optional[WptProductType] = None
    id: Optional[int] = None
    variant: Optional[WptVariantType] = None
    quantity: Optional[int] = None
    related_fees: Optional[List[ProductFee]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class WptProducts:
    term: Optional[int] = None
    renewal_length: Optional[int] = None
    pos_installation_date: Optional[datetime.datetime] = None
    integrated_solution_provider: Optional[IntegratedSolutionProvider] = None
    products: Optional[List[WptProduct]] = None


class IpProductType(str, Enum):
    PAX_A920 = 'PaxA920'
    MIURA_M020 = 'MiuraM020'


class IpVariantType(str, Enum):
    SDK = 'Sdk'
    CLOUD = 'Cloud'
    NONE = 'None'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class IpProduct:
    id: Optional[int] = None
    type: Optional[IpProductType] = None
    quantity: Optional[int] = None
    related_fees: Optional[List[ProductFee]] = None
    variant: Optional[IpVariantType] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class IpProducts:
    term: Optional[int] = None
    renewal_length: Optional[int] = None
    integrated_solution_provider: Optional[IntegratedSolutionProvider] = None
    products: Optional[List[IpProduct]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Products:
    pos_products: Optional[PosProducts] = None
    ecom_products: Optional[EcomProducts] = None
    wpt_products: Optional[WptProducts] = None
    ip_products: Optional[IpProducts] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Application:
    application_details: Optional[ApplicationDetails] = None
    merchant_details: Optional[MerchantDetails] = None
    acquiring: Optional[Acquiring] = None
    products: Optional[Products] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ApplicationBoarding:
    correlation_id: Optional[str] = None
    csr: Optional[int] = None
    seller_code: Optional[str] = None
    seller_email: Optional[str] = None
    application_source: Optional[int] = None
    application_json: Optional[Application] = None

Python ApplicationBoarding DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /ApplicationBoarding HTTP/1.1 
Host: abservice-featuretest.worldpay.com 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<ApplicationBoarding xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Autoboarding.Common.Requests">
  <ApplicationJson xmlns:d2p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding">
    <d2p1:Acquiring xmlns:d3p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.Acquiring">
      <d3p1:Rates>
        <d3p1:AdditionalTarrifs i:nil="true" />
        <d3p1:CardCharges i:nil="true" />
        <d3p1:PremiumTransactionCharges i:nil="true" />
      </d3p1:Rates>
      <d3p1:Services xmlns:d4p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.Acquiring.Services">
        <d4p1:Amex>
          <d4p1:ExistingAmexNumber>String</d4p1:ExistingAmexNumber>
          <d4p1:Required>false</d4p1:Required>
        </d4p1:Amex>
        <d4p1:CashbackRequired>false</d4p1:CashbackRequired>
        <d4p1:Cnp>
          <d4p1:Percentage>0</d4p1:Percentage>
          <d4p1:Required>false</d4p1:Required>
        </d4p1:Cnp>
        <d4p1:PaperInvoicingRequired>false</d4p1:PaperInvoicingRequired>
        <d4p1:WorldpayDashboardRequired>false</d4p1:WorldpayDashboardRequired>
      </d3p1:Services>
      <d3p1:SettlementPeriodTPlus>0</d3p1:SettlementPeriodTPlus>
      <d3p1:TradingCurrencies i:nil="true" />
    </d2p1:Acquiring>
    <d2p1:ApplicationDetails>
      <d2p1:AccessibilityOptions>
        <d2p1:AudiotapeRequired>false</d2p1:AudiotapeRequired>
        <d2p1:LargePrintRequired>false</d2p1:LargePrintRequired>
        <d2p1:NextGenerationTextRequired>false</d2p1:NextGenerationTextRequired>
        <d2p1:UncontractedBrailleGrade1Required>false</d2p1:UncontractedBrailleGrade1Required>
        <d2p1:UncontractedBrailleGrade2Required>false</d2p1:UncontractedBrailleGrade2Required>
      </d2p1:AccessibilityOptions>
      <d2p1:AnticipatedGoLiveDate>0001-01-01T00:00:00</d2p1:AnticipatedGoLiveDate>
      <d2p1:ContactPerson xmlns:d4p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.BusinessDetails">
        <d4p1:AltTelephoneNumber>String</d4p1:AltTelephoneNumber>
        <d4p1:Email>String</d4p1:Email>
        <d4p1:FirstName>String</d4p1:FirstName>
        <d4p1:LastName>String</d4p1:LastName>
        <d4p1:MiddleName>String</d4p1:MiddleName>
        <d4p1:Position>String</d4p1:Position>
        <d4p1:PreferredContactBestTime>String</d4p1:PreferredContactBestTime>
        <d4p1:PreferredContactMethod>Email</d4p1:PreferredContactMethod>
        <d4p1:TelephoneNumber>String</d4p1:TelephoneNumber>
        <d4p1:Title>String</d4p1:Title>
        <d4p1:CountryCode>String</d4p1:CountryCode>
        <d4p1:DateOfBirth>0001-01-01T00:00:00</d4p1:DateOfBirth>
      </d2p1:ContactPerson>
      <d2p1:Csr>String</d2p1:Csr>
      <d2p1:CustomerType>New</d2p1:CustomerType>
      <d2p1:DateContractAccepted>0001-01-01T00:00:00</d2p1:DateContractAccepted>
      <d2p1:OfferDetails>String</d2p1:OfferDetails>
      <d2p1:Partner>
        <d2p1:PartnerId>String</d2p1:PartnerId>
        <d2p1:PartnerName>String</d2p1:PartnerName>
      </d2p1:Partner>
      <d2p1:PricingPackage>CustomUk</d2p1:PricingPackage>
      <d2p1:Sar>false</d2p1:Sar>
      <d2p1:SellerCode>String</d2p1:SellerCode>
      <d2p1:SellerEmail>String</d2p1:SellerEmail>
      <d2p1:SourceSystem>MARS</d2p1:SourceSystem>
      <d2p1:SourceSystemIdentifier>String</d2p1:SourceSystemIdentifier>
      <d2p1:SpecialInstructions>String</d2p1:SpecialInstructions>
      <d2p1:UltimateParentId>String</d2p1:UltimateParentId>
      <d2p1:WorldpayBusinessFinanceInterest>false</d2p1:WorldpayBusinessFinanceInterest>
    </d2p1:ApplicationDetails>
    <d2p1:MerchantDetails xmlns:d3p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.BusinessDetails">
      <d3p1:Business>
        <d3p1:CharityNumber>String</d3p1:CharityNumber>
        <d3p1:CompanyRegistrationNumber>String</d3p1:CompanyRegistrationNumber>
        <d3p1:CompanyType>SoleTrader</d3p1:CompanyType>
        <d3p1:CompanyTypeOther>String</d3p1:CompanyTypeOther>
        <d3p1:CountryOfIncorporation>String</d3p1:CountryOfIncorporation>
        <d3p1:DateStartedTrading>0001-01-01T00:00:00</d3p1:DateStartedTrading>
        <d3p1:DescriptionOfGoodsAndServices>String</d3p1:DescriptionOfGoodsAndServices>
        <d3p1:Financials>
          <d3p1:Annual>0</d3p1:Annual>
          <d3p1:AverageTransactionValue>0</d3p1:AverageTransactionValue>
          <d3p1:CardPercentage>0</d3p1:CardPercentage>
          <d3p1:CreditCardPercentage>0</d3p1:CreditCardPercentage>
        </d3p1:Financials>
        <d3p1:LegalAddress>
          <d3p1:Address1>String</d3p1:Address1>
          <d3p1:Address2>String</d3p1:Address2>
          <d3p1:Address3>String</d3p1:Address3>
          <d3p1:City>String</d3p1:City>
          <d3p1:Countrycode>String</d3p1:Countrycode>
          <d3p1:Postcode>String</d3p1:Postcode>
          <d3p1:State>String</d3p1:State>
          <d3p1:IsCommercial>false</d3p1:IsCommercial>
        </d3p1:LegalAddress>
        <d3p1:LegalName>String</d3p1:LegalName>
        <d3p1:MerchantCategoryCode>String</d3p1:MerchantCategoryCode>
        <d3p1:MerchantCategoryDescription>String</d3p1:MerchantCategoryDescription>
        <d3p1:NewToCards>false</d3p1:NewToCards>
        <d3p1:RegionOfIncorporation>String</d3p1:RegionOfIncorporation>
        <d3p1:TradeAssociation>
          <d3p1:GroupName>String</d3p1:GroupName>
          <d3p1:MemberNumber>String</d3p1:MemberNumber>
        </d3p1:TradeAssociation>
        <d3p1:VatNumber>String</d3p1:VatNumber>
        <d3p1:WebsiteAddress>String</d3p1:WebsiteAddress>
      </d3p1:Business>
      <d3p1:GoodsAndServices xmlns:d4p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.BusinessDetails.GoodsAndServices">
        <d4p1:Deposits>
          <d4p1:Accepted>false</d4p1:Accepted>
          <d4p1:AvgTimeBeforeDeliveryBalanceTaken>0</d4p1:AvgTimeBeforeDeliveryBalanceTaken>
          <d4p1:AvgTimeBeforeDeliveryTaken>0</d4p1:AvgTimeBeforeDeliveryTaken>
          <d4p1:PerOfSalesWhereInitialDepositTaken>0</d4p1:PerOfSalesWhereInitialDepositTaken>
          <d4p1:SizePercOfTotalValue>0</d4p1:SizePercOfTotalValue>
        </d4p1:Deposits>
        <d4p1:GoodsProvidedByThirdParty>false</d4p1:GoodsProvidedByThirdParty>
        <d4p1:MembershipsSubscriptionAndInsurancePremiums>
          <d4p1:AvgLengthInMonths>0</d4p1:AvgLengthInMonths>
          <d4p1:LevyCharge>false</d4p1:LevyCharge>
          <d4p1:MembershipCost>0</d4p1:MembershipCost>
          <d4p1:PercCardTurnover>0</d4p1:PercCardTurnover>
        </d4p1:MembershipsSubscriptionAndInsurancePremiums>
        <d4p1:Prepayments>
          <d4p1:AvgDaysPaymentTakenInAdvance>0</d4p1:AvgDaysPaymentTakenInAdvance>
          <d4p1:FullPaymentAcceptedPriorToSupply>false</d4p1:FullPaymentAcceptedPriorToSupply>
          <d4p1:PercGoodsWherePaymentTakenPriorToDelivery>0</d4p1:PercGoodsWherePaymentTakenPriorToDelivery>
        </d4p1:Prepayments>
        <d4p1:StockHeldAtAnotherAddressLocation>
          <d3p1:Address1>String</d3p1:Address1>
          <d3p1:Address2>String</d3p1:Address2>
          <d3p1:Address3>String</d3p1:Address3>
          <d3p1:City>String</d3p1:City>
          <d3p1:Countrycode>String</d3p1:Countrycode>
          <d3p1:Postcode>String</d3p1:Postcode>
          <d3p1:State>String</d3p1:State>
        </d4p1:StockHeldAtAnotherAddressLocation>
        <d4p1:WarrantiesAndGuarantees>
          <d4p1:AvgLengthInMonths>0</d4p1:AvgLengthInMonths>
          <d4p1:LevyCharge>false</d4p1:LevyCharge>
          <d4p1:PercCardTurnover>0</d4p1:PercCardTurnover>
          <d4p1:PercGoodsReturned>0</d4p1:PercGoodsReturned>
          <d4p1:ThirdPartyProviders>String</d4p1:ThirdPartyProviders>
        </d4p1:WarrantiesAndGuarantees>
      </d3p1:GoodsAndServices>
      <d3p1:Outlets i:nil="true" />
      <d3p1:Principals i:nil="true" />
    </d2p1:MerchantDetails>
    <d2p1:Products xmlns:d3p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.Products">
      <d3p1:EcomProducts xmlns:d4p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.Products.EcomProducts">
        <d4p1:Options i:nil="true" />
        <d4p1:Products i:nil="true" />
        <d4p1:RenewalLength>0</d4p1:RenewalLength>
        <d4p1:Term>0</d4p1:Term>
      </d3p1:EcomProducts>
      <d3p1:IpProducts xmlns:d4p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.Products.IpProducts">
        <d4p1:IntegratedSolutionProvider xmlns:d5p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.Products.WptProducts">
          <d5p1:Address xmlns:d6p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.BusinessDetails">
            <d6p1:Address1>String</d6p1:Address1>
            <d6p1:Address2>String</d6p1:Address2>
            <d6p1:Address3>String</d6p1:Address3>
            <d6p1:City>String</d6p1:City>
            <d6p1:Countrycode>String</d6p1:Countrycode>
            <d6p1:Postcode>String</d6p1:Postcode>
            <d6p1:State>String</d6p1:State>
          </d5p1:Address>
          <d5p1:Name>String</d5p1:Name>
          <d5p1:PrimaryContact>
            <d5p1:EmailAddress>String</d5p1:EmailAddress>
            <d5p1:FirstName>String</d5p1:FirstName>
            <d5p1:LastName>String</d5p1:LastName>
            <d5p1:Position>String</d5p1:Position>
            <d5p1:Title>String</d5p1:Title>
          </d5p1:PrimaryContact>
          <d5p1:ProviderSoftware>String</d5p1:ProviderSoftware>
          <d5p1:ProviderType>String</d5p1:ProviderType>
          <d5p1:TechnicalContact>
            <d5p1:EmailAddress>String</d5p1:EmailAddress>
            <d5p1:FirstName>String</d5p1:FirstName>
            <d5p1:LastName>String</d5p1:LastName>
            <d5p1:Position>String</d5p1:Position>
            <d5p1:Title>String</d5p1:Title>
          </d5p1:TechnicalContact>
          <d5p1:Telephone>String</d5p1:Telephone>
        </d4p1:IntegratedSolutionProvider>
        <d4p1:Products i:nil="true" />
        <d4p1:RenewalLength>0</d4p1:RenewalLength>
        <d4p1:Term>0</d4p1:Term>
      </d3p1:IpProducts>
      <d3p1:PosProducts xmlns:d4p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.Products.PosProducts">
        <d4p1:Products i:nil="true" />
        <d4p1:RenewalLength>0</d4p1:RenewalLength>
        <d4p1:Term>0</d4p1:Term>
      </d3p1:PosProducts>
      <d3p1:WptProducts xmlns:d4p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.Products.WptProducts">
        <d4p1:IntegratedSolutionProvider>
          <d4p1:Address xmlns:d6p1="http://schemas.datacontract.org/2004/07/BoardingGateway.Common.Requests.Boarding.BusinessDetails">
            <d6p1:Address1>String</d6p1:Address1>
            <d6p1:Address2>String</d6p1:Address2>
            <d6p1:Address3>String</d6p1:Address3>
            <d6p1:City>String</d6p1:City>
            <d6p1:Countrycode>String</d6p1:Countrycode>
            <d6p1:Postcode>String</d6p1:Postcode>
            <d6p1:State>String</d6p1:State>
          </d4p1:Address>
          <d4p1:Name>String</d4p1:Name>
          <d4p1:PrimaryContact>
            <d4p1:EmailAddress>String</d4p1:EmailAddress>
            <d4p1:FirstName>String</d4p1:FirstName>
            <d4p1:LastName>String</d4p1:LastName>
            <d4p1:Position>String</d4p1:Position>
            <d4p1:Title>String</d4p1:Title>
          </d4p1:PrimaryContact>
          <d4p1:ProviderSoftware>String</d4p1:ProviderSoftware>
          <d4p1:ProviderType>String</d4p1:ProviderType>
          <d4p1:TechnicalContact>
            <d4p1:EmailAddress>String</d4p1:EmailAddress>
            <d4p1:FirstName>String</d4p1:FirstName>
            <d4p1:LastName>String</d4p1:LastName>
            <d4p1:Position>String</d4p1:Position>
            <d4p1:Title>String</d4p1:Title>
          </d4p1:TechnicalContact>
          <d4p1:Telephone>String</d4p1:Telephone>
        </d4p1:IntegratedSolutionProvider>
        <d4p1:PosInstallationDate>0001-01-01T00:00:00</d4p1:PosInstallationDate>
        <d4p1:Products i:nil="true" />
        <d4p1:RenewalLength>0</d4p1:RenewalLength>
        <d4p1:Term>0</d4p1:Term>
      </d3p1:WptProducts>
    </d2p1:Products>
  </ApplicationJson>
  <ApplicationSource>0</ApplicationSource>
  <CorrelationId>00000000-0000-0000-0000-000000000000</CorrelationId>
  <Csr>0</Csr>
  <SellerCode>String</SellerCode>
  <SellerEmail>String</SellerEmail>
</ApplicationBoarding>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<InitiateBoardingResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Autoboarding.Common.Responses">
  <ApplicationGuid>00000000-0000-0000-0000-000000000000</ApplicationGuid>
  <ApplicationQueueGuid>00000000-0000-0000-0000-000000000000</ApplicationQueueGuid>
  <BoardingStatus>PENDING</BoardingStatus>
  <CSR>0</CSR>
  <ErrorMessages xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <d2p1:string>String</d2p1:string>
  </ErrorMessages>
  <QueueStatus>Queued</QueueStatus>
</InitiateBoardingResponse>