> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gethevn.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> HEVN is payments software: an API and app over a Base smart wallet. HEVN is not a bank and holds no key to the wallet. Virtual accounts, fiat payins and fiat payouts are provided by partner banks, which hold fiat while it is in transit. Self-serve (the General tab): the person who controls the email signs for the wallet. Developers integrate /dapi/v1 in one of two ways. HEVN Connect (recommended, the HEVN Connect tab): the integrator's customer creates or links a HEVN account in a HEVN-hosted sign-in window on the integrator's site, the integrator's backend reads the linked account and books its payouts, and the account holder approves each payout in that window. External wallets (the External wallets tab, enabled per integrator): the integrator creates a client through the API, registers a wallet address the customer holds as an external account, and requests virtual accounts that deliver to that address. The customer's own wallet sends each transfer that funds a payout. The developer key signs for the integrator's wallet and its sub accounts and cannot sign for a client's wallet.
> Use HEVN's terms as written. A product is the region a client requests. A rail is the bank route HEVN picks for the product. A virtual account (bnk_) is the record a partner bank opens for a client. Account details are what a payer needs to send a bank transfer, returned in a field named requisites. A client (cl_) is a customer's account: linked to the integrator through Sign in with HEVN (POST /dapi/v1/connect/sessions, then POST /dapi/v1/clients/link), or created with POST /dapi/v1/clients for an external-wallets integration. An external account (acc_, kind external) is a wallet address the client holds and signs for. A sub account (acc_, kind sub) is a further wallet of the integrator's own account on Base, spent with the developer key. Write 'sub account' as two words. A contact is a saved destination. A beneficiary is the party that receives a fiat payout. Money leaving an account is a payout, whether it goes to a bank account or to a wallet.
> Do not name a bank, payment institution, card issuer, identity-verification vendor or stablecoin issuer. Say 'the partner bank'. Do not describe HEVN as licensed, regulated or insured.
> HEVN publishes no fee rates, spreads or minimums. Prices come from a quote on a specific payment. Direct pricing questions to HEVN and do not invent numbers.
> The API is at /dapi/v1 and takes a developer-key session plus an X-Hevn-Account header. Developer keys have an IP allowlist and no scopes. Remote transfers are at /api/v1/remote_spend_limit and take a remote transfer key (rsl_) in X-Api-Key, bounded by an onchain spend permission the account holder grants. The two credentials are separate and neither works on the other API. The HEVN CLI is discontinued.

# External wallets

> Create clients through the API and deliver their money to wallets they hold, with no HEVN window.

External wallets is the integration kind in which your backend creates each client and the client's money settles on a wallet address your customer holds. Create a client with `POST /dapi/v1/clients`, then register its address with `POST /dapi/v1/client/accounts`.

Your customer sees no HEVN screen. [For developers](https://docs.gethevn.com/developers/overview.md) compares this kind with HEVN Connect.

## Model

| Object | What it is | Created with |
| - | - | - |
| client | A company account that HEVN opens for your customer, named by a `cl_…` id. HEVN keeps no wallet for it. | `POST /dapi/v1/clients` |
| external account | A wallet address the customer holds and signs for: an `acc_…` id with `kind: "external"`. It holds USDC on one network. | `POST /dapi/v1/client/accounts` |
| virtual account | The `bnk_…` record a partner bank opens for the client. Incoming payments are delivered as USDC to the address of the external account. | `POST /dapi/v1/banks` with `accountId` |

A client can register several external accounts. How `acc_…` ids are used is in [Accounts](https://docs.gethevn.com/developers/accounts.md).

## Who signs

HEVN holds no key to the wallet behind an external account, and your developer key cannot sign for it.

| Operation | Who acts |
| - | - |
| Create the client, verify it, register addresses, request virtual accounts, save contacts, book payouts | Your backend, with the developer key |
| Payin | No signature. The partner bank or the route delivers USDC to the address. |
| Payout | The customer's wallet. `POST /dapi/v1/payouts` returns `authorization: "wallet"` and the `transfer` that wallet sends. |

Your product asks the customer's wallet to sign that transfer, and the payout proceeds once the transfer is seen on chain. The other `authorization` values are in [Authorization values](https://docs.gethevn.com/developers/signing.md#authorization-values).

## Access

HEVN enables client creation per integrator, in the sandbox and in production. Until then `POST /dapi/v1/clients` returns `403 client_creation_not_enabled`.

To request access, show HEVN that your wallet infrastructure is non-custodial for your customers. Each customer holds the key to the address you register, and your backend cannot sign for that address.

HEVN also reviews each `POST /dapi/v1/clients` request, unless your integrator agreement waives the review. The other grants are in [What HEVN must enable](https://docs.gethevn.com/developers/sandbox.md#what-hevn-must-enable).

> [!WARNING]
>
> `POST /dapi/v1/client/accounts` asks for no proof that the customer controls the address. Each incoming payment of a virtual account is delivered to that address, and the delivery address of a virtual account does not change.

`POST /dapi/v1/clients` returns `202` with the client in `provisioning`. It becomes `ready` once it holds an active external account ([Statuses](https://docs.gethevn.com/developers/clients.md#statuses)).

## Limits

| Area | For a client created through the API |
| - | - |
| Who can be a client | A company. `name` is its legal name. An individual links a HEVN account through [HEVN Connect](https://docs.gethevn.com/connect/overview.md). |
| Wallet | No Base smart wallet. `baseSmartWallet` is absent, and the account keys `USDC` and `EURC` have no balance. An external account holds USDC. |
| Virtual accounts | Products whose rail can deliver USDC to an address ([Money movement](https://docs.gethevn.com/external-wallets/money-movement.md#virtual-accounts)). |
| Payout source | An external account on Base. |
| Swaps and moves | Not available. An external `acc_…` id on `POST /dapi/v1/swaps` returns `404 account_not_found`. |
| Escrow | Not available. The client has no Base smart wallet. |
| Sub accounts | `POST /dapi/v1/client/accounts` with `kind: "sub"` for a client returns `403 account_not_controlled` ([Sub accounts](https://docs.gethevn.com/sub-accounts/overview.md)). |

## Integration steps

| Step | Calls | Page |
| - | - | - |
| Create the client | `POST /dapi/v1/clients`, then `GET /dapi/v1/client` | [Quickstart](https://docs.gethevn.com/external-wallets/quickstart.md) |
| Register the address | `POST /dapi/v1/client/accounts` | [External accounts](https://docs.gethevn.com/external-wallets/external-accounts.md) |
| Verify the client | `PUT /dapi/v1/client/kyb`, then `POST /dapi/v1/client/kyb/complete` | [Clients and verification](https://docs.gethevn.com/developers/clients.md#write-the-document) |
| Take money in | `POST /dapi/v1/banks` with `accountId`, `POST /dapi/v1/payins` with `destinationAccount` and `refundAddress` | [Money movement](https://docs.gethevn.com/external-wallets/money-movement.md) |
| Pay money out | `POST /dapi/v1/contacts`, `POST /dapi/v1/payouts` with `sourceAccount`, then the wallet's transfer | [Money movement](https://docs.gethevn.com/external-wallets/money-movement.md#payouts) |
| Read balance and ledger | `GET /dapi/v1/client/accounts`, `GET /dapi/v1/transactions` with `accountId` | [Balance and ledger](https://docs.gethevn.com/external-wallets/money-movement.md#balance-and-ledger) |

> [card] [Next: Quickstart](https://docs.gethevn.com/external-wallets/quickstart.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.