Verification Flow
The Verification Flow handles KYB (Know Your Business) and KYC (Know Your Customer) processes to help verify the identity of a business, or personal customer by enabling you to submit information via API. The KYB and KYC review process is essential for identifying potential risks and preventing fraud, money laundering, and the financing of terrorism. The outcome directly impacts your platform, customer experience, and any features enabled for a specific user. You can build different workflows for your users based on the specific use case. When a user is verified and clear of any flags, or mismatched information, you may enable more features for them to transact.
Use Cases
- Verify your customers to before they can move funds through your platform.
- Onboard your customers to hold their funds in a wallet or account.
Why Use KYB and KYC?
Implementing KYB and KYC processes is not only a regulatory requirement but also a critical practice for:
- Enhancing customer trust and security.
- Minimizing financial risks and penalties from non-compliance.
- Protecting against identity theft, financial fraud, and other illicit activities.
Verification API Workflow
- You send the Create User API request to begin adding a user
- TabaPay returns with an API response
- You send the Create Document API request to upload a document.
Note: For multiple page documents you may need to use the Create Document API request more than once. - TabaPay returns with an API response
- You call Create Verification API to KYB/KYC the user
- TabaPay returns with an API response
- You send Create Ledger API to create a ledger account for the user
- TabaPay returns with an API response
- You send Create SubClient API request to be able to tie the user to future Transaction API requests.
- TabaPay returns with an API response.
Now you can initiate Create Transaction requests with the endpoint https://{FQDN}:{PORT}/v1/clients/{ClientID}_{SubClientID}/transactions
How the Verification Flow Works
TabaPay introduces a streamlined and efficient KYB/KYC process integrated with APIs, ensuring that clients can effortlessly verify their customers, whether they are individuals or businesses.
1. Create User
Send the Create User API request for the user. For body parameter field descriptions, refer to Create User API request.
Natural Person Request
{
"referenceID": "1234UniqueRefID",
"type": "NaturalPerson",
"name": {
"individual": {
"first": "Samwise",
"middle": "Sam",
"last": "Gamgee"
}
},
"email": "[email protected]",
"phone": {
"countryCode": "1",
"number": "5555555555"
},
"address": {
"line1": "123 Street",
"city": "San Francisco",
"state": "CA",
"zipcode": "94103",
"country": "840"
},
"dateOfBirth": "19990131",
"identification": {
"type": "SSN",
"number": "243353678"
}
}
{
"referenceID": "1kdev05126",
"type": "LLC",
"name": {
"company": {
"legal": "PaymentsLLC",
"dba": "Easy Pay"
}
},
"address": {
"line1": "123 Street",
"city": "San Francisco",
"state": "CA",
"zipcode": "94103"
},
"identification": {
"type": "EIN",
"number": "243353678"
},
"businessOwners": {
"businessOwner1": {
"identification": {
"type": "SSN",
"number": "243353679"
},
"firstName": "Name",
"lastName": "SirName",
"dateOfBirth": "19990131"
},
"businessOwner2": {
"identification": {
"type": "SSN",
"number": "243353660"
},
"firstName": "Name2",
"lastName": "SurName",
"dateOfBirth": "19990130"
}
},
"email": "[email protected]",
"dateOfFormation": "19990131"
}Response
{
"SC": 200,
"EC": "0",
"userID": "22CharacterTabaPayID12"
}2. Create Document
Send the Create Document API request to upload a document. For body parameter field descriptions, refer to Create Document API request.
Note: For documents with more than one page, you may need need to send the Create Document API request more than once.
Create Document Request
{
"document": "URLSafe64basestring",
"type": "Verification",
"referenceID": "1234reference"
}Response
{
"SC": 200,
"EC": "0",
"documentID": "22CharacterTPDocumeID12"
}3. Create Webhook (Optional)
Use Create Webook API to generate a webhook ID and subscribe to any verification events.
Request
{
"eventType": "Verification.Created",
"referenceID": "1234reference"
}Response
{
"SC": 200,
"EC": "0",
"webhookID": "22CharacterWebhookID12"
}4. Create Verification
Send the Create Verification API request to collect data from official government documents. After collecting user data, the KYB/KYC process will begin for clients' business or individual user. The Create Verification API response will return the verificationID and the status. Both the verificationID and the referenceID will be able to return any updated status with the Retrieve Verification API request.
Request
{
"document": {
"front": "22CharacterTPDocumeID12",
"back": "22CharacterTPDocumeID22"
},
"referenceID": "1234reference",
"userID": "22CharacterTabaPayID12"
}Response - Created
{
"SC": 200,
"EC": "0",
"verificationID": "22CharacterTabaPayID12",
"status": "CREATED"
}5. Retrieve Verification
After initiating a KYB/KYC case, you have two ways to check the status of the case.
Call Retrieve Verification API via verificationID: supply verificationID in the API request to retrieve the case status.
Alternative: Call Retrieve Verification via referenceID: use the referenceID search a case and see the status from the dashboard.
Response - Pending
{
"SC": 200,
"EC": "0",
"verificationID": "22CharacterTabaPayID12",
"status": "PENDING"
}Response - Completed
{
"SC": 200,
"EC": "0",
"verificationID": "22CharacterTPVerifyID12",
"status": "COMPLETED"
}6. Create Ledger
You can create a ledger to be able to update account balances and limits. Include the previously generated userID from Create User.
Request
{
"type": "BalanceHolding",
"referenceID": "1234reference",
"userID": "22CharacterTabaPayID12",
"bank": "CRB",
"currency": "840"
}Response
{
"SC": 200,
"EC": "0",
"ledgerID": "22characterledgerID123"
}7. Create SubClient v2
Create a SubClient to make payments to the accounts of the user. Include the previously generated ledgerID from Create Ledger, and userID from Create User.
Use the endpoint https://{FQDN}:{PORT}/v2/clients/{ClientID}/subclients/{SubClientID}
Notice the v2 in the endpoint URL and NOT v4.
Request
{
"type": "NaturalPerson"
"settlement": {
"exception": {
"ledgerID": "22characterledgerID123"
}
},
"userID": "22CharacterTabaPayID12",
"useCase": "CG",
"reserveAccount": {
"ledgerID": "22characterledgerID123"
}
}Response
{
"SC": 200,
"EC": "0"
}8. Completing a Transaction
To see what completing a transaction looks like after a verified user is added to a SubClient ID, refer to TabaPay Tokens.
Creating an account should be at the client level: https://{FQDN}:{PORT}/v1/clients/{ClientID}/accounts
To send a transaction at the SubClient level, use the endpoint https://{FQDN}:{PORT}/v1/clients/{ClientID}_{SubClientID}/transactions
Note: Be sure to add the SubClientID for the Transaction API and not the Account API.
FAQs
Yes, however this page represents a different workflow from the general boarding process at TabaPay.
All clients will require their own KYB process when boarding with TabaPay, as well as their own KYC verification if it is applicable.
This process represents boarding sub-merchants, or customers using the User API, Verification API, Ledger API, and SubClient API.
2. Who can use the Verification API? n
Anyone can use the Verification API who is interested in completing the KYB and KYC Workflow with the API requests previously mentioned:
3. Can I use Verification API for boarding sub-merchants?
Yes, if you wanted to adopt a workflow of using APIs to board your sub-merchants, you can use this workflow. Otherwise the typical boarding process, does not include using the APIs.
4. Is there a difference between Create Subclient v4 and Create Subclient v2?
Yes Create SubClient v4 API is for merchants (or sub-merchants) / MID boarding with TabaPay under any ISO (Client).
The new CreateSubCLient v2 API uses the mentioned workflow with User, Verification and Ledger.