Skip to main content

Submit Business Details

Writes the business's own details: who it is, its tax id, its formation, and its registered and operating addresses. The body replaces the whole set: a field you leave out is cleared, which is how a wrong value is removed, so send every field you have each time. Owners and documents have their own endpoints and are not touched.

Every field is optional here, so a form can be saved half filled. Completeness is required only when you request verification; ready in the response says whether the business's part is done.

The details can be written while the record is pending, ready_for_review or needs_update. Once it is in_review, approved or rejected they are locked (409).

Takes a workspace-scoped API key or a dashboard session. An account-scoped key is refused with 401.

Replaces the details half of POST /api/v2/kyb/banking-verification/business.

Authorization:

Every request is signed with your API key: a short-lived JWT, signed with your private key, sent in one header on /v3/* and /api/v2/* alike.

Headers:
Authorization: APIKey {SIGNED_JWT}

How to build and sign the JWT: Authentication.

Endpoint

PATCH

/v3/customers/{customer_id}/kyb

Path parameters​

ParameterTypeDescription
customer_idstring (cst_…)Required. The business customer. Its record must be open.

Request Body Sample​

{
"name": "Acme Robotics Inc",
"dba_name": "Acme Robotics",
"entity_type": "corporation",
"phone": "+14155550123",
"email": "ops@acmerobotics.example.com",
"website": "https://acmerobotics.example.com",
"id_number": "12-3456789",
"id_document_type": "ein",
"tax_number": "12-3456789",
"formation_date": "2019-06-01",
"incorporation_state": "DE",
"address": {
"line1": "500 Terry A Francois Blvd",
"line2": "Suite 400",
"city": "San Francisco",
"state": "CA",
"postal_code": "94158",
"country": "US"
},
"operation_address": {
"line1": "1 Market St",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country": "US"
}
}

Request Body Schema​

"Needed to request verification" marks the fields Request Verification requires.

FieldTypeDescription
namestringLegal name. Up to 255 characters. Needed to request verification.
dba_namestringDoing-business-as name. Up to 255 characters.
entity_typestringLegal structure: sole_proprietor, limited_liability_company, general_partnership, limited_liability_partnership, corporation, publicly_traded_company, non_profit or government_organization. Needed to request verification.
phonestringE.164 format, e.g. +14155550123.
emailstringContact email.
websitestringA URL, e.g. https://acmerobotics.example.com.
id_numberstringThe business's tax id (EIN). 2 to 20 characters. Needed to request verification.
id_document_typestringWhat backs id_number. The only value is ein. Needed to request verification.
tax_numberstringTax number, where it differs from the EIN. Up to 255 characters.
formation_datestringYYYY-MM-DD. Needed to request verification.
incorporation_statestringState of incorporation, e.g. DE. Up to 100 characters. Needed to request verification.
addressaddressRegistered address.
operation_addressaddressWhere the business operates, when that differs from address.

An address has these fields:

FieldTypeDescription
line1stringUp to 255 characters.
line2stringOptional. Up to 255 characters.
citystringUp to 100 characters.
statestringUp to 100 characters.
postal_codestringMust fit the country's postal code format.
countrystringISO 3166-1 alpha-2, e.g. US.

An address is either left out or complete: once any of its fields is set, line1, city, state, postal_code and country are all required.

Response Sample​

{
"id": "kyb_01m24es440fqxr7z5xsphsmvqm",
"customer_id": "cst_01m24bb8g0f28rhegcwp8rfbqd",
"status": "pending",
"status_reason": "verification record created",
"name": "Acme Robotics Inc",
"dba_name": "Acme Robotics",
"entity_type": "corporation",
"phone": "+14155550123",
"email": "ops@acmerobotics.example.com",
"website": "https://acmerobotics.example.com",
"id_number": "12-3456789",
"id_document_type": "ein",
"tax_number": "12-3456789",
"formation_date": "2019-06-01",
"incorporation_state": "DE",
"address": {
"line1": "500 Terry A Francois Blvd",
"line2": "Suite 400",
"city": "San Francisco",
"state": "CA",
"postal_code": "94158",
"country": "US"
},
"operation_address": {
"line1": "1 Market St",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country": "US"
},
"ready": true,
"event_history": [
{
"status": "pending",
"status_reason": "verification record created",
"date": "2026-09-09T14:20:00Z"
}
],
"created_at": "2026-09-09T14:20:00Z",
"updated_at": "2026-09-09T14:32:10Z"
}

Response Schema​

The record after the write, as in Get Business Verification. When a document is completed too and every owner is ready_for_review (a status only External Owner Verification sets), status may come back as ready_for_review.

Errors​

StatusmessageWhen
400failed to parse requestThe body is not valid JSON, entity_type or id_document_type is not one of its values, or customer_id is not a cst_… TypeID.
400invalid_addressAn address is only partly filled in.
400invalid_countryAn address has other fields but no country.
401unauthorizedMissing or invalid signature, or an account-scoped key or customer session.
403forbiddenA dashboard member whose role does not allow this. A workspace-scoped key always may.
404kyb_not_foundThis customer has no record. Open it first.
409kyb_verification_in_flightThe record is in_review.
409kyb_already_approvedThe record is approved.
409kyb_rejectedThe record is rejected.
422Validation failedA value has the wrong format or length (phone, email, website, formation_date, a country, a postal_code, a length limit); details names the field.

Coming from v2​

v2 (POST /api/v2/kyb/banking-verification/business)v3
every field requiredevery field optional; completeness is checked at request verification
accountId (body, uuid)customer_id (path, cst_…)
camelCase: dbaName, idNumber, idDocumentType, taxNumber, entityType, formationDate, incorporationState, operationAddresssnake_case: dba_name, id_number, id_document_type, tax_number, entity_type, formation_date, incorporation_state, operation_address
address1, address2, postalCodeline1, line2, postal_code
no emailemail
editable in pending and needs_updatealso in ready_for_review
the response carries owners and verificationFilesowners and documents are listed separately

Support and Resources​

If you need assistance or have any questions, our support team is here to help. You can contact our support team at support@blockwyre.com.

Stay Updated​

Stay up-to-date with the latest news, updates, and features from BlockWyre by following us on social media:

We are excited to have you on board and look forward to seeing how you leverage BlockWyre's powerful tools to enhance your financial operations. Happy integrating!