KYB vs KYC: KYB verifies business entities. KYC verifies individual users. See KYC Verification for user verification.
KYB Process Flow
KYB Statuses
| Status | Description | Can Process Payments? |
|---|---|---|
pending | KYB not submitted or under review | No |
needs-additional-info | Review complete, more information required | No |
rejected | Business verification rejected (terminal) | No |
completed | Business verified | Yes |
Submit KYB
You can submit KYB in two ways:- Hosted form — generate a branded link and send it to your customer. The business owner completes KYB through a hosted UI — no need to build your own collection form.
- API submission — collect the verification data in your own UI and submit it directly via API.
Hosted KYB Form
If you prefer to delegate KYB data collection to the business owner, generate a hosted form link and share it with them. The business owner visits the link and completes verification through a branded UI. Response:| Field | Description |
|---|---|
id | Unique identifier for the KYB link |
url | The hosted form URL — send this to the business owner |
expiresAt | Unix timestamp when the link expires |
The link has an expiration. If the business owner visits an expired link, they are redirected to your
refreshURL where you can generate a new link.API Submission
Submit business and principal information for verification. You can submit all data at once or start with a partial submission and add more information later using the PATCH endpoint.Incremental submission: You can start with just the business name and address, then use
PATCH /v1/businesses/{businessId}/kyb to add more fields over time. KYB moves to review once all requirements are met.204 on success. The business is now under review.
Updating KYB Information
Use PATCH to add or correct fields after the initial submission. Only the fields you include are updated — everything else is left unchanged. Document arrays (articlesOfIncorporation, bankStatements, etc.) are appended to, not replaced.
PATCH is also how you respond after a review returns needs-additional-info. Parse the currentlyDue array from the business.kyb.reviewed webhook, collect the required data or documents, and PATCH them in. The status automatically moves back to review once all requirements are satisfied.
You cannot PATCH while the KYB is in
pending (under review) or completed status.Business Requirements
| Requirement | API Field | Rules |
|---|---|---|
| Legal business name | entityName | Must exactly match the registered name on government records |
| Entity type | entityType | corporation, c-corporation, s-corporation, partnership, sole proprietorship, limited liability company, non profit, other |
| Business address | address | Must be a valid physical address; PO Boxes not allowed |
| Phone number | phoneNumber | Must be a reachable business phone |
| EIN / Tax ID | taxIdentificationNumber | Must be a valid IRS-issued EIN |
| Incorporation address | incorporation.address | Must match corporate records |
| Incorporation date | incorporation.date | Must be a valid date |
| Website URL | websiteURL | Must be a valid website |
Principal / UBO Requirements
You must provide information for individuals who:- Own 25% or more of the business (
ownershipPercentage >= 0.25), or - Hold significant managerial responsibility (
isExecutive: true)
| Requirement | API Field | Rules |
|---|---|---|
| First name | principals[].firstName | Must match ID document |
| Last name | principals[].lastName | Must match ID document |
| Date of birth | principals[].dateOfBirth | Must be valid and 18+ |
principals[].email | Valid email address | |
| Phone number | principals[].phoneNumber | Reachable phone |
| Residential address | principals[].address | Physical address; PO Boxes not allowed |
| Identifier | principals[].identifier | Type: ssn or passport |
| Ownership % | principals[].ownershipPercentage | 0-1 scale (1 = 100%) |
| Executive flag | principals[].isExecutive | Required for control person |
| Executive title | principals[].title | Required for control person |
| ID document (front) | principals[].identityFileId | Required if SSN verification fails |
| ID document (back) | principals[].identityBackPageFileId | Required if SSN verification fails |
| Address proof | principals[].addressFileId | Required if address verification fails |
fileId values.
Required Documents (Conditional)
These documents are only required when automated verification fails.| Verification failure | Required upload | Accepted documents |
|---|---|---|
| EIN / Tax ID unverified | taxDocuments | IRS EIN confirmation letter (SS-4 or 147C) — must show exact legal name + EIN |
| Business registration mismatch | articlesOfIncorporation | Articles of Incorporation or Certificate of Formation |
| Business address unverified | proofOfAddress | Utility bill, lease, or bank statement |
| Principal identity unverified | principals[].identityFileId and principals[].identityBackPageFileId | Government-issued photo ID (front and back) |
| Principal address unverified | principals[].addressFileId | Utility bill, lease, or bank statement |
| Compliance review | bankStatements | Recent bank statements (if requested by Compliance) |
Webhook Events
business.kyb.reviewed
Sent after KYB has been reviewed. May indicate approval or that additional information is needed.| Field | Description |
|---|---|
status | Current KYB status |
requirements.currentlyDue | Fields that need to be submitted or corrected |
requirements.errors | Specific validation errors with reasons |
needs-additional-info:
- Parse the
currentlyDuearray to identify required fields - Check
errorsarray for specific issues - Collect the required information/documents from the business owner
- Resubmit KYB with corrected data
business.kyb.rejected
Sent when a KYB submission has been permanently rejected. This is a terminal state — the business cannot resubmit.business.kyb.completed
Sent when business verification is successful. After receiving this event, the business can process payments.Timeline
| Step | Duration |
|---|---|
| Submit KYB | Immediate |
| Review (once all requirements provided) | Up to 3 business days |
Sandbox Testing
Use test values to simulate different KYB outcomes without waiting for real verification.| Test value | Field | Result |
|---|---|---|
000-CAD-AUTO-APPROVE | taxIdentificationNumber | KYB automatically approved |
000-CAD-AUTO-REJECT | taxIdentificationNumber | KYB automatically rejected (terminal) |
000-CAD-AUTO-FLAG | taxIdentificationNumber | Status set to needs-additional-info, requests all business documents |
000-11-2222 | principals[].identifier.value (SSN) | Requires identity documents and address files for the principal |
000-11-3333 | principals[].identifier.value (SSN) | Status set to needs-additional-info, principal receives KYC requirement email |
Next Steps
KYC Verification
User identity verification
Multi-Tenant Setup
Platform integration guide
Webhooks
Configure webhook endpoints
Sandbox & Testing
Test values and simulated scenarios