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

# Create obligation

> Add a custom compliance obligation to track.

Creates a new compliance obligation. Use this to track regulatory deadlines not covered by the auto-seeded defaults.

## Body

<ParamField body="companyId" type="string" required>
  The company this obligation belongs to.
</ParamField>

<ParamField body="category" type="string" required>
  One of `cac_annual_return`, `vat`, `cit`, `paye`, `pension`, `itf`, `custom`.
</ParamField>

<ParamField body="title" type="string" required>
  Obligation name, 1–160 characters.
</ParamField>

<ParamField body="description" type="string">
  Optional detail, up to 1000 characters.
</ParamField>

<ParamField body="frequency" type="string" required>
  One of `monthly`, `annual`, `one_off`, `custom`.
</ParamField>

<ParamField body="nextDueDate" type="string" required>
  Next due date as a `YYYY-MM-DD` date string.
</ParamField>

<ParamField body="notifyLeadDays" type="integer[]">
  Reminder lead times in days before the due date. Each value `0`–`365`, up to 8 entries.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.vouchmark.com/v1/compliance/obligations \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "companyId": "cmp_aBcD...",
      "category": "vat",
      "title": "VAT filing",
      "description": "Monthly VAT return filed with FIRS by the 21st.",
      "frequency": "monthly",
      "nextDueDate": "2026-07-21",
      "notifyLeadDays": [30, 7, 1]
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "success": true,
    "data": {
      "id": "obl_aBcD...",
      "companyId": "cmp_aBcD...",
      "category": "vat",
      "title": "VAT filing",
      "description": "Monthly VAT return filed with FIRS by the 21st.",
      "frequency": "monthly",
      "nextDueDate": "2026-07-21",
      "lastCompletedAt": null,
      "isSeeded": false,
      "isActive": true,
      "notifyLeadDays": [30, 7, 1],
      "daysUntilDue": 24,
      "createdAt": "2026-06-01T09:00:00Z",
      "updatedAt": "2026-06-01T09:00:00Z"
    }
  }
  ```
</ResponseExample>

Returns `201 Created` with the new [obligation object](/api-reference/compliance/list-obligations#obligation-object).
