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

# Money and data formats

> Minor units, strings, ids and zero values.

## Amounts are strings of minor units

An amount is a whole number of the currency's smallest unit, written as a string. With two decimals, `"500000"` in NGN is ₦5,000.00 and `"10000"` in USD is \$100.00. There are no floats anywhere.

Request amounts are digits only: no sign, separator or decimal point, and at most 38 digits. Zero is refused on a posting.

| You send | You get |
| - | - |
| `"amount": "1050"` | Accepted |
| `"amount": "10.50"` | `INVALID_AMOUNT` |
| `"amount": 1050` | `INVALID_REQUEST`, because a number is not a string |

A currency's decimals are its `scale`, from `GET /v1/ledgers`.

A balance can be negative, for example an overdrawn account, so `posted` and `available` may start with `-`. Do not parse them as unsigned.

## Other numbers

64-bit integers are strings too: `balance.version`, `page.total` and event `seq`. 32-bit integers are JSON numbers: `posting.seq`, `rateBps`.

## Zero values

A field at its zero value is left out of responses. That means empty strings, `0`, `false` and empty lists. A new account's balance has no `version`, the first posting of an entry has no `seq`, and a schedule with `active: false` has no `active`. Read a missing field as its zero value.

## Ids

Ids are a prefix and a base32 string, like `acc_01M6F1BK8KE6JT32WRN50HYC4R`. Treat them as opaque.

| Prefix | What it is |
| - | - |
| `acc_` | Account |
| `je_` | Journal entry |
| `pst_` | Posting |
| `hld_` | Hold |
| `nam_` | Named account |
| `fxr_`, `fxq_` | FX rate, FX quote |
| `brk_`, `stm_` | Break, statement |
| `exp_` | Export |
| `evt_` | Event |
| `whe_` | Webhook endpoint |
| `key_`, `usr_`, `tnt_` | API key, person, tenant |

Approval ids take a prefix from their kind, such as `adj_` or `fx_`.

## Times and dates

Times are RFC 3339 in UTC. `businessDate` is `YYYY-MM-DD` in the tenant's time zone, and rolls to the next day at the tenant's cut-off. A tenant in Lagos with a 17:00 cut-off books an entry at 18:30 on the 2nd to the 3rd. `GET /v1/tenant` shows the `timezone` and `businessDayCutoff`.

## Field casing

Responses are `lowerCamelCase`. Requests accept `lowerCamelCase` or `snake_case`, and these docs use the former. Two things stay `snake_case`: the [error](https://docs.panoqore.com/errors.md) envelope's `request_id` and `details`, and the `data` of [webhook events](https://docs.panoqore.com/guides/webhooks.md).


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