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

# Dimensions and values

> Find the accounts, vendors, classes and other values to code entries with.

Dimensions are the fields an entry is coded with: the GL account, the vendor,
a class or a department. Each one has a list of values that come from the
accounting platform.
Look them up here before you
[code an entry](/docs/v2/accounting/coding-and-syncing) or
[write a rule](/docs/v2/accounting/rules-and-automation).

## List dimensions

[List accounting dimensions](/api-reference/accounting/dimensions/list)
returns every dimension on the connection:

```json theme={null}
{
  "key": "class",
  "name": "Class",
  "type": "platform",
  "required": false,
  "enabled": true
}
```

* `key` identifies the dimension everywhere else in the API.
* `required` dimensions must have a value before an entry can sync. `account`
  is always required.
* `enabled` is whether the dimension is switched on for coding.

## Find a value

[List dimension values](/api-reference/accounting/dimensions/values/list)
returns one dimension's values sorted by name, a page at a time.
[Retrieve a dimension value](/api-reference/accounting/dimensions/values/retrieve)
reads one by id:

```bash theme={null}
curl "https://api.slash.com/v2/accounting/dimensions/account/values/accounting_account_2rj4l7hmrrrcv" \
  -H "X-API-Key: $SLASH_API_KEY" \
  -H "x-legal-entity: $SLASH_LEGAL_ENTITY_ID"
```

```json theme={null}
{
  "id": "accounting_account_2rj4l7hmrrrcv",
  "dimensionKey": "account",
  "name": "6100 Software Subscriptions",
  "externalId": "80",
  "enabled": true
}
```

Use the value's `id` when you code an entry. `externalId` is the record's id
on the accounting platform, which is useful for matching values to your own
data. Values that are switched off for coding are left out unless you pass
`includeDisabled=true`.

## How coding shows up on an entry

Each entry has at least two line items:

* **Fixed** lines are the bank or card account the money moved through. Slash
  sets these from the connection's settings.
* **Editable** lines are the side you code, such as the expense account,
  vendor and class.

Each line's `dimensions` shows the value coded for each dimension. A dimension
that's missing hasn't been coded yet.

```json theme={null}
{
  "type": "editable",
  "amount": { "amount": 4250, "currency": "USD" },
  "dimensions": {
    "account": { "id": "accounting_account_2rj4l7hmrrrcv", "name": "Office Supplies" },
    "vendor": { "id": "accounting_vendor_2rj4l7hmrrrcv", "name": "Acme Supply Co" }
  }
}
```

An entry stays `in_review` until every required dimension has a value.

## Special cases

<AccordionGroup>
  <Accordion title="Dimensions that are coded once per entry">
    Some platforms record a dimension once for the whole entry rather than per
    line. These are listed in the entry's `entryLevelDimensions`, and every
    line shows the same value. Dimensions the platform doesn't accept for that
    kind of entry, such as a vendor on a bank transfer, are listed in
    `unsupportedDimensions`.
  </Accordion>

  <Accordion title="Dimensions that depend on another">
    On some platforms one dimension is scoped by another: on Procore, a cost
    code belongs to a project. The narrower dimension has a `parentKey`, and
    you can list only the values under one parent with `parentValueId`.
  </Accordion>

  <Accordion title="Custom fields">
    Platforms such as NetSuite, Sage Intacct and Xero let companies add their
    own fields. These appear as dimensions with `type: custom_field` and a key
    starting with `customField:`. Their values are stored in `customFields` on
    the entry or line item instead of `dimensions`. For select fields, the
    values endpoint lists the options; an option's `id` is the value to put in
    `customFields`.
    Custom fields take no default value, and their options can't be switched
    on or off from the API.
  </Accordion>
</AccordionGroup>


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