Account Owners
Learn how to create the account owner behind a named account with each KYC mode, and how to upload supporting documents.
An account owner is the verified individual or business behind a named account. The account owner object stores the identity and compliance information Infinia needs to open and operate an account in the name of a specific person or business. Creating one is mandatory for named accounts.
This page explains how to choose a KYC mode, how each mode works, and how to upload the documents that SELF_DECLARED requires.
Choose a KYC mode
You choose how the account owner is verified with the kyc_mode field of Create Account Owner.
| KYC mode | How verification happens | Document upload through the API | Owner types | Use it when |
|---|---|---|---|---|
HOSTED | Your customer completes Infinia's hosted verification flow. | Not needed. The hosted flow collects the documents. | INDIVIDUAL | You don't run your own KYC flow and want the simplest integration. |
EXTERNAL | Infinia imports a verification your customer already completed with your KYC provider. | Not needed. The documents are reused from the provider. | INDIVIDUAL | You already verify your customers with a supported provider. |
SELF_DECLARED | You collect the identity data and send it directly. Requires prior approval from Infinia's compliance team. | Required before you create the account owner. | INDIVIDUAL, ORGANIZATION | You run your own KYC and compliance process end to end. |
We recommend HOSTED or EXTERNAL, which reduce implementation work and give a smoother compliance flow. Use SELF_DECLARED only if you already operate your own KYC flow. Organizations are onboarded with SELF_DECLARED.
The account owner's status is PENDING, COMPLETED or FAILED. You can't open an account for an account owner whose status is FAILED.
Verify with the hosted flow
With kyc_mode set to HOSTED, Infinia returns a link to a hosted verification flow in hosted.verification_url. The account owner starts in PENDING and moves to COMPLETED once your customer completes the flow and the verification is approved.
- Call Create Account Owner with
kyc_modeset toHOSTED. - The account owner is created with status
PENDING. - Redirect your customer to
hosted.verification_urlbeforehosted.verification_url_expires_at. - Your customer completes the KYC process in the hosted flow.
- When the verification is approved, the account owner's status changes to
COMPLETED. If it's rejected, the status changes toFAILED.
To be notified of the result, send a callback_url when you create the account owner. Infinia sends a webhook to it when the verification reaches COMPLETED or FAILED. callback_url is only accepted with HOSTED.
Import an existing verification
With kyc_mode set to EXTERNAL, you provide a customer who has already completed KYC with a supported provider:
- SumSub, with a Copy Applicant share token.
- Persona (coming soon).
- Call Create Account Owner with
kyc_modeset toEXTERNAL. - Send the share token in
external.sumsub_share_token. - Infinia retrieves and validates the KYC information from the provider.
- Once the verification is confirmed, the account owner's status is
COMPLETED. If the provider rejected the applicant, or the applicant is missing a value Infinia needs, the account owner is created with statusFAILEDand the reason infailure_reason.
This mode suits you if you already have a KYC integration and want to reuse the verifications you completed. Your provider must collect every value the account's country requires. See Using EXTERNAL.
Submit your own data
With kyc_mode set to SELF_DECLARED, you collect the KYC data yourself and send the raw identity information in individual (for type INDIVIDUAL) or organization (for type ORGANIZATION). Supporting documents are mandatory: upload them as described in Upload documents before you create the account owner.
A SELF_DECLARED account owner is created with status COMPLETED.
Before you use
SELF_DECLAREDin production, Infinia's compliance team must review and approve your integration. The review covers the source of the identity data you collect and your KYC and compliance process, to ensure regulatory alignment and proper risk controls.
Upload documents
With SELF_DECLARED, each supporting document is uploaded in three steps: initiate the upload, upload the file, and reference the document when you create the account owner.
1. Initiate the upload
Call Initiate Document Upload with the document_type. Set double_sided to true when the document has a back side, such as an ID card.
curl -u "$API_KEY_USER:$API_KEY_PASSWORD" \
-X POST "https://app2test.infiniaweb.com/infinia_api/v1/accounts/owners/documents/" \
-H "Content-Type: application/json" \
-d '{"document_type": "NATIONAL_ID", "double_sided": true}'{
"status": "success",
"data": {
"id": "acdd6e51-ca66-4204-8a97-0a6be27254dc",
"upload_front_url": "https://upload-url.example.com/uploads/doc_123/front",
"upload_back_url": "https://upload-url.example.com/uploads/doc_123/back",
"expires_at": "2026-02-16T22:00:00Z"
}
}| Attribute | Description |
|---|---|
id | The document ID. You reference it when you create the account owner. |
upload_front_url | The URL to upload the front side of the document to. |
upload_back_url | The URL to upload the back side to. Only present when double_sided is true. |
expires_at | When the upload URLs expire. |
2. Upload the file
Send an HTTP PUT request with the raw binary file as the body to the exact URL returned in step 1:
curl -X PUT "https://upload-url.example.com/uploads/doc_123/front" \
-H "Content-Type: image/jpeg" \
--upload-file document_front.jpg- Set the
Content-Typeheader to the file's type, for exampleimage/jpeg,image/pngorapplication/pdf. - A successful upload typically returns
200 OKor204 No Content. - If the document is double-sided, repeat the request with
upload_back_url. - If
expires_atpasses before the upload completes, initiate a new document upload.
3. Create the account owner
Once the upload succeeds, pass the document id from step 1 in the field that matches its type when you call Create Account Owner. For example, use identity_document_id for a NATIONAL_ID, PASSPORT or DRIVERS_LICENSE, and selfie_document_id for a SELFIE. Pass documents of type OTHER as a list in other_documents.
The account owner can only be created under SELF_DECLARED after the upload succeeds and you reference the document id.
Document types
These document_type values are supported by Initiate Document Upload:
document_type | INDIVIDUAL | ORGANIZATION | Notes |
|---|---|---|---|
NATIONAL_ID | ✅ | ❌ | Government-issued national ID. |
PASSPORT | ✅ | ❌ | International passport. |
DRIVERS_LICENSE | ✅ | ❌ | Government-issued driver's license. |
SELFIE | ✅ | ❌ | Selfie of the individual. |
CERTIFICATE_OF_INCORPORATION | ❌ | ✅ | Required for organizations. |
SOURCE_OF_FUNDS | ✅ | ✅ | Can be requested depending on the risk profile. |
PROOF_OF_ADDRESS | ✅ | ✅ | Utility bill, bank statement or similar. |
OWNERSHIP_STRUCTURE | ❌ | ✅ | Ownership structure. Referenced in ownership_structure_document_id. |
TAX_REGISTRATION | ❌ | ✅ | Tax registration. Referenced in tax_registration_document_id. |
CORPORATE_ORG_CHART | ❌ | ✅ | Corporate org chart. Referenced in corporate_org_chart_document_id. |
OTHER | ✅ | ✅ | Any additional supporting document. Referenced in other_documents. |
Upload state IDs, residence permits and other government-issued identity cards as NATIONAL_ID. A document of type OTHER can't be used as the identity document in identity_document_id.
Identifiers
Every account owner has a tax_id and the country that issued it, tax_id_country (ISO 3166-1 alpha-2). What tax_id holds depends on the owner type:
| Owner type | tax_id | Examples |
|---|---|---|
INDIVIDUAL (and each UBO) | The number of a government-issued identity document that identifies the person. A tax-agency number isn't required. | National ID card or cédula (DNI, INE, RG, Cédula de Ciudadanía, Cédula de Extranjería), passport, driver's license, State ID. |
ORGANIZATION | The company's tax identification or registration number. | CNPJ, NIT, EIN. |
Individuals in Argentina need both the DNI, in tax_id, and the CUIL, in additional_tax_id. See ARS (Argentina).
Country requirements
Each country requires specific account owner data to open an account, such as the CUIL in Argentina or the CPF in Brazil. For the values each country requires and how to provide them with each KYC mode, see KYC Requirements by Country.
Updated 18 days ago

