Create a new user

Create a new user (individual or business) in the system.

Verification Modes:

Use verification_mode in the request body to choose how KYC/KYB is collected:

  • automatic (default) — Send a complete payload and Kira triggers KYC/KYB in the background.
  • verification_link — Send a minimal payload and Kira returns a hosted link the end user follows to complete KYC/KYB. Only first_name, last_name, email are required for individuals; only business_legal_name, email for businesses. An optional redirect_uri controls where the user lands after submission.

Automatic Verification flow:

  1. No additional API calls needed — verification starts as soon as required fields are present.
  2. Webhook notifications — you'll receive user.verification.accepted or user.verification.failed events.
  3. The response includes a verification_triggered boolean indicating whether verification was actually started.

Eligibility model:

Kira evaluates the user against every active product and triggers verification as soon as at least one product has all of its required fields. Two virtual-account products are currently supported, each with different requirements:

  • usa-virtual-accounts (Diameter) — Powered by the Diameter provider (PORTAGE for USA, SLOVAK_SAVINGS_BANK for international). Requires Government ID images and uploaded supporting documents (proof of address, source of wealth, business formation).
  • usa-virtual-accounts-act (ACT) — Lighter onboarding via Austin Capital Trust. No photo documents required at create time (they are uploaded separately). Requires extra immigration / employment / banking-history fields instead.

Required-field lists are evaluated per category, derived from the user's address_country (and nationality / formation_country as fallback): usa_individual, international_individual, usa_business, international_business.


Required Fields — usa-virtual-accounts (Diameter):

USA Individual (usa_individual):

  • Identity: first_name, last_name, birth_date, email, phone, nationality
  • Address: address_street, address_city, address_state, address_zip_code, address_country
  • Government doc (flat): document_type, document_number, document_country
  • Tax ID: ssn (sent flat, or as identifying_information[].type = "ssn")
  • Document files in identifying_information[].documents[]: front, back (required unless document_type = passport), file_proof_of_address, file_source_of_wealth

International Individual (international_individual):

  • Same as USA Individual, except ssn is not required. A non-USA tax ID may be supplied via identifying_information (curp, rfc, cpf, tin, tax_id, etc.) but is not enforced for KYC triggering.

USA Business (usa_business):

  • Business identity: business_legal_name, doing_business_as, business_type, business_industry
  • Formation: formation_date
  • Contact: email, phone
  • Address: address_street, address_city, address_zip_code, address_country (note: address_state is NOT required for businesses)
  • Government doc: document_number
  • Tax ID: ein
  • Business files in identifying_information[].documents[]: file_proof_of_address, file_business_formation, file_source_of_wealth
  • At least one entry in associated_persons[], each with identifying_information[].documents[] containing front (always) and back (unless document_type = passport)

International Business (international_business):

  • Same as USA Business, except ein is not required.

Required Fields — usa-virtual-accounts-act (ACT):

USA Individual (usa_individual):

  • first_name, last_name, birth_date, email, phone, nationality
  • address_street, address_city, address_state, address_zip_code, address_country
  • document_type, document_number
  • ssn
  • employment_status, plus current_employer only when employment_status = employed

International Individual (international_individual):

  • first_name, last_name, birth_date, email, phone, nationality
  • address_street, address_city, address_state, address_zip_code, address_country
  • document_type, document_number, document_country
  • immigration_status
  • additional_info.has_us_bank_account, additional_info.has_denied_bank_account
  • employment_status, plus current_employer when employment_status = employed

USA Business (usa_business):

  • business_legal_name, email, formation_date, formation_country, business_type
  • address_street, address_city, address_state, address_zip_code, address_country
  • ein
  • associated_persons[] with: first_name, last_name, birth_date, email, nationality, document_number, and ssn unless the AP's nationality is non-US

International Business (international_business):

  • business_legal_name, email, formation_date, formation_country, business_type
  • address_street, address_city, address_state, address_zip_code, address_country
  • associated_persons[] with: first_name, last_name, birth_date, email, nationality, document_number, document_country
  • international_entity_type
  • additional_info.has_us_bank_account, additional_info.has_denied_bank_account

Restricted Countries:

Users whose address_country is one of the following (ISO 3166-1 alpha-3) are blocked from virtual-account products: AFG, BLR, MMR, CAF, CIV, CUB, COD, IRN, IRQ, LBR, LBY, PRK, RUS, SAU, SOM, SDN, SYR, UKR, YEM, VEN, ZWE.

Authentication: Both x-api-key header and Authorization: Bearer <token> header are required.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params

User creation payload. The structure varies depending on user type (individual or business).

string
enum
required

User type - must be 'individual'

Allowed:
string
enum
Defaults to automatic

Verification mode. automatic: Kira triggers KYC automatically when all required fields are present — no additional API calls needed. verification_link: Kira creates a lightweight user and returns a verification_link URL where the user completes KYC/KYB via an embedded form. Only minimal fields are required (name, email). The response includes verification_link with the provider URL.

Allowed:
uri

URL to redirect the user after they complete the embedded verification form. Only used when verification_mode is verification_link.

string
required
length ≥ 1

User's first name

string

User's middle name

string
required
length ≥ 1

User's last name

string
required

Valid email address

string

Phone number in E.164 format (e.g., +1234567890)

string
^\d{4}-\d{2}-\d{2}$

Date of birth in YYYY-MM-DD format. User must be 18+ years old.

string
length between 3 and 3

3-letter ISO country code (e.g., 'USA', 'MEX')

string
enum

Gender of the user

Allowed:
string

Your internal reference ID for this user

string

Street address

string

Apartment, suite, unit, etc.

string

City

string

State or province code

string

ZIP or postal code

string
length between 3 and 3

3-letter ISO country code

identifying_information
array of objects

Array of tax IDs and government-issued identification documents

identifying_information
boolean

Is the user a Politically Exposed Person?

string
enum

Origin of funds

string
enum

Purpose of the account

string
enum

Expected monthly transaction volume in USD

Allowed:
string
enum

Employment status. Required for ACT virtual accounts.

Allowed:
string

Name of current employer. Applicable when employment_status is 'employed'.

string

Source of income. Applicable when employment_status is 'self_employed', 'retired', or 'unemployed'.

string

User's occupation

string
enum

U.S. residency status for non-U.S. citizens. Required for ACT virtual accounts (international individuals).

Allowed:
additional_info
object

Additional information for ACT virtual accounts (international individuals and international businesses). Required fields for eligibility: has_us_bank_account and has_denied_bank_account. Other fields (past_owner_interaction, any_politically_exposed_person, past_business_interaction) are optional and default to 'No' if not provided. If any field is 'Yes', provide an explanation in the corresponding '_explain' field.

documents
array of objects

Legacy document array (use identifying_information.documents instead)

documents
metadata
object

Custom key-value pairs for your reference

Headers
string
required

API key for authentication

uuid
required

Idempotency key (must be a valid UUID)

Responses

401

Unauthorized - Invalid or missing authentication token

500

Internal Server Error

Language
Credentials
Bearer
JWT
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json