422 reports every violation at once.
Exactly one legal representative
Every submission must name exactly one person withrole: 1 — the person legally allowed to sign for the company. Everyone else is a director (role: 2), and you may list as many directors as you need.
A submission with no role: 1 person is rejected with MISSING_LEGAL_REPRESENTATIVE on /persons.
Foreign nationals must use a passport
If a person’snationality differs from the company’s incorporation_country, that person must identify with a passport — id_type: 2 and an identity document of type 10.
A citizen ID (id_type: 1, document type 11) is accepted only when the person is a national of the country where the company is incorporated. A citizen ID issued by one country cannot be checked against the registries of another; a passport is verifiable for anyone.
Getting this wrong is rejected with INVALID_FORMAT on /persons/{n}/id_type.
One identity document per person
Each person carries exactly one entry inpersons[].documents[] — a passport (type 10) or a citizen ID (type 11), matching their id_type. That single document may hold several files: a citizen ID front and back are two files in one document, not two documents.
Required company documents
Two company documents are mandatory in the top-leveldocuments[]:
Missing either is rejected with
MISSING_DOCUMENT. Types 2, 4, 5, and 9 are optional — accepted when sent, never demanded.
Nothing is saved until every check passes
A rejected submission stores nothing. Fix every reported violation and resubmit the whole body — there is no partial save and no update endpoint.Pre-submission checklist
- Exactly one person has
role: 1 - Every person whose
nationalitydiffers fromincorporation_countryusesid_type: 2with a type10document - Every person has exactly one identity document, type
10or11, matching theirid_type - Company documents include type
1and type3 - Type
4documents carry adocument_number - Every file has
dataholding the base64-encoded file content, not a path or URL - No file over 10 MB decoded, whole request under 40 MB
- Each
content_typematches the actual file bytes, and no PDF is password-protected