add_cash_expense
Add an expense without a receipt, or record money a client provided in advance for expenses. Writes directly to the user's expense spreadsheet after confirmation. For an ordinary expense, call list_categories first and provide a configured Expense Account. For a client advance, set isClientAdvance=true and clientName; ExpenseBot reuses or creates the canonical client group, applies Cash advance received, and stores the amount as a negative expense. Use this only for money supplied by a client before related spending, never for vendor refunds, reimbursements, earned fees, retainers, or generic deposits. Use the Manual expense link from get_spreadsheet_url instead when the user needs a reviewed form for multiple entries, credits/refunds, tax or tip breakdowns, per diem, or incomplete details.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tax | No | Tax amount | |
| tip | No | Tip amount | |
| city | No | City/location | |
| date | Yes | Expense date (YYYY-MM-DD) | |
| notes | No | Notes or description | |
| total | Yes | Positive amount paid or received. ExpenseBot stores a client advance as negative. | |
| category | No | A configured Expense Account returned by list_categories. Do not invent a category. | |
| currency | No | Currency code (default: USD) | |
| merchant | No | Merchant/vendor name for an ordinary expense. Not needed for a client advance; ExpenseBot derives it from clientName. | |
| subtotal | No | Subtotal before tax | |
| clientName | No | Client name for a client advance, in ordinary language. ExpenseBot resolves the canonical Client – Name group. | |
| isClientAdvance | No | True only when a client supplied money in advance for expenses. Requires clientName and does not require category. |