TabaPay SubClient API
This resource represents a Client's SubClient.
This resource represents a Client's SubClient.
openapi: 3.0.0
info:
title: TabaPay APIs 3D Secure SubClient API
description: TabaPay Resource and Service Operations
version: 1.0.0
license:
name: All rights reserved
servers:
- url: https://{FQDN}:{PORT}
description: TabaPay APIs
variables:
FQDN:
default: FQDN
description: Contact [TabaPay Support](https://tabapay.zendesk.com/hc/en-us/requests/new) for the Fully Qualified Domain Name you should be using.
PORT:
default: PORT
description: Ensure you have the capability to access the PORT TabaPay specifies in your credentials file.
security:
- bearerAuth: []
tags:
- name: SubClient
description: This resource represents a Client's SubClient.
paths:
/v4/clients/{ClientID}/subclients/{SubClientID}:
post:
tags:
- SubClient
summary: Create SubClient
description: "Creates a Client's SubClient Registration.\n\n*For <<glossary:ISO>>s (Independent Sales Organization) only.* \n\n Request to enable at [TabaPay Support](https://tabapay.zendesk.com/hc/en-us/requests/new#/) or [help@tabapay.com](mailto:help@tabapay.com)"
operationId: createsubclient
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/SubClientID'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/subclientCreate'
required: true
responses:
'200':
description: Client's SubClient Registration Created.
content:
application/json:
schema:
$ref: '#/components/schemas/createSubClientResponse'
example:
SC: 200
EC: '0'
'207':
description: One or more failures occurred while processing the Request.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCEC'
example:
SC: 207
EC: InternalErrorCode
delete:
tags:
- SubClient
summary: Delete SubClient
description: 'Deletes a Client''s SubClient Registration.
*For <<glossary:ISO>>s (Independent Sales Organization) only.*'
operationId: deletesubclient
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/SubClientID'
responses:
'200':
description: The SubClient has been marked for deletion.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCEC'
example:
SC: 200
EC: '0'
'404':
description: SubClient Registration not found.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCECEM'
example:
SC: 404
EC: Internal Error Code
EM: SubClient Not Found.
get:
tags:
- SubClient
summary: Retrieve SubClient
description: 'Retrieves a Client''s SubClient Registration.
*For <<glossary:ISO>>s (Independent Sales Organization) only.*'
operationId: retrievesubclient
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/SubClientID'
responses:
'200':
description: The SubClient registration is retrieved..
content:
application/json:
schema:
$ref: '#/components/schemas/retrieveSubClientResponse'
example:
SC: 200
EC: '0'
name: TabaPay
tin: '123456789'
type: L-Corp
url: www.tabapay.com
email: help@tabapay.com
address:
line1: 605 Ellis Street
line2: Suite 110
city: Mountain View
state: CA
zipcode: '94043'
phone:
number: '4159808222'
mcc: 1234
mvv: 1234
maid: 1234
settlement:
purchase:
routingNumber: 121140399
accountNumber: 12345
disbursement:
routingNumber: 121140399
accountNumber: 12345
fee:
routingNumber: 121140399
accountNumber: 12345
exception:
routingNumber: 121140399
accountNumber: 12345
'404':
description: SubClient Registration not found.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCECEM'
example:
SC: 404
EC: InternalErrorCode
EM: SubClient Registration Not Found.
put:
tags:
- SubClient
summary: Update SubClient
description: 'Updates a Client''s SubClient Registration.
*For <<glossary:ISO>>s (Independent Sales Organization) only.*'
operationId: updatesubclient
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/SubClientID'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/subclientUpdate'
required: true
responses:
'200':
description: The SubClient Information has been updated.
content:
application/json:
schema:
$ref: '#/components/schemas/createSubClientResponse'
example:
SC: 200
EC: '0'
/v2/clients/{ClientID}/subclients/{SubClientID}:
post:
tags:
- SubClient
summary: Create SubClient
description: "Creates a Client's SubClient Registration.\n\n*For <<glossary:ISO>>s (Independent Sales Organization) only.* \n\n Request to enable at [TabaPay Support](https://tabapay.zendesk.com/hc/en-us/requests/new#/) or [help@tabapay.com](mailto:help@tabapay.com)\n\nThis endpoint is split from the original `/subclients` endpoint."
operationId: createsubclient2
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/SubClientID'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/subclient2Create'
examples:
NaturalPerson:
value:
type: NaturalPerson
settlement:
exception:
ledgerID: 22characterledgerID123
purchase:
ledgerID: 22characterledgerID123
disbursement:
ledgerID: 22characterledgerID123
fee:
ledgerID: 22characterledgerID123
serviceType: N
userID: 22CharacterTabaPayID12
useCase: CG
reserveAccount:
ledgerID: 22characterledgerID123
address:
line1: 123 Street
city: San Francisco
state: CA
zipcode: '94103'
phone:
number: '5555555555'
transactionTypes:
push: true
pull: true
identification:
type: SSN
number: '123456789'
cardTypes:
push:
debit: true
credit: true
prepaid: true
pull:
debit: true
credit: true
prepaid: true
visa:
push:
enabled: true
pull:
enabled: true
mastercard:
push:
enabled: true
pull:
enabled: true
discover:
push:
enabled: true
pull:
enabled: true
fees:
type: IPP
name: Test Name
email: ' test@gmail.com'
LLC:
value:
address:
line1: 1234 Street
city: San Francisco
state: CA
zipcode: '94103'
phone:
number: '5555555555'
transactionTypes:
push: true
pull: true
identification:
type: EIN
number: '123122349'
cardTypes:
push:
debit: true
credit: true
prepaid: true
pull:
debit: true
credit: true
prepaid: true
visa:
push:
enabled: true
pull:
enabled: true
mastercard:
push:
enabled: true
pull:
enabled: true
discover:
push:
enabled: true
pull:
enabled: true
settlement:
purchase:
routingNumber: '123456780'
accountNumber: '123456978'
ledgerID: 22CharacterledgerID123
disbursement:
routingNumber: '123456789'
accountNumber: '123456788'
ledgerID: 22CharacterledgerID123
fee:
routingNumber: '123456789'
accountNumber: '123456789'
ledgerID: 22CharacterledgerID123
exception:
routingNumber: '123456789'
ledgerID: 22CharacterledgerID123
serviceType: N
fees:
type: MDR
reserveAccount:
routingNumber: '123456789'
accountNumber: '123456789'
ledgerID: 22characterledgerID123
name: Samwise Gamgee
tin: '123456789'
type: LLC
url: https://example.com
email: test@email.com
mcc: '1299'
mvv: '123456'
maid: '123455'
userID: 22CharacterTabaPayID12
iso: '123'
useCase: EC
required: true
responses:
'200':
description: Client's SubClient Registration Created.
content:
application/json:
schema:
$ref: '#/components/schemas/createSubClientResponse'
example:
SC: 200
EC: '0'
'207':
description: One or more failures occurred while processing the Request.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCEC'
example:
SC: 207
EC: InternalErrorCode
delete:
tags:
- SubClient
summary: Delete SubClient
description: 'Deletes a Client''s SubClient Registration.
*For <<glossary:ISO>>s (Independent Sales Organization) only.*
This endpoint is split from the original `/subclients` endpoint.'
operationId: deletesubclient2
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/SubClientID'
responses:
'200':
description: The SubClient has been marked for deletion.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCEC'
example:
SC: 200
EC: '0'
'404':
description: SubClient Registration not found.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCECEM'
example:
SC: 404
EC: Internal Error Code
EM: SubClient Not Found.
get:
tags:
- SubClient
summary: Retrieve SubClient
description: 'Retrieves a Client''s SubClient Registration.
*For <<glossary:ISO>>s (Independent Sales Organization) only.*
This endpoint is split from the original `/subclients` endpoint.'
operationId: retrievesubclient2
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/SubClientID'
responses:
'200':
description: The SubClient registration is retrieved..
content:
application/json:
schema:
$ref: '#/components/schemas/retrieveSubClient2Response'
example:
SC: 200
EC: '0'
name: TabaPay
tin: '123456789'
type: L-Corp
url: www.tabapay.com
email: help@tabapay.com
address:
line1: 605 Ellis Street
line2: Suite 110
city: Mountain View
state: CA
zipcode: '94043'
phone:
number: '4159808222'
mcc: 1234
mvv: 1234
maid: 1234
settlement:
purchase:
routingNumber: 121140399
accountNumber: 12345
disbursement:
routingNumber: 121140399
accountNumber: 12345
fee:
routingNumber: 121140399
accountNumber: 12345
exception:
routingNumber: 121140399
accountNumber: 12345
'404':
description: SubClient Registration not found.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCECEM'
example:
SC: 404
EC: InternalErrorCode
EM: SubClient Registration Not Found.
put:
tags:
- SubClient
summary: Update SubClient
description: 'Updates a Client''s SubClient Registration.
*For <<glossary:ISO>>s (Independent Sales Organization) only.*
This endpoint is split from the original `/subclients` endpoint.'
operationId: updatesubclient2
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/SubClientID'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/subclient2Update'
required: true
responses:
'200':
description: The SubClient Information has been updated.
content:
application/json:
schema:
$ref: '#/components/schemas/createSubClientResponse'
example:
SC: 200
EC: '0'
components:
schemas:
businessOwner:
type: object
description: Additional individuals that own at least 25% of the entity.
required:
- firstName
- lastName
- dateOfBirth
properties:
firstName:
type: string
description: First name
middleName:
type: string
description: Middle name
lastName:
type: string
description: Last name
dateOfBirth:
type: string
description: 'Date of birth with the format: YYYYMMDD. Owner must be at least 18 years old.'
retrieveSubClientResponse:
type: object
properties:
SC:
type: string
description: HTTP Status Code
EC:
type: string
description: Internal Error Code to help TabaPay trace the error.
EM:
type: string
description: Short Description of Error if Error Occurred.
name:
type: string
description: Company Name
pattern: ^[ a-zA-Z0-9_-]$
tin:
type: string
description: '[Taxpayer Identification Number](https://en.wikipedia.org/wiki/Taxpayer_Identification_Number).'
type:
type: string
description: 'Company Type:
- `LLC`
- `LLP`
- `C-Corp`
- `S-Corp`
- `SoleProprietor`
- `Nonprofit`
- `Charitable`
- `Other`'
url:
type: string
description: Company URL
email:
$ref: '#/components/schemas/email'
address:
$ref: '#/components/schemas/address'
phone:
$ref: '#/components/schemas/phone'
mcc:
type: string
pattern: ^[0-9]{4}$
description: Merchant Category Code
mvv:
type: string
pattern: ^[0-9]{6}$
description: Visa Merchant Verification Code - requires Visa registration
maid:
type: string
pattern: ^[0-9]{6}$
description: MasterCard Identification - requires MasterCard registration
settlement:
type: object
required:
- purchase
- disbursement
- fee
- exception
description: Settlement Accounts
properties:
purchase:
type: object
description: Purchase
required:
- routingNumber
- accountNumber
properties:
routingNumber:
$ref: '#/components/schemas/routingNumber'
accountNumber:
type: string
pattern: ^[0-9]{4,17}$
description: Account Number
disbursement:
type: object
description: Disbursement
required:
- routingNumber
- accountNumber
properties:
routingNumber:
$ref: '#/components/schemas/routingNumber'
accountNumber:
type: string
pattern: ^[0-9]{4,17}$
description: Account Number
fee:
type: object
description: Fee
required:
- routingNumber
- accountNumber
properties:
routingNumber:
$ref: '#/components/schemas/routingNumber'
accountNumber:
type: string
pattern: ^[0-9]{4,17}$
description: Account Number
exception:
type: object
description: Exception
required:
- routingNumber
- accountNumber
properties:
routingNumber:
$ref: '#/components/schemas/routingNumber'
accountNumber:
type: string
pattern: ^[0-9]{4,17}$
description: Account Number
serviceType:
type: string
description: "Indicate the payment rail that TabaPay will utilize with the client/sub-client. \nOptions are: \n\n - N - Next-Day ACH (Default) \n - S - Same-Day ACH \n - R - RTP"
fees:
$ref: '#/components/schemas/fees'
reserveAccount:
$ref: '#/components/schemas/reserveAccount'
businessOwners:
type: object
description: 'Individuals that own at least 25% of the entity, or the largest owner if no one owns at least 25%.
**Note: If you plan to add/remove/modify any owner information in the future, you will need re-submit all existing information to the update SubClient API. It is recommend that you store the owner information for this purpose.**'
required:
- businessOwner1
properties:
businessOwner1:
$ref: '#/components/schemas/businessOwner'
businessOwner2:
$ref: '#/components/schemas/businessOwner'
businessOwner3:
$ref: '#/components/schemas/businessOwner'
businessOwner4:
$ref: '#/components/schemas/businessOwner'
routingNumber:
type: string
pattern: ^[0-9]{9}$
description: '[ABA routing transit number](https://en.wikipedia.org/wiki/ABA_routing_transit_number)'
subclient2Update:
type: object
properties:
name:
type: string
maxLength: 255
tin:
type: string
pattern: ^[0-9]{9}$
description: '[Taxpayer Identification Number](https://en.wikipedia.org/wiki/Taxpayer_Identification_Number) needs to be 9 digits exactly.'
type:
type: string
enum:
- LLC
- LLP
- C-Corp
- S-Corp
- SoleProprietor
- Nonprofit
- Charitable
- NaturalPerson
- Other
url:
type: string
email:
type: string
format: email
description: Valid Email Address
address:
$ref: '#/components/schemas/address'
phone:
$ref: '#/components/schemas/phone'
mcc:
type: string
pattern: ^[0-9]{4}$
mvv:
type: string
pattern: ^[0-9]{6}$
maid:
type: string
pattern: ^[0-9]{6}$
evv:
type: string
userID:
$ref: '#/components/schemas/tpUserID'
iso:
type: string
pattern: ^[0-9]{3}$
useCase:
type: string
transactionTypes:
$ref: '#/components/schemas/subclient2TransactionTypes'
identification:
$ref: '#/components/schemas/subclient2Identification'
cardTypes:
$ref: '#/components/schemas/subclient2CardTypes'
visa:
$ref: '#/components/schemas/subclient2NetworkConfig'
mastercard:
$ref: '#/components/schemas/subclient2NetworkConfig'
discover:
$ref: '#/components/schemas/subclient2NetworkConfig'
settlement:
$ref: '#/components/schemas/subclient2Settlement'
fees:
$ref: '#/components/schemas/fees'
reserveAccount:
$ref: '#/components/schemas/reserveAccount'
businessOwners:
$ref: '#/components/schemas/businessOwners'
ipAddress:
type: string
format: ipv4
dbaName:
type: string
description: Doing Business As (DBA)
payoutSchedule:
type: string
description: Partial update; only supplied fields are updated.
cardTypeFee:
type: object
description: Card Type Fee
properties:
intlCreditFixed:
type: string
description: Fixed fee for successful international credit card transactions
pattern: ^[0-9]*.?[0-9]{0,4}$
intlCreditVariable:
type: string
description: Variable fee for successful international credit card transactions ( % )
pattern: ^[0-9]*.?[0-9]{0,4}$
intlDebitFixed:
type: string
description: Fixed fee for successful international debit card transactions
pattern: ^[0-9]*.?[0-9]{0,4}$
intlDebitVariable:
type: string
description: Variable fee for successful international debit card transactions ( % )
pattern: ^[0-9]*.?[0-9]{0,4}$
creditSurchargeFixed:
type: string
description: Fixed fee for credit card surcharges
pattern: ^[0-9]*.?[0-9]{0,4}$
creditSurchargeVariable:
type: string
description: Variable fee for credit card surcharges (%)
pattern: ^[0-9]*.?[0-9]{0,4}$
amexFixed:
type: string
description: Fixed fee for successful American Express transactions
pattern: ^[0-9]*.?[0-9]{0,4}$
amexVariable:
type: string
description: Variable fee for successful American Express transactions ( % )
pattern: ^[0-9]*.?[0-9]{0,4}$
subclient2SettlementAccount:
type: object
properties:
routingNumber:
$ref: '#/components/schemas/routingNumber'
accountNumber:
type: string
pattern: ^[0-9]{4,17}$
ledgerID:
$ref: '#/components/schemas/tpLedgerID'
subclient2NetworkConfig:
type: object
properties:
push:
$ref: '#/components/schemas/subclient2NetworkDirection'
pull:
$ref: '#/components/schemas/subclient2NetworkDirection'
address:
type: object
description: Address
required:
- line1
- city
- state
- zipcode
properties:
line1:
$ref: '#/components/schemas/line1'
line2:
$ref: '#/components/schemas/line2'
city:
$ref: '#/components/schemas/city'
state:
$ref: '#/components/schemas/state'
zipcode:
$ref: '#/components/schemas/zipcode'
country:
$ref: '#/components/schemas/country'
apiResponseSCECEM:
type: object
properties:
SC:
$ref: '#/components/schemas/SC'
EC:
$ref: '#/components/schemas/EC'
EM:
$ref: '#/components/schemas/EM'
city:
type: string
description: City
pattern: ^[ a-zA-Z0-9_-]+$
subclient2CardTypes:
type: object
properties:
push:
$ref: '#/components/schemas/subclient2CardTypesDirection'
pull:
$ref: '#/components/schemas/subclient2CardTypesDirection'
line1:
type: string
description: Address Line 1
pattern: ^[ a-zA-Z0-9._-]+$
subclient2TransactionTypes:
type: object
properties:
push:
type: boolean
description: Push transaction enabled
pull:
type: boolean
description: Pull transaction enabled
apiResponseSCEC:
type: object
properties:
SC:
$ref: '#/components/schemas/SC'
EC:
$ref: '#/components/schemas/EC'
fees:
type: object
description: 'Set fees for this subclient. For more information refer to: [Fees for Sub-Clients during Boarding](https://developers.tabapay.com/docs/fees-for-sub-clients-during-boarding)'
required:
- type
properties:
type:
type: string
description: 'Type of fee - Merchant Discount Rate or Interchange Plus Plus. Values must be one of the following: MDR or IPP.'
pattern: ^[MDR]{3}|[IPP]{3}$
example: MDR
monthlyMinimumProcessingFee:
type: string
description: Merchant minimum fee if total processing fee is below the contract stated min
pattern: ^[0-9]*.?[0-9]{0,4}$
authorizationFee:
type: string
description: Authorization (no funds movement) fee; Charged on failed purchases as well.
pattern: ^[0-9]*.?[0-9]{0,4}$
AVSFee:
type: string
description: Address Verification Fee
pattern: ^[0-9]*.?[0-9]{0,4}$
deleteFee:
type: string
description: Fee charged with every successful Delete API request
pattern: ^[0-9]*.?[0-9]{0,4}$
MIDFee:
type: string
description: Fixed fee for MID being active
pattern: ^[0-9]*.?[0-9]{0,4}$
purchaseFeeFixed:
type: string
description: Fixed fee for successful purchases
pattern: ^[0-9]*.?[0-9]{0,4}$
purchaseFeeVariable:
type: string
description: Variable fee for successful purchases ( % ) So 5% will be 0.0500
pattern: ^[0-9]*.?[0-9]{0,4}$
purchaseFeeCap:
type: string
description: Cap on Purchase fee. Applies to successful purchases.
pattern: ^[0-9]*.?[0-9]{0,4}$
disbursementFeeFixed:
type: string
description: Fixed fee for successful disbursements
pattern: ^[0-9]*.?[0-9]{0,4}$
monthlySubClientFee:
type: string
description: Fixed sub-client fee per month
pattern: ^[0-9]*.?[0-9]{0,4}$
chargebackFee:
type: string
description: Fee charged on every chargeback
pattern: ^[0-9]*.?[0-9]{0,4}$
retrievalFee:
type: string
description: Fee charged on every successful Retrieve Account
pattern: ^[0-9]*.?[0-9]{0,4}$
batchFee:
type: string
description: Fee charged for batches that are run
pattern: ^[0-9]*.?[0-9]{0,4}$
ACHNextDayCreditFee:
type: string
description: Fixed fee charged on every ACH Next Day Credit transaction
pattern: ^[0-9]*.?[0-9]{0,4}$
ACHNextDayDebitFee:
type: string
description: Fixed fee charged on every ACH Next Day Debit transaction
pattern: ^[0-9]*.?[0-9]{0,4}$
ACHSameDayCreditFee:
type: string
description: Fixed fee charged on every ACH Same Day Credit transaction
pattern: ^[0-9]*.?[0-9]{0,4}$
ACHSameDayDebitFee:
type: string
description: Fixed fee charged on every ACH Same Day Debit transaction
pattern: ^[0-9]*.?[0-9]{0,4}$
ACH_NSFFee:
type: string
description: Fixed fee charged for every ACH NSF
pattern: ^[0-9]*.?[0-9]{0,4}$
ACHFraudFee:
type: string
description: Fixed fee charged on every ACH fraudulent transaction
pattern: ^[0-9]*.?[0-9]{0,4}$
ACHAdminReturnFee:
type: string
description: Fixed fee charged on every ACH return
pattern: ^[0-9]*.?[0-9]{0,4}$
RTPCreditFee:
type: string
description: Fixed fee charged on every <<glossary:RTP>> Credits
pattern: ^[0-9]*.?[0-9]{0,4}$
RTP_RFPFee:
type: string
description: Fixed fee charged on every <<glossary:RTP>> Request for Payment
pattern: ^[0-9]*.?[0-9]{0,4}$
cardTypeFee:
$ref: '#/components/schemas/cardTypeFee'
3DSFee:
type: string
description: Fixed fee for every 3DS invocation
pattern: ^[0-9]*.?[0-9]{0,4}$
accountUpdaterFee:
type: string
description: Fixed fee for each account updater request
pattern: ^[0-9]*.?[0-9]{0,4}$
SC:
type: integer
description: '[HTTP Status Code](https://developers.tabapay.com/reference/http-status-codes#/)'
subclient2Identification:
type: object
properties:
type:
type: string
enum:
- SSN
- GovernmentID
- Passport
- EIN
country:
$ref: '#/components/schemas/tpISO4217Numeric'
number:
type: string
description: A unique ID number issued by a government or organization.
email:
type: string
pattern: ^[A-Za-z._-]+@(?:[A-Za-z_-]+.?)*.[A-Za-z]+$
description: Valid Email Address
retrieveSubClient2Response:
type: object
properties:
SC:
$ref: '#/components/schemas/SC'
EC:
$ref: '#/components/schemas/EC'
EM:
$ref: '#/components/schemas/EM'
name:
type: string
maxLength: 255
tin:
type: string
pattern: ^[0-9]{9}$
description: '[Taxpayer Identification Number](https://en.wikipedia.org/wiki/Tax
# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tabapay/refs/heads/main/openapi/tabapay-subclient-api-openapi.yml