---
title: "Generate Policy Custom Invoice"
method: POST
path: "/api/admin/policies/{policy_id}/custom-invoice"
tags: ["admin-policies"]
---

# Generate Policy Custom Invoice

`POST /api/admin/policies/{policy_id}/custom-invoice`

## Request

- Base URL: `https://api.riskcube.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.riskcube.com/api/admin/policies/{policy_id}/custom-invoice`
- Auth: none declared

Generate the RiskCube invoice for a policy.

Builds the standard RiskCube invoice from the policy record — the same
template for every policy and every carrier — and saves it to a NEW storage
object recorded in `custom_invoice_url`. Nothing existing is modified: the
carrier's own invoice and `invoice_url` are left untouched.

When a carrier invoice is on file, its invoice number is reused verbatim and
its own total is checked against the policy record; a mismatch comes back as
a non-blocking `warning` so the admin can look into it.

## Path parameters

- `policy_id` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-28** `0767547c3500`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/riskcube/apis/slack-lead-manager/changes/api/admin/policies/:policy_id/custom-invoice/post.md)

---

[API](https://skmtc.dev/riskcube/apis/slack-lead-manager.md) - [All operations](https://skmtc.dev/riskcube/apis/slack-lead-manager/llms.txt) - [OpenAPI document](https://skmtc.dev/riskcube/apis/slack-lead-manager/revisions/c8976d6fad6b?raw)
