# tax.packages.request

Ask for one ZIP of everything an outside accountant needs for a fiscal year: { period? (a corporate year; defaults to the newest ended one), recipients? (up to 10 email addresses besides the person asking), note? (up to 500 characters, shown in the email), idempotencyKey }. It's put together in the background, usually within a few minutes; the person asking and each recipient then get an email with their own download link, which works without signing in for seven days. Each download is audited. Tell the person it's being put together and that the email will come when it's ready; check on it with tax.packages.list.

`POST /api/v1/accounting/tax.packages.request`

Permissions: `accounting:read`, `accounting:write` · Roles: admin, finance · Idempotency key required · Reaches outside Oatmilk (email or a provider)

MCP tool: `accounting_tax_packages_request`

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `period` | object |  | The period to cover. No other fields. |
| `period.from` | string | Yes | The first date to include, as YYYY-MM-DD. |
| `period.to` | string | Yes | The last date to include, as YYYY-MM-DD. |
| `period.kind` | enum | Yes | Which kind of record or job this is. One of: `corporate`, `gst_hst`. |
| `recipients` | array of strings (email) |  | at most 10 items; each at most 254 characters. |
| `note` | string |  | A short note, kept with the record. at most 500 characters. Default `""`. |
| `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. |

## Example request

```bash
curl https://app.getoatmilk.com/api/v1/accounting/tax.packages.request \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
```

Reference page: https://app.getoatmilk.com/docs/api/tax.packages.request
