onba_...) ties persons, consents, and evidence together into one request that kicks off compliance review.
Submission is synchronous. We validate and either accept (pending, awaiting review) or return 400 with a precise explanation.
Request structure
POST /onboarding-applications with four top-level fields.
Items reference persons via
person.
Authorities
Each authority pins a person to a role. Validauthority_type values: owner, joint_owner, signatory, power_of_attorney, trading. The accepted set and counts are fixed per customer_type; see authority composition.
A business application pairs a legal-person owner with one or more natural-person signatory authorities:
A person can hold at most one authority slot. Duplicate
person IDs across authorities return 400 invalid_request.Consents
A consent records that a person agreed to a specific legal document version, or made an attestation. See required consents.Evidence
Upload files via the Files API, then reference the returned IDs.Per-person attribution
Every consent and evidence item’sperson must be either an authority on this application or a related person declared in a relationships claim on a legal authority. Anything else returns 400.
Duplicate submissions
Applications are de-duplicated bycustomer_type and the set of (person, authority_type) pairs in authorities.
While an earlier matching application is pending or processing, a new submission returns 409 conflict. Once it reaches completed, you can resubmit. There’s no self-service cancellation; contact support.
Requirements by customer type
Requirements are defined per authority slot: each(customer_type, authority_type) pair carries its own required claims, evidence bundles, consents, expected person_type, and count. A business owner and signatory have different sets; neither inherits.
Authority composition
Any other
(customer_type, authority_type) combination returns 400 invalid_request. See composition errors.
Individual
One natural-personowner.
Required claims: identity, contact_details, nationalities, residence, tax_residencies, fatca_status, pep_status, employment, financial_profile, investment_experience, expected_activity.
Required evidence: three independent requirements:
Consents: owner supplies every consent in required consents, attributed to themselves.
Business
One legal-personowner, at least one natural-person signatory, plus related persons on the legal owner’s relationships claim. Owner and signatory slots have different requirements.
Owner (legal person)
Required claims:registration, lei, contact_details, registered_address, business_nature, relationships.
An additional operating_address claim is required when registered_address.operating_address_is_same is false. See conditional requirements.
Required evidence:
Six items are always required; two are predicate-gated. Missing or unmatched evidence surfaces as
400 invalid_request with detail: "No acceptable evidence bundle submitted for claim '<claim_type>' on person <legal_owner_person_id>."; the <claim_type> matches the first column above, so you can map the error straight back to the row you missed.
Consents: none. The legal owner’s consent bundle is empty; consents come from the signatories.
Related persons: see related-person requirements.
Signatory (natural person)
One per person signing for the business. Signatories carry the full natural-person profile. Required claims:identity, contact_details, nationalities, residence, tax_residencies, fatca_status, pep_status, employment, financial_profile, investment_experience, expected_activity.
Required evidence:
Consents: each signatory supplies every consent in required consents, attributed to themselves.
Joint
One natural-personowner plus one or more natural-person joint_owners. Every party carries the same requirements as an individual owner, each attributed to that person.
Required claims (per party): identity, contact_details, nationalities, residence, tax_residencies, fatca_status, pep_status, employment, financial_profile, investment_experience, expected_activity.
Required evidence (per party): three independent requirements:
Consents: every natural authority supplies every consent in required consents, each attributed to the party giving it.
Required consents
Who supplies the consents depends on customer type:- Individual: the owner.
- Joint: every natural authority, each attributed to themselves.
- Business: every signatory, each attributed to themselves. The legal-entity owner does not consent.
data_accuracy is an attestation; the person attests that the information they provided is accurate, so there is no legal document to version. Sending legal_document_version with it returns 400 invalid_request.
For every other consent, fetch a live document version via GET /legal-documents/{legal_document_id}/versions and pass its ID. The version’s document type must equal the consent_type; mismatches return 400 invalid_request.
On a business application, any consent attributed to the legal-entity
owner is accepted silently and counts for nothing. Missing the required consents on the signatories will still fail the application. Make sure you attribute every consent to a natural signatory.Related-person requirements
Persons declared in a legal authority’srelationships claim carry their own claim and evidence requirements. Related persons don’t supply consents; the application’s natural authorities (owner, signatory, joint owners) carry that surface; see required consents.
Required claims (every relationship type): the full natural-person KYC set, identical to what a natural owner or signatory supplies: identity, contact_details, nationalities, residence, tax_residencies, fatca_status, pep_status, employment, financial_profile, investment_experience, expected_activity.
Missing any of these returns 400 invalid_request with detail: "Missing required claims on {relationship_type} {related_person_id}: [...]"; the list names the missing claim_type values.
Evidence: only the appointment-authority bundle varies by role:
Conditional requirements
Two requirements on a business application depend on the content of the legal owner’s claims. Send the claim values first, then assemble the application with the matching evidence.Operating address
If the legal entity operates from its registered address, setoperating_address_is_same to true on the registered_address claim and you’re done:
false, add an operating_address claim, and attach a proof_of_operating_address evidence to the legal owner:
400 invalid_request referencing the legal owner’s person_id.
Nominee agreement
If the legal entity uses nominee shareholders, sethas_nominee_shareholders to true on the business_nature claim and attach a nominee_agreement evidence to the legal owner:
false and omit the evidence.
Evidence taxonomy
Combinations outside this matrix return400 invalid_request.
optional means: omit document_type to match the generic bundle, or pass one of the listed values to pin the kind. Any other value returns 400 invalid_request with detail: "document_type '<Y>' is not compatible with evidence_type '<X>'". Sending document_type for selfie returns Evidence type 'selfie' does not accept a document_type.
driving_license, driving_license_front, and driving_license_back are in the DocumentType enum but don’t satisfy the default identity_document bundle. National IDs are always the front + back pair; there’s no single-sided national_id.Which evidence types apply to each person type
Natural-person evidence (identity_document, proof_of_address, selfie, board_resolution) is only valid against natural-person authorities and related persons. Legal-entity evidence (certificate_of_*, financial_statements, ownership_structure, proof_of_registered_address, proof_of_operating_address, nominee_agreement) is only valid against legal-person authorities. Mismatches return 400.
board_resolution belongs to the natural person it authorises; the signatory on a business application, or the director / authorised_signatory related person on the legal owner’s relationships claim. Attribute it via that person’s person_id, not the legal entity’s.
Response
201 Created with the application resource:
Application statuses and outcomes
Post-submission transitions happen in our compliance systems. Poll the application via
GET /onboarding-applications/{id} for updates.Retrieving an application
GET /onboarding-applications/{id} with the read scope. Use it to poll an application after submission; reads have no side effects and are safe to call repeatedly.
A successful request returns
200 OK with the same shape as the submission response. status and outcome reflect the current lifecycle; application is the payload exactly as persisted at submission time; we don’t re-derive it from the person’s current claims or re-run validation.
404 not_found:
Errors
Most integration failures are400 invalid_request with a precise detail pointing at the person, claim, consent, or evidence at fault. See errors for the catalogue.