Business KYC Requirements
This page is the field-level reference for every attestation that may appear on a business compliance review — both review-level attestations and the per-associated-person attestations uploaded against each UBO / control person. For the end-to-end flow (creating a review, uploading documents, creating associated persons, submitting, polling status) see Compliance Reviews.
Each section below is one attestation. The header states whether the attestation is REQUIRED or CONDITIONALLY REQUIRED, the conditional sections lead with what triggers the requirement, and every section ends with a table describing each field — its JSON name, type, whether it is required or optional, and any input limits enforced by the API.
The supporting-document attestations (businessFormationDocuments, businessUboOwnershipDocuments, businessProofOfAddressDocuments, businessFlowOfFundsDocument, businessSourceOfFundsDocuments, associatedPersonProofOfAddress and associatedPersonProofOfSignatoryAuthority) also accept an optional additionalInformation string, which the tables below leave out: a note to the reviewer about that upload, such as where the requested detail sits in a document, or what the document is called locally. It holds up to 200 characters and cannot be blank. Don't put sensitive identifiers in it.
The
requiredAttestationsarray on the review reflects the same rules described here. If the API response and this guide ever disagree, trust the API.
Tier overview
Business reviews use two tiers: US_STANDARD (USD-only payouts, reduced documentation) and FULL (full KYB with UBO ownership and proof-of-address documents). The tiers share an identical core; FULL adds two additional review-level document attestations and one additional per-associated-person attestation. On both tiers, EEA-registered businesses and associated persons who live in the EEA need extra per-person attestations.
| Attestation | US_STANDARD | FULL |
|---|---|---|
| Review-level | ||
businessIdentification | Required | Required |
businessTaxInfo | Required | Required |
businessAddress | Required | Required |
businessContactInfo | Required | Required |
businessDetails | Required | Required |
businessOperations | Required | Required |
businessFinancialInfo | Required | Required |
businessFormationDocuments | Required | Required |
businessAssociatedPersons | Required | Required |
businessUboOwnershipDocuments | Not Required | Required |
businessProofOfAddressDocuments | Not Required | Required |
businessFlowOfFundsDocument (conditional) | Conditionally Required | Conditionally Required |
| Per associated person | ||
associatedPersonPersonalInfo | Required | Required |
associatedPersonContactInfo | Required | Required |
associatedPersonResidentialAddress | Required | Required |
associatedPersonTaxInfo | Required | Required |
associatedPersonIdentityDocument | Required | Required |
associatedPersonProofOfAddress | Not Required | Required |
associatedPersonEeaInfo (conditional) | Conditionally Required | Conditionally Required |
associatedPersonProofOfSignatoryAuthority (conditional) | Conditionally Required | Conditionally Required |
Review-level attestations
businessIdentification — REQUIRED
businessIdentification — REQUIREDLegal identity of the business.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessIdentification". |
businessName | string | Yes | 1–500 characters. The legal name on file with the business's registration authority. |
registrationNumber | string | Optional | Max 100 characters. Business registration number. |
dbaName | string | Optional | Max 500 characters. Doing-Business-As / trade name. |
businessTaxInfo — REQUIRED
businessTaxInfo — REQUIREDBusiness tax identification number and type.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessTaxInfo". |
taxIdentificationNumber | string | Yes | Max 100 characters. Validated against the country/type-specific format for the chosen taxIdentificationNumberType (e.g. EIN is XX-XXXXXXX). |
taxIdentificationNumberType | enum | Yes | One of the business-applicable BusinessTaxIdentificationNumberType values (e.g. EIN, CUIT, RFC, CNPJ, NIT). |
businessAddress — REQUIRED
businessAddress — REQUIREDRegistered (legal) address, with an optional separate operating address.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessAddress". |
registeredAddress | object | Yes | See Address object. |
operatingAddressSameAsRegistration | boolean | Yes | true or false. When false, operatingAddress becomes required. |
operatingAddress | object | Conditional | Required when operatingAddressSameAsRegistration is false. If sent when true, it must match registeredAddress exactly. See Address object. |
businessContactInfo — REQUIRED
businessContactInfo — REQUIREDBusiness phone number and email.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessContactInfo". |
phoneNumber | string | Yes | E.164 format with country code (e.g. +12125551234). |
email | string | Yes | Valid email address. UTF-8 local parts are not accepted. |
businessDetails — REQUIRED
businessDetails — REQUIREDWebsite, legal structure, incorporation date, industry, free-text description, and intended use of Mural.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessDetails". |
businessWebsite | string | Optional | Valid, safe URL (HTTPS recommended). Internal-network / private-IP URLs are rejected. |
legalStructure | enum | Yes | One of the LegalStructure values (e.g. CORPORATION, LLC, SOLE_PROPRIETORSHIP, PARTNERSHIP, NON_PROFIT_ORGANIZATION). |
dateOfIncorporation | string | Yes | YYYY-MM-DD. Must be a valid ISO date, not in the future, and no earlier than 1800-01-01. |
industry | enum | Yes | One of the Industry values (e.g. INFORMATION_AND_SOFTWARE, FINANCE_AND_INSURANCE, MANUFACTURING). |
businessDescription | string | Yes | 100–4000 characters. Must be at least 100 characters so reviewers can assess the nature of the business. |
intendedMuralUsage | string | Yes | 1–4000 characters. A free-text description of how the business intends to use Mural (e.g. "Vendor and supplier payments to Colombia"). |
businessOperations — REQUIRED
businessOperations — REQUIREDMoney-movement profile, geographic reach, and high-risk-activity flags.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessOperations". |
transmittingCustomerFunds | boolean | Yes | true or false. When true, both customerFundsTransmissionDetails and the businessFlowOfFundsDocument attestation become required. |
customerFundsTransmissionDetails | string | Conditional | Required when transmittingCustomerFunds is true; omit it otherwise. 11–4000 characters. |
primaryTargetMarket | enum | Yes | One of the PrimaryTargetMarket values (e.g. COMMERCIAL, RETAIL, GOVERNMENT, OTHER). |
primaryTargetMarketOtherDescription | string | Conditional | Required when primaryTargetMarket is OTHER; omit it otherwise. 3–500 characters. |
expectedCounterpartyCountries | array of string | Yes | 1–50 unique entries. Each entry is an ISO 3166-1 alpha-2 country code (e.g. ["CO", "MX"]). |
highRiskBusinessActivities | array of enum | Yes | 0–12 entries from the HighRiskBusinessActivities enum. Submit an empty array [] to attest the business is engaged in none of the listed activities. |
businessFinancialInfo — REQUIRED
businessFinancialInfo — REQUIREDPrimary income source, annual revenue band, and estimated monthly transaction volume.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessFinancialInfo". |
primaryIncomeSourceCategory | enum | Yes | One of the PrimaryIncomeSource values (e.g. BUSINESS_REVENUE, EQUITY_FUNDING, INVESTMENT_PROCEEDS, GRANTS). |
primaryIncomeSourceDescription | string | Yes | 1–4000 characters. Free-text description of the primary income source. |
annualRevenue | enum | Yes | One of LESS_THAN_100K, BETWEEN_100K_AND_1M, BETWEEN_1M_AND_10M, BETWEEN_10M_AND_50M, BETWEEN_50M_AND_250M, MORE_THAN_250M. |
estimatedMonthlyVolume | number | Yes | Positive USD amount. Minimum 1, maximum 100,000,000,000 ($100B). |
businessFormationDocuments — REQUIRED
businessFormationDocuments — REQUIREDOne or more uploaded formation document references (e.g. articles of incorporation). Upload each file via the Generate Upload URL endpoint first and reference the returned documentId here.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessFormationDocuments". |
formationDocuments | array of object | Yes | 1–10 entries, each with a distinct documentId. Each entry has documentType (one of ARTICLES_OF_INCORPORATION, BUSINESS_LICENSE, OTHER) and documentId (UUID returned by the upload endpoint). |
businessUboOwnershipDocuments — REQUIRED (FULL only)
businessUboOwnershipDocuments — REQUIRED (FULL only)Required for the
FULLtier only. Omit onUS_STANDARD.
One or more uploaded UBO ownership document references (e.g. shareholder registry, cap table).
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessUboOwnershipDocuments". |
uboOwnershipDocuments | array of object | Yes | 1–10 entries, each with a distinct documentId. Each entry has documentType (one of SHAREHOLDER_REGISTRY, OWNERSHIP_STRUCTURE, OTHER) and documentId (UUID returned by the upload endpoint). |
businessProofOfAddressDocuments — REQUIRED (FULL only)
businessProofOfAddressDocuments — REQUIRED (FULL only)Required for the
FULLtier only. Omit onUS_STANDARD.
One or more uploaded business proof-of-address document references.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessProofOfAddressDocuments". |
proofOfAddressDocuments | array of object | Yes | 1–10 entries, each with a distinct documentId. Each entry has documentType (one of UTILITY_BILL, BANK_STATEMENT, GOVERNMENT_ISSUED_LETTER) and documentId (UUID returned by the upload endpoint). |
businessFlowOfFundsDocument — CONDITIONALLY REQUIRED
businessFlowOfFundsDocument — CONDITIONALLY REQUIREDRequired when businessOperations.transmittingCustomerFunds is true. Businesses that hold or transmit customer funds must attach a flow-of-funds document describing how money moves through the business. For all other businesses this attestation may be omitted.
A single uploaded flow-of-funds document reference.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessFlowOfFundsDocument". |
document | object | Yes | A single entry with documentType (FLOW_OF_FUNDS or BANK_STATEMENT) and documentId (UUID returned by the upload endpoint). |
businessAssociatedPersons — REQUIRED
businessAssociatedPersons — REQUIREDLinks the review to the organization's previously-created associated persons (UBOs and the control person). Each ID must reference an existing associated person for the organization, and the referenced persons must include exactly one CONTROL_PERSON and at least one BENEFICIAL_OWNER.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "businessAssociatedPersons". |
associatedPersonIds | array of string | Yes | 1–50 entries. Each entry is the UUID of an associated person created via the Create Associated Person endpoint. Duplicate IDs are rejected. |
Associated-person attestations
Uploaded against each associated person via the Upload Associated Person Attestations endpoint. Every associated person referenced from businessAssociatedPersons must have the full required set uploaded before the review can be submitted.
Residential address, identity document, proof of address, and proof of signatory authority are checked automatically and return a pending validationStatus until the check finishes; poll the associated person for the result. The review cannot be submitted while any of them is pending, or failed with a BLOCKING failure. Re-upload to resolve a failure, or submit with acknowledgeWarnings: true to accept WARNING-only failures. Once no business or associated person attestation is pending, a failed check blocks submit with one 412 that lists every failure. When a business attestation also failed, the error is AttestationValidationsRejectedException and the associated person failures are in params.associatedPersonAttestations; otherwise it is AssociatedPersonAttestationValidationsRejectedException. Each associated person failure carries its associatedPersonId. When every failure is a WARNING, the 412 also lists submissionValidationFailures, the submission validation failures found on the same attempt. If there are any, the review moves to submissionValidationsFailed, and one submit with acknowledgeWarnings: true accepts the attestation and submission warnings together.
associatedPersonPersonalInfo — REQUIRED
associatedPersonPersonalInfo — REQUIRED| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "associatedPersonPersonalInfo". |
name | object | Yes | See Name object. |
birthDate | string | Yes | YYYY-MM-DD. Must be a valid ISO date and represent an adult (≥ 18 years). |
nationality | string | Yes | ISO 3166-1 alpha-2 country code (e.g. US). |
isPoliticallyExposed | boolean | Optional | When omitted, no PEP status is declared (treated as undisclosed, not false). |
jobTitle | string | Yes | 2–200 characters. Job title or role within the business. |
ownershipPercentage | number | Yes | 0–100, up to 2 decimal places. A BENEFICIAL_OWNER must hold a positive percentage; a CONTROL_PERSON who isn't also a UBO submits 0. |
associatedPersonContactInfo — REQUIRED
associatedPersonContactInfo — REQUIRED| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "associatedPersonContactInfo". |
email | string | Yes | Valid email address. UTF-8 local parts are not accepted. |
phoneNumber | string | Yes | E.164 format with country code (e.g. +14155551234). |
associatedPersonResidentialAddress — REQUIRED
associatedPersonResidentialAddress — REQUIREDP.O. boxes are not accepted. If this address is in the EEA, associatedPersonEeaInfo becomes required for this person.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "associatedPersonResidentialAddress". |
address | object | Yes | See Address object. |
associatedPersonTaxInfo — REQUIRED
associatedPersonTaxInfo — REQUIRED| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "associatedPersonTaxInfo". |
taxIdentificationNumber | string | Yes | Max 100 characters. Validated against the country/type-specific format for the chosen taxIdentificationNumberType. |
taxIdentificationNumberType | enum | Yes | One of the individual-applicable IndividualTaxIdentificationNumberType values (e.g. SSN, ITIN, CPF, CURP, RFC, CUIT, RUT). |
associatedPersonIdentityDocument — REQUIRED
associatedPersonIdentityDocument — REQUIREDGovernment-issued identity document for the associated person. Same shape as the individual review — see Government ID object.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "associatedPersonIdentityDocument". |
governmentId | object | Yes | Set its type to the document type. See Government ID object. |
associatedPersonProofOfAddress — CONDITIONALLY REQUIRED
associatedPersonProofOfAddress — CONDITIONALLY REQUIREDRequired on the FULL tier. Omit on US_STANDARD.
One or more uploaded proof-of-address document references for this associated person.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "associatedPersonProofOfAddress". |
proofOfAddressDocuments | array of object | Yes | 1–10 entries, each with a distinct documentId. Each entry has documentType (one of UTILITY_BILL, BANK_STATEMENT, GOVERNMENT_ISSUED_LETTER) and documentId (UUID returned by the upload endpoint). |
associatedPersonEeaInfo — CONDITIONALLY REQUIRED
associatedPersonEeaInfo — CONDITIONALLY REQUIREDRequired for an associated person when the business's registered address is in the EEA, or the person's residential address is in the EEA. The EEA is the EU member states plus Iceland, Liechtenstein, and Norway. It does not include the UK.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "associatedPersonEeaInfo". |
isDirector | boolean | Yes | Whether the person is a director of the business. |
placeOfBirthCountry | string | Yes | ISO 3166-1 alpha-2 country code (e.g. DE). |
placeOfBirthCity | string | Yes | 1–200 characters. |
associatedPersonProofOfSignatoryAuthority — CONDITIONALLY REQUIRED
associatedPersonProofOfSignatoryAuthority — CONDITIONALLY REQUIREDRequired for each associated person of an EEA-registered business whose associatedPersonEeaInfo.isDirector is false.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "associatedPersonProofOfSignatoryAuthority". |
signatoryAuthorityDocuments | array of object | Yes | 1–10 entries, each with a distinct documentId. Each entry has documentType (one of LETTER_OF_AUTHORITY, BOARD_RESOLUTION, POWER_OF_ATTORNEY) and documentId (UUID returned by the upload endpoint). |
Shared objects
Name object
Used wherever a name field appears (on associatedPersonPersonalInfo).
| Field | Type | Required | Limits & format |
|---|---|---|---|
firstName | string | Yes | 1–100 characters. |
lastName | string | Yes | 1–100 characters. |
middleName | string | Optional | Max 100 characters. |
Address object
Used wherever a registeredAddress, operatingAddress, or address field appears.
| Field | Type | Required | Limits & format |
|---|---|---|---|
address1 | string | Yes | 1–200 characters. Primary street address, including building number and street name. |
address2 | string | Optional | Max 200 characters. Secondary line — apartment, suite, unit, floor, etc. |
country | string | Yes | ISO 3166-1 alpha-2 country code (e.g. US). |
subDivision | string | Yes | 1–100 characters. ISO 3166-2 subdivision code without the country prefix (e.g. NY for New York). |
city | string | Yes | 1–100 characters. |
postalCode | string | Yes | 1–20 characters. |
Government ID object
The governmentId field on associatedPersonIdentityDocument accepts 28 document types. Every document type shares the same base shape; only the ID-number field and the document-reference field(s) differ by document type.
Common shape across every document type:
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | The document type (e.g. "passport", "driverLicense", "nationalId", "stateId", "passportCard", "visa", ...). |
countryCode | string | Yes | ISO 3166-1 alpha-2 of the issuing authority (e.g. US). Government IDs issued by a prohibited country are rejected with 400 GovernmentIdFromProhibitedCountryException. |
<variant>Number (e.g. passportNumber) | string | Yes | 4–50 characters. |
<variant>DocumentId or front/back document IDs | UUID(s) | Yes | Each is a documentId returned by the Generate Upload URL endpoint. Two-sided documents (driver's license, national ID, state ID, passport card, etc.) require distinct front and back IDs. |
Single-sided variants (one documentId field): passport, internalPassport, travelDocument, citizenshipCertificate, panCard, nbiClearance.
Double-sided variants (front + back documentId fields): driverLicense, nationalId, stateId, passportCard, permanentResidenceCard, visa, residencePermit, voterId, healthInsuranceCard, workPermit, consularId, foreignId, myNumberCard, longTermPass, ofwId, postalId, sssId, umid, municipalId, tribalId, keypassId.
cnh (Brazil): cnhFrontDocumentId is required; cnhBackDocumentId is optional.
For the complete per-variant schema (exact field names, country examples, etc.) see the AssociatedPersonIdentityDocumentAttestation entry in the API reference.
Updated about 18 hours ago

