---
title: "Create a custom column"
method: POST
path: "/v1/custom_columns"
tags: ["Custom column"]
---

# Create a custom column

`POST /v1/custom_columns`

Creates a custom column. Requires the `custom_columns_create` permission on the company.

## Headers

- `company-id` string, uuid, required

## Request body

- CustomColumnCreate — Payload to create a custom column. Requires the `custom_columns_create` permission on the company. `company_id` must be supplied in the **body** — the controller does not read it from the `company-id` header for this action.
  - `label` string, required — Human-facing label.
  - `internal_name` string, required — Internal name used for programmatic references.
  - `field` string, required — The field/input type of the column.
  - `company_id` string, uuid, required — The owning company id. Required in the body (not read from the `company-id` header).
  - `source_table` string — The source table the column reads from, when applicable.
  - `default_value` string — Default value applied when no value is set.
  - `applicable_models` string[], required
  - `options` object[]
    - `key` string
    - `value` string

## Response `201`

Custom column created

- CustomColumn — A custom column definition — a company-configurable field ("rendición" / expense-tracking metadata) that can be attached to transactions and other applicable models. Values are stored per record and surfaced through `custom_column_values`.
  - `id` string, uuid, required
  - `company_id` string, uuid, required
  - `label` string — Human-facing label shown in the UI.
  - `internal_name` string, nullable — Internal name used for programmatic references.
  - `field` string — The field/input type of the column. `options` drives a select-style column with a fixed set of choices.
  - `source_table` string, nullable — The source table the column reads from, when applicable.
  - `default_value` string, nullable — Default value applied when no value is set.
  - `applicable_models` string[] — The models this column applies to (e.g. `transactions`, `card_transactions`, `payables`).
  - `options` object[] — For option-type columns, the allowed key/value choices.
    - `key` string
    - `value` string
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `401` — Unauthorized
- `422` — Validation error

---

[API](https://skmtc.dev/cardda/apis/banking-api.md) · [All operations](https://skmtc.dev/cardda/apis/banking-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/cardda/banking-api/revisions/ff1aeb3fda8b/schema)
