expense_delete
Deletes an expense you created — draft and rejected rows only. Pending, approved, and reimbursed rows are approval-trail records and refuse with CONFLICT (approval_locked: true), and the lock is pinned into the delete itself so a status change racing your read still refuses instead of silently deleting. NEXT: expense_reject it first (admin+) if it must leave the books.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The expense id (expense_list shows them). | |
| notes | No | ||
| status | No | ||
| vendor | No | ||
| currency | No | ||
| ocr_json | No | ||
| tax_type | No | ||
| tags_json | No | ||
| approved_at | No | ||
| approved_by | No | ||
| category_id | No | ||
| receipt_key | No | ||
| rejected_at | No | ||
| amount_cents | No | ||
| expense_date | No | ||
| submitted_at | No | ||
| tax_rate_bps | No | ||
| recurrence_id | No | ||
| reimbursed_at | No | ||
| subtotal_cents | No | ||
| rejection_reason | No | ||
| tax_amount_cents | No |