---
title: "Create an account"
method: POST
path: "/api/v1/iqbooks/organisations/{organisationId}/accounts"
tags: ["IQ Books — Accounts"]
---

# Create an account

`POST /api/v1/iqbooks/organisations/{organisationId}/accounts`

## Request

- Base URL: `https://api.reconcileiq.com`
- URL: `https://api.reconcileiq.com/api/v1/iqbooks/organisations/{organisationId}/accounts`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Creates a chart-of-accounts entry via the native account service. Requires scope `iqbooks:write`. Set role='vat_control' on a LIABILITY account to establish the organisation's VAT Control account, which is a prerequisite for any VAT-bearing posting (bank confirm, invoice issue, journal).

## Path parameters

- `organisationId` integer, required

## Request body

- object
  - `code` string, required
  - `name` string, required
  - `account_type` 'ASSET' | 'LIABILITY' | 'EQUITY' | 'REVENUE' | 'EXPENSE' | 'SUSPENSE', required
  - `role` string: Optional system role for this account. Set role='vat_control' to designate the organisation's VAT Control account. An organisation with no vat_control account cannot confirm VAT-bearing bank transactions, issue VAT invoices, or post VAT journals (those return 422 unprocessable_entity until one exists). Create one vat_control LIABILITY account per organisation before any VAT posting.

## Response `201`

Account created.

- object
  - `data` Account, required
    - `id` integer
    - `organisation_id` integer
    - `code` string
    - `name` string
    - `account_type` string: ASSET, LIABILITY, EQUITY, REVENUE, EXPENSE, SUSPENSE (native uppercase).
    - `role` string, nullable
    - `is_system` boolean
    - `is_bank_account` boolean
    - `archived` boolean
    - `archived_at` string, date-time, nullable
    - `created_at` string, date-time
    - `updated_at` string, date-time

## Other responses

- `400`: The request body is not syntactically valid JSON. Returned in the standard envelope with an X-Request-Id, before authentication runs.
- `401`: Missing, invalid, or revoked API key.
- `403`: Authenticated but the key lacks the required scope.
- `404`: Resource not found, or not visible to the caller (no existence leak).
- `409`: Conflict with current resource state (e.g. duplicate code, already voided).
- `422`: CodeIQ / IQ Books strict-format contract violation.

---

[API](https://skmtc.dev/reconcileiq/apis/reconcileiq-public-api.md) · [All operations](https://skmtc.dev/reconcileiq/apis/reconcileiq-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/reconcileiq/apis/reconcileiq-public-api/revisions/5401beef8653?raw)
