# /api/v2/merchant/submit

## Submit Merchant Application V2

Submits the full merchant application to the TSYS processor in a single atomic call. Combines merchant profile, business and owner information, sales profile, site inspection, service acceptance, fees, and equipment into one submission. On success the merchant is queued for underwriting review at **UW Level 1** status.

### Endpoint

`POST /api/v2/merchant/submit`

### Authentication

Basic HTTP Authentication required.

```
Authorization: Basic {base64(username:password)}
```

### When to use

Use this as the preferred submission method for V2 integrations. It can be used to submit a new merchant in one shot, or to finalize a draft previously created with `POST /api/v2/merchant/create`. After a successful call, use `GET /api/v1/merchant/status` to track the processing status.

### Differences from V1

| Feature                  | V1                                          | V2                                                             |
| ------------------------ | ------------------------------------------- | -------------------------------------------------------------- |
| `merchantProfile` schema | `TsysMerchant` — `cashDiscount` string flag | `TsysMerchantV2Edit` — `feesProgram` enum, no `cashDiscount`   |
| Fees schema              | `TsysFees`                                  | `TsysFeesV2` — adds `cashDiscountRate`                         |
| Response schema          | `ApiResponse1` with `status` string         | `ApiResult1` with `success` boolean + `validationErrors` array |

***

### Request Body

#### Top-level structure

| Field                       | Type                | Required | Description                                    |
| --------------------------- | ------------------- | -------- | ---------------------------------------------- |
| merchantProfile             | TsysMerchantV2Edit  | Yes      | Core merchant configuration                    |
| businessAndOwnerInformation | TsysParameters      | Yes      | Business details and owner KYC                 |
| salesAndBusinessProfile     | TsysMerchantAccount | Yes      | Sales volumes and banking info                 |
| siteInspection              | TsysSiteInspection  | Yes      | Physical location inspection                   |
| serviceAcceptance           | TsysProductSetup    | Yes      | Card networks accepted                         |
| fees                        | TsysFeesV2          | No       | Full fee schedule                              |
| equipment                   | TsysEquipment       | Yes      | Terminal equipment                             |
| merchantProfileId           | integer             | No       | Provide to update and submit an existing draft |

***

#### `merchantProfile` (TsysMerchantV2Edit)

| Field              | Type          | Required | Description                                                             |
| ------------------ | ------------- | -------- | ----------------------------------------------------------------------- |
| agentProfileId     | integer       | Yes      | Agent profile ID — get from `GET /api/v2/agent/profile`                 |
| feesProgram        | string (enum) | Yes      | `Traditional`, `CashDiscount`, `Surcharge`, `ServiceFee`, `DualPricing` |
| pos                | string (enum) | Yes      | POS system type — see enum values below                                 |
| boardingSettingsId | integer       | No       | Boarding settings template ID                                           |
| mid                | string        | No       | Existing MID if re-submitting a previously boarded merchant             |
| externalClientID   | string        | No       | External client reference ID                                            |
| externalChainID    | string        | No       | External chain reference ID                                             |

**`pos` enum values:** `None`, `AptitoPalomaPOS`, `Clover`, `PalomaPOS`, `Aldelo`, `Restoactive`, `PoyntPOS`, `CloverGo`, `UnifiedMpos`, `CustomPos`, `RetailCloud`, `EHopper`, `FreedomPos`, `ClubPos`, `SelfLane`, `OtfPOS`, `NProKiosk`, `GretaPOS`

***

#### `businessAndOwnerInformation` (TsysParameters)

| Field                   | Type               | Required | Description                                        |
| ----------------------- | ------------------ | -------- | -------------------------------------------------- |
| customerServicePhoneNum | string             | Yes      | 10-digit phone, must not start with 1              |
| federalTaxId            | string             | Yes      | 9-digit EIN (`^\d{9}$` or masked with `*`)         |
| dateOfStartBusiness     | string (date-time) | Yes      | Business start date ISO 8601                       |
| merchantEmail           | string             | No       | Merchant contact email                             |
| merchantWebsite         | string             | No       | Business website URL                               |
| multipleLocations       | boolean            | No       | Whether business has multiple locations            |
| numOfLocations          | integer            | No       | Number of locations if `multipleLocations` is true |
| legalAddress            | AddressBase        | Yes      | Legal registered address                           |
| dbaAddress              | AddressBase        | Yes      | DBA operating address                              |
| primaryOwner            | Owner              | Yes      | Primary owner KYC details                          |
| secondaryOwner          | SecondaryOwner     | No       | Second owner                                       |
| owner3                  | SecondaryOwner     | No       | Third owner                                        |
| owner4                  | SecondaryOwner     | No       | Fourth owner                                       |
| controllingOfficer1     | ControllingOfficer | No       | Controlling officer 1                              |
| controllingOfficer2     | ControllingOfficer | No       | Controlling officer 2                              |

**`AddressBase`** (used for `legalAddress` and `dbaAddress`):

| Field      | Type          | Required | Description                           |
| ---------- | ------------- | -------- | ------------------------------------- |
| name       | string        | Yes      | Business name at this address         |
| address    | string        | Yes      | Street address line 1                 |
| address2   | string        | No       | 🆕 Suite, unit, floor, apartment      |
| postalCode | string        | Yes      | ZIP code                              |
| city       | string        | Yes      | City                                  |
| state      | string (enum) | Yes      | Full US state name, e.g. `California` |
| phone      | string        | Yes      | Phone, must not start with 1          |
| fax        | string        | No       | Fax number                            |

**`state` enum:** `Alaska`, `Alabama`, `Arkansas`, `Arizona`, `California`, `Colorado`, `Connecticut`, `DistrictOfColumbia`, `Delaware`, `Florida`, `Georgia`, `Hawaii`, `Iowa`, `Idaho`, `Illinois`, `Indiana`, `Kansas`, `Kentucky`, `Louisiana`, `Massachusetts`, `Maryland`, `Maine`, `Michigan`, `Minnesota`, `Missouri`, `Mississippi`, `Montana`, `NorthCarolina`, `NorthDakota`, `Nebraska`, `NewHampshire`, `NewJersey`, `NewMexico`, `Nevada`, `NewYork`, `Ohio`, `Oklahoma`, `Oregon`, `Pennsylvania`, `PuertoRico`, `RhodeIsland`, `SouthCarolina`, `SouthDakota`, `Tennessee`, `Texas`, `Utah`, `Virginia`, `VirginIslands`, `Vermont`, `Washington`, `Wisconsin`, `WestVirginia`, `Wyoming`

**`Owner`** (used for `primaryOwner`):

| Field            | Type               | Required | Description                                                                                                                        |
| ---------------- | ------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| firstName        | string             | Yes      | 2–25 letters only                                                                                                                  |
| lastName         | string             | Yes      | 2–25 letters only                                                                                                                  |
| middleName       | string             | No       | 2–25 letters only                                                                                                                  |
| dateOfBirth      | string (date-time) | Yes      | Date of birth ISO 8601                                                                                                             |
| ssn              | string             | Yes      | 9-digit SSN, no sequential/repeated patterns                                                                                       |
| address          | string             | Yes      | Street address, max 40 chars, alphanumeric                                                                                         |
| city             | string             | Yes      | 2–25 chars                                                                                                                         |
| state            | string (enum)      | Yes      | Full US state name                                                                                                                 |
| zip              | string             | Yes      | 5 or 9 digit ZIP (`^\d{5}(-\d{4})?$`)                                                                                              |
| homePhone        | string             | Yes      | Must not start with 1                                                                                                              |
| title            | string (enum)      | Yes      | `President`, `VPresident`, `Owner`, `Partner`, `Manager`, `Treasurer`, `Secretary`, `ExecDirector`                                 |
| ownership        | integer            | Yes      | Ownership percentage 0–100                                                                                                         |
| email            | string             | Yes      | Max 60 chars                                                                                                                       |
| guarantor        | boolean            | No       | Whether owner is a guarantor                                                                                                       |
| typeOfIssuedID   | string (enum)      | No       | `USPassport`, `PermanentRegistrationCard`, `DriversLicense`, `USMilitaryCard`, `USCostGuardMerchantMarinerCard`, `USCitizenIdCard` |
| idNumber         | string             | No       | Alphanumeric ID number                                                                                                             |
| idExpirationDate | string (date-time) | No       | ID expiration date                                                                                                                 |

**`SecondaryOwner`** — same structure as `Owner` (used for `secondaryOwner`, `owner3`, `owner4`).

**`ControllingOfficer`** (used for `controllingOfficer1` and `controllingOfficer2`):

