# POST /recurring-invoices

**Resource:** [Recurring Invoices](./recurring-invoices.md)  
**MCP tool:** `create_recurring_invoice`  
**Scopes:** `recurring_invoices:write`  
**Write operation:** yes

Set up a recurring invoice: pick a schedule (interval_unit week|month|year + interval_count) and line_items, optionally linked to an opportunity/contact. Each period TrustPager generates a fresh native invoice, attaches a Stripe 'Pay now' link (attach_payment_link, needs Stripe connected), and emails it (auto_send). Optional end_date or max_occurrences stop the series. Starts active by default.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `name` | body | string | no |  |
| `opportunity_id` | body | string | no |  |
| `contact_id` | body | string | no |  |
| `customer_id` | body | string | no |  |
| `contact_name` | body | string | no |  |
| `currency_code` | body | string | no |  |
| `reference` | body | string | no |  |
| `interval_unit` | body | string | no |  |
| `interval_count` | body | number | no |  |
| `start_date` | body | string | no |  |
| `next_run_at` | body | string | no |  |
| `end_date` | body | string | no |  |
| `max_occurrences` | body | number | no |  |
| `due_days` | body | number | no |  |
| `auto_send` | body | boolean | no |  |
| `attach_payment_link` | body | boolean | no |  |
| `status` | body | string | no |  |
| `line_items` | body | array | yes |  |
| `require_approval` | body | boolean | no | Optional. Set true to route this write into the approval queue for human review instead of executing it immediately (returns 202 + an approval_id). Works even when your key/token has permission to execute directly. |

## Request example

```bash
curl -X POST   "https://api.trustpager.com/functions/v1/api/v1/recurring-invoices"   -H "Authorization: Bearer YOUR_API_KEY"   -H "Content-Type: application/json"   -d '{"name":"...","opportunity_id":"...","contact_id":"..."}'
```

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`