---
title: "Create Ndis Invoice"
method: POST
path: "/subscription/ndis-invoice"
tags: ["subscription"]
---

# Create Ndis Invoice

`POST /subscription/ndis-invoice`

## Request

- Base URL: `https://api.projectindi.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.projectindi.com/subscription/ndis-invoice`
- Auth: none declared

Create NDIS invoice and grant trial access while invoice is processed.

Process:
1. Validate NDIS number format (9 digits)
2. Create Stripe Invoice for annual subscription + GST as a *draft* only -
   not finalized, not sent. An admin reviews it, then marks it sent from
   the admin portal, and we email the plan manager from our own address
   (so we can personalise and attach files, which Stripe can't).
3. Insert into ndis_invoice_requests table as ``pending`` (snapshot existing
   expiry into ``activate_from`` for active subscribers - see #4364)
4. For non-subscribers: grant 21-day promotional entitlement via RevenueCat
   and flip family_units to ``trialing``. Existing active subscribers keep
   their paid runway untouched; the webhook adds the 365-day NDIS year on
   top of ``activate_from`` when the plan manager pays.

## Request body

- NdisInvoiceRequest: Request body for NDIS invoice creation.
  - `ndis_number` string, required
  - `participant_name` string, required
  - `clinician_name` string, nullable
  - `pm_email` string, required
  - `pm_company` string, required
  - `pm_abn` string, nullable
  - `pm_address` string, nullable
  - `parent_first_name` string, required
  - `parent_last_name` string, required

## Response `200`

Successful Response

- NdisInvoiceResponse: Response after creating NDIS invoice. No invoice URL: the invoice is created as a Stripe *draft* and is not finalized until an admin reviews and marks it sent, so there's no hosted URL yet. The client only needs to know the trial was granted.
  - `trial_granted` boolean, required
  - `trial_expires_at` string, nullable, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/projectindi/apis/indi-agent-api-first-principles.md) - [All operations](https://skmtc.dev/projectindi/apis/indi-agent-api-first-principles/llms.txt) - [OpenAPI document](https://skmtc.dev/projectindi/apis/indi-agent-api-first-principles/revisions/25a7813e21fd?raw)