| Field            | Type               | Required | Description                                                                                        |
| ---------------- | ------------------ | -------- | -------------------------------------------------------------------------------------------------- |
| firstName        | string             | Yes      | 2–25 letters only                                                                                  |
| lastName         | string             | Yes      | 2–25 letters only                                                                                  |
| middleName       | string             | No       | 2–25 letters only                                                                                  |
| dateOfBirth      | string (date-time) | Yes      | Date of birth                                                                                      |
| ssn              | string             | Yes      | 9-digit SSN                                                                                        |
| title            | string (enum)      | Yes      | `President`, `VPresident`, `Owner`, `Partner`, `Manager`, `Treasurer`, `Secretary`, `ExecDirector` |
| address          | string             | Yes      | Max 40 chars, alphanumeric                                                                         |
| city             | string             | Yes      | 2–25 chars                                                                                         |
| state            | string (enum)      | Yes      | Full US state name                                                                                 |
| zip              | string             | Yes      | ZIP code                                                                                           |
| homePhone        | string             | Yes      | Must not start with 1                                                                              |
| email            | string             | No       | 🆕 Max 60 chars                                                                                    |
| guarantor        | boolean            | No       | Whether officer is a guarantor                                                                     |
| typeOfIssuedID   | string (enum)      | No       | Same enum as Owner                                                                                 |
| idNumber         | string             | No       | Alphanumeric                                                                                       |
| idExpirationDate | string (date-time) | No       | ID expiration                                                                                      |

***

#### `salesAndBusinessProfile` (TsysMerchantAccount)

| Field                         | Type               | Required | Description                                                                                                                                                                                         |
| ----------------------------- | ------------------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| sic                           | string             | Yes      | Standard Industry Classification code (4 digits)                                                                                                                                                    |
| typeOfOwnership               | string (enum)      | Yes      | `Corporation`, `SoleProprietorship`, `Partnership`, `AssociationEstateTrust`, `TaxExempt501C`, `International`, `LimitedLiabilityLlc`, `GovernmentAgency`                                           |
| businessType                  | string (enum)      | Yes      | `Other`, `Internet`, `Lodging`, `MailOrder`, `Restaurant`, `Retail`, `QSR`, `Supermarket`, `Petroleum`, `Utilities`, `Healthcare`, `Education`, `Government`, `Charity_NonProfit`, `B2B`, `Service` |
| accountType                   | string (enum)      | No       | `C` (Checking), `S` (Savings), `G` (General)                                                                                                                                                        |
| accountNumber                 | string             | Yes      | Bank account number, max 17 digits, numeric only                                                                                                                                                    |
| businessCheckingRoutingNumber | string             | Yes      | 9-digit ABA routing number                                                                                                                                                                          |
| achMethod                     | string (enum)      | Yes      | `Combine`, `Deposit`, `CombineAndDeposit`                                                                                                                                                           |
| averageTicket                 | integer            | Yes      | Average transaction amount (minimum 1)                                                                                                                                                              |
| highTicket                    | integer            | No       | Maximum expected transaction (1–999999)                                                                                                                                                             |
| salesToConsumers              | number             | No       | % of sales to consumers (0–100)                                                                                                                                                                     |
| salesToBusiness               | number             | No       | % of sales to businesses (0–100)                                                                                                                                                                    |
| salesToGovernment             | number             | No       | % of sales to government (0–100)                                                                                                                                                                    |
| bankName                      | string             | No       | Name of the bank                                                                                                                                                                                    |
| goodsAndServices              | string             | No       | Description of goods/services sold                                                                                                                                                                  |
| returnPolicy                  | string             | No       | Merchant's return policy                                                                                                                                                                            |
| nextDayFunding                | boolean            | No       | Next-day funding requested                                                                                                                                                                          |
| sameDayFunding                | boolean            | No       | Same-day funding requested                                                                                                                                                                          |
| isVsMcDsNetwork               | boolean            | No       | Whether Visa/MC/Discover network is used                                                                                                                                                            |
| monthlyVolume                 | integer            | Yes      | Expected monthly processing volume (minimum 1)                                                                                                                                                      |
| annualVolume                  | integer            | No       | Read-only. Computed from monthlyVolume                                                                                                                                                              |
| retail                        | integer            | Yes      | % card-present transactions (0–100)                                                                                                                                                                 |
| imprint                       | integer            | Yes      | % imprint transactions (0–100)                                                                                                                                                                      |
| moto                          | integer            | Yes      | % mail/phone order transactions (0–100)                                                                                                                                                             |
| internet                      | integer            | Yes      | % internet transactions (0–100)                                                                                                                                                                     |
| sellingRegulatedSubstances    | boolean            | No       | Whether business sells regulated substances                                                                                                                                                         |
| massageServices               | boolean            | No       | Whether business offers massage services                                                                                                                                                            |
| sellingGasFuel                | boolean            | No       | Whether business sells gas/fuel                                                                                                                                                                     |
| cardNotPresentInformation     | TsysCnpInformation | No       | Required when `internet > 0`                                                                                                                                                                        |

> ⚠️ `retail + imprint + moto + internet` must equal exactly 100.

**`cardNotPresentInformation` (TsysCnpInformation)** — provide when `internet > 0`:

| Field                                             | Type    | Description                      |
| ------------------------------------------------- | ------- | -------------------------------- |
| isWebHosting                                      | boolean | Sells web hosting services       |
| isDomainRegistration                              | boolean | Sells domain registration        |
| isWebPageDesign                                   | boolean | Sells web design                 |
| isAuction                                         | boolean | Operates an auction site         |
| isInternetServiceGateway                          | boolean | Internet service gateway         |
| isSellingDigitalService                           | boolean | Sells digital products           |
| isAdvertisement                                   | boolean | Sells advertising                |
| isSellingHardGoods                                | boolean | Sells physical goods online      |
| isOther                                           | boolean | Other internet business type     |
| otherInternetBusinessType                         | string  | Description if `isOther` is true |
| saleDescription                                   | string  | What is sold                     |
| advertiseOrPromotion                              | string  | How products are advertised      |
| secureTransactionInformation                      | string  | Security measures in place       |
| vendors                                           | string  | Vendor information               |
| productFulfillment                                | string  | How products are fulfilled       |
| monthly/yearly/quarterly/oneTime/hourly           | integer | Billing frequency counts         |
| isMonthly/isYearly/isQuarterly/isOneTime/isHourly | boolean | Active billing frequencies       |

***

#### `siteInspection` (TsysSiteInspection)

| Field                           | Type          | Required | Description                                                                            |
| ------------------------------- | ------------- | -------- | -------------------------------------------------------------------------------------- |
| inventoryMaintainedType         | string (enum) | No       | `OnSite`, `WarehouseOffSite`, `FulfillmentCenter`                                      |
| fulfillmentCenterNameAndAddress | string        | No       | Address if `FulfillmentCenter`                                                         |
| question1                       | boolean       | No       | Is business operating at this address?                                                 |
| question1Explanation            | string        | No       | Explanation if false                                                                   |
| question2                       | boolean       | No       | Is business open to the public?                                                        |
| question2Explanation            | string        | No       | Explanation if false                                                                   |
| question3                       | boolean       | No       | Does business have adequate signage?                                                   |
| question3Explanation            | string        | No       | Explanation if false                                                                   |
| question4                       | boolean       | No       | Is location consistent with business type?                                             |
| question4Explanation            | string        | No       | Explanation if false                                                                   |
| zoning                          | string (enum) | No       | `Comml`, `Industrial`, `Residential`                                                   |
| squareFootageType               | string (enum) | No       | `From_0_To_500`, `From_501_To_1000`, `From_1001_To_2000`, `From_2001_To_4000`, `Other` |
| squareFootageTypeOther          | integer       | No       | Exact sq ft if `Other` selected                                                        |
| merchant                        | string (enum) | No       | `Owns`, `Leases`                                                                       |
| nameAddressLandlord             | string        | No       | Landlord details if leasing                                                            |

***

#### `serviceAcceptance` (TsysProductSetup)

| Field       | Type    | Required | Description                                             |
| ----------- | ------- | -------- | ------------------------------------------------------- |
| amexESA     | boolean | No       | Accept Amex via ESA program                             |
| amexOptBlue | boolean | No       | Accept Amex via OptBlue                                 |
| discover    | boolean | No       | Accept Discover                                         |
| payPal      | boolean | No       | Accept PayPal                                           |
| jcb         | boolean | No       | Accept JCB                                              |
| ebt         | boolean | No       | Accept EBT                                              |
| debitCard   | boolean | No       | Accept PIN debit                                        |
| amexNumber  | string  | No       | 10-digit Amex ESA number (required if `amexESA` = true) |
| fcsNumber   | string  | No       | 7-digit FCS number (required if `amexESA` = true)       |

***

#### `fees` (TsysFeesV2)

V2 adds `cashDiscountRate` compared to V1 fees schema.

