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 modeHow verification happensDocument upload through the APIOwner typesUse it when
HOSTEDYour customer completes Infinia's hosted verification flow.Not needed. The hosted flow collects the documents.INDIVIDUALYou don't run your own KYC flow and want the simplest integration.
EXTERNALInfinia imports a verification your customer already completed with your KYC provider.Not needed. The documents are reused from the provider.INDIVIDUALYou already verify your customers with a supported provider.
SELF_DECLAREDYou collect the identity data and send it directly. Requires prior approval from Infinia's compliance team.Required before you create the account owner.INDIVIDUAL, ORGANIZATIONYou 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.

  1. Call Create Account Owner with kyc_mode set to HOSTED.
  2. The account owner is created with status PENDING.
  3. Redirect your customer to hosted.verification_url before hosted.verification_url_expires_at.
  4. Your customer completes the KYC process in the hosted flow.
  5. When the verification is approved, the account owner's status changes to COMPLETED. If it's rejected, the status changes to FAILED.

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).
  1. Call Create Account Owner with kyc_mode set to EXTERNAL.
  2. Send the share token in external.sumsub_share_token.
  3. Infinia retrieves and validates the KYC information from the provider.
  4. 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 status FAILED and the reason in failure_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_DECLARED in 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"
  }
}
AttributeDescription
idThe document ID. You reference it when you create the account owner.
upload_front_urlThe URL to upload the front side of the document to.
upload_back_urlThe URL to upload the back side to. Only present when double_sided is true.
expires_atWhen 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-Type header to the file's type, for example image/jpeg, image/png or application/pdf.
  • A successful upload typically returns 200 OK or 204 No Content.
  • If the document is double-sided, repeat the request with upload_back_url.
  • If expires_at passes 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_typeINDIVIDUALORGANIZATIONNotes
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 typetax_idExamples
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.
ORGANIZATIONThe 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.


Did this page help you?