---
title: "Create a new generic account"
method: POST
path: "/v1/accounts/generic"
tags: ["Accounts"]
---

# Create a new generic account

`POST /v1/accounts/generic`

## Request

- Base URL: `https://api.tesser.xyz`
- URL: `https://api.tesser.xyz/v1/accounts/generic`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/tesser/apis/tesser-api/docs/v1/accounts/generic/post.ts> (a function with typed inputs; its response is checked against the schema)

Create an account that records an account identifier Tesser does not interpret, such as a customer id at an exchange. A generic account has no network, currency or balance.

**Ownership:** Exactly one of `tenant_id` or `counterparty_id` is required.

**Uniqueness:** An owner has at most one generic account per `generic_account_number`. A duplicate returns `409` with the existing account's id, including accounts Tesser created from travel-rule data.

**Immutability:** `generic_account_number` cannot be changed. Use a new generic account for a different number.

## Request body

- CreateGenericAccountRequestDto
  - `tenant_id` string, uuid, nullable: Tenant ID (mutually exclusive with counterparty_id). One of tenant_id or counterparty_id is required.
  - `counterparty_id` string, uuid, nullable: Counterparty ID (mutually exclusive with tenant_id). One of tenant_id or counterparty_id is required.
  - `name` string, required: Human-readable name for the generic account
  - `generic_account_number` string, required: The account identifier, as the account holder's institution issues it (e.g. a customer id at an exchange). Stored as given after trimming surrounding whitespace; case is kept. Cannot be changed after creation.

## Response `201`

Generic account created successfully

- CreateGenericAccountResponseDto
  - `data` GenericAccountData, required
    - `id` string, required: Unique identifier for the account
    - `workspace_id` string, required: Workspace ID the account belongs to
    - `tenant_id` string, nullable: Tenant ID (if account belongs to a tenant)
    - `counterparty_id` string, nullable: Counterparty ID (if account belongs to a counterparty)
    - `type` string, required: Account type
    - `name` string, required: Account name
    - `created_by` 'CUSTOMER' | 'SYSTEM', required: Whether the customer registered this account (CUSTOMER) or Tesser synthesized it (SYSTEM).
    - `created_at` string, required: Creation timestamp
    - `updated_at` string, required: Last update timestamp
    - `generic_account_number` string, required: The account identifier the generic account holds

## Other responses

- `400`: Invalid request data, or no `tenant_id` or `counterparty_id` owner (`accounts-3027`).
- `401`: Authentication required or invalid credentials
- `409`: The owner already has a generic account with this `generic_account_number` (`accounts-3028`).
- `500`: Internal server error

---

[API](https://skmtc.dev/tesser/apis/tesser-api.md) - [All operations](https://skmtc.dev/tesser/apis/tesser-api/llms.txt) - [OpenAPI document](https://skmtc.dev/tesser/apis/tesser-api/revisions/14f951e986b1?raw)