| Field                                 | Type                       | Required | Description                                                          |
| ------------------------------------- | -------------------------- | -------- | -------------------------------------------------------------------- |
| cashDiscountRate                      | number                     | No       | Cash discount rate 0–100% (used when `feesProgram` = `CashDiscount`) |
| minimumDiscountAmount                 | number                     | No       | Minimum discount amount (0–500)                                      |
| minimumDiscountStartDate              | string (date-time)         | No       | When minimum discount starts                                         |
| minimumDiscountType                   | string (enum)              | No       | `Daily`, `Monthly`                                                   |
| earlyTerminationFeeAmount             | number                     | No       | Early termination fee (0–999999)                                     |
| earlyTerminationFeeContractMonths     | integer                    | No       | Contract length in months (0–60)                                     |
| amex                                  | AmexFees                   | No       | Amex fee structure                                                   |
| visaMasterCardDiscover                | VisaMasterCardDiscoverFees | No       | Visa/MC/Discover fees                                                |
| authorizationMonthlyAndSpecialProgram | object                     | No       | Auth, monthly and special program fees                               |
| pos                                   | POSFees                    | No       | POS software fees                                                    |
| standard                              | StandardFees               | No       | Standard fees                                                        |
| cardBrand                             | CardBrandFees              | No       | Card brand fee flags                                                 |
| debitPinAndEBT                        | DebitPinAndEBTFees         | No       | Debit PIN and EBT fees                                               |
| gatewayProducts                       | GatewayProductsFees        | No       | Gateway and wireless fees                                            |
| miscFees                              | array of TsysMiscFee       | No       | Custom miscellaneous fees                                            |
| miscFeesVolume                        | array of TsysMiscFee       | No       | Volume-based misc fees                                               |

**`TsysFee`** (base fee object used throughout):

| Field   | Type   | Required | Description              |
| ------- | ------ | -------- | ------------------------ |
| perItem | number | Yes      | Per-transaction flat fee |
| percent | number | Yes      | Percentage fee           |

**`TsysPOSFee`** (used in `pos` fees):

| Field   | Type    | Required | Description              |
| ------- | ------- | -------- | ------------------------ |
| count   | integer | Yes      | Number of licenses/units |
| perItem | number  | Yes      | Per-unit fee             |
| percent | number  | Yes      | Percentage fee           |

**`TsysFeeDiscountType`** (used in `noSurcharge` and debit fees):

| Field        | Type          | Required | Description         |
| ------------ | ------------- | -------- | ------------------- |
| discountType | string (enum) | No       | `Daily`, `Monthly`  |
| perItem      | number        | Yes      | Per-transaction fee |
| percent      | number        | Yes      | Percentage fee      |

**`authorizationMonthlyAndSpecialProgram`** key fields:

| Field                      | Description                  |
| -------------------------- | ---------------------------- |
| vsmcdiscAuth               | Visa/MC/Disc auth fee        |
| amexAuth                   | Amex auth fee                |
| avs                        | Address Verification Service |
| batch                      | Batch settlement fee         |
| voiceAuthorization         | Voice auth fee               |
| retrieval                  | Retrieval request fee        |
| chargeback                 | Chargeback fee               |
| chargebackViolation        | Chargeback violation fee     |
| achReject                  | ACH reject fee               |
| merchAnnual                | Annual merchant fee          |
| statement                  | Monthly statement fee        |
| reporting1099K             | 1099-K reporting fee         |
| tinMismatch                | TIN mismatch fee             |
| pciAnnual                  | PCI annual compliance fee    |
| pciNonCompliance           | PCI non-compliance fee       |
| pciMonthly                 | PCI monthly fee              |
| pciQuarterly               | PCI quarterly fee            |
| visaRapidDisputeResolution | Visa RDR fee                 |

**`AmexFees`** — choose one pricing model:

| Field                   | Description                                                       |
| ----------------------- | ----------------------------------------------------------------- |
| interchangePlus         | Interchange plus pricing — `qualifiedDiscount` (TsysFee)          |
| tieredDiscounts         | Tiered — `qualifiedDiscount`, `midQual`, `nonQual` (TsysFee each) |
| noSurcharge             | No surcharge — `qualDiscount` (TsysFeeDiscountType)               |
| amexInterchangePlusPlus | IC++ — `qualifiedDiscount`, `midQual`, `nonQual` (TsysFee each)   |

**`VisaMasterCardDiscoverFees`** — choose one pricing model:

| Field                    | Description                                                                                 |
| ------------------------ | ------------------------------------------------------------------------------------------- |
| billBackIntrDifferential | Bill-back/differential — per-card-brand credit/debit + non-qual IC diff fields              |
| interchangePlus          | IC+ — per-card-brand credit/debit discount fields                                           |
| noSurcharge              | No surcharge — per-card-brand credit/debit (TsysFeeDiscountType each)                       |
| tieredDiscountsRetail    | Tiered retail — per-card-brand + midQual + nonQual                                          |
| tieredDiscountsMOTOEcomm | Tiered MOTO/ecomm — per-card-brand + midMOTO + nonQual                                      |
| customInterchange        | Custom IC — vcMcDsInterSurcharge + per-card-brand                                           |
| customInterchangeDurbin  | Custom IC Durbin — interSurcharge, interNonSurcharge, regulatedDbSurcharge + per-card-brand |
| interchangePlusPlus      | IC++ — qualifiedDiscount, midQual, nonQual                                                  |

**`TsysMiscFee`** (for `miscFees` / `miscFeesVolume`):

| Field     | Type               | Required | Description                                                            |
| --------- | ------------------ | -------- | ---------------------------------------------------------------------- |
| name      | string             | Yes      | Fee name — must match allowed SIF names from `GET /api/v1/SIFFeeNames` |
| frequency | string (enum)      | Yes      | `Annual`, `SemiAnnual`, `Quarterly`, `Monthly`, `OneTime`              |
| perItem   | number             | Yes      | Flat fee amount                                                        |
| percent   | number             | Yes      | Percentage amount                                                      |
| startDate | string (date-time) | No       | Fee start date                                                         |
| stopDate  | string (date-time) | No       | Fee stop date                                                          |
| month     | integer            | No       | Month number for annual fees                                           |
| year      | integer            | No       | Year for annual fees                                                   |

**`StandardFees`**:

| Field                | Description          |
| -------------------- | -------------------- |
| dialPay              | Dial pay fee         |
| onlinePortal         | Online portal fee    |
| motoEcommSurchargePI | MOTO/ecomm surcharge |
| nextDayFunding       | Next-day funding fee |
| sameDayFunding       | Same-day funding fee |

**`GatewayProductsFees`**:

| Field                   | Description                 |
| ----------------------- | --------------------------- |
| gatewayAccess           | Monthly gateway access fee  |
| gatewayPerItem          | Per-transaction gateway fee |
| wirelessActivation      | Wireless activation fee     |
| wirelessAccess          | Wireless monthly access fee |
| unifiedmPOSActivation   | mPOS activation fee         |
| unifiedmPOSAccess       | mPOS monthly access fee     |
| unifiedmPOSTransactions | mPOS per-transaction fee    |
| wirelessAndMobilePOSPI  | Wireless/mobile POS PI fee  |
| micros                  | Micros integration fee      |

**`DebitPinAndEBTFees`**:

| Field                     | Description                                        |
| ------------------------- | -------------------------------------------------- |
| pinDebitMonthly           | Monthly PIN debit fee                              |
| pinDebitQualifiedDiscount | PIN debit qualified discount (TsysFeeDiscountType) |
| pinDebitAuth              | PIN debit auth fee (TsysFeeDiscountType)           |
| pinDebitAnnual            | Annual PIN debit fee                               |
| ebtTrans                  | EBT per-transaction fee                            |
| pinDebitPassThruIC        | Pass-through interchange flag                      |

**`CardBrandFees`**:

| Field                 | Type    | Description                      |
| --------------------- | ------- | -------------------------------- |
| cardBrand             | boolean | Enable card brand fees           |
| mastercardLicense     | boolean | Enable Mastercard license fee    |
| pinDebitCardBrandFees | boolean | Enable PIN debit card brand fees |

**`POSFees`** — POS software license fees (TsysPOSFee each):

| Field                 | Description                   |
| --------------------- | ----------------------------- |
| fullPackage           | Full POS package              |
| fullPackageOnePrinter | Full package with one printer |
| tableSidePOSPackage   | Tableside POS package         |
| protectionPackage     | Protection/warranty package   |
| posLicence            | POS software licence          |
| tableSidePOSLicence   | Tableside POS licence         |
| mposLicence           | mPOS licence                  |
| menuLicence           | Menu management licence       |
| kioskLicence          | Kiosk licence                 |
| onlineOrderingLicence | Online ordering licence       |

***

#### `equipment` (TsysEquipment)

| Field     | Type                  | Required | Description                                |
| --------- | --------------------- | -------- | ------------------------------------------ |
| terminals | array of TsysTerminal | Yes      | List of terminals. Can be empty array `[]` |

**`TsysTerminal`**:

| Field        | Type          | Required | Description    |
| ------------ | ------------- | -------- | -------------- |
| terminalType | string (enum) | Yes      | Terminal model |

