# Kira API ## Docs - [Get access token](https://docs.kirafin.ai/api-reference/authentication/get-access-token.md) - [Get client configuration](https://docs.kirafin.ai/api-reference/clients/get-client-configuration.md): Fetch your own client configuration: company info, your fee schedule, your authorized banks, and your custodial wallet/vault. This is a self-service endpoint — you may only read your own record. Requesting any other client's UUID returns `403`. - [Get fee profile configuration](https://docs.kirafin.ai/api-reference/fee-profiles/get-fee-profile-configuration.md): Retrieve the complete fee configuration for your client: every fee profile (enriched with product info), all promotions referenced by those profiles, and a summary count. Takes no query parameters; a client with no profiles still returns `200` with empty arrays. - [Health check](https://docs.kirafin.ai/api-reference/health/health-check.md) - [Create a crypto payout](https://docs.kirafin.ai/api-reference/payouts/create-a-crypto-payout.md) - [Execute a payout](https://docs.kirafin.ai/api-reference/payouts/execute-a-payout.md) - [Get a payout](https://docs.kirafin.ai/api-reference/payouts/get-a-payout.md): Retrieve the full, enriched detail of a single payout you own, by its `payout_id` (the transfer UUID returned at creation and by `GET /v1/payouts`). Works for payouts from every source — API payouts and virtual-account settlement/payout flows. - [List payouts](https://docs.kirafin.ai/api-reference/payouts/list-payouts.md) - [Preview a payout](https://docs.kirafin.ai/api-reference/payouts/preview-a-payout.md) - [Create a quotation](https://docs.kirafin.ai/api-reference/quotations/create-a-quotation.md): Create a **quotation**: a priced, itemized fee envelope for a prospective payment. A quotation can optionally be persisted as a redeemable `quote_id` that locks the fees and FX rate so a later payout settles at the quoted price. All monetary amounts are returned as **integer minor units** paired wit… - [Create a recipient](https://docs.kirafin.ai/api-reference/recipients/create-a-recipient.md): Create a SWIFT recipient (international wire). Note for SWIFT: - [Get a recipient](https://docs.kirafin.ai/api-reference/recipients/get-a-recipient.md): Retrieve a single recipient (payout destination) you own, by its UUID. The response is the bare recipient object (no `{ message, data }` wrapper). - [List recipients](https://docs.kirafin.ai/api-reference/recipients/list-recipients.md) - [Simulate a deposit (sandbox)](https://docs.kirafin.ai/api-reference/simulate-sandbox/simulate-a-deposit-sandbox.md): Returns `201` + `deposit_id` + `status: "completed"`. **The simulated deposit will NOT appear in `GET /v1/virtual-accounts/{id}/deposits` and will NOT change `GET /…/balance`** (the sandbox balance is a fixed provider value). Confirm via the `201` response itself + the (hand-delivered) `virtual_acco… - [Create a user](https://docs.kirafin.ai/api-reference/users/create-a-user.md): **`account_purpose`** must be one of the 14 accepted values: `receive_payments | manage_professional_income | make_payments | manage_personal_funds | investment_trading | charitable_donations | investment_purposes | operating_a_company | payments_to_friends_or_family_abroad | personal_or_living_expe… - [Get a user](https://docs.kirafin.ai/api-reference/users/get-a-user.md): Returns the full user resource. **Timing:** `eligible_products[]` and `missing_fields` are empty/null on a freshly CREATED user — they populate only once verification has run. Read them AFTER the user leaves `CREATED` (or after your Kira contact flips it), not immediately after POST. Gate your flow… - [List users](https://docs.kirafin.ai/api-reference/users/list-users.md): Use `limit<=100` — `GET /v1/users?limit>100` returns a raw `500 "Internal server error"` (known cap; the same cap applies to `GET /v1/virtual-accounts` and ALL list endpoints). - [Re-issue verification](https://docs.kirafin.ai/api-reference/users/re-issue-verification.md): Re-trigger KYC/KYB for a user that came back **REJECTED**, without re-creating them. - [Update a user](https://docs.kirafin.ai/api-reference/users/update-a-user.md): Fill **scalar eligibility fields** after KYC so a product flips `eligible: true`. Run this once you've read `GET /v1/users/{id}` and seen tokens in `missing_fields` (e.g. `account_purpose`, `immigration_status`, `additional_info:has_us_bank_account`). - [Pin account to a version](https://docs.kirafin.ai/api-reference/versioning/pin-account-to-a-version.md) - [Create a liquidation address](https://docs.kirafin.ai/api-reference/virtual-accounts/create-a-liquidation-address.md): Create a **liquidation address** on a virtual account: a per-account crypto deposit address that automatically converts incoming stablecoin deposits (USDC/USDT) to USD and pays them out to a configured bank recipient (an off-ramp). Supported only for `US_BANK` virtual accounts in `active` status. - [Create a virtual account](https://docs.kirafin.ai/api-reference/virtual-accounts/create-a-virtual-account.md): Creates a **crypto** `US_BANK` virtual account (USDT on Tron). - [Get a virtual account](https://docs.kirafin.ai/api-reference/virtual-accounts/get-a-virtual-account.md) - [Get virtual account balance](https://docs.kirafin.ai/api-reference/virtual-accounts/get-virtual-account-balance.md): Returns `200` with `available_balance` on an active VA (`400` while activating). **The sandbox balance is a FIXED provider value — `simulate-deposit` does NOT change it.** Do not use a balance delta to confirm a simulated deposit; use the simulate `201` response + the (hand-delivered) `virtual_accou… - [List deposits (all virtual accounts)](https://docs.kirafin.ai/api-reference/virtual-accounts/list-deposits-all-virtual-accounts.md): List inbound deposits across **all** of your virtual accounts (a client-level feed, no virtual-account id in the path), newest first. Supports pagination and filtering. - [List liquidation addresses](https://docs.kirafin.ai/api-reference/virtual-accounts/list-liquidation-addresses.md): List every liquidation address configured on a virtual account. The response is a **bare JSON array** (no envelope, no pagination); an empty array is returned when none exist. - [List virtual account deposits](https://docs.kirafin.ai/api-reference/virtual-accounts/list-virtual-account-deposits.md): List the deposits received by a single virtual account, newest first. The virtual account must belong to you. - [List virtual accounts](https://docs.kirafin.ai/api-reference/virtual-accounts/list-virtual-accounts.md): Use `limit<=100` — `GET /v1/virtual-accounts?limit>100` returns a raw `500 "Internal server error"` (same known cap as `GET /v1/users`; applies to ALL list endpoints). Note `provider` and `currency` come back `null` in the list view — fetch by ID if you need them. - [Register a webhook](https://docs.kirafin.ai/api-reference/webhooks/register-a-webhook.md) - [Authentication](https://docs.kirafin.ai/guides/authentication.md): Exchange your Kira credentials for a bearer token and authenticate every API call. - [Creating users — KYC/KYB required fields](https://docs.kirafin.ai/guides/creating-users.md): Which fields POST /v1/users needs to create and verify an end client, by user category, with the conditional rules and country restrictions that apply. - [For AI agents](https://docs.kirafin.ai/guides/for-ai-agents.md): A canonical, fact-first integration brief you can paste into an AI coding assistant to build a correct Kira integration. - [Known limitations & quirks](https://docs.kirafin.ai/guides/known-limitations.md): Documented sandbox and API gotchas to know before you integrate — read these before you debug for an hour. - [POST /users migration guide — KYC/KYB required fields](https://docs.kirafin.ai/guides/post-users-migration.md): What changed in the POST /v1/users payload: every field added, changed, or removed as Portage and ACT converge on one unified field set, by user category. - [State machines & webhook catalog](https://docs.kirafin.ai/guides/state-machines.md): Authoritative reference for the virtual account, deposit, and payout state machines, plus the full webhook event catalog, envelope shapes, and HMAC signing. - [Versioning](https://docs.kirafin.ai/guides/versioning.md): Send the X-Api-Version header on every request, then pin your account to lock in a schema version. - [Webhooks](https://docs.kirafin.ai/guides/webhooks.md): Register a callback URL and receive signed, idempotent event notifications from the Kira API. - [Introduction](https://docs.kirafin.ai/index.md): The Kira API for users, KYC/KYB verification, virtual accounts, payouts, recipients, and webhooks. - [Quickstart](https://docs.kirafin.ai/quickstart.md): Go from credentials to a simulated deposit and your first payout against the Kira sandbox. ## OpenAPI Specs - [kira-api.2026-04-14](https://docs.kirafin.ai/openapi/kira-api.2026-04-14.json)