# tax.entries.review

Confirm recognition date, GST/HST treatment, supporting documentation, input tax credit eligibility and explicit CAD exchange-rate provenance for an entry. For GST/HST dated before the registration date, preRegistration records the decision: no_itc (a purchase with no input tax credit) or accountant. Requires both entry and tax-review revisions.

`POST /api/v1/accounting/tax.entries.review`

Permissions: `accounting:read`, `accounting:write` · Roles: admin, finance · Idempotency key required · Send `expectedRevision`

Not available over MCP: Accountants' corrections grant isn't offered over MCP yet: phase 1 is read and comment only.

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `entryId` | string (ID) | Yes | The ID of an accounting entry, from entries.list or attention.mine. |
| `entryRevision` | integer | Yes | The entry's current revision, from the last time you read it. at most 9007199254740991; greater than 0. |
| `expectedRevision` | integer | Yes | The record's current revision, from the last time you read it. If someone changed the record since, the request is refused with a conflict so you can reload and check before trying again. 0 to 9007199254740991. |
| `idempotencyKey` | string | Yes | Any unique text you generate once per intended change, so a retried request only happens once. Send it as the Idempotency-Key header instead if you prefer; if you send both they must match. 8–200 characters. |
| `recognitionDate` | string | Yes |  |
| `taxPointDate` | string | Yes |  |
| `itcClaimDate` | string or null |  | Default `null`. |
| `taxKind` | enum | Yes | One of: `gst_hst`, `none`, `other`. |
| `gstHstMinor` | string | Yes | An amount in cents (the currency's smallest unit), written as a whole-number string such as "1250" for $12.50. Whole number written as a string. |
| `otherSalesTaxMinor` | string | Yes | An amount in cents (the currency's smallest unit), written as a whole-number string such as "1250" for $12.50. Whole number written as a string. |
| `itcBasisPoints` | integer | Yes | 0 to 10000. |
| `itcEligibility` | enum | Yes | One of: `eligible`, `ineligible`, `not_applicable`. |
| `documentComplete` | boolean | Yes |  |
| `supplierRegistration` | string or null |  | Default `null`. |
| `recipientNamed` | boolean | Yes |  |
| `supplyDescribed` | boolean | Yes |  |
| `paymentTermsPresent` | boolean | Yes |  |
| `exchangeRate` | string or null |  | Default `null`. |
| `exchangeRateDate` | string or null |  | Default `null`. |
| `exchangeRateSource` | string or null |  | Default `null`. |
| `preRegistration` | enum or null |  | One of: `no_itc`, `accountant`. |
| `reason` | string | Yes | A short note saying why, kept in the record's history. 3–2000 characters. |

## Example request

```bash
curl https://app.getoatmilk.com/api/v1/accounting/tax.entries.review \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "entryId": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10",
  "entryRevision": 3,
  "expectedRevision": 3,
  "recognitionDate": "2026-09-30",
  "taxPointDate": "2026-09-30",
  "taxKind": "gst_hst",
  "gstHstMinor": "1250",
  "otherSalesTaxMinor": "1250",
  "itcBasisPoints": 1,
  "itcEligibility": "eligible",
  "documentComplete": true,
  "recipientNamed": true,
  "supplyDescribed": true,
  "paymentTermsPresent": true,
  "reason": "Synthetic example from the docs"
}'
```

Reference page: https://app.getoatmilk.com/docs/api/tax.entries.review