**`terminalType` enum:** `HYPERCOM_M4230_SPOSDCC`, `HYPERCOM_T4230_SPOSDCC`, `INGENICO_ICT220_INGEMV4`, `INGENICO_ICT220CTL_INGEMV4`, `INGENICO_ICT250_INGEMV4`, `INGENICO_IWL220_INGEMV4`, `INGENICO_IWL250_INGEMV4`, `INGENICO_IPP320_INGEMV4`, `VERIFONE_VX520_XEVA440`, `VERIFONE_VX680_XEVA440`, `CLSBPLUS_PAX`, `MULTIPASS`, `HCSTAGE`, `DIAL_PAY`, `NETEVIA_GATEWAY`, `AUTH_NET_GATEWAY`, `NMI_Unified_Gateway`, `USAePay_Gateway`, `Aldelo_EDC`, `Cardflight_mPOS`, `Dejavoo_Z8`, `Dejavoo_Z9`, `Dejavoo_Z11`, `Pax_S80`, `Pax_S300`, `Poynt`, `EHopper`, `Freedom_POS`, `Netevia_Light_POS`, `STGENCR`, `HCSTGEN`, `ValorVP100`, `ValorVP300`, `DejavooQD2`, `DejavooQD4`, `DejavooQD3`, `DejavooQD5`, `DejavooP1`, `DejavooP3`, `DejavooP5`, `ValorVL100`, `ValorVL300`, `ValorVL110`, `ValorVP550`, `ValorVP800`, `ValorRCKT`, `ValorVirtualTerminal`

***

### Full Request Example

```json
{
  "merchantProfile": {
    "feesProgram": "Traditional",
    "agentProfileId": 204,
    "pos": "Clover",
    "boardingSettingsId": 15
  },
  "businessAndOwnerInformation": {
    "customerServicePhoneNum": "8005550100",
    "federalTaxId": "471234567",
    "dateOfStartBusiness": "2019-01-15T00:00:00Z",
    "merchantEmail": "owner@tlcrestaurant.com",
    "merchantWebsite": "https://www.tlcrestaurant.com",
    "multipleLocations": false,
    "legalAddress": {
      "name": "TLC Restaurant Inc",
      "address": "850 Main Street",
      "address2": "Suite 100",
      "postalCode": "90210",
      "city": "Beverly Hills",
      "state": "California",
      "phone": "3105550180"
    },
    "dbaAddress": {
      "name": "TLC Bistro",
      "address": "850 Main Street",
      "address2": "Suite 100",
      "postalCode": "90210",
      "city": "Beverly Hills",
      "state": "California",
      "phone": "3105550180"
    },
    "primaryOwner": {
      "firstName": "Angela",
      "lastName": "Torres",
      "dateOfBirth": "1975-07-04T00:00:00Z",
      "ssn": "456781239",
      "address": "200 Palm Drive",
      "city": "Beverly Hills",
      "state": "California",
      "zip": "90210",
      "homePhone": "3105550292",
      "title": "Owner",
      "ownership": 100,
      "email": "angela.torres@tlcrestaurant.com",
      "guarantor": true,
      "typeOfIssuedID": "DriversLicense",
      "idNumber": "CA987654321",
      "idExpirationDate": "2029-07-04T00:00:00Z"
    },
    "controllingOfficer1": {
      "firstName": "Maria",
      "lastName": "Torres",
      "dateOfBirth": "1978-09-20T00:00:00Z",
      "ssn": "456789001",
      "title": "President",
      "address": "200 Palm Drive",
      "city": "Beverly Hills",
      "state": "California",
      "zip": "90210",
      "homePhone": "3105550293",
      "email": "maria.torres@tlcrestaurant.com"
    }
  },
  "salesAndBusinessProfile": {
    "sic": "5812",
    "typeOfOwnership": "Corporation",
    "businessType": "Restaurant",
    "accountNumber": "123456789012",
    "businessCheckingRoutingNumber": "021000021",
    "achMethod": "Combine",
    "averageTicket": 4500,
    "highTicket": 20000,
    "monthlyVolume": 85000,
    "retail": 95,
    "imprint": 0,
    "moto": 5,
    "internet": 0,
    "bankName": "JPMorgan Chase",
    "goodsAndServices": "Full-service restaurant serving American cuisine",
    "returnPolicy": "No refunds on food; merchandise returns within 30 days"
  },
  "siteInspection": {
    "inventoryMaintainedType": "OnSite",
    "zoning": "Comml",
    "squareFootageType": "From_1001_To_2000",
    "merchant": "Leases",
    "nameAddressLandlord": "Beverly Hills Properties LLC, 100 Rodeo Dr, Beverly Hills CA 90210",
    "question1": true,
    "question2": true,
    "question3": true,
    "question4": true
  },
  "serviceAcceptance": {
    "amexOptBlue": true,
    "discover": true,
    "debitCard": true,
    "payPal": false,
    "jcb": false,
    "ebt": false
  },
  "fees": {
    "minimumDiscountAmount": 25.00,
    "minimumDiscountType": "Monthly",
    "earlyTerminationFeeAmount": 295,
    "earlyTerminationFeeContractMonths": 36,
    "authorizationMonthlyAndSpecialProgram": {
      "vsmcdiscAuth": { "perItem": 0.10, "percent": 0.0 },
      "amexAuth": { "perItem": 0.10, "percent": 0.0 },
      "avs": { "perItem": 0.02, "percent": 0.0 },
      "chargeback": { "perItem": 25.00, "percent": 0.0 },
      "retrieval": { "perItem": 10.00, "percent": 0.0 },
      "pciAnnual": { "perItem": 99.00, "percent": 0.0 },
      "pciNonCompliance": { "perItem": 29.99, "percent": 0.0 }
    },
    "miscFees": [
      {
        "name": "SERVICE FEE",
        "frequency": "Monthly",
        "perItem": 9.95,
        "percent": 0.0
      }
    ]
  },
  "equipment": {
    "terminals": [
      { "terminalType": "Poynt" }
    ]
  }
}
```

***

### Response

**200 OK**

| Field                  | Type    | Description                                                                    |
| ---------------------- | ------- | ------------------------------------------------------------------------------ |
| data.merchantProfileId | integer | Merchant profile ID of created or updated record — use in all subsequent calls |
| requestId              | integer | Internal request tracking ID                                                   |
| success                | boolean | `true` if submission was accepted                                              |
| error                  | string  | Error message if `success` is `false`                                          |
| validationErrors       | array   | Field-level errors with `field` and `error` properties                         |

```json
{
  "data": {
    "merchantProfileId": 30912
  },
  "requestId": 456,
  "success": true,
  "error": null,
  "validationErrors": []
}
```

***

### Error Codes

| Code | When it happens                                                                             |
| ---- | ------------------------------------------------------------------------------------------- |
| 400  | Missing required fields, validation failures, or `retail + imprint + moto + internet` ≠ 100 |
| 401  | Invalid or missing Basic Auth credentials                                                   |
| 403  | No permission to submit this merchant                                                       |
| 404  | `merchantProfileId` provided but not found                                                  |
| 500  | Internal server error or processor communication failure                                    |

***

### Common Mistakes

* `retail + imprint + moto + internet` must equal exactly 100 — any other sum causes a 400 error.
* `feesProgram` is required in V2 — unlike V1 which used a `cashDiscount` string flag.
* `pos` is required — use `None` if no specific POS system.
* `federalTaxId` must be exactly 9 digits — no dashes (`47-1234567` is invalid).
* `accountNumber` must be purely numeric, max 17 digits — no dashes or spaces.
* `businessCheckingRoutingNumber` must be exactly 9 digits.
* `ssn` must be 9 digits and cannot match sequential or repeated patterns.
* `cardNotPresentInformation` should be provided when `internet > 0`.
* `amexNumber` (10 digits) and `fcsNumber` (7 digits) are required when `amexESA: true`.
* `address2` and controlling officer `email` are optional and backward compatible.
* Providing `merchantProfileId` links to an existing record — omit it to create a new one.

***

### Related Endpoints

* [`GET /api/v2/agent/profile`](./boardingv2_getagentprofilebyid.md) — get `agentProfileId` before submitting
* [`POST /api/v2/merchant/create`](./boardingv2_createmerchant.md) — create a minimal draft before building up to full submit
* [`POST /api/v2/merchant/parameters`](./boardingv2_updatemerchantinfo.md) — update business and owner info after submission
* [`GET /api/v1/merchant/status`](./boarding_getstatus.md) — check application status after submission
* [`GET /api/v1/merchant/underwritingNotes`](./boarding_getunderwritingnotes.md) — retrieve underwriting notes

***

### Example

```bash
curl -X POST https://hq.staging.netevia.dev/api/v2/merchant/submit \
  -H "Authorization: Basic $(echo -n 'username:password' | base64)" \
  -H "Content-Type: application/json" \
  -d '{ ... request body ... }'
```

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "version": "v2",
    "title": "Netevia HQ | API Documentation",
    "description": "Netevia HQ | API Documentation"
  },
  "paths": {
    "/api/v2/merchant/submit": {
      "post": {
        "tags": [
          "Submit Merchant Application"
        ],
        "operationId": "BoardingV2_SubmitTSYS",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitMerchantRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitMerchantRequest"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/SubmitMerchantRequest"
              }
            },
            "text/xml": {
              "schema": {
                "$ref": "#/components/schemas/SubmitMerchantRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/SubmitMerchantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResult1_SubmitMerchantResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResult1_SubmitMerchantResponse"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResult1_SubmitMerchantResponse"
                }
              },
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResult1_SubmitMerchantResponse"
                }
              },
              "data": {
                "examples": {
                  "response": {
                    "value": {
                      "merchantProfileId": 123
                    }
                  }
                }
              },
              "requestId": {
                "examples": {
                  "response": {
                    "value": 456
                  }
                }
              },
              "success": {
                "examples": {
                  "response": {
                    "value": true
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "Basic": []
    }
  ],
  "servers": [
    {
      "url": "https://hq.staging.netevia.dev"
    }
  ],
  "components": {
    "securitySchemes": {
      "Basic": {
        "type": "http",
        "description": "Basic HTTP Authentication",
        "scheme": "basic"
      }
    },
    "schemas": {
      "ValidationError": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "error": {
            "type": "string"
          }
        }
      },
      "SubmitMerchantRequest": {
        "required": [
          "merchantProfile",
          "businessAndOwnerInformation",
          "salesAndBusinessProfile",
          "siteInspection",
          "serviceAcceptance",
          "equipment"
        ],
        "type": "object",
        "properties": {
          "merchantProfile": {
            "$ref": "#/components/schemas/TsysMerchantV2Edit"
          },
          "businessAndOwnerInformation": {
            "$ref": "#/components/schemas/TsysParameters"
          },
          "salesAndBusinessProfile": {
            "$ref": "#/components/schemas/TsysMerchantAccount"
          },
          "siteInspection": {
            "$ref": "#/components/schemas/TsysSiteInspection"
          },
          "serviceAcceptance": {
            "$ref": "#/components/schemas/TsysProductSetup"
          },
          "fees": {
            "$ref": "#/components/schemas/TsysFeesV2"
          },
          "equipment": {
            "$ref": "#/components/schemas/TsysEquipment"
          },
          "merchantProfileId": {
            "format": "int32",
            "type": "integer"
          }
        }
      },
      "TsysMerchantV2Edit": {
        "required": [
          "feesProgram",
          "agentProfileId",
          "pos"
        ],
        "type": "object",
        "properties": {
          "feesProgram": {
            "enum": [
              "Traditional",
              "CashDiscount",
              "Surcharge",
              "ServiceFee",
              "DualPricing"
            ],
            "type": "string"
          },
          "agentProfileId": {
            "format": "int32",
            "type": "integer"
          },
          "pos": {
            "enum": [
              "None",
              "AptitoPalomaPOS",
              "Clover",
              "PalomaPOS",
              "Aldelo",
              "Restoactive",
              "PoyntPOS",
              "CloverGo",
              "UnifiedMpos",
              "CustomPos",
              "RetailCloud",
              "EHopper",
              "FreedomPos",
              "ClubPos",
              "SelfLane",
              "OtfPOS",
              "NProKiosk",
              "GretaPOS"
            ],
            "type": "string"
          },
          "boardingSettingsId": {
            "format": "int32",
            "type": "integer"
          },
          "mid": {
            "type": "string"
          },
          "externalClientID": {
            "type": "string"
          },
          "externalChainID": {
            "type": "string"
          }
        }
      },
      "TsysParameters": {
        "required": [
          "customerServicePhoneNum",
          "federalTaxId",
          "dateOfStartBusiness",
          "legalAddress",
          "dbaAddress",
          "primaryOwner"
        ],
        "type": "object",
        "properties": {
          "customerServicePhoneNum": {
            "maxLength": 10,
            "minLength": 10,
            "pattern": "^[^1].*",
            "type": "string"
          },
          "federalTaxId": {
            "pattern": "^(\\d|\\*){9}$",
            "type": "string"
          },
          "dateOfStartBusiness": {
            "format": "date-time",
            "type": "string"
          },
          "merchantEmail": {
            "type": "string"
          },
          "merchantWebsite": {
            "pattern": "^((https?):\\/\\/)?(([wW]{3}\\.)?([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,100})((\\/([\\w-]+\\/?)*)?)$",
            "type": "string"
          },
          "multipleLocations": {
            "type": "boolean"
          },
          "numOfLocations": {
            "format": "int32",
            "type": "integer"
          },
          "legalAddress": {
            "$ref": "#/components/schemas/AddressBase"
          },
          "dbaAddress": {
            "$ref": "#/components/schemas/AddressBase"
          },
          "primaryOwner": {
            "$ref": "#/components/schemas/Owner"
          },
          "secondaryOwner": {
            "$ref": "#/components/schemas/SecondaryOwner"
          },
          "owner3": {
            "$ref": "#/components/schemas/SecondaryOwner"
          },
          "owner4": {
            "$ref": "#/components/schemas/SecondaryOwner"
          },
          "controllingOfficer1": {
            "$ref": "#/components/schemas/ControllingOfficer"
          },
          "controllingOfficer2": {
            "$ref": "#/components/schemas/ControllingOfficer"
          }
        }
      },
      "TsysMerchantAccount": {
        "required": [
          "sic",
          "typeOfOwnership",
          "businessType",
          "accountNumber",
          "businessCheckingRoutingNumber",
          "achMethod",
          "averageTicket",
          "monthlyVolume",
          "retail",
          "imprint",
          "moto",
          "internet"
        ],
        "type": "object",
        "properties": {
          "sic": {
            "type": "string"
          },
          "sellingRegulatedSubstances": {
            "type": "boolean"
          },
          "massageServices": {
            "type": "boolean"
          },
          "sellingGasFuel": {
            "type": "boolean"
          },
          "typeOfOwnership": {
            "enum": [
              "Corporation",
              "SoleProprietorship",
              "Partnership",
              "AssociationEstateTrust",
              "TaxExempt501C",
              "International",
              "LimitedLiabilityLlc",
              "GovernmentAgency"
            ],
            "type": "string"
          },
          "businessType": {
            "enum": [
              "Other",
              "Internet",
              "Lodging",
              "MailOrder",
              "Restaurant",
              "Retail",
              "QSR",
              "Supermarket",
              "Petroleum",
              "Utilities",
              "Healthcare",
              "Education",
              "Government",
              "Charity_NonProfit",
              "B2B",
              "Service"
            ],
            "type": "string"
          },
          "accountType": {
            "enum": [
              "C",
              "S",
              "G"
            ],
            "type": "string"
          },
          "accountNumber": {
            "maxLength": 17,
            "minLength": 0,
            "pattern": "^\\d*$",
            "type": "string"
          },
          "businessCheckingRoutingNumber": {
            "pattern": "^\\d{9}$",
            "type": "string"
          },
          "achMethod": {
            "enum": [
              "Combine",
              "Deposit",
              "CombineAndDeposit"
            ],
            "type": "string"
          },
          "averageTicket": {
            "format": "int64",
            "minimum": 1,
            "type": "integer"
          },
          "highTicket": {
            "format": "int32",
            "maximum": 999999,
            "minimum": 1,
            "type": "integer"
          },
          "salesToConsumers": {
            "format": "double",
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          },
          "salesToBusiness": {
            "format": "double",
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          },
          "salesToGovernment": {
            "format": "double",
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          },
          "bankName": {
            "type": "string"
          },
          "goodsAndServices": {
            "type": "string"
          },
          "returnPolicy": {
            "type": "string"
          },
          "nextDayFunding": {
            "type": "boolean"
          },
          "sameDayFunding": {
            "type": "boolean"
          },
          "isVsMcDsNetwork": {
            "type": "boolean"
          },
          "monthlyVolume": {
            "format": "int64",
            "minimum": 1,
            "type": "integer"
          },
          "annualVolume": {
            "format": "int64",
            "minimum": 1,
            "type": "integer",
            "readOnly": true
          },
          "retail": {
            "format": "int32",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "imprint": {
            "format": "int32",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "moto": {
            "format": "int32",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "internet": {
            "format": "int32",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "cardNotPresentInformation": {
            "$ref": "#/components/schemas/TsysCnpInformation"
          }
        }
      },
      "TsysSiteInspection": {
        "type": "object",
        "properties": {
          "inventoryMaintainedType": {
            "enum": [
              "OnSite",
              "WarehouseOffSite",
              "FulfillmentCenter"
            ],
            "type": "string"
          },
          "fulfillmentCenterNameAndAddress": {
            "type": "string"
          },
          "question1": {
            "type": "boolean"
          },
          "question1Explanation": {
            "type": "string"
          },
          "question2": {
            "type": "boolean"
          },
          "question2Explanation": {
            "type": "string"
          },
          "question3": {
            "type": "boolean"
          },
          "question3Explanation": {
            "type": "string"
          },
          "question4": {
            "type": "boolean"
          },
          "question4Explanation": {
            "type": "string"
          },
          "zoning": {
            "enum": [
              "Comml",
              "Industrial",
              "Residential"
            ],
            "type": "string"
          },
          "squareFootageType": {
            "enum": [
              "From_0_To_500",
              "From_501_To_1000",
              "From_1001_To_2000",
              "From_2001_To_4000",
              "Other"
            ],
            "type": "string"
          },
          "squareFootageTypeOther": {
            "format": "int32",
            "type": "integer"
          },
          "merchant": {
            "enum": [
              "Owns",
              "Leases"
            ],
            "type": "string"
          },
          "nameAddressLandlord": {
            "type": "string"
          }
        }
      },
      "TsysProductSetup": {
        "type": "object",
        "properties": {
          "amexESA": {
            "type": "boolean"
          },
          "amexOptBlue": {
            "type": "boolean"
          },
          "discover": {
            "type": "boolean"
          },
          "payPal": {
            "type": "boolean"
          },
          "jcb": {
            "type": "boolean"
          },
          "ebt": {
            "type": "boolean"
          },
          "debitCard": {
            "type": "boolean"
          },
          "amexNumber": {
            "pattern": "^\\d{10}$",
            "type": "string"
          },
          "fcsNumber": {
            "pattern": "^\\d{7}$",
            "type": "string"
          }
        }
      },
      "TsysFeesV2": {
        "type": "object",
        "properties": {
          "cashDiscountRate": {
            "format": "double",
            "maximum": 100,
            "minimum": 0,
            "type": "number"
          },
          "minimumDiscountAmount": {
            "format": "double",
            "maximum": 500,
            "minimum": 0,
            "pattern": "^\\d+(.\\d{0,4})?$",
            "type": "number"
          },
          "minimumDiscountStartDate": {
            "format": "date-time",
            "type": "string"
          },
          "minimumDiscountType": {
            "enum": [
              "Daily",
              "Monthly"
            ],
            "type": "string"
          },
          "earlyTerminationFeeAmount": {
            "format": "double",
            "maximum": 999999,
            "minimum": 0,
            "type": "number"
          },
          "earlyTerminationFeeContractMonths": {
            "format": "int32",
            "maximum": 60,
            "minimum": 0,
            "type": "integer"
          },
          "amex": {
            "$ref": "#/components/schemas/AmexFees"
          },
          "visaMasterCardDiscover": {
            "$ref": "#/components/schemas/VisaMasterCardDiscoverFees"
          },
          "authorizationMonthlyAndSpecialProgram": {
            "$ref": "#/components/schemas/AuthorizationMonthlyAndSpecialProgramFees"
          },
          "pos": {
            "$ref": "#/components/schemas/POSFees"
          },
          "standard": {
            "$ref": "#/components/schemas/StandardFees"
          },
          "cardBrand": {
            "$ref": "#/components/schemas/CardBrandFees"
          },
          "debitPinAndEBT": {
            "$ref": "#/components/schemas/DebitPinAndEBTFees"
          },
          "gatewayProducts": {
            "$ref": "#/components/schemas/GatewayProductsFees"
          },
          "miscFees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TsysMiscFee"
            }
          },
          "miscFeesVolume": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TsysMiscFee"
            }
          }
        }
      },
      "TsysEquipment": {
        "required": [
          "terminals"
        ],
        "type": "object",
        "properties": {
          "terminals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TsysTerminal"
            }
          }
        }
      },
      "AddressBase": {
        "required": [
          "name",
          "address",
          "postalCode",
          "city",
          "state",
          "phone"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "address2": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "state": {
            "enum": [
              "Alaska",
              "Alabama",
              "Arkansas",
              "Arizona",
              "California",
              "Colorado",
              "Connecticut",
              "DistrictOfColumbia",
              "Delaware",
              "Florida",
              "Georgia",
              "Hawaii",
              "Iowa",
              "Idaho",
              "Illinois",
              "Indiana",
              "Kansas",
              "Kentucky",
              "Louisiana",
              "Massachusetts",
              "Maryland",
              "Maine",
              "Michigan",
              "Minnesota",
              "Missouri",
              "Mississippi",
              "Montana",
              "NorthCarolina",
              "NorthDakota",
              "Nebraska",
              "NewHampshire",
              "NewJersey",
              "NewMexico",
              "Nevada",
              "NewYork",
              "Ohio",
              "Oklahoma",
              "Oregon",
              "Pennsylvania",
              "PuertoRico",
              "RhodeIsland",
              "SouthCarolina",
              "SouthDakota",
              "Tennessee",
              "Texas",
              "Utah",
              "Virginia",
              "VirginIslands",
              "Vermont",
              "Washington",
              "Wisconsin",
              "WestVirginia",
              "Wyoming"
            ],
            "type": "string"
          },
          "phone": {
            "pattern": "^[^1].*",
            "type": "string"
          },
          "fax": {
            "pattern": "^[^1].*",
            "type": "string"
          }
        }
      },
      "Owner": {
        "required": [
          "firstName",
          "lastName",
          "dateOfBirth",
          "ssn",
          "address",
          "city",
          "state",
          "zip",
          "homePhone",
          "title",
          "ownership",
          "email"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 25,
            "minLength": 2,
            "pattern": "^\\s*[A-Za-z]+\\s*$",
            "type": "string"
          },
          "middleName": {
            "maxLength": 25,
            "minLength": 2,
            "pattern": "^\\s*[A-Za-z]+\\s*$",
            "type": "string"
          },
          "lastName": {
            "maxLength": 25,
            "minLength": 2,
            "pattern": "^\\s*[A-Za-z]+\\s*$",
            "type": "string"
          },
          "dateOfBirth": {
            "format": "date-time",
            "type": "string"
          },
          "ssn": {
            "pattern": "^(?!000000000|111111111|222222222|333333333|444444444|55555555|666666666|777777777|888888888|999999999|123456789|987654321|012345678|087654321)\\d{9}$",
            "type": "string"
          },
          "address": {
            "maxLength": 40,
            "minLength": 0,
            "pattern": "^[A-Za-z\\d\\s]+$",
            "type": "string"
          },
          "city": {
            "maxLength": 25,
            "minLength": 2,
            "type": "string"
          },
          "state": {
            "enum": [
              "Alaska",
              "Alabama",
              "Arkansas",
              "Arizona",
              "California",
              "Colorado",
              "Connecticut",
              "DistrictOfColumbia",
              "Delaware",
              "Florida",
              "Georgia",
              "Hawaii",
              "Iowa",
              "Idaho",
              "Illinois",
              "Indiana",
              "Kansas",
              "Kentucky",
              "Louisiana",
              "Massachusetts",
              "Maryland",
              "Maine",
              "Michigan",
              "Minnesota",
              "Missouri",
              "Mississippi",
              "Montana",
              "NorthCarolina",
              "NorthDakota",
              "Nebraska",
              "NewHampshire",
              "NewJersey",
              "NewMexico",
              "Nevada",
              "NewYork",
              "Ohio",
              "Oklahoma",
              "Oregon",
              "Pennsylvania",
              "PuertoRico",
              "RhodeIsland",
              "SouthCarolina",
              "SouthDakota",
              "Tennessee",
              "Texas",
              "Utah",
              "Virginia",
              "VirginIslands",
              "Vermont",
              "Washington",
              "Wisconsin",
              "WestVirginia",
              "Wyoming"
            ],
            "type": "string"
          },
          "zip": {
            "pattern": "^\\d{5}(-\\d{4})?$",
            "type": "string"
          },
          "homePhone": {
            "pattern": "^[^1].*",
            "type": "string"
          },
          "title": {
            "enum": [
              "President",
              "VPresident",
              "Owner",
              "Partner",
              "Manager",
              "Treasurer",
              "Secretary",
              "ExecDirector"
            ],
            "type": "string"
          },
          "ownership": {
            "format": "int32",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "email": {
            "maxLength": 60,
            "minLength": 0,
            "type": "string"
          },
          "guarantor": {
            "type": "boolean"
          },
          "typeOfIssuedID": {
            "enum": [
              "USPassport",
              "PermanentRegistrationCard",
              "DriversLicense",
              "USMilitaryCard",
              "USCostGuardMerchantMarinerCard",
              "USCitizenIdCard"
            ],
            "type": "string"
          },
          "idNumber": {
            "pattern": "^[a-zA-Z0-9]+$",
            "type": "string"
          },
          "idExpirationDate": {
            "format": "date-time",
            "type": "string"
          }
        }
      },
      "SecondaryOwner": {
        "required": [
          "firstName",
          "lastName",
          "dateOfBirth",
          "ssn",
          "address",
          "city",
          "state",
          "zip",
          "homePhone",
          "title",
          "ownership",
          "email"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 25,
            "minLength": 2,
            "pattern": "^\\s*[A-Za-z]+\\s*$",
            "type": "string"
          },
          "middleName": {
            "maxLength": 25,
            "minLength": 2,
            "pattern": "^\\s*[A-Za-z]+\\s*$",
            "type": "string"
          },
          "lastName": {
            "maxLength": 25,
            "minLength": 2,
            "pattern": "^\\s*[A-Za-z]+\\s*$",
            "type": "string"
          },
          "dateOfBirth": {
            "format": "date-time",
            "type": "string"
          },
          "ssn": {
            "pattern": "^(?!000000000|111111111|222222222|333333333|444444444|55555555|666666666|777777777|888888888|999999999|123456789|987654321|012345678|087654321)\\d{9}$",
            "type": "string"
          },
          "address": {
            "maxLength": 40,
            "minLength": 0,
            "pattern": "^[A-Za-z\\d\\s]+$",
            "type": "string"
          },
          "city": {
            "maxLength": 25,
            "minLength": 2,
            "type": "string"
          },
          "state": {
            "enum": [
              "Alaska",
              "Alabama",
              "Arkansas",
              "Arizona",
              "California",
              "Colorado",
              "Connecticut",
              "DistrictOfColumbia",
              "Delaware",
              "Florida",
              "Georgia",
              "Hawaii",
              "Iowa",
              "Idaho",
              "Illinois",
              "Indiana",
              "Kansas",
              "Kentucky",
              "Louisiana",
              "Massachusetts",
              "Maryland",
              "Maine",
              "Michigan",
              "Minnesota",
              "Missouri",
              "Mississippi",
              "Montana",
              "NorthCarolina",
              "NorthDakota",
              "Nebraska",
              "NewHampshire",
              "NewJersey",
              "NewMexico",
              "Nevada",
              "NewYork",
              "Ohio",
              "Oklahoma",
              "Oregon",
              "Pennsylvania",
              "PuertoRico",
              "RhodeIsland",
              "SouthCarolina",
              "SouthDakota",
              "Tennessee",
              "Texas",
              "Utah",
              "Virginia",
              "VirginIslands",
              "Vermont",
              "Washington",
              "Wisconsin",
              "WestVirginia",
              "Wyoming"
            ],
            "type": "string"
          },
          "zip": {
            "pattern": "^\\d{5}(-\\d{4})?$",
            "type": "string"
          },
          "homePhone": {
            "pattern": "^[^1].*",
            "type": "string"
          },
          "title": {
            "enum": [
              "President",
              "VPresident",
              "Owner",
              "Partner",
              "Manager",
              "Treasurer",
              "Secretary",
              "ExecDirector"
            ],
            "type": "string"
          },
          "ownership": {
            "format": "int32",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "email": {
            "maxLength": 60,
            "minLength": 0,
            "type": "string"
          },
          "guarantor": {
            "type": "boolean"
          },
          "typeOfIssuedID": {
            "enum": [
              "USPassport",
              "PermanentRegistrationCard",
              "DriversLicense",
              "USMilitaryCard",
              "USCostGuardMerchantMarinerCard",
              "USCitizenIdCard"
            ],
            "type": "string"
          },
          "idNumber": {
            "pattern": "^[a-zA-Z0-9]+$",
            "type": "string"
          },
          "idExpirationDate": {
            "format": "date-time",
            "type": "string"
          }
        }
      },
      "ControllingOfficer": {
        "required": [
          "dateOfBirth",
          "ssn",
          "firstName",
          "lastName",
          "title",
          "address",
          "zip",
          "city",
          "state",
          "homePhone"
        ],
        "type": "object",
        "properties": {
          "dateOfBirth": {
            "format": "date-time",
            "type": "string"
          },
          "ssn": {
            "pattern": "^(?!000000000|111111111|222222222|333333333|444444444|55555555|666666666|777777777|888888888|999999999|123456789|987654321|012345678|087654321)\\d{9}$",
            "type": "string"
          },
          "firstName": {
            "maxLength": 25,
            "minLength": 2,
            "pattern": "^\\s*[A-Za-z]+\\s*$",
            "type": "string"
          },
          "middleName": {
            "maxLength": 25,
            "minLength": 2,
            "pattern": "^\\s*[A-Za-z]+\\s*$",
            "type": "string"
          },
          "lastName": {
            "maxLength": 25,
            "minLength": 2,
            "pattern": "^\\s*[A-Za-z]+\\s*$",
            "type": "string"
          },
          "title": {
            "enum": [
              "President",
              "VPresident",
              "Owner",
              "Partner",
              "Manager",
              "Treasurer",
              "Secretary",
              "ExecDirector"
            ],
            "type": "string"
          },
          "address": {
            "maxLength": 40,
            "minLength": 0,
            "pattern": "^[A-Za-z\\d\\s]+$",
            "type": "string"
          },
          "zip": {
            "pattern": "^\\d{5}(-\\d{4})?$",
            "type": "string"
          },
          "city": {
            "maxLength": 25,
            "minLength": 2,
            "type": "string"
          },
          "state": {
            "enum": [
              "Alaska",
              "Alabama",
              "Arkansas",
              "Arizona",
              "California",
              "Colorado",
              "Connecticut",
              "DistrictOfColumbia",
              "Delaware",
              "Florida",
              "Georgia",
              "Hawaii",
              "Iowa",
              "Idaho",
              "Illinois",
              "Indiana",
              "Kansas",
              "Kentucky",
              "Louisiana",
              "Massachusetts",
              "Maryland",
              "Maine",
              "Michigan",
              "Minnesota",
              "Missouri",
              "Mississippi",
              "Montana",
              "NorthCarolina",
              "NorthDakota",
              "Nebraska",
              "NewHampshire",
              "NewJersey",
              "NewMexico",
              "Nevada",
              "NewYork",
              "Ohio",
              "Oklahoma",
              "Oregon",
              "Pennsylvania",
              "PuertoRico",
              "RhodeIsland",
              "SouthCarolina",
              "SouthDakota",
              "Tennessee",
              "Texas",
              "Utah",
              "Virginia",
              "VirginIslands",
              "Vermont",
              "Washington",
              "Wisconsin",
              "WestVirginia",
              "Wyoming"
            ],
            "type": "string"
          },
          "homePhone": {
            "pattern": "^[^1].*",
            "type": "string"
          },
          "typeOfIssuedID": {
            "enum": [
              "USPassport",
              "PermanentRegistrationCard",
              "DriversLicense",
              "USMilitaryCard",
              "USCostGuardMerchantMarinerCard",
              "USCitizenIdCard"
            ],
            "type": "string"
          },
          "idNumber": {
            "pattern": "^[a-zA-Z0-9]+$",
            "type": "string"
          },
          "idExpirationDate": {
            "format": "date-time",
            "type": "string"
          },
          "guarantor": {
            "type": "boolean"
          },
          "email": {
            "maxLength": 60,
            "minLength": 0,
            "type": "string"
          }
        }
      },
      "TsysCnpInformation": {
        "type": "object",
        "properties": {
          "isWebHosting": {
            "type": "boolean"
          },
          "isDomainRegistration": {
            "type": "boolean"
          },
          "isWebPageDesign": {
            "type": "boolean"
          },
          "isAuction": {
            "type": "boolean"
          },
          "isInternetServiceGateway": {
            "type": "boolean"
          },
          "isSellingDigitalService": {
            "type": "boolean"
          },
          "isAdvertisement": {
            "type": "boolean"
          },
          "isSellingHardGoods": {
            "type": "boolean"
          },
          "isOther": {
            "type": "boolean"
          },
          "otherInternetBusinessType": {
            "type": "string"
          },
          "advertiseOrPromotion": {
            "type": "string"
          },
          "secureTransactionInformation": {
            "type": "string"
          },
          "vendors": {
            "type": "string"
          },
          "productFulfillment": {
            "type": "string"
          },
          "saleDescription": {
            "type": "string"
          },
          "monthly": {
            "format": "int32",
            "type": "integer"
          },
          "yearly": {
            "format": "int32",
            "type": "integer"
          },
          "quarterly": {
            "format": "int32",
            "type": "integer"
          },
          "oneTime": {
            "format": "int32",
            "type": "integer"
          },
          "hourly": {
            "format": "int32",
            "type": "integer"
          },
          "isMonthly": {
            "type": "boolean"
          },
          "isYearly": {
            "type": "boolean"
          },
          "isQuarterly": {
            "type": "boolean"
          },
          "isOneTime": {
            "type": "boolean"
          },
          "isHourly": {
            "type": "boolean"
          }
        }
      },
      "AmexFees": {
        "type": "object",
        "properties": {
          "interchangePlus": {
            "$ref": "#/components/schemas/AmexInterchangePlus"
          },
          "tieredDiscounts": {
            "$ref": "#/components/schemas/AmexTieredDiscounts"
          },
          "noSurcharge": {
            "$ref": "#/components/schemas/AmexNoSurcharge"
          },
          "amexInterchangePlusPlus": {
            "$ref": "#/components/schemas/AmexInterchangePlusPlus"
          }
        }
      },
      "VisaMasterCardDiscoverFees": {
        "type": "object",
        "properties": {
          "billBackIntrDifferential": {
            "$ref": "#/components/schemas/BillBackIntrDifferential"
          },
          "interchangePlus": {
            "$ref": "#/components/schemas/InterchangePlus"
          },
          "noSurcharge": {
            "$ref": "#/components/schemas/NoSurcharge"
          },
          "tieredDiscountsMOTOEcomm": {
            "$ref": "#/components/schemas/TieredDiscountsMOTOEcomm"
          },
          "tieredDiscountsRetail": {
            "$ref": "#/components/schemas/TieredDiscountsRetail"
          },
          "customInterchange": {
            "$ref": "#/components/schemas/CustomInterchange"
          },
          "customInterchangeDurbin": {
            "$ref": "#/components/schemas/CustomInterchangeDurbin"
          },
          "interchangePlusPlus": {
            "$ref": "#/components/schemas/InterchangePlusPlus"
          }
        }
      },
      "AuthorizationMonthlyAndSpecialProgramFees": {
        "type": "object",
        "properties": {
          "vsmcdiscAuth": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "amexAuth": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "avs": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "batch": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "voiceAuthorization": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "retrieval": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "chargeback": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "chargebackViolation": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "achReject": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "merchAnnual": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "statement": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "reporting1099K": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "tinMismatch": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "pciAnnual": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "pciNonCompliance": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "pciMonthly": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "pciQuarterly": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "visaRapidDisputeResolution": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "POSFees": {
        "type": "object",
        "properties": {
          "fullPackage": {
            "$ref": "#/components/schemas/TsysPOSFee"
          },
          "fullPackageOnePrinter": {
            "$ref": "#/components/schemas/TsysPOSFee"
          },
          "tableSidePOSPackage": {
            "$ref": "#/components/schemas/TsysPOSFee"
          },
          "protectionPackage": {
            "$ref": "#/components/schemas/TsysPOSFee"
          },
          "posLicence": {
            "$ref": "#/components/schemas/TsysPOSFee"
          },
          "tableSidePOSLicence": {
            "$ref": "#/components/schemas/TsysPOSFee"
          },
          "mposLicence": {
            "$ref": "#/components/schemas/TsysPOSFee"
          },
          "menuLicence": {
            "$ref": "#/components/schemas/TsysPOSFee"
          },
          "kioskLicence": {
            "$ref": "#/components/schemas/TsysPOSFee"
          },
          "onlineOrderingLicence": {
            "$ref": "#/components/schemas/TsysPOSFee"
          }
        }
      },
      "StandardFees": {
        "type": "object",
        "properties": {
          "dialPay": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "onlinePortal": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "motoEcommSurchargePI": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "nextDayFunding": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "sameDayFunding": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "CardBrandFees": {
        "type": "object",
        "properties": {
          "cardBrand": {
            "type": "boolean"
          },
          "mastercardLicense": {
            "type": "boolean"
          },
          "pinDebitCardBrandFees": {
            "type": "boolean"
          }
        }
      },
      "DebitPinAndEBTFees": {
        "type": "object",
        "properties": {
          "pinDebitMonthly": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "pinDebitQualifiedDiscount": {
            "$ref": "#/components/schemas/TsysFeeDiscountType"
          },
          "pinDebitAuth": {
            "$ref": "#/components/schemas/TsysFeeDiscountType"
          },
          "pinDebitAnnual": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "ebtTrans": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "pinDebitPassThruIC": {
            "type": "boolean"
          }
        }
      },
      "GatewayProductsFees": {
        "type": "object",
        "properties": {
          "micros": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "wirelessAndMobilePOSPI": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "gatewayAccess": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "gatewayPerItem": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "wirelessActivation": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "wirelessAccess": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "unifiedmPOSActivation": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "unifiedmPOSAccess": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "unifiedmPOSTransactions": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "TsysMiscFee": {
        "required": [
          "name",
          "frequency",
          "perItem",
          "percent"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "stopDate": {
            "format": "date-time",
            "type": "string"
          },
          "startDate": {
            "format": "date-time",
            "type": "string"
          },
          "frequency": {
            "enum": [
              "Annual",
              "SemiAnnual",
              "Quarterly",
              "Monthly",
              "OneTime"
            ],
            "type": "string"
          },
          "month": {
            "format": "int32",
            "type": "integer"
          },
          "year": {
            "format": "int32",
            "type": "integer"
          },
          "perItem": {
            "format": "double",
            "type": "number"
          },
          "percent": {
            "format": "double",
            "type": "number"
          }
        }
      },
      "TsysTerminal": {
        "required": [
          "terminalType"
        ],
        "type": "object",
        "properties": {
          "terminalType": {
            "enum": [
              "HYPERCOM_M4230_SPOSDCC",
              "HYPERCOM_T4230_SPOSDCC",
              "INGENICO_ICT220_INGEMV4",
              "INGENICO_ICT220CTL_INGEMV4",
              "INGENICO_ICT250_INGEMV4",
              "INGENICO_IWL220_INGEMV4",
              "INGENICO_IWL250_INGEMV4",
              "INGENICO_IPP320_INGEMV4",
              "VERIFONE_VX520_XEVA440",
              "VERIFONE_VX680_XEVA440",
              "CLSBPLUS_PAX",
              "MULTIPASS",
              "HCSTAGE",
              "DIAL_PAY",
              "NETEVIA_GATEWAY",
              "AUTH_NET_GATEWAY",
              "NMI_Unified_Gateway",
              "USAePay_Gateway",
              "Aldelo_EDC",
              "Cardflight_mPOS",
              "Dejavoo_Z8",
              "Dejavoo_Z9",
              "Dejavoo_Z11",
              "Pax_S80",
              "Pax_S300",
              "Poynt",
              "EHopper",
              "Freedom_POS",
              "Netevia_Light_POS",
              "STGENCR",
              "HCSTGEN",
              "ValorVP100",
              "ValorVP300",
              "DejavooQD2",
              "DejavooQD4",
              "DejavooQD3",
              "DejavooQD5",
              "DejavooP1",
              "DejavooP3",
              "DejavooP5",
              "ValorVL100",
              "ValorVL300",
              "ValorVL110",
              "ValorVP550",
              "ValorVP800",
              "ValorRCKT",
              "ValorVirtualTerminal"
            ],
            "type": "string"
          }
        }
      },
      "AmexInterchangePlus": {
        "type": "object",
        "properties": {
          "qualifiedDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "AmexTieredDiscounts": {
        "type": "object",
        "properties": {
          "qualifiedDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "midQual": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "nonQual": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "AmexNoSurcharge": {
        "type": "object",
        "properties": {
          "qualDiscount": {
            "$ref": "#/components/schemas/TsysFeeDiscountType"
          }
        }
      },
      "AmexInterchangePlusPlus": {
        "type": "object",
        "properties": {
          "qualifiedDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "midQual": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "nonQual": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "BillBackIntrDifferential": {
        "type": "object",
        "properties": {
          "vsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "vsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "vsNonQualICDiff": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcNonQualICDiff": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsNonQualICDiff": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "axNonQualICDiff": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "InterchangePlus": {
        "type": "object",
        "properties": {
          "vsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "vsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "NoSurcharge": {
        "type": "object",
        "properties": {
          "vsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFeeDiscountType"
          },
          "vsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFeeDiscountType"
          },
          "mcQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFeeDiscountType"
          },
          "mcQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFeeDiscountType"
          },
          "dsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFeeDiscountType"
          },
          "dsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFeeDiscountType"
          }
        }
      },
      "TieredDiscountsMOTOEcomm": {
        "type": "object",
        "properties": {
          "vsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "vsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "midMOTO": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "nonQual": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "TieredDiscountsRetail": {
        "type": "object",
        "properties": {
          "vsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "vsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "midQual": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "nonQual": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "CustomInterchange": {
        "type": "object",
        "properties": {
          "vcMcDsInterSurcharge": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "vsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "vsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "CustomInterchangeDurbin": {
        "type": "object",
        "properties": {
          "interSurcharge": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "interNonSurcharge": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "regulatedDbSurcharge": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "vsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "vsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "mcQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualCrDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "dsQualDbDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "InterchangePlusPlus": {
        "type": "object",
        "properties": {
          "qualifiedDiscount": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "midQual": {
            "$ref": "#/components/schemas/TsysFee"
          },
          "nonQual": {
            "$ref": "#/components/schemas/TsysFee"
          }
        }
      },
      "TsysFee": {
        "required": [
          "perItem",
          "percent"
        ],
        "type": "object",
        "properties": {
          "perItem": {
            "format": "double",
            "type": "number"
          },
          "percent": {
            "format": "double",
            "type": "number"
          }
        }
      },
      "TsysPOSFee": {
        "required": [
          "count",
          "perItem",
          "percent"
        ],
        "type": "object",
        "properties": {
          "count": {
            "format": "int32",
            "type": "integer"
          },
          "perItem": {
            "format": "double",
            "type": "number"
          },
          "percent": {
            "format": "double",
            "type": "number"
          }
        }
      },
      "TsysFeeDiscountType": {
        "required": [
          "perItem",
          "percent"
        ],
        "type": "object",
        "properties": {
          "discountType": {
            "enum": [
              "Daily",
              "Monthly"
            ],
            "type": "string"
          },
          "perItem": {
            "format": "double",
            "type": "number"
          },
          "percent": {
            "format": "double",
            "type": "number"
          }
        }
      },
      "ApiResult1_SubmitMerchantResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SubmitMerchantResponse"
          },
          "requestId": {
            "format": "int32",
            "type": "integer"
          },
          "success": {
            "type": "boolean"
          },
          "error": {
            "type": "string"
          },
          "validationErrors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            }
          }
        }
      },
      "SubmitMerchantResponse": {
        "type": "object",
        "properties": {
          "merchantProfileId": {
            "format": "int32",
            "type": "integer"
          }
        }
      }
    }
  }
}
```